bare-http1 4.5.3 → 4.5.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/index.d.ts CHANGED
@@ -28,25 +28,23 @@ export interface HTTPIncomingMessageEvents extends ReadableEvents {
28
28
  }
29
29
 
30
30
  export interface HTTPIncomingMessageOptions {
31
+ headers?: Record<string, string | number>
31
32
  method?: HTTPMethod
32
- url?: URL | string
33
+ url?: string
33
34
  statusCode?: HTTPStatusCode
34
35
  statusMessage?: HTTPStatusMessage
35
36
  }
36
37
 
37
- export interface HTTPIncomingMessage<
38
+ interface HTTPIncomingMessage<
38
39
  M extends HTTPIncomingMessageEvents = HTTPIncomingMessageEvents
39
40
  > extends Readable<M> {
40
41
  readonly socket: TCPSocket
41
- readonly headers: Record<string, string | number>
42
42
  readonly upgrade: boolean
43
-
44
- readonly method: HTTPMethod
45
- readonly url: URL | string
46
-
47
- readonly statusCode: HTTPStatusCode
48
- readonly statusMessage: HTTPStatusMessage
49
-
43
+ headers: Record<string, string | number>
44
+ method: HTTPMethod
45
+ url: string
46
+ statusCode: HTTPStatusCode
47
+ statusMessage: HTTPStatusMessage
50
48
  readonly httpVersion: '1.1'
51
49
 
52
50
  getHeader(name: string): string | number | undefined
@@ -56,27 +54,25 @@ export interface HTTPIncomingMessage<
56
54
  setTimeout(ms: number, ontimeout?: () => void): this
57
55
  }
58
56
 
