@seanhogg/builderforce-webcontainers-core 2026.10.7 → 2026.10.8

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.
Files changed (150) hide show
  1. package/dist/archive.d.ts +2 -0
  2. package/dist/archive.d.ts.map +1 -1
  3. package/dist/archive.js +6 -4
  4. package/dist/archive.js.map +1 -1
  5. package/dist/html.d.ts +2 -0
  6. package/dist/html.d.ts.map +1 -1
  7. package/dist/html.js +5 -3
  8. package/dist/html.js.map +1 -1
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/node/http/client.d.ts +3 -1
  14. package/dist/node/http/client.d.ts.map +1 -1
  15. package/dist/node/http/client.js +74 -5
  16. package/dist/node/http/client.js.map +1 -1
  17. package/dist/node/http/index.d.ts.map +1 -1
  18. package/dist/node/http/index.js +2 -1
  19. package/dist/node/http/index.js.map +1 -1
  20. package/dist/node/http/messages.d.ts +87 -0
  21. package/dist/node/http/messages.d.ts.map +1 -0
  22. package/dist/node/http/messages.js +146 -0
  23. package/dist/node/http/messages.js.map +1 -0
  24. package/dist/node/http/server.d.ts +13 -98
  25. package/dist/node/http/server.d.ts.map +1 -1
  26. package/dist/node/http/server.js +34 -202
  27. package/dist/node/http/server.js.map +1 -1
  28. package/dist/node/http/serverResponse.d.ts +42 -0
  29. package/dist/node/http/serverResponse.d.ts.map +1 -0
  30. package/dist/node/http/serverResponse.js +89 -0
  31. package/dist/node/http/serverResponse.js.map +1 -0
  32. package/dist/node/http/upgradeSocket.d.ts +34 -0
  33. package/dist/node/http/upgradeSocket.d.ts.map +1 -0
  34. package/dist/node/http/upgradeSocket.js +73 -0
  35. package/dist/node/http/upgradeSocket.js.map +1 -0
  36. package/dist/node/runtime.js +2 -2
  37. package/dist/node/runtime.js.map +1 -1
  38. package/dist/previewBridge.d.ts +42 -0
  39. package/dist/previewBridge.d.ts.map +1 -0
  40. package/dist/previewBridge.js +192 -0
  41. package/dist/previewBridge.js.map +1 -0
  42. package/dist/shell/ast.d.ts +101 -0
  43. package/dist/shell/ast.d.ts.map +1 -0
  44. package/dist/shell/ast.js +7 -0
  45. package/dist/shell/ast.js.map +1 -0
  46. package/dist/shell/builtins.d.ts +14 -0
  47. package/dist/shell/builtins.d.ts.map +1 -1
  48. package/dist/shell/builtins.js +87 -7
  49. package/dist/shell/builtins.js.map +1 -1
  50. package/dist/shell/compound.d.ts +30 -0
  51. package/dist/shell/compound.d.ts.map +1 -0
  52. package/dist/shell/compound.js +73 -0
  53. package/dist/shell/compound.js.map +1 -0
  54. package/dist/shell/exec.d.ts +27 -6
  55. package/dist/shell/exec.d.ts.map +1 -1
  56. package/dist/shell/exec.js +127 -41
  57. package/dist/shell/exec.js.map +1 -1
  58. package/dist/shell/expand.d.ts +5 -1
  59. package/dist/shell/expand.d.ts.map +1 -1
  60. package/dist/shell/expand.js +7 -5
  61. package/dist/shell/expand.js.map +1 -1
  62. package/dist/shell/lineReader.d.ts +9 -0
  63. package/dist/shell/lineReader.d.ts.map +1 -0
  64. package/dist/shell/lineReader.js +42 -0
  65. package/dist/shell/lineReader.js.map +1 -0
  66. package/dist/shell/packageManagers.d.ts +20 -0
  67. package/dist/shell/packageManagers.d.ts.map +1 -0
  68. package/dist/shell/packageManagers.js +74 -0
  69. package/dist/shell/packageManagers.js.map +1 -0
  70. package/dist/shell/parse.d.ts +16 -66
  71. package/dist/shell/parse.d.ts.map +1 -1
  72. package/dist/shell/parse.js +244 -243
  73. package/dist/shell/parse.js.map +1 -1
  74. package/dist/shell/program.d.ts.map +1 -1
  75. package/dist/shell/program.js +2 -1
  76. package/dist/shell/program.js.map +1 -1
  77. package/dist/shell/testCommand.d.ts +9 -0
  78. package/dist/shell/testCommand.d.ts.map +1 -0
  79. package/dist/shell/testCommand.js +105 -0
  80. package/dist/shell/testCommand.js.map +1 -0
  81. package/dist/shell/tokenize.d.ts +25 -0
  82. package/dist/shell/tokenize.d.ts.map +1 -0
  83. package/dist/shell/tokenize.js +279 -0
  84. package/dist/shell/tokenize.js.map +1 -0
  85. package/dist/system/cookieJar.d.ts +59 -0
  86. package/dist/system/cookieJar.d.ts.map +1 -0
  87. package/dist/system/cookieJar.js +187 -0
  88. package/dist/system/cookieJar.js.map +1 -0
  89. package/dist/system/httpStream.d.ts +40 -0
  90. package/dist/system/httpStream.d.ts.map +1 -0
  91. package/dist/system/httpStream.js +156 -0
  92. package/dist/system/httpStream.js.map +1 -0
  93. package/dist/system/index.d.ts +9 -1
  94. package/dist/system/index.d.ts.map +1 -1
  95. package/dist/system/index.js +4 -0
  96. package/dist/system/index.js.map +1 -1
  97. package/dist/system/kernel.d.ts +10 -2
  98. package/dist/system/kernel.d.ts.map +1 -1
  99. package/dist/system/kernel.js +12 -3
  100. package/dist/system/kernel.js.map +1 -1
  101. package/dist/system/ports.d.ts +9 -4
  102. package/dist/system/ports.d.ts.map +1 -1
  103. package/dist/system/ports.js +21 -2
  104. package/dist/system/ports.js.map +1 -1
  105. package/dist/system/programs.d.ts +1 -1
  106. package/dist/system/programs.d.ts.map +1 -1
  107. package/dist/system/programs.js +2 -0
  108. package/dist/system/programs.js.map +1 -1
  109. package/dist/system/types.d.ts +36 -6
  110. package/dist/system/types.d.ts.map +1 -1
  111. package/dist/system/webSocketClient.d.ts +37 -0
  112. package/dist/system/webSocketClient.d.ts.map +1 -0
  113. package/dist/system/webSocketClient.js +152 -0
  114. package/dist/system/webSocketClient.js.map +1 -0
  115. package/dist/system/webSocketFrames.d.ts +39 -0
  116. package/dist/system/webSocketFrames.d.ts.map +1 -0
  117. package/dist/system/webSocketFrames.js +117 -0
  118. package/dist/system/webSocketFrames.js.map +1 -0
  119. package/package.json +1 -1
  120. package/src/archive.ts +8 -4
  121. package/src/html.ts +5 -3
  122. package/src/index.ts +2 -1
  123. package/src/node/http/client.ts +69 -6
  124. package/src/node/http/index.ts +2 -1
  125. package/src/node/http/messages.ts +150 -0
  126. package/src/node/http/server.ts +37 -202
  127. package/src/node/http/serverResponse.ts +98 -0
  128. package/src/node/http/upgradeSocket.ts +79 -0
  129. package/src/node/runtime.ts +2 -2
  130. package/src/previewBridge.ts +194 -0
  131. package/src/shell/ast.ts +85 -0
  132. package/src/shell/builtins.ts +97 -7
  133. package/src/shell/compound.ts +89 -0
  134. package/src/shell/exec.ts +128 -40
  135. package/src/shell/expand.ts +8 -6
  136. package/src/shell/lineReader.ts +46 -0
  137. package/src/shell/packageManagers.ts +75 -0
  138. package/src/shell/parse.ts +233 -236
  139. package/src/shell/program.ts +2 -1
  140. package/src/shell/testCommand.ts +105 -0
  141. package/src/shell/tokenize.ts +257 -0
  142. package/src/system/cookieJar.ts +187 -0
  143. package/src/system/httpStream.ts +168 -0
  144. package/src/system/index.ts +24 -1
  145. package/src/system/kernel.ts +16 -4
  146. package/src/system/ports.ts +23 -4
  147. package/src/system/programs.ts +3 -1
  148. package/src/system/types.ts +40 -6
  149. package/src/system/webSocketClient.ts +177 -0
  150. package/src/system/webSocketFrames.ts +118 -0
