@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.
@@ -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 = Effect.flatMap(middleware ? middleware(httpApp) : httpApp, respond);
45
- return Effect.acquireRelease(() => Effect.sync(() => {
46
- handlerStack.pop();
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 runPromise(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request)));
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.runtime()));
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 respond = response => Effect.sync(() => {
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 = Effect.flatMap(middleware ? middleware(httpApp) : httpApp, respond);
37
- return Effect.acquireRelease(() => Effect.sync(() => {
38
- handlerStack.pop();
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 runPromise(Effect.provideService(app, ServerRequest.ServerRequest, new ServerRequestImpl(request)));
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.runtime()));
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 respond = response => Effect.sync(() => {
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","respond","acquireRelease","pop","reload","length","runtime","async","runPromise","handler","request","provideService","ServerRequestImpl","push","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","fromWeb","formDataStream","arrayBuffer","arrayBufferEffect"],"sources":["../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"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"}
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.0",
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.17"
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.HttpApp<never, unknown, Response> = Effect.flatMap(
49
- middleware ? middleware(httpApp) : httpApp,
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.flatMap((runtime) =>
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 runPromise = Runtime.runPromise(runtime)
65
+ const runFork = Runtime.runFork(runtime)
57
66
  function handler(request: Request, _server: BunServer) {
58
- return runPromise(Effect.provideService(
59
- app,
60
- ServerRequest.ServerRequest,
61
- new ServerRequestImpl(request)
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 respond = (response: ServerResponse.ServerResponse) =>
80
- Effect.sync((): Response => {
81
- const body = response.body
82
- switch (body._tag) {
83
- case "Empty": {
84
- return new Response(undefined, {
85
- status: response.status,
86
- statusText: response.statusText,
87
- headers: response.headers
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> {