59
- class HTTPIncomingMessage extends Readable {
60
- constructor(
61
- socket?: TCPSocket,
62
- headers?: Record<string, string | number>,
63
- opts?: HTTPIncomingMessageOptions
64
- )
57
+ declare class HTTPIncomingMessage<
58
+ M extends HTTPIncomingMessageEvents = HTTPIncomingMessageEvents
59
+ > extends Readable<M> {
60
+ constructor(socket?: TCPSocket, opts?: HTTPIncomingMessageOptions)
65
61
  }
66
62
 
67
- export { HTTPIncomingMessage as IncomingMessage }
63
+ export { type HTTPIncomingMessage, HTTPIncomingMessage as IncomingMessage }
68
64
 
69
65
  export interface HTTPOutgoingMessageEvents extends WritableEvents {
70
66
  timeout: []
71
67
  }
72
68
 
73
- export interface HTTPOutgoingMessage<
69
+ interface HTTPOutgoingMessage<
74
70
  M extends HTTPOutgoingMessageEvents = HTTPOutgoingMessageEvents
75
71
  > extends Writable<M> {
76
72
  readonly socket: TCPSocket
77
- readonly headers: Record<string, string | number>
78
- readonly headersSent: boolean
79
73
  readonly upgrade: boolean
74
+ readonly headersSent: boolean
75
+ headers: Record<string, string | number>
80
76
 
81
77
  getHeader(name: string): string | number | undefined
82
78
  getHeaders(): Record<string, string | number>
@@ -87,31 +83,29 @@ export interface HTTPOutgoingMessage<
87
83
  setTimeout(ms: number, ontimeout?: () => void): this
88
84
  }
89
85
 
90
- class HTTPOutgoingMessage extends Writable {
86
+ declare class HTTPOutgoingMessage<
87
+ M extends HTTPOutgoingMessageEvents = HTTPOutgoingMessageEvents
88
+ > extends Writable<M> {
91
89
  constructor(socket?: TCPSocket)
92
90
  }
93
91
 
94
- export { HTTPOutgoingMessage as OutgoingMessage }
92
+ export { type HTTPOutgoingMessage, HTTPOutgoingMessage as OutgoingMessage }
95
93
 
96
94
  export interface HTTPAgentOptions {
97
95
  keepAlive?: boolean
98
96
  keepAliveMsecs?: number
99
97
  }
100
98
 
101
- export interface HTTPAgent {
99
+ interface HTTPAgent {
102
100
  readonly suspended: boolean
103
101
  readonly resumed: Promise<void> | null
104
102
  readonly sockets: IterableIterator<TCPSocket>
105
103
  readonly freeSockets: IterableIterator<TCPSocket>
106
104
 
107
105
  createConnection(opts?: TCPSocketOptions & TCPSocketConnectOptions): TCPSocket
108
-
109
106
  reuseSocket(socket: TCPSocket, req?: HTTPClientRequest): void
110
-
111
107
  keepSocketAlive(socket: TCPSocket): boolean
112
-
113
108
  getName(opts: { host: string; port: number }): string
114
-
115
109
  addRequest(req: HTTPClientRequest, opts: TCPSocketOptions & TCPSocketConnectOptions): void
116
110
 
117
111
  suspend(): void
@@ -119,15 +113,17 @@ export interface HTTPAgent {
119
113
  destroy(): void
120
114
  }
121
115
 
122
- class HTTPAgent {
116
+ declare class HTTPAgent {
123
117
  constructor(opts?: HTTPAgentOptions & TCPSocketOptions & TCPSocketConnectOptions)
118
+ }
124
119
 
125
- static readonly global: HTTPAgent
120
+ declare namespace HTTPAgent {
121
+ export const global: HTTPAgent
126
122
  }
127
123
 
128
124
  export const globalAgent: HTTPAgent
129
125
 
130
- export { HTTPAgent as Agent }
126
+ export { type HTTPAgent, HTTPAgent as Agent }
131
127
 
132
128
  export interface HTTPServerEvents extends TCPServerEvents {
133
129
  request: [req: HTTPIncomingMessage, res: HTTPServerResponse]
@@ -135,13 +131,13 @@ export interface HTTPServerEvents extends TCPServerEvents {
135
131
  timeout: [socket: TCPSocket]
136
132
  }
137
133
 
138
- export interface HTTPServer<M extends HTTPServerEvents = HTTPServerEvents> extends TCPServer<M> {
134
+ interface HTTPServer<M extends HTTPServerEvents = HTTPServerEvents> extends TCPServer<M> {
139
135
  readonly timeout: number | undefined
140
136
 
141
137
  setTimeout(ms: number, ontimeout?: () => void): this
142
138
  }
143
139
 
144
- class HTTPServer extends TCPServer {
140
+ declare class HTTPServer<M extends HTTPServerEvents = HTTPServerEvents> extends TCPServer<M> {
145
141
  constructor(
146
142
  opts?: HTTPServerConnectionOptions,
147
143
  onrequest?: (req: HTTPIncomingMessage, res: HTTPServerResponse) => void
@@ -150,12 +146,12 @@ class HTTPServer extends TCPServer {
150
146
  constructor(onrequest: (req: HTTPIncomingMessage, res: HTTPServerResponse) => void)
151
147
  }
152
148
 
153
- export { HTTPServer as Server }
149
+ export { type HTTPServer, HTTPServer as Server }
154
150
 
155
- export interface HTTPServerResponse extends HTTPOutgoingMessage {
151
+ interface HTTPServerResponse extends HTTPOutgoingMessage {
156
152
  readonly req: HTTPIncomingMessage
157
- readonly statusCode: HTTPStatusCode
158
- readonly statusMessage: HTTPStatusMessage | null
153
+ statusCode: HTTPStatusCode
154
+ statusMessage: HTTPStatusMessage | null
159
155
 
160
156
  writeHead(
161
157
  statusCode: HTTPStatusCode,
@@ -166,34 +162,32 @@ export interface HTTPServerResponse extends HTTPOutgoingMessage {
166
162
  writeHead(statusCode: HTTPStatusCode, headers?: Record<string, string | number>): void
167
163
  }
168
164
 
169
- class HTTPServerResponse extends HTTPOutgoingMessage {
170
- constructor(socket: TCPSocket, req: HTTPIncomingMessage, close: boolean)
165
+ declare class HTTPServerResponse extends HTTPOutgoingMessage {
166
+ constructor(socket: TCPSocket, req: HTTPIncomingMessage)
171
167
  }
172
168
 
173
- export { HTTPServerResponse as ServerResponse }
169
+ export { type HTTPServerResponse, HTTPServerResponse as ServerResponse }
174
170
 
175
171
  export interface HTTPServerConnectionOptions {
176
172
  IncomingMessage?: typeof HTTPIncomingMessage
177
173
  ServerResponse?: typeof HTTPServerResponse
178
174
  }
179
175
 
180
- export interface HTTPServerConnection {
176
+ interface HTTPServerConnection {
181
177
  readonly server: HTTPServer
182
178
  readonly socket: TCPSocket | null
183
-
184
179
  readonly req: HTTPIncomingMessage | null
185
180
  readonly res: HTTPServerResponse | null
186
-
187
181
  readonly idle: boolean
188
182
  }
189
183
 
190
- class HTTPServerConnection {
184
+ declare class HTTPServerConnection {
191
185
  constructor(server: HTTPServer, socket: TCPSocket, opts?: HTTPServerConnectionOptions)
192
186
 
193
187
  static for(socket: TCPSocket): HTTPServerConnection
194
188
  }
195
189
 
196
- export { HTTPServerConnection as ServerConnection }
190
+ export { type HTTPServerConnection, HTTPServerConnection as ServerConnection }
197
191
 
198
192
  export interface HTTPClientRequestEvents extends HTTPOutgoingMessageEvents {
199
193
  response: [res: HTTPIncomingMessage]
@@ -207,7 +201,7 @@ export interface HTTPClientRequestOptions extends TCPSocketConnectOptions {
207
201
  path?: string
208
202
  }
209
203
 
210
- export interface HTTPClientRequest<
204
+ interface HTTPClientRequest<
211
205
  M extends HTTPClientRequestEvents = HTTPClientRequestEvents
212
206
  > extends HTTPOutgoingMessage<M> {
213
207
  readonly method: HTTPMethod
@@ -215,28 +209,28 @@ export interface HTTPClientRequest<
215
209
  readonly headers: Record<string, string | number>
216
210
  }
217
211
 
218
- class HTTPClientRequest extends HTTPOutgoingMessage {
212
+ declare class HTTPClientRequest<
213
+ M extends HTTPClientRequestEvents = HTTPClientRequestEvents
214
+ > extends HTTPOutgoingMessage<M> {
219
215
  constructor(opts?: HTTPClientRequestOptions, onresponse?: () => void)
220
216
 
221
217
  constructor(onresponse: () => void)
222
218
  }
223
219
 
224
- export { HTTPClientRequest as ClientRequest }
220
+ export { type HTTPClientRequest, HTTPClientRequest as ClientRequest }
225
221
 
226
222
  export interface HTTPClientConnectionOptions {
227
223
  IncomingMessage?: typeof HTTPIncomingMessage
228
224
  }
229
225
 
230
- export interface HTTPClientConnection {
226
+ interface HTTPClientConnection {
231
227
  readonly socket: TCPSocket | null
232
-
233
228
  readonly req: HTTPClientRequest | null
234
229
  readonly res: HTTPIncomingMessage | null
235
-
236
230
  readonly idle: boolean
237
231
  }
238
232
 
239
- class HTTPClientConnection {
233
+ declare class HTTPClientConnection {
240
234
  constructor(socket: TCPSocket, opts?: HTTPClientConnectionOptions)
241
235
 
242
236
  static for(socket: TCPSocket): HTTPClientConnection | null
@@ -244,7 +238,7 @@ class HTTPClientConnection {
244
238
  static from(socket: TCPSocket, opts?: HTTPClientConnectionOptions): HTTPClientConnection
245
239
  }
246
240
 
247
- export { HTTPClientConnection as ClientConnection }
241
+ export { type HTTPClientConnection, HTTPClientConnection as ClientConnection }
248
242
 
249
243
  export function createServer(
250
244
  opts?: HTTPServerConnectionOptions,
@@ -89,7 +89,8 @@ module.exports = class HTTPClientConnection {
89
89
  this._req = null
90
90
  })
91
91
 
92
- this._res = new this._IncomingMessage(this._socket, op.headers, {
92
+ this._res = new this._IncomingMessage(this._socket, {
93
+ headers: op.headers,
93
94
  statusCode: op.code,
94
95
  statusMessage: op.reason
95
96
  })
@@ -1,12 +1,12 @@
1
1
  const { Readable } = require('bare-stream')
2
2
 
3
3
  module.exports = class HTTPIncomingMessage extends Readable {
4
- constructor(socket = null, headers = {}, opts = {}) {
4
+ constructor(socket = null, opts = {}) {
5
5
  super()
6
6
 
7
7
  this._socket = socket
8
- this._headers = headers
9
8
  this._upgrade = false
9
+ this._headers = opts.headers || {}
10
10
 
11
11
  // Server options
12
12
  this._method = opts.method || ''
@@ -21,30 +21,50 @@ module.exports = class HTTPIncomingMessage extends Readable {
21
21
  return this._socket
22
22
  }
23
23
 
24
+ get upgrade() {
25
+ return this._upgrade
26
+ }
27
+
24
28
  get headers() {
25
29
  return this._headers
26
30
  }
27
31
 
28
- get upgrade() {
29
- return this._upgrade
32
+ set headers(value) {
33
+ this._headers = value
30
34
  }
31
35
 
32
36
  get method() {
33
37
  return this._method
34
38
  }
35
39
 
40
+ set method(value) {
41
+ this._method = value
42
+ }
43
+
36
44
  get url() {
37
45
  return this._url
38
46
  }
39
47
 
48
+ set url(value) {
49
+ this._url = value
50
+ }
51
+
40
52
  get statusCode() {
41
53
  return this._statusCode
42
54
  }
43
55
 
56
+ set statusCode(value) {
57
+ this._statusCode = value
58
+ }
59
+
44
60
  get statusMessage() {
45
61
  return this._statusMessage
46
62
  }
47
63
 
64
+ set statusMessage(value) {
65
+ this._statusMessage = value
66
+ }
67
+
48
68
  get httpVersion() {
49
69
  return '1.1'
50
70
  }
@@ -6,25 +6,29 @@ module.exports = class HTTPOutgoingMessage extends Writable {
6
6
  super()
7
7
 
8
8
  this._socket = socket
9
- this._headers = {}
10
- this._headersSent = false
11
9
  this._upgrade = false
10
+ this._headersSent = false
11
+ this._headers = {}
12
12
  }
13
13
 
14
14
  get socket() {
15
15
  return this._socket
16
16
  }
17
17
 
18
- get headers() {
19
- return this._headers
18
+ get upgrade() {
19
+ return this._upgrade
20
20
  }
21
21
 
22
22
  get headersSent() {
23
23
  return this._headersSent
24
24
  }
25
25
 
26
- get upgrade() {
27
- return this._upgrade
26
+ get headers() {
27
+ return this._headers
28
+ }
29
+
30
+ set headers(value) {
31
+ this._headers = value
28
32
  }
29
33
 
30
34
  getHeader(name) {
@@ -83,7 +83,8 @@ module.exports = class HTTPServerConnection {
83
83
  for (const op of this._parser.push(data)) {
84
84
  switch (op.type) {
85
85
  case REQUEST:
86
- this._req = new this._IncomingMessage(this._socket, op.headers, {
86
+ this._req = new this._IncomingMessage(this._socket, {
87
+ headers: op.headers,
87
88
  method: op.method,
88
89
  url: op.url
89
90
  })
@@ -104,11 +105,7 @@ module.exports = class HTTPServerConnection {
104
105
  return this._onupgrade(this._parser.end())
105
106
  }
106
107
 
107
- this._res = new this._ServerResponse(
108
- this._socket,
109
- this._req,
110
- op.headers.connection === 'close'
111
- )
108
+ this._res = new this._ServerResponse(this._socket, this._req)
112
109
 
113
110
  this._res.on('close', () => {
114
111
  this._res = null
@@ -6,7 +6,7 @@ const CHUNK_DELIMITER = Buffer.from('\r\n')
6
6
  const CHUNK_TERMINATOR = Buffer.from('0\r\n\r\n')
7
7
 
8
8
  module.exports = class HTTPServerResponse extends HTTPOutgoingMessage {
9
- constructor(socket, req, close) {
9
+ constructor(socket, req) {
10
10
  super(socket)
11
11
 
12
12
  this._req = req
@@ -15,7 +15,7 @@ module.exports = class HTTPServerResponse extends HTTPOutgoingMessage {
15
15
  this._statusMessage = null
16
16
 
17
17
  this._chunked = true
18
- this._close = close
18
+ this._close = req.headers.connection === 'close'
19
19
  this._onlyHeaders = req.method === 'HEAD'
20
20
 
21
21
  this._pendingWrite = null
@@ -29,10 +29,18 @@ module.exports = class HTTPServerResponse extends HTTPOutgoingMessage {
29
29
  return this._statusCode
30
30
  }
31
31
 
32
+ set statusCode(value) {
33
+ this._statusCode = value
34
+ }
35
+
32
36
  get statusMessage() {
33
37
  return this._statusMessage
34
38
  }
35
39
 
40
+ set statusMessage(value) {
41
+ this._statusMessage = value
42
+ }
43
+
36
44
  writeHead(statusCode, statusMessage = null, headers = {}) {
37
45
  if (typeof statusMessage === 'object' && statusMessage !== null) {
38
46
  headers = statusMessage
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-http1",
3
- "version": "4.5.3",
3
+ "version": "4.5.5",
4
4
  "description": "Native HTTP/1 library for JavaScript",
5
5
  "exports": {
6
6
  "./package": "./package.json",