@travetto/web-http 7.0.0-rc.3 → 7.0.0-rc.5

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 CHANGED
@@ -41,7 +41,6 @@ Initialized {
41
41
  env: 'local',
42
42
  debug: false,
43
43
  production: false,
44
- dynamic: false,
45
44
  resourcePaths: [
46
45
  './doc-exec/resources'
47
46
  ],
@@ -212,7 +211,6 @@ Initialized {
212
211
  env: 'prod',
213
212
  debug: false,
214
213
  production: true,
215
- dynamic: false,
216
214
  resourcePaths: [
217
215
  './doc-exec/resources'
218
216
  ],
@@ -297,7 +295,7 @@ export class WebHttpUtil {
297
295
  * Build a simple request handler
298
296
  * @param dispatcher
299
297
  */
300
- static buildHandler(dispatcher: WebDispatcher): (req: HttpRequest, res: HttpResponse) => Promise<void>;
298
+ static buildHandler(dispatcher: WebDispatcher): (request: HttpRequest, response: HttpResponse) => Promise<void>;
301
299
  /**
302
300
  * Start an http server
303
301
  */
@@ -305,11 +303,11 @@ export class WebHttpUtil {
305
303
  /**
306
304
  * Create a WebRequest given an incoming http request
307
305
  */
308
- static toWebRequest(req: HttpRequest): WebRequest;
306
+ static toWebRequest(request: HttpRequest): WebRequest;
309
307
  /**
310
308
  * Send WebResponse to outbound http response
311
309
  */
312
- static async respondToServerResponse(webRes: WebResponse, res: HttpResponse): Promise<void>;
310
+ static async respondToServerResponse(webResponse: WebResponse, response: HttpResponse): Promise<void>;
313
311
  }
314
312
  ```
315
313
 
@@ -317,11 +315,11 @@ Specifically, looking at `buildHandler`,
317
315
 
318
316
  **Code: Web Http Utilities**
319
317
  ```typescript
320
- static buildHandler(dispatcher: WebDispatcher): (req: HttpRequest, res: HttpResponse) => Promise<void> {
321
- return async (req: HttpRequest, res: HttpResponse): Promise<void> => {
322
- const request = this.toWebRequest(req);
323
- const response = await dispatcher.dispatch({ request });
324
- this.respondToServerResponse(response, res);
318
+ static buildHandler(dispatcher: WebDispatcher): (request: HttpRequest, response: HttpResponse) => Promise<void> {
319
+ return async (request: HttpRequest, response: HttpResponse): Promise<void> => {
320
+ const webRequest = this.toWebRequest(request);
321
+ const webResponse = await dispatcher.dispatch({ request: webRequest });
322
+ this.respondToServerResponse(webResponse, response);
325
323
  };
326
324
  }
327
325
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/web-http",
3
- "version": "7.0.0-rc.3",
3
+ "version": "7.0.0-rc.5",
4
4
  "description": "Web HTTP Server Support",
5
5
  "keywords": [
6
6
  "web",
@@ -26,11 +26,11 @@
26
26
  "directory": "module/web-http"
27
27
  },
28
28
  "dependencies": {
29
- "@travetto/web": "^7.0.0-rc.2"
29
+ "@travetto/web": "^7.0.0-rc.4"
30
30
  },
31
31
  "peerDependencies": {
32
- "@travetto/cli": "^7.0.0-rc.1",
33
- "@travetto/test": "^7.0.0-rc.1"
32
+ "@travetto/cli": "^7.0.0-rc.3",
33
+ "@travetto/test": "^7.0.0-rc.3"
34
34
  },
35
35
  "peerDependenciesMeta": {
36
36
  "@travetto/test": {
package/src/http.ts CHANGED
@@ -30,11 +30,11 @@ export class WebHttpUtil {
30
30
  * Build a simple request handler
31
31
  * @param dispatcher
32
32
  */
33
- static buildHandler(dispatcher: WebDispatcher): (req: HttpRequest, res: HttpResponse) => Promise<void> {
34
- return async (req: HttpRequest, res: HttpResponse): Promise<void> => {
35
- const request = this.toWebRequest(req);
36
- const response = await dispatcher.dispatch({ request });
37
- this.respondToServerResponse(response, res);
33
+ static buildHandler(dispatcher: WebDispatcher): (request: HttpRequest, response: HttpResponse) => Promise<void> {
34
+ return async (request: HttpRequest, response: HttpResponse): Promise<void> => {
35
+ const webRequest = this.toWebRequest(request);
36
+ const webResponse = await dispatcher.dispatch({ request: webRequest });
37
+ this.respondToServerResponse(webResponse, response);
38
38
  };
39
39
  }
40
40
 
@@ -61,7 +61,7 @@ export class WebHttpUtil {
61
61
  }
62
62
  }
63
63
 
64
- const complete = new Promise<void>(r => target.on('close', r));
64
+ const complete = new Promise<void>(onClose => target.on('close', onClose));
65
65
 
66
66
  // Track connections for shutdown
67
67
  const activeConnections = new Set<HttpSocket>();
@@ -103,43 +103,43 @@ export class WebHttpUtil {
103
103
  /**
104
104
  * Create a WebRequest given an incoming http request
105
105
  */
106
- static toWebRequest(req: HttpRequest): WebRequest {
107
- const secure = req.socket instanceof TLSSocket;
108
- const [path, query] = (req.url ?? '/').split('?') ?? [];
106
+ static toWebRequest(request: HttpRequest): WebRequest {
107
+ const secure = request.socket instanceof TLSSocket;
108
+ const [path, query] = (request.url ?? '/').split('?') ?? [];
109
109
  return new WebRequest({
110
110
  context: {
111
111
  connection: {
112
- ip: req.socket.remoteAddress!,
113
- host: req.headers.host,
112
+ ip: request.socket.remoteAddress!,
113
+ host: request.headers.host,
114
114
  httpProtocol: secure ? 'https' : 'http',
115
- port: req.socket.localPort
115
+ port: request.socket.localPort
116
116
  },
117
- httpMethod: castTo(req.method?.toUpperCase()),
117
+ httpMethod: castTo(request.method?.toUpperCase()),
118
118
  path,
119
119
  httpQuery: Object.fromEntries(new URLSearchParams(query)),
120
120
  },
121
- headers: req.headers,
122
- body: WebBodyUtil.markRaw(req)
121
+ headers: request.headers,
122
+ body: WebBodyUtil.markRaw(request)
123
123
  });
124
124
  }
125
125
 
126
126
  /**
127
127
  * Send WebResponse to outbound http response
128
128
  */
129
- static async respondToServerResponse(webRes: WebResponse, res: HttpResponse): Promise<void> {
130
- const binaryResponse = new WebResponse({ context: webRes.context, ...WebBodyUtil.toBinaryMessage(webRes) });
131
- binaryResponse.headers.forEach((v, k) => res.setHeader(k, v));
132
- res.statusCode = WebCommonUtil.getStatusCode(binaryResponse);
129
+ static async respondToServerResponse(webResponse: WebResponse, response: HttpResponse): Promise<void> {
130
+ const binaryResponse = new WebResponse({ context: webResponse.context, ...WebBodyUtil.toBinaryMessage(webResponse) });
131
+ binaryResponse.headers.forEach((value, key) => response.setHeader(key, value));
132
+ response.statusCode = WebCommonUtil.getStatusCode(binaryResponse);
133
133
  const body = binaryResponse.body;
134
134
 
135
135
  if (BinaryUtil.isReadable(body)) {
136
- await pipeline(body, res);
136
+ await pipeline(body, response);
137
137
  } else {
138
138
  if (body) {
139
139
  // Weird type union that http2 uses
140
- 'stream' in res ? res.write(body) : res.write(body);
140
+ 'stream' in response ? response.write(body) : response.write(body);
141
141
  }
142
- res.end();
142
+ response.end();
143
143
  }
144
144
  }
145
145
  }
@@ -9,14 +9,14 @@ import type { WebHttpServer } from '../src/types.ts';
9
9
  /**
10
10
  * Run a web server
11
11
  */
12
- @CliCommand({ runTarget: true, with: { debugIpc: true, canRestart: true, module: true, env: true } })
12
+ @CliCommand({ runTarget: true, with: { debugIpc: true, restartForDev: true, module: true, env: true } })
13
13
  export class WebHttpCommand implements CliCommandShape {
14
14
 
15
15
  /** Port to run on */
16
16
  port?: number;
17
17
 
18
18
  /** Kill conflicting port owner */
19
- killConflict?: boolean;
19
+ killConflict?: boolean = !Runtime.production;
20
20
 
21
21
  preMain(): void {
22
22
  if (this.port) {
@@ -28,12 +28,12 @@ export class WebHttpCommand implements CliCommandShape {
28
28
  await Registry.init();
29
29
  const instance = await DependencyRegistryIndex.getInstance(toConcrete<WebHttpServer>());
30
30
 
31
- const handle = await Util.acquireWithRetry(
32
- () => instance.serve(),
33
- NetUtil.freePortOnConflict,
34
- this.killConflict && !Runtime.production ? 5 : 1
35
- );
36
-
37
- return handle.complete;
31
+ if (this.killConflict) {
32
+ const handle = await Util.acquireWithRetry(() => instance.serve(), NetUtil.freePortOnConflict, 5);
33
+ return handle.complete;
34
+ } else {
35
+ const handle = await instance.serve();
36
+ return handle.complete;
37
+ }
38
38
  }
39
39
  }