@@ -0,0 +1,146 @@
1
+ /**
2
+ * The message and socket objects both halves of `http` share: the socket
3
+ * stand-in frameworks read connection details from, IncomingMessage (a request
4
+ * a server receives, or a response a client receives) and the header store
5
+ * behind ServerResponse and ClientRequest.
6
+ */
7
+ import { EventEmitterBase } from '../events.js';
8
+ import { Buffer } from '../buffer.js';
9
+ import { Readable } from '../stream/readable.js';
10
+ import { Writable } from '../stream/writable.js';
11
+ /** Enough of net.Socket for frameworks that read connection details. */
12
+ export class FakeSocket extends EventEmitterBase {
13
+ remoteAddress = '127.0.0.1';
14
+ remotePort = 50000 + Math.floor(Math.random() * 10000);
15
+ remoteFamily = 'IPv4';
16
+ localAddress = '127.0.0.1';
17
+ localPort;
18
+ encrypted = false;
19
+ readable = true;
20
+ writable = true;
21
+ destroyed = false;
22
+ bytesRead = 0;
23
+ bytesWritten = 0;
24
+ constructor(port = 0) {
25
+ super();
26
+ this.localPort = port;
27
+ }
28
+ setTimeout(_ms, cb) { if (cb)
29
+ this.once('timeout', cb); return this; }
30
+ setNoDelay() { return this; }
31
+ setKeepAlive() { return this; }
32
+ address() { return { address: this.localAddress, family: 'IPv4', port: this.localPort }; }
33
+ ref() { return this; }
34
+ unref() { return this; }
35
+ cork() { }
36
+ uncork() { }
37
+ write() { return true; }
38
+ end() { return this; }
39
+ destroy() {
40
+ this.destroyed = true;
41
+ return this;
42
+ }
43
+ }
44
+ export function lowerHeaders(headers) {
45
+ const out = {};
46
+ const raw = [];
47
+ for (const [key, value] of Object.entries(headers)) {
48
+ const k = key.toLowerCase();
49
+ raw.push(key, value);
50
+ out[k] = k === 'set-cookie' ? [value] : value;
51
+ }
52
+ return { headers: out, raw };
53
+ }
54
+ export class IncomingMessage extends Readable {
55
+ httpVersion = '1.1';
56
+ httpVersionMajor = 1;
57
+ httpVersionMinor = 1;
58
+ method;
59
+ url;
60
+ statusCode;
61
+ statusMessage;
62
+ headers = {};
63
+ rawHeaders = [];
64
+ trailers = {};
65
+ rawTrailers = [];
66
+ complete = false;
67
+ aborted = false;
68
+ socket;
69
+ connection;
70
+ constructor(socket = new FakeSocket()) {
71
+ super();
72
+ this.socket = socket;
73
+ this.connection = socket;
74
+ }
75
+ _read() {
76
+ // the body is pushed up front
77
+ }
78
+ setTimeout(_ms, cb) {
79
+ if (cb)
80
+ this.once('timeout', cb);
81
+ return this;
82
+ }
83
+ /** Fill from wire data; `body` null means none. */
84
+ _fill(headers, body) {
85
+ this._setHeaders(headers);
86
+ if (body?.length)
87
+ this.push(Buffer.from(body));
88
+ this._complete();
89
+ }
90
+ /** Headers first, for a body that streams in through `push` and ends with `_complete`. */
91
+ _setHeaders(headers) {
92
+ const { headers: lower, raw } = lowerHeaders(headers);
93
+ this.headers = lower;
94
+ this.rawHeaders = raw;
95
+ }
96
+ _complete() {
97
+ this.push(null);
98
+ this.complete = true;
99
+ }
100
+ }
101
+ export class OutgoingHeaders extends Writable {
102
+ _headers = new Map();
103
+ headersSent = false;
104
+ sendDate = true;
105
+ setHeader(name, value) {
106
+ if (this.headersSent)
107
+ throw Object.assign(new Error('Cannot set headers after they are sent to the client'), { code: 'ERR_HTTP_HEADERS_SENT' });
108
+ this._headers.set(name.toLowerCase(), { name, value: Array.isArray(value) ? value.map(String) : String(value) });
109
+ return this;
110
+ }
111
+ appendHeader(name, value) {
112
+ const existing = this.getHeader(name);
113
+ const list = [...(existing === undefined ? [] : Array.isArray(existing) ? existing : [String(existing)]), ...(Array.isArray(value) ? value : [value])];
114
+ return this.setHeader(name, list);
115
+ }
116
+ getHeader(name) {
117
+ return this._headers.get(name.toLowerCase())?.value;
118
+ }
119
+ getHeaders() {
120
+ const out = Object.create(null);
121
+ for (const [key, { value }] of this._headers)
122
+ out[key] = value;
123
+ return out;
124
+ }
125
+ getHeaderNames() {
126
+ return [...this._headers.keys()];
127
+ }
128
+ getRawHeaderNames() {
129
+ return [...this._headers.values()].map((h) => h.name);
130
+ }
131
+ hasHeader(name) {
132
+ return this._headers.has(name.toLowerCase());
133
+ }
134
+ removeHeader(name) {
135
+ this._headers.delete(name.toLowerCase());
136
+ }
137
+ flushHeaders() {
138
+ this.headersSent = true;
139
+ }
140
+ setTimeout(_ms, cb) {
141
+ if (cb)
142
+ this.once('timeout', cb);
143
+ return this;
144
+ }
145
+ }
146
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/node/http/messages.ts"],"names":[],"mappings":"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"}
@@ -1,107 +1,19 @@
1
1
  /**
2
2
  * `http.createServer` on a virtual port. `listen(port)` registers a handler with
3
3
  * the system; each request arrives as plain data (from the preview service
4
- * worker, or `loopback` from inside the runtime), becomes an IncomingMessage /
5
- * ServerResponse pair for the app, and the finished response goes back as data.
6
- * Responses are buffered: streaming (SSE, long-polling) arrives in one piece.
4
+ * worker, or `loopback` from inside the runtime) and becomes an IncomingMessage /
5
+ * ServerResponse pair for the app. The response streams back as it is written
6
+ * (see serverResponse.ts). Requests that ask to upgrade (WebSockets) go to the
7
+ * `upgrade` listeners with a socket over the raw connection (upgradeSocket.ts).
7
8
  */
8
9
  import { EventEmitterBase } from '../events.js';
9
- import { Readable } from '../stream/readable.js';
10
- import { Writable } from '../stream/writable.js';
11
10
  import type { EventLoop } from '../loop.js';
12
- import type { HttpResponseData, System } from '../../system/types.js';
13
- /** Enough of net.Socket for frameworks that read connection details. */
14
- export declare class FakeSocket extends EventEmitterBase {
15
- remoteAddress: string;
16
- remotePort: number;
17
- remoteFamily: string;
18
- localAddress: string;
19
- localPort: number;
20
- encrypted: boolean;
21
- readable: boolean;
22
- writable: boolean;
23
- destroyed: boolean;
24
- bytesRead: number;
25
- bytesWritten: number;
26
- constructor(port?: number);
27
- setTimeout(_ms: number, cb?: () => void): this;
28
- setNoDelay(): this;
29
- setKeepAlive(): this;
30
- address(): {
31
- address: string;
32
- family: string;
33
- port: number;
34
- };
35
- ref(): this;
36
- unref(): this;
37
- cork(): void;
38
- uncork(): void;
39
- write(): boolean;
40
- end(): this;
41
- destroy(): this;
42
- }
43
- export declare class IncomingMessage extends Readable {
44
- httpVersion: string;
45
- httpVersionMajor: number;
46
- httpVersionMinor: number;
47
- method?: string;
48
- url?: string;
49
- statusCode?: number;
50
- statusMessage?: string;
51
- headers: Record<string, string | string[]>;
52
- rawHeaders: string[];
53
- trailers: Record<string, string>;
54
- rawTrailers: string[];
55
- complete: boolean;
56
- aborted: boolean;
57
- socket: FakeSocket;
58
- connection: FakeSocket;
59
- constructor(socket?: FakeSocket);
60
- _read(): void;
61
- setTimeout(_ms: number, cb?: () => void): this;
62
- /** Fill from wire data; `body` null means none. */
63
- _fill(headers: Record<string, string>, body: Uint8Array | null): void;
64
- }
65
- export declare class OutgoingHeaders extends Writable {
66
- protected _headers: Map<string, {
67
- name: string;
68
- value: string | string[];
69
- }>;
70
- headersSent: boolean;
71
- sendDate: boolean;
72
- setHeader(name: string, value: string | number | readonly string[]): this;
73
- appendHeader(name: string, value: string | readonly string[]): this;
74
- getHeader(name: string): string | string[] | undefined;
75
- getHeaders(): Record<string, string | string[]>;
76
- getHeaderNames(): string[];
77
- getRawHeaderNames(): string[];
78
- hasHeader(name: string): boolean;
79
- removeHeader(name: string): void;
80
- flushHeaders(): void;
81
- setTimeout(_ms: number, cb?: () => void): this;
82
- }
83
- export declare class ServerResponse extends OutgoingHeaders {
84
- private readonly onDone;
85
- statusCode: number;
86
- statusMessage: string;
87
- req: IncomingMessage;
88
- socket: FakeSocket;
89
- connection: FakeSocket;
90
- chunkedEncoding: boolean;
91
- shouldKeepAlive: boolean;
92
- private readonly chunks;
93
- constructor(req: IncomingMessage, onDone: (response: HttpResponseData) => void);
94
- get finished(): boolean;
95
- writeHead(status: number, message?: string | Record<string, unknown> | unknown[], headers?: Record<string, unknown> | unknown[]): this;
96
- writeContinue(): void;
97
- writeProcessing(): void;
98
- writeEarlyHints(): void;
99
- addTrailers(): void;
100
- assignSocket(): void;
101
- detachSocket(): void;
102
- _write(chunk: Uint8Array, _encoding: string, callback: () => void): void;
103
- _final(callback: () => void): void;
104
- }
11
+ import type { System } from '../../system/types.js';
12
+ import { IncomingMessage } from './messages.js';
13
+ import { ServerResponse } from './serverResponse.js';
14
+ export { FakeSocket, IncomingMessage, OutgoingHeaders } from './messages.js';
15
+ export { ServerResponse } from './serverResponse.js';
16
+ export { UpgradeSocket } from './upgradeSocket.js';
105
17
  export interface ServerDeps {
106
18
  system: System;
107
19
  loop: EventLoop;
@@ -130,6 +42,9 @@ export declare class Server extends EventEmitterBase {
130
42
  ref(): this;
131
43
  unref(): this;
132
44
  getConnections(cb: (error: null, count: number) => void): void;
45
+ private toIncoming;
133
46
  private handle;
47
+ /** A connection asking to upgrade: Node destroys it when nobody listens for `upgrade`. */
48
+ private upgrade;
134
49
  }
135
50
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/node/http/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/node/http/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAoD,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEtG,OAAO,EAAc,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,qBAAa,MAAO,SAAQ,gBAAgB;IAU9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IATjC,SAAS,UAAS;IAClB,OAAO,SAAK;IACZ,gBAAgB,SAAQ;IACxB,cAAc,SAAS;IACvB,cAAc,SAAU;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,OAAO,CAAC,YAAY,CAAC,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAC,CAAa;gBAEA,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI;IAMhI,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAiBhC,OAAO,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAInE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAe/C,mBAAmB,IAAI,IAAI;IAC3B,oBAAoB,IAAI,IAAI;IAC5B,UAAU,CAAC,EAAE,SAAI,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAKzC,GAAG,IAAI,IAAI;IAIX,KAAK,IAAI,IAAI;IAKb,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9D,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,MAAM;IA6Bd,0FAA0F;IAC1F,OAAO,CAAC,OAAO;CAMhB"}
@@ -1,204 +1,20 @@
1
1
  /**
2
2
  * `http.createServer` on a virtual port. `listen(port)` registers a handler with
3
3
  * the system; each request arrives as plain data (from the preview service
4
- * worker, or `loopback` from inside the runtime), becomes an IncomingMessage /
5
- * ServerResponse pair for the app, and the finished response goes back as data.
6
- * Responses are buffered: streaming (SSE, long-polling) arrives in one piece.
4
+ * worker, or `loopback` from inside the runtime) and becomes an IncomingMessage /
5
+ * ServerResponse pair for the app. The response streams back as it is written
6
+ * (see serverResponse.ts). Requests that ask to upgrade (WebSockets) go to the
7
+ * `upgrade` listeners with a socket over the raw connection (upgradeSocket.ts).
7
8
  */
8
9
  import { EventEmitterBase } from '../events.js';
9
10
  import { Buffer } from '../buffer.js';
10
- import { Readable } from '../stream/readable.js';
11
- import { Writable } from '../stream/writable.js';
12
- import { STATUS_CODES } from './status.js';
13
- /** Enough of net.Socket for frameworks that read connection details. */
14
- export class FakeSocket extends EventEmitterBase {
15
- remoteAddress = '127.0.0.1';
16
- remotePort = 50000 + Math.floor(Math.random() * 10000);
17
- remoteFamily = 'IPv4';
18
- localAddress = '127.0.0.1';
19
- localPort;
20
- encrypted = false;
21
- readable = true;
22
- writable = true;
23
- destroyed = false;
24
- bytesRead = 0;
25
- bytesWritten = 0;
26
- constructor(port = 0) {
27
- super();
28
- this.localPort = port;
29
- }
30
- setTimeout(_ms, cb) { if (cb)
31
- this.once('timeout', cb); return this; }
32
- setNoDelay() { return this; }
33
- setKeepAlive() { return this; }
34
- address() { return { address: this.localAddress, family: 'IPv4', port: this.localPort }; }
35
- ref() { return this; }
36
- unref() { return this; }
37
- cork() { }
38
- uncork() { }
39
- write() { return true; }
40
- end() { return this; }
41
- destroy() {
42
- this.destroyed = true;
43
- return this;
44
- }
45
- }
46
- function lowerHeaders(headers) {
47
- const out = {};
48
- const raw = [];
49
- for (const [key, value] of Object.entries(headers)) {
50
- const k = key.toLowerCase();
51
- raw.push(key, value);
52
- out[k] = k === 'set-cookie' ? [value] : value;
53
- }
54
- return { headers: out, raw };
55
- }
56
- export class IncomingMessage extends Readable {
57
- httpVersion = '1.1';
58
- httpVersionMajor = 1;
59
- httpVersionMinor = 1;
60
- method;
61
- url;
62
- statusCode;
63
- statusMessage;
64
- headers = {};
65
- rawHeaders = [];
66
- trailers = {};
67
- rawTrailers = [];
68
- complete = false;
69
- aborted = false;
70
- socket;
71
- connection;
72
- constructor(socket = new FakeSocket()) {
73
- super();
74
- this.socket = socket;
75
- this.connection = socket;
76
- }
77
- _read() {
78
- // the body is pushed up front
79
- }
80
- setTimeout(_ms, cb) {
81
- if (cb)
82
- this.once('timeout', cb);
83
- return this;
84
- }
85
- /** Fill from wire data; `body` null means none. */
86
- _fill(headers, body) {
87
- const { headers: lower, raw } = lowerHeaders(headers);
88
- this.headers = lower;
89
- this.rawHeaders = raw;
90
- if (body?.length)
91
- this.push(Buffer.from(body));
92
- this.push(null);
93
- this.complete = true;
94
- }
95
- }
96
- export class OutgoingHeaders extends Writable {
97
- _headers = new Map();
98
- headersSent = false;
99
- sendDate = true;
100
- setHeader(name, value) {
101
- if (this.headersSent)
102
- throw Object.assign(new Error('Cannot set headers after they are sent to the client'), { code: 'ERR_HTTP_HEADERS_SENT' });
103
- this._headers.set(name.toLowerCase(), { name, value: Array.isArray(value) ? value.map(String) : String(value) });
104
- return this;
105
- }
106
- appendHeader(name, value) {
107
- const existing = this.getHeader(name);
108
- const list = [...(existing === undefined ? [] : Array.isArray(existing) ? existing : [String(existing)]), ...(Array.isArray(value) ? value : [value])];
109
- return this.setHeader(name, list);
110
- }
111
- getHeader(name) {
112
- return this._headers.get(name.toLowerCase())?.value;
113
- }
114
- getHeaders() {
115
- const out = Object.create(null);
116
- for (const [key, { value }] of this._headers)
117
- out[key] = value;
118
- return out;
119
- }
120
- getHeaderNames() {
121
- return [...this._headers.keys()];
122
- }
123
- getRawHeaderNames() {
124
- return [...this._headers.values()].map((h) => h.name);
125
- }
126
- hasHeader(name) {
127
- return this._headers.has(name.toLowerCase());
128
- }
129
- removeHeader(name) {
130
- this._headers.delete(name.toLowerCase());
131
- }
132
- flushHeaders() {
133
- this.headersSent = true;
134
- }
135
- setTimeout(_ms, cb) {
136
- if (cb)
137
- this.once('timeout', cb);
138
- return this;
139
- }
140
- }
141
- export class ServerResponse extends OutgoingHeaders {
142
- onDone;
143
- statusCode = 200;
144
- statusMessage = '';
145
- req;
146
- socket;
147
- connection;
148
- chunkedEncoding = false;
149
- shouldKeepAlive = false;
150
- chunks = [];
151
- constructor(req, onDone) {
152
- super({ decodeStrings: true });
153
- this.onDone = onDone;
154
- this.req = req;
155
- this.socket = req.socket;
156
- this.connection = req.socket;
157
- }
158
- get finished() {
159
- return this.writableEnded;
160
- }
161
- writeHead(status, message, headers) {
162
- if (typeof message !== 'string')
163
- [headers, message] = [message, undefined];
164
- this.statusCode = status;
165
- if (message)
166
- this.statusMessage = message;
167
- if (Array.isArray(headers)) {
168
- for (let i = 0; i + 1 < headers.length; i += 2)
169
- this.setHeader(String(headers[i]), headers[i + 1]);
170
- }
171
- else if (headers) {
172
- for (const [k, v] of Object.entries(headers))
173
- if (v !== undefined)
174
- this.setHeader(k, v);
175
- }
176
- this.headersSent = true;
177
- return this;
178
- }
179
- writeContinue() { }
180
- writeProcessing() { }
181
- writeEarlyHints() { }
182
- addTrailers() { }
183
- assignSocket() { }
184
- detachSocket() { }
185
- _write(chunk, _encoding, callback) {
186
- this.headersSent = true;
187
- this.chunks.push(chunk);
188
- callback();
189
- }
190
- _final(callback) {
191
- this.headersSent = true;
192
- const headers = {};
193
- for (const { name, value } of this._headers.values())
194
- headers[name] = value;
195
- const body = Buffer.concat(this.chunks);
196
- if (this.req.method === 'HEAD')
197
- this.chunks.length = 0;
198
- this.onDone({ status: this.statusCode, statusText: this.statusMessage || STATUS_CODES[this.statusCode] || '', headers, body: this.req.method === 'HEAD' ? new Uint8Array() : body });
199
- callback();
200
- }
201
- }
11
+ import { pushStream } from '../../system/httpStream.js';
12
+ import { FakeSocket, IncomingMessage } from './messages.js';
13
+ import { ServerResponse } from './serverResponse.js';
14
+ import { UpgradeSocket } from './upgradeSocket.js';
15
+ export { FakeSocket, IncomingMessage, OutgoingHeaders } from './messages.js';
16
+ export { ServerResponse } from './serverResponse.js';
17
+ export { UpgradeSocket } from './upgradeSocket.js';
202
18
  export class Server extends EventEmitterBase {
203
19
  deps;
204
20
  listening = false;
@@ -224,7 +40,7 @@ export class Server extends EventEmitterBase {
224
40
  if (callback)
225
41
  this.once('listening', callback);
226
42
  try {
227
- this.registration = this.deps.system.listen(port, (request) => this.handle(request));
43
+ this.registration = this.deps.system.listen(port, (request) => this.handle(request), (request, socket) => this.upgrade(request, socket));
228
44
  }
229
45
  catch (error) {
230
46
  queueMicrotask(() => this.emit('error', error));
@@ -275,12 +91,15 @@ export class Server extends EventEmitterBase {
275
91
  getConnections(cb) {
276
92
  cb(null, 0);
277
93
  }
94
+ toIncoming(request, socket, headers, body) {
95
+ const req = new IncomingMessage(socket);
96
+ req.method = request.method.toUpperCase();
97
+ req.url = request.url;
98
+ req._fill(headers, body);
99
+ return req;
100
+ }
278
101
  handle(request) {
279
102
  return new Promise((resolve) => {
280
- const socket = new FakeSocket(this.registration?.port ?? 0);
281
- const req = new IncomingMessage(socket);
282
- req.method = request.method.toUpperCase();
283
- req.url = request.url;
284
103
  // Body parsers (body-parser/type-is) only read a body announced by
285
104
  // content-length or transfer-encoding; a browser-originated request
286
105
  // relayed by the service worker carries neither.
@@ -288,8 +107,13 @@ export class Server extends EventEmitterBase {
288
107
  const announced = Object.keys(headers).some((k) => /^(content-length|transfer-encoding)$/i.test(k));
289
108
  if (!announced && request.body?.length)
290
109
  headers['content-length'] = String(request.body.length);
291
- req._fill(headers, request.body);
292
- const res = new ServerResponse(req, resolve);
110
+ const req = this.toIncoming(request, new FakeSocket(this.registration?.port ?? 0), headers, request.body);
111
+ const body = pushStream(() => this.deps.loop._run(() => res._hangUp()));
112
+ const res = new ServerResponse(req, {
113
+ head: (head) => resolve({ ...head, body: body.stream }),
114
+ chunk: (data) => body.push(data),
115
+ end: () => body.end(),
116
+ });
293
117
  this.deps.loop._run(() => {
294
118
  try {
295
119
  this.emit('request', req, res);
@@ -304,5 +128,13 @@ export class Server extends EventEmitterBase {
304
128
  });
305
129
  });
306
130
  }
131
+ /** A connection asking to upgrade: Node destroys it when nobody listens for `upgrade`. */
132
+ upgrade(request, channel) {
133
+ if (!this.listenerCount('upgrade'))
134
+ return channel.close();
135
+ const socket = new UpgradeSocket(channel, this.registration?.port ?? 0, () => this.deps.loop.hold());
136
+ const req = this.toIncoming(request, socket, request.headers, null);
137
+ this.deps.loop._run(() => this.emit('upgrade', req, socket, Buffer.alloc(0)));
138
+ }
307
139
  }
308
140
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/node/http/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/node/http/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ServerResponse, streamed: the head goes out on `writeHead`/`flushHeaders` or
3
+ * the first write, each `write` is a body chunk, `end` ends the body. So
4
+ * Server-Sent Events and chunked progress reach the client as they happen. A
5
+ * client that hangs up mid-response is seen the way Node reports it.
6
+ */
7
+ import type { HttpResponseHead } from '../../system/types.js';
8
+ import { FakeSocket, IncomingMessage, OutgoingHeaders } from './messages.js';
9
+ /** Where a response goes as it is written. */
10
+ export interface ResponseSink {
11
+ head(head: HttpResponseHead): void;
12
+ chunk(data: Uint8Array): void;
13
+ end(): void;
14
+ }
15
+ export declare class ServerResponse extends OutgoingHeaders {
16
+ private readonly sink;
17
+ statusCode: number;
18
+ statusMessage: string;
19
+ req: IncomingMessage;
20
+ socket: FakeSocket;
21
+ connection: FakeSocket;
22
+ chunkedEncoding: boolean;
23
+ shouldKeepAlive: boolean;
24
+ private headWritten;
25
+ private hungUp;
26
+ constructor(req: IncomingMessage, sink: ResponseSink);
27
+ get finished(): boolean;
28
+ writeHead(status: number, message?: string | Record<string, unknown> | unknown[], headers?: Record<string, unknown> | unknown[]): this;
29
+ flushHeaders(): void;
30
+ writeContinue(): void;
31
+ writeProcessing(): void;
32
+ writeEarlyHints(): void;
33
+ addTrailers(): void;
34
+ assignSocket(): void;
35
+ detachSocket(): void;
36
+ _write(chunk: Uint8Array, _encoding: string, callback: () => void): void;
37
+ _final(callback: () => void): void;
38
+ /** The client went away (closed its EventSource, navigated off): `aborted`/`close` on the request, `close` here; later writes are dropped. */
39
+ _hangUp(): void;
40
+ private sendHead;
41
+ }
42
+ //# sourceMappingURL=serverResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverResponse.d.ts","sourceRoot":"","sources":["../../../src/node/http/serverResponse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7E,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,GAAG,IAAI,IAAI,CAAC;CACb;AAKD,qBAAa,cAAe,SAAQ,eAAe;IAWf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvD,UAAU,SAAO;IACjB,aAAa,SAAM;IACnB,GAAG,EAAE,eAAe,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,UAAS;IACxB,eAAe,UAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,GAAG,EAAE,eAAe,EAAmB,IAAI,EAAE,YAAY;IAOrE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI;IAY7H,YAAY,IAAI,IAAI;IAG7B,aAAa,IAAI,IAAI;IACrB,eAAe,IAAI,IAAI;IACvB,eAAe,IAAI,IAAI;IACvB,WAAW,IAAI,IAAI;IACnB,YAAY,IAAI,IAAI;IACpB,YAAY,IAAI,IAAI;IAEX,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAMxE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAM3C,8IAA8I;IAC9I,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,QAAQ;CAQjB"}