@effect/platform-bun 0.1.0 → 0.1.1
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/internal/http/server.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.make = exports.layerConfig = exports.layer = void 0;
|
|
7
|
+
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
|
|
7
8
|
var Config = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Config"));
|
|
8
9
|
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));
|
|
9
10
|
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Layer"));
|
|
@@ -12,6 +13,7 @@ var Etag = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/p
|
|
|
12
13
|
var FormData = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform-node/Http/FormData"));
|
|
13
14
|
var Headers = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Headers"));
|
|
14
15
|
var IncomingMessage = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/IncomingMessage"));
|
|
16
|
+
var Middleware = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Middleware"));
|
|
15
17
|
var Server = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Server"));
|
|
16
18
|
var Error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ServerError"));
|
|
17
19
|
var ServerRequest = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ServerRequest"));
|
|
@@ -41,27 +43,32 @@ const make = options => Effect.gen(function* (_) {
|
|
|
41
43
|
hostname: server.hostname
|
|
42
44
|
},
|
|
43
45
|
serve(httpApp, middleware) {
|
|
44
|
-
const app =
|
|
45
|
-
return Effect.
|
|
46
|
-
|
|
47
|
-
server.reload({
|
|
48
|
-
fetch: handlerStack[handlerStack.length - 1]
|
|
49
|
-
});
|
|
50
|
-
}))(Effect.flatMap(runtime => Effect.async(() => {
|
|
51
|
-
const runPromise = Runtime.runPromise(runtime);
|
|
46
|
+
const app = middleware ? middleware(respond(httpApp)) : respond(httpApp);
|
|
47
|
+
return Effect.flatMap(([runtime, fiberId]) => Effect.async(() => {
|
|
48
|
+
const runFork = Runtime.runFork(runtime);
|
|
52
49
|
function handler(request, _server) {
|
|
53
|
-
return
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject)));
|
|
52
|
+
request.signal.addEventListener("abort", () => {
|
|
53
|
+
runFork(fiber.interruptAsFork(fiberId));
|
|
54
|
+
});
|
|
55
|
+
});
|
|
54
56
|
}
|
|
55
57
|
handlerStack.push(handler);
|
|
56
58
|
server.reload({
|
|
57
59
|
fetch: handler
|
|
58
60
|
});
|
|
59
|
-
}))(Effect.
|
|
61
|
+
}))(Effect.zipLeft(Effect.addFinalizer(() => Effect.sync(() => {
|
|
62
|
+
handlerStack.pop();
|
|
63
|
+
server.reload({
|
|
64
|
+
fetch: handlerStack[handlerStack.length - 1]
|
|
65
|
+
});
|
|
66
|
+
})))(Effect.all([Effect.runtime(), Effect.fiberId])));
|
|
60
67
|
}
|
|
61
68
|
});
|
|
62
69
|
});
|
|
63
70
|
exports.make = make;
|
|
64
|
-
const
|
|
71
|
+
const makeResponse = response => {
|
|
65
72
|
const body = response.body;
|
|
66
73
|
switch (body._tag) {
|
|
67
74
|
case "Empty":
|
|
@@ -98,7 +105,16 @@ const respond = response => Effect.sync(() => {
|
|
|
98
105
|
});
|
|
99
106
|
}
|
|
100
107
|
}
|
|
101
|
-
}
|
|
108
|
+
};
|
|
109
|
+
const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.onExit(httpApp, exit => Effect.sync(() => {
|
|
110
|
+
if (exit._tag === "Success") {
|
|
111
|
+
;
|
|
112
|
+
request.resolve(makeResponse(exit.value));
|
|
113
|
+
} else {
|
|
114
|
+
;
|
|
115
|
+
request.reject(Cause.pretty(exit.cause));
|
|
116
|
+
}
|
|
117
|
+
}))));
|
|
102
118
|
/** @internal */
|
|
103
119
|
const layer = options => Layer.merge(Layer.scoped(Server.Server, make(options)), Etag.layer);
|
|
104
120
|
/** @internal */
|
|
@@ -106,8 +122,10 @@ exports.layer = layer;
|
|
|
106
122
|
const layerConfig = options => Layer.merge(Layer.scoped(Server.Server, Effect.flatMap(Effect.config(Config.unwrap(options)), make)), Etag.layer);
|
|
107
123
|
exports.layerConfig = layerConfig;
|
|
108
124
|
class ServerRequestImpl {
|
|
109
|
-
constructor(source, url = source.url, headersOverride) {
|
|
125
|
+
constructor(source, resolve, reject, url = source.url, headersOverride) {
|
|
110
126
|
this.source = source;
|
|
127
|
+
this.resolve = resolve;
|
|
128
|
+
this.reject = reject;
|
|
111
129
|
this.url = url;
|
|
112
130
|
this.headersOverride = headersOverride;
|
|
113
131
|
this[ServerRequest.TypeId] = ServerRequest.TypeId;
|
|
@@ -124,10 +142,10 @@ class ServerRequestImpl {
|
|
|
124
142
|
return this.headersOverride;
|
|
125
143
|
}
|
|
126
144
|
setUrl(url) {
|
|
127
|
-
return new ServerRequestImpl(this.source, url);
|
|
145
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, url);
|
|
128
146
|
}
|
|
129
147
|
replaceHeaders(headers) {
|
|
130
|
-
return new ServerRequestImpl(this.source, this.url, headers);
|
|
148
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, this.url, headers);
|
|
131
149
|
}
|
|
132
150
|
get stream() {
|
|
133
151
|
return this.source.body ? Stream.fromReadableStream(() => this.source.body, _ => Error.RequestError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","names":["Config","_interopRequireWildcard","require","Effect","Layer","Runtime","Etag","FormData","Headers","IncomingMessage","Server","Error","ServerRequest","UrlParams","Stream","_nodeStream","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","flatMap","respond","acquireRelease","pop","reload","length","runtime","async","runPromise","handler","request","provideService","ServerRequestImpl","push","exports","response","body","undefined","statusText","headers","formData","toReadableStream","stream","layer","merge","scoped","layerConfig","config","unwrap","constructor","source","url","headersOverride","TypeId","method","originalUrl","fromInput","setUrl","replaceHeaders","fromReadableStream","RequestError","reason","error","fail","text","textEffect","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","formDataEffect","Readable","fromWeb","formDataStream","arrayBuffer","arrayBufferEffect"],"sources":["../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","names":["Cause","_interopRequireWildcard","require","Config","Effect","Layer","Runtime","Etag","FormData","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Stream","_nodeStream","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","respond","flatMap","runtime","fiberId","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","signal","addEventListener","interruptAsFork","push","reload","zipLeft","pop","length","all","exports","makeResponse","response","body","undefined","statusText","headers","formData","toReadableStream","stream","onExit","exit","value","pretty","cause","layer","merge","scoped","layerConfig","config","unwrap","constructor","source","url","headersOverride","TypeId","method","originalUrl","fromInput","setUrl","replaceHeaders","fromReadableStream","RequestError","reason","error","fail","text","textEffect","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","formDataEffect","Readable","fromWeb","formDataStream","arrayBuffer","arrayBufferEffect"],"sources":["../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Cause from "@effect/io/Cause";
|
|
1
2
|
import * as Config from "@effect/io/Config";
|
|
2
3
|
import * as Effect from "@effect/io/Effect";
|
|
3
4
|
import * as Layer from "@effect/io/Layer";
|
|
@@ -6,6 +7,7 @@ import * as Etag from "@effect/platform-node/Http/Etag";
|
|
|
6
7
|
import * as FormData from "@effect/platform-node/Http/FormData";
|
|
7
8
|
import * as Headers from "@effect/platform/Http/Headers";
|
|
8
9
|
import * as IncomingMessage from "@effect/platform/Http/IncomingMessage";
|
|
10
|
+
import * as Middleware from "@effect/platform/Http/Middleware";
|
|
9
11
|
import * as Server from "@effect/platform/Http/Server";
|
|
10
12
|
import * as Error from "@effect/platform/Http/ServerError";
|
|
11
13
|
import * as ServerRequest from "@effect/platform/Http/ServerRequest";
|
|
@@ -33,26 +35,31 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
33
35
|
hostname: server.hostname
|
|
34
36
|
},
|
|
35
37
|
serve(httpApp, middleware) {
|
|
36
|
-
const app =
|
|
37
|
-
return Effect.
|
|
38
|
-
|
|
39
|
-
server.reload({
|
|
40
|
-
fetch: handlerStack[handlerStack.length - 1]
|
|
41
|
-
});
|
|
42
|
-
}))(Effect.flatMap(runtime => Effect.async(() => {
|
|
43
|
-
const runPromise = Runtime.runPromise(runtime);
|
|
38
|
+
const app = middleware ? middleware(respond(httpApp)) : respond(httpApp);
|
|
39
|
+
return Effect.flatMap(([runtime, fiberId]) => Effect.async(() => {
|
|
40
|
+
const runFork = Runtime.runFork(runtime);
|
|
44
41
|
function handler(request, _server) {
|
|
45
|
-
return
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const fiber = runFork(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request, resolve, reject)));
|
|
44
|
+
request.signal.addEventListener("abort", () => {
|
|
45
|
+
runFork(fiber.interruptAsFork(fiberId));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
46
48
|
}
|
|
47
49
|
handlerStack.push(handler);
|
|
48
50
|
server.reload({
|
|
49
51
|
fetch: handler
|
|
50
52
|
});
|
|
51
|
-
}))(Effect.
|
|
53
|
+
}))(Effect.zipLeft(Effect.addFinalizer(() => Effect.sync(() => {
|
|
54
|
+
handlerStack.pop();
|
|
55
|
+
server.reload({
|
|
56
|
+
fetch: handlerStack[handlerStack.length - 1]
|
|
57
|
+
});
|
|
58
|
+
})))(Effect.all([Effect.runtime(), Effect.fiberId])));
|
|
52
59
|
}
|
|
53
60
|
});
|
|
54
61
|
});
|
|
55
|
-
const
|
|
62
|
+
const makeResponse = response => {
|
|
56
63
|
const body = response.body;
|
|
57
64
|
switch (body._tag) {
|
|
58
65
|
case "Empty":
|
|
@@ -89,14 +96,25 @@ const respond = response => Effect.sync(() => {
|
|
|
89
96
|
});
|
|
90
97
|
}
|
|
91
98
|
}
|
|
92
|
-
}
|
|
99
|
+
};
|
|
100
|
+
const respond = /*#__PURE__*/Middleware.make(httpApp => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.onExit(httpApp, exit => Effect.sync(() => {
|
|
101
|
+
if (exit._tag === "Success") {
|
|
102
|
+
;
|
|
103
|
+
request.resolve(makeResponse(exit.value));
|
|
104
|
+
} else {
|
|
105
|
+
;
|
|
106
|
+
request.reject(Cause.pretty(exit.cause));
|
|
107
|
+
}
|
|
108
|
+
}))));
|
|
93
109
|
/** @internal */
|
|
94
110
|
export const layer = options => Layer.merge(Layer.scoped(Server.Server, make(options)), Etag.layer);
|
|
95
111
|
/** @internal */
|
|
96
112
|
export const layerConfig = options => Layer.merge(Layer.scoped(Server.Server, Effect.flatMap(Effect.config(Config.unwrap(options)), make)), Etag.layer);
|
|
97
113
|
class ServerRequestImpl {
|
|
98
|
-
constructor(source, url = source.url, headersOverride) {
|
|
114
|
+
constructor(source, resolve, reject, url = source.url, headersOverride) {
|
|
99
115
|
this.source = source;
|
|
116
|
+
this.resolve = resolve;
|
|
117
|
+
this.reject = reject;
|
|
100
118
|
this.url = url;
|
|
101
119
|
this.headersOverride = headersOverride;
|
|
102
120
|
this[ServerRequest.TypeId] = ServerRequest.TypeId;
|
|
@@ -113,10 +131,10 @@ class ServerRequestImpl {
|
|
|
113
131
|
return this.headersOverride;
|
|
114
132
|
}
|
|
115
133
|
setUrl(url) {
|
|
116
|
-
return new ServerRequestImpl(this.source, url);
|
|
134
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, url);
|
|
117
135
|
}
|
|
118
136
|
replaceHeaders(headers) {
|
|
119
|
-
return new ServerRequestImpl(this.source, this.url, headers);
|
|
137
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, this.url, headers);
|
|
120
138
|
}
|
|
121
139
|
get stream() {
|
|
122
140
|
return this.source.body ? Stream.fromReadableStream(() => this.source.body, _ => Error.RequestError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["Config","Effect","Layer","Runtime","Etag","FormData","Headers","IncomingMessage","Server","Error","ServerRequest","UrlParams","Stream","Readable","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","flatMap","
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["Cause","Config","Effect","Layer","Runtime","Etag","FormData","Headers","IncomingMessage","Middleware","Server","Error","ServerRequest","UrlParams","Stream","Readable","make","options","gen","_","handlerStack","_request","_server","Response","status","server","Bun","serve","fetch","addFinalizer","sync","stop","address","_tag","port","hostname","httpApp","middleware","app","respond","flatMap","runtime","fiberId","async","runFork","handler","request","Promise","resolve","reject","fiber","provideService","ServerRequestImpl","signal","addEventListener","interruptAsFork","push","reload","zipLeft","pop","length","all","makeResponse","response","body","undefined","statusText","headers","formData","toReadableStream","stream","onExit","exit","value","pretty","cause","layer","merge","scoped","layerConfig","config","unwrap","constructor","source","url","headersOverride","TypeId","method","originalUrl","fromInput","setUrl","replaceHeaders","fromReadableStream","RequestError","reason","error","fail","text","textEffect","runSync","cached","tryPromise","try","catch","json","tryMap","JSON","parse","urlParamsBody","URLSearchParams","formDataEffect","fromWeb","formDataStream","arrayBuffer","arrayBufferEffect"],"sources":["../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform-bun",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,6 +28,6 @@
|
|
|
28
28
|
"@effect/data": "^0.17.5",
|
|
29
29
|
"@effect/io": "^0.38.2",
|
|
30
30
|
"@effect/stream": "^0.34.0",
|
|
31
|
-
"@effect/platform-node": "^0.13.
|
|
31
|
+
"@effect/platform-node": "^0.13.18"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { pipe } from "@effect/data/Function"
|
|
2
|
+
import * as Cause from "@effect/io/Cause"
|
|
2
3
|
import * as Config from "@effect/io/Config"
|
|
3
4
|
import * as Effect from "@effect/io/Effect"
|
|
4
5
|
import * as Layer from "@effect/io/Layer"
|
|
@@ -11,6 +12,7 @@ import type * as App from "@effect/platform/Http/App"
|
|
|
11
12
|
import * as Headers from "@effect/platform/Http/Headers"
|
|
12
13
|
import * as IncomingMessage from "@effect/platform/Http/IncomingMessage"
|
|
13
14
|
import type { Method } from "@effect/platform/Http/Method"
|
|
15
|
+
import * as Middleware from "@effect/platform/Http/Middleware"
|
|
14
16
|
import * as Server from "@effect/platform/Http/Server"
|
|
15
17
|
import * as Error from "@effect/platform/Http/ServerError"
|
|
16
18
|
import * as ServerRequest from "@effect/platform/Http/ServerRequest"
|
|
@@ -45,72 +47,95 @@ export const make = (
|
|
|
45
47
|
return Server.make({
|
|
46
48
|
address: { _tag: "TcpAddress", port: server.port, hostname: server.hostname },
|
|
47
49
|
serve(httpApp, middleware) {
|
|
48
|
-
const app: App.
|
|
49
|
-
|
|
50
|
-
respond
|
|
51
|
-
)
|
|
50
|
+
const app: App.Default<never, unknown> = middleware
|
|
51
|
+
? middleware(respond(httpApp)) as App.Default<never, unknown>
|
|
52
|
+
: respond(httpApp)
|
|
52
53
|
return pipe(
|
|
53
|
-
Effect.runtime<never>(),
|
|
54
|
-
Effect.
|
|
54
|
+
Effect.all([Effect.runtime<never>(), Effect.fiberId]),
|
|
55
|
+
Effect.zipLeft(
|
|
56
|
+
Effect.addFinalizer(() =>
|
|
57
|
+
Effect.sync(() => {
|
|
58
|
+
handlerStack.pop()
|
|
59
|
+
server.reload({ fetch: handlerStack[handlerStack.length - 1] } as ServeOptions)
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
),
|
|
63
|
+
Effect.flatMap(([runtime, fiberId]) =>
|
|
55
64
|
Effect.async<never, Error.ServeError, never>(() => {
|
|
56
|
-
const
|
|
65
|
+
const runFork = Runtime.runFork(runtime)
|
|
57
66
|
function handler(request: Request, _server: BunServer) {
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
return new Promise<Response>((resolve, reject) => {
|
|
68
|
+
const fiber = runFork(Effect.provideService(
|
|
69
|
+
app,
|
|
70
|
+
ServerRequest.ServerRequest,
|
|
71
|
+
new ServerRequestImpl(request, resolve, reject)
|
|
72
|
+
))
|
|
73
|
+
request.signal.addEventListener("abort", () => {
|
|
74
|
+
runFork(fiber.interruptAsFork(fiberId))
|
|
75
|
+
})
|
|
76
|
+
})
|
|
63
77
|
}
|
|
64
78
|
handlerStack.push(handler)
|
|
65
79
|
server.reload({ fetch: handler } as ServeOptions)
|
|
66
80
|
})
|
|
67
|
-
),
|
|
68
|
-
Effect.acquireRelease(() =>
|
|
69
|
-
Effect.sync(() => {
|
|
70
|
-
handlerStack.pop()
|
|
71
|
-
server.reload({ fetch: handlerStack[handlerStack.length - 1] } as ServeOptions)
|
|
72
|
-
})
|
|
73
81
|
)
|
|
74
82
|
)
|
|
75
83
|
}
|
|
76
84
|
})
|
|
77
85
|
})
|
|
78
86
|
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
case "Uint8Array":
|
|
91
|
-
case "Raw": {
|
|
92
|
-
return new Response(body.body as any, {
|
|
93
|
-
status: response.status,
|
|
94
|
-
statusText: response.statusText,
|
|
95
|
-
headers: response.headers
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
case "FormData": {
|
|
99
|
-
return new Response(body.formData, {
|
|
100
|
-
status: response.status,
|
|
101
|
-
statusText: response.statusText,
|
|
102
|
-
headers: response.headers
|
|
103
|
-
})
|
|
104
|
-
}
|
|
105
|
-
case "Stream": {
|
|
106
|
-
return new Response(Stream.toReadableStream(body.stream), {
|
|
107
|
-
status: response.status,
|
|
108
|
-
statusText: response.statusText,
|
|
109
|
-
headers: response.headers
|
|
110
|
-
})
|
|
111
|
-
}
|
|
87
|
+
const makeResponse = (response: ServerResponse.ServerResponse): Response => {
|
|
88
|
+
const body = response.body
|
|
89
|
+
switch (body._tag) {
|
|
90
|
+
case "Empty": {
|
|
91
|
+
return new Response(undefined, {
|
|
92
|
+
status: response.status,
|
|
93
|
+
statusText: response.statusText,
|
|
94
|
+
headers: response.headers
|
|
95
|
+
})
|
|
112
96
|
}
|
|
113
|
-
|
|
97
|
+
case "Uint8Array":
|
|
98
|
+
case "Raw": {
|
|
99
|
+
return new Response(body.body as any, {
|
|
100
|
+
status: response.status,
|
|
101
|
+
statusText: response.statusText,
|
|
102
|
+
headers: response.headers
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
case "FormData": {
|
|
106
|
+
return new Response(body.formData, {
|
|
107
|
+
status: response.status,
|
|
108
|
+
statusText: response.statusText,
|
|
109
|
+
headers: response.headers
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
case "Stream": {
|
|
113
|
+
return new Response(Stream.toReadableStream(body.stream), {
|
|
114
|
+
status: response.status,
|
|
115
|
+
statusText: response.statusText,
|
|
116
|
+
headers: response.headers
|
|
117
|
+
})
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const respond = Middleware.make((httpApp) =>
|
|
123
|
+
Effect.flatMap(
|
|
124
|
+
ServerRequest.ServerRequest,
|
|
125
|
+
(request) =>
|
|
126
|
+
Effect.onExit(
|
|
127
|
+
httpApp,
|
|
128
|
+
(exit) =>
|
|
129
|
+
Effect.sync(() => {
|
|
130
|
+
if (exit._tag === "Success") {
|
|
131
|
+
;(request as ServerRequestImpl).resolve(makeResponse(exit.value))
|
|
132
|
+
} else {
|
|
133
|
+
;(request as ServerRequestImpl).reject(Cause.pretty(exit.cause))
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
)
|
|
137
|
+
)
|
|
138
|
+
)
|
|
114
139
|
|
|
115
140
|
/** @internal */
|
|
116
141
|
export const layer = (
|
|
@@ -135,6 +160,8 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
|
|
|
135
160
|
readonly [IncomingMessage.TypeId]: IncomingMessage.TypeId
|
|
136
161
|
constructor(
|
|
137
162
|
readonly source: Request,
|
|
163
|
+
public resolve: (response: Response) => void,
|
|
164
|
+
public reject: (reason: any) => void,
|
|
138
165
|
readonly url = source.url,
|
|
139
166
|
public headersOverride?: Headers.Headers
|
|
140
167
|
) {
|
|
@@ -152,10 +179,10 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
|
|
|
152
179
|
return this.headersOverride
|
|
153
180
|
}
|
|
154
181
|
setUrl(url: string): ServerRequest.ServerRequest {
|
|
155
|
-
return new ServerRequestImpl(this.source, url)
|
|
182
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, url)
|
|
156
183
|
}
|
|
157
184
|
replaceHeaders(headers: Headers.Headers): ServerRequest.ServerRequest {
|
|
158
|
-
return new ServerRequestImpl(this.source, this.url, headers)
|
|
185
|
+
return new ServerRequestImpl(this.source, this.resolve, this.reject, this.url, headers)
|
|
159
186
|
}
|
|
160
187
|
|
|
161
188
|
get stream(): Stream.Stream<never, Error.RequestError, Uint8Array> {
|