@libp2p/http-utils 1.0.1 → 2.0.0

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.
@@ -79,7 +79,7 @@ export declare function getServerUpgradeHeaders(headers: Headers | Record<string
79
79
  /**
80
80
  * Reads HTTP headers from an incoming stream
81
81
  */
82
- export declare function readHeaders(stream: Stream): Promise<HeaderInfo>;
82
+ export declare function readHeaders(stream: Stream, options?: AbortOptions): Promise<HeaderInfo>;
83
83
  /**
84
84
  * Parsed from the incoming HTTP message
85
85
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -6,14 +6,15 @@
6
6
  import { HTTPParser } from '@achingbrain/http-parser-js';
7
7
  import { InvalidParametersError, isPeerId, ProtocolError } from '@libp2p/interface';
8
8
  import { peerIdFromString } from '@libp2p/peer-id';
9
- import { isMultiaddr, multiaddr } from '@multiformats/multiaddr';
9
+ import { getNetConfig } from '@libp2p/utils';
10
+ import { CODE_P2P, isMultiaddr, multiaddr } from '@multiformats/multiaddr';
10
11
  import { multiaddrToUri } from '@multiformats/multiaddr-to-uri';
11
12
  import { uriToMultiaddr } from '@multiformats/uri-to-multiaddr';
12
- import { queuelessPushable } from 'it-queueless-pushable';
13
13
  import itToBrowserReadableStream from 'it-to-browser-readablestream';
14
14
  import { base36 } from 'multiformats/bases/base36';
15
15
  import { base64pad } from 'multiformats/bases/base64';
16
16
  import { sha1 } from 'multiformats/hashes/sha1';
17
+ import { raceEvent } from 'race-event';
17
18
  import { Uint8ArrayList } from 'uint8arraylist';
18
19
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
19
20
  import { Request } from './request.js';
@@ -44,9 +45,9 @@ export function streamToRequest(info, stream) {
44
45
  headers: info.headers
45
46
  };
46
47
  if ((init.method !== 'GET' || info.upgrade) && init.method !== 'HEAD') {
47
- let source = stream.source;
48
+ let source = stream;
48
49
  if (!info.upgrade) {
49
- source = takeBytes(stream.source, info.headers.get('content-length'));
50
+ source = takeBytes(stream, info.headers.get('content-length'));
50
51
  }
51
52
  init.body = itToBrowserReadableStream(source);
52
53
  // @ts-expect-error this is required by NodeJS despite being the only reasonable option https://fetch.spec.whatwg.org/#requestinit
@@ -55,34 +56,31 @@ export function streamToRequest(info, stream) {
55
56
  return new Request(normalizeUrl(info).toString(), init);
56
57
  }
57
58
  export async function responseToStream(res, stream) {
58
- const pushable = queuelessPushable();
59
- stream.sink(pushable)
60
- .catch(err => {
61
- stream.abort(err);
62
- });
63
- await pushable.push(uint8ArrayFromString([
59
+ stream.send(uint8ArrayFromString([
64
60
  `HTTP/1.1 ${res.status} ${res.statusText}`,
65
61
  ...writeHeaders(res.headers),
66
62
  '',
67
63
  ''
68
64
  ].join('\r\n')));
69
65
  if (res.body == null) {
70
- await pushable.end();
66
+ await stream.close().catch(err => {
67
+ stream.abort(err);
68
+ });
71
69
  return;
72
70
  }
73
71
  const reader = res.body.getReader();
74
- let result = await reader.read();
75
72
  while (true) {
73
+ const result = await reader.read();
76
74
  if (result.value != null) {
77
- await pushable.push(result.value);
75
+ if (!stream.send(result.value)) {
76
+ await stream.onDrain();
77
+ }
78
78
  }
79
79
  if (result.done) {
80
80
  break;
81
81
  }
82
- result = await reader.read();
83
82
  }
84
- await pushable.end();
85
- await stream.closeWrite()
83
+ await stream.close()
86
84
  .catch(err => {
87
85
  stream.abort(err);
88
86
  });
@@ -235,11 +233,14 @@ export function getHost(addresses, headers) {
235
233
  // try to use remote PeerId as domain
236
234
  if (!isValidHost(host) && Array.isArray(addresses)) {
237
235
  for (const address of addresses) {
238
- const peerStr = address.getPeerId();
236
+ const peerStr = address.getComponents()
237
+ .findLast(c => c.code === CODE_P2P)?.value;
239
238
  // try to extract port from multiaddr if it is available
240
239
  try {
241
- const options = address.toOptions();
242
- port = options.port;
240
+ const config = getNetConfig(address);
241
+ if (config.port != null) {
242
+ port = config.port;
243
+ }
243
244
  }
244
245
  catch { }
245
246
  if (peerStr != null) {
@@ -254,8 +255,10 @@ export function getHost(addresses, headers) {
254
255
  if (!isValidHost(host) && Array.isArray(addresses)) {
255
256
  for (const address of addresses) {
256
257
  try {
257
- const options = address.toOptions();
258
- host = options.host;
258
+ const config = getNetConfig(address);
259
+ if (config.host != null) {
260
+ host = config.host;
261
+ }
259
262
  break;
260
263
  }
261
264
  catch { }
@@ -360,50 +363,49 @@ export async function getServerUpgradeHeaders(headers) {
360
363
  /**
361
364
  * Reads HTTP headers from an incoming stream
362
365
  */
363
- export async function readHeaders(stream) {
364
- return new Promise((resolve, reject) => {
365
- const parser = new HTTPParser('REQUEST');
366
- const source = queuelessPushable();
367
- const earlyData = new Uint8ArrayList();
368
- let headersComplete = false;
369
- parser[HTTPParser.kOnHeadersComplete] = (info) => {
370
- headersComplete = true;
371
- const headers = new Headers();
372
- // set incoming headers
373
- for (let i = 0; i < info.headers.length; i += 2) {
374
- headers.set(info.headers[i].toLowerCase(), info.headers[i + 1]);
375
- }
376
- resolve({
377
- ...info,
378
- headers,
379
- raw: earlyData,
380
- method: HTTPParser.methods[info.method]
381
- });
366
+ export async function readHeaders(stream, options) {
367
+ const parser = new HTTPParser('REQUEST');
368
+ const earlyData = new Uint8ArrayList();
369
+ let headerInfo;
370
+ parser[HTTPParser.kOnHeadersComplete] = (info) => {
371
+ const headers = new Headers();
372
+ // set incoming headers
373
+ for (let i = 0; i < info.headers.length; i += 2) {
374
+ headers.set(info.headers[i].toLowerCase(), info.headers[i + 1]);
375
+ }
376
+ headerInfo = {
377
+ ...info,
378
+ headers,
379
+ raw: earlyData,
380
+ method: HTTPParser.methods[info.method]
382
381
  };
383
- // replace source with request body
384
- const streamSource = stream.source;
385
- stream.source = source;
386
- Promise.resolve().then(async () => {
387
- for await (const chunk of streamSource) {
388
- // only use the message parser until the headers have been read
389
- if (!headersComplete) {
390
- earlyData.append(chunk);
391
- parser.execute(chunk.subarray());
392
- }
393
- else {
394
- await source.push(new Uint8ArrayList(chunk));
395
- }
382
+ };
383
+ try {
384
+ while (true) {
385
+ const { data } = await raceEvent(stream, 'message', options?.signal);
386
+ const buf = data.subarray();
387
+ const read = parser.execute(buf, 0, buf.byteLength);
388
+ if (read instanceof Error) {
389
+ throw read;
396
390
  }
397
- await source.end();
398
- })
399
- .catch((err) => {
400
- stream.abort(err);
401
- reject(err);
402
- })
403
- .finally(() => {
404
- parser.finish();
405
- });
406
- });
391
+ // collect raw header bytes
392
+ earlyData.append(buf.subarray(0, read));
393
+ if (read < buf.byteLength) {
394
+ // reading headers finished and we have early data
395
+ stream.push(buf.subarray(read));
396
+ }
397
+ if (headerInfo != null) {
398
+ return headerInfo;
399
+ }
400
+ }
401
+ }
402
+ catch (err) {
403
+ stream.abort(err);
404
+ }
405
+ finally {
406
+ parser.finish();
407
+ }
408
+ throw new Error('Failed to read header info from request');
407
409
  }
408
410
  export * from './request.js';
409
411
  export * from './response.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,45 @@
1
+ import { Duplex } from 'node:stream';
1
2
  import type { Connection, Stream } from '@libp2p/interface';
2
- import type { Socket } from 'node:net';
3
+ import type { Socket, SocketConnectOpts, AddressInfo, SocketReadyState } from 'node:net';
4
+ export declare class Libp2pSocket extends Duplex {
5
+ #private;
6
+ readonly autoSelectFamilyAttemptedAddresses: never[];
7
+ readonly connecting = false;
8
+ readonly pending = false;
9
+ remoteAddress: string;
10
+ bytesRead: number;
11
+ bytesWritten: number;
12
+ timeout: number;
13
+ allowHalfOpen: boolean;
14
+ constructor(stream: Stream, connection: Connection);
15
+ constructor(initStream: Promise<{
16
+ stream: Stream;
17
+ connection: Connection;
18
+ }>);
19
+ private gotStream;
20
+ getStream(cb: (stream: Stream) => void): void;
21
+ destroy(error?: Error): this;
22
+ _write(chunk: Uint8Array, encoding: string, cb: (err?: Error) => void): void;
23
+ _read(size: number): void;
24
+ _destroy(err: Error, cb: (err?: Error) => void): void;
25
+ _final(cb: (err?: Error) => void): void;
26
+ get readyState(): SocketReadyState;
27
+ get bufferSize(): number;
28
+ destroySoon(): void;
29
+ connect(options: SocketConnectOpts, connectionListener?: () => void): this;
30
+ connect(port: number, host: string, connectionListener?: () => void): this;
31
+ connect(port: number, connectionListener?: () => void): this;
32
+ connect(path: string, connectionListener?: () => void): this;
33
+ setEncoding(encoding?: BufferEncoding): this;
34
+ resetAndDestroy(): this;
35
+ setTimeout(timeout: number, callback?: () => void): this;
36
+ setNoDelay(noDelay?: boolean): this;
37
+ setKeepAlive(enable?: boolean, initialDelay?: number): this;
38
+ address(): AddressInfo | Record<string, any>;
39
+ unref(): this;
40
+ ref(): this;
41
+ write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
42
+ write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean;
43
+ }
3
44
  export declare function streamToSocket(stream: Stream, connection: Connection): Socket;
4
45
  //# sourceMappingURL=stream-to-socket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-to-socket.d.ts","sourceRoot":"","sources":["../../src/stream-to-socket.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAoD,MAAM,UAAU,CAAA;AAkMxF,wBAAgB,cAAc,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAE9E"}
1
+ {"version":3,"file":"stream-to-socket.d.ts","sourceRoot":"","sources":["../../src/stream-to-socket.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { Duplex } from 'node:stream';
2
- import { byteStream } from 'it-byte-stream';
3
2
  const MAX_TIMEOUT = 2_147_483_647;
4
- class Libp2pSocket extends Duplex {
3
+ export class Libp2pSocket extends Duplex {
5
4
  autoSelectFamilyAttemptedAddresses = [];
6
5
  connecting = false;
7
6
  pending = false;
@@ -10,89 +9,122 @@ class Libp2pSocket extends Duplex {
10
9
  bytesWritten;
11
10
  timeout = MAX_TIMEOUT;
12
11
  allowHalfOpen;
13
- stream;
14
- constructor(stream, connection) {
15
- const bytes = byteStream(stream);
16
- super({
17
- write: (chunk, encoding, cb) => {
18
- this.stream.log('write %d bytes', chunk.byteLength);
19
- this.bytesWritten += chunk.byteLength;
20
- bytes.write(chunk)
12
+ #initStream;
13
+ #stream;
14
+ #log;
15
+ constructor(...args) {
16
+ super();
17
+ this.bytesRead = 0;
18
+ this.bytesWritten = 0;
19
+ this.allowHalfOpen = true;
20
+ this.remoteAddress = '';
21
+ if (args.length === 2) {
22
+ this.gotStream({ stream: args[0], connection: args[1] });
23
+ this.#initStream = Promise.resolve(args[0]);
24
+ }
25
+ else {
26
+ this.#initStream = args[0].then(this.gotStream.bind(this), (err) => {
27
+ this.emit('error', err);
28
+ throw err;
29
+ });
30
+ }
31
+ }
32
+ gotStream({ stream, connection }) {
33
+ this.#log = stream.log.newScope('libp2p-socket');
34
+ this.remoteAddress = connection.remoteAddr.toString();
35
+ stream.addEventListener('message', (evt) => {
36
+ this.push(evt.data.subarray());
37
+ });
38
+ stream.addEventListener('close', (evt) => {
39
+ if (evt.error != null) {
40
+ this.destroy(evt.error);
41
+ }
42
+ else {
43
+ this.push(null);
44
+ }
45
+ });
46
+ stream.pause();
47
+ this.emit('connect');
48
+ return stream;
49
+ }
50
+ getStream(cb) {
51
+ if (this.#stream != null) {
52
+ cb(this.#stream);
53
+ return;
54
+ }
55
+ this.#initStream.then(stream => {
56
+ this.#stream = stream;
57
+ cb(stream);
58
+ }, (err) => {
59
+ this.emit('error', err);
60
+ });
61
+ }
62
+ destroy(error) {
63
+ return super.destroy(error);
64
+ }
65
+ _write(chunk, encoding, cb) {
66
+ this.#log?.('write %d bytes', chunk.byteLength);
67
+ this.bytesWritten += chunk.byteLength;
68
+ this.getStream(stream => {
69
+ if (!stream.send(chunk)) {
70
+ stream.onDrain()
21
71
  .then(() => {
22
72
  cb();
23
- }, err => {
73
+ }, (err) => {
24
74
  cb(err);
25
75
  });
26
- },
27
- read: (size) => {
28
- this.stream.log('asked to read %d bytes', size);
29
- void Promise.resolve().then(async () => {
30
- try {
31
- while (true) {
32
- const chunk = await bytes.read({
33
- signal: AbortSignal.timeout(this.timeout)
34
- });
35
- if (chunk == null) {
36
- this.stream.log('socket readable end closed');
37
- this.push(null);
38
- return;
39
- }
40
- this.bytesRead += chunk.byteLength;
41
- this.stream.log('socket read %d bytes', chunk.byteLength);
42
- const more = this.push(chunk.subarray());
43
- if (!more) {
44
- break;
45
- }
46
- }
47
- }
48
- catch (err) {
49
- this.destroy(err);
50
- }
51
- });
52
- },
53
- destroy: (err, cb) => {
54
- this.stream.log('destroy with %d bytes buffered - %e', this.bufferSize, err);
55
- if (err != null) {
56
- bytes.unwrap().abort(err);
57
- cb();
58
- }
59
- else {
60
- bytes.unwrap().close()
61
- .then(() => {
62
- cb();
63
- })
64
- .catch(err => {
65
- stream.abort(err);
66
- cb(err);
67
- });
68
- }
69
- },
70
- final: (cb) => {
71
- this.stream.log('final');
72
- bytes.unwrap().closeWrite()
76
+ }
77
+ else {
78
+ cb();
79
+ }
80
+ });
81
+ }
82
+ _read(size) {
83
+ this.#log?.('asked to read %d bytes', size);
84
+ this.getStream(stream => {
85
+ stream.resume();
86
+ });
87
+ }
88
+ _destroy(err, cb) {
89
+ this.#log?.('destroy with %d bytes buffered - %e', this.bufferSize, err);
90
+ this.getStream(stream => {
91
+ if (err != null) {
92
+ stream.abort(err);
93
+ cb();
94
+ }
95
+ else {
96
+ stream.close()
73
97
  .then(() => {
74
98
  cb();
75
99
  })
76
100
  .catch(err => {
77
- bytes.unwrap().abort(err);
101
+ stream.abort(err);
78
102
  cb(err);
79
103
  });
80
104
  }
81
105
  });
82
- this.stream = stream;
83
- this.remoteAddress = connection.remoteAddr.toString();
84
- this.bytesRead = 0;
85
- this.bytesWritten = 0;
86
- this.allowHalfOpen = true;
106
+ }
107
+ _final(cb) {
108
+ this.#log?.('final');
109
+ this.getStream(stream => {
110
+ stream.close()
111
+ .then(() => {
112
+ cb();
113
+ })
114
+ .catch(err => {
115
+ stream.abort(err);
116
+ cb(err);
117
+ });
118
+ });
87
119
  }
88
120
  get readyState() {
89
- if (this.stream.status === 'closed') {
121
+ if (this.#stream?.status === 'closed') {
90
122
  return 'closed';
91
123
  }
92
- if (this.stream.writeStatus === 'closed' || this.stream.writeStatus === 'closing') {
124
+ if (this.#stream?.writeStatus === 'closed' || this.#stream?.writeStatus === 'closing') {
93
125
  return 'readOnly';
94
126
  }
95
- if (this.stream.readStatus === 'closed' || this.stream.readStatus === 'closing') {
127
+ if (this.#stream?.readStatus === 'closed' || this.#stream?.readStatus === 'closing') {
96
128
  return 'writeOnly';
97
129
  }
98
130
  return 'open';
@@ -101,24 +133,26 @@ class Libp2pSocket extends Duplex {
101
133
  return this.writableLength;
102
134
  }
103
135
  destroySoon() {
104
- this.stream.log('destroySoon with %d bytes buffered', this.bufferSize);
136
+ this.#log?.('destroySoon with %d bytes buffered', this.bufferSize);
105
137
  this.destroy();
106
138
  }
107
139
  connect(...args) {
108
- this.stream.log('connect %o', args);
140
+ this.#log?.('connect %o', args);
109
141
  return this;
110
142
  }
111
143
  setEncoding(encoding) {
112
- this.stream.log('setEncoding %s', encoding);
144
+ this.#log?.('setEncoding %s', encoding);
113
145
  return this;
114
146
  }
115
147
  resetAndDestroy() {
116
- this.stream.log('resetAndDestroy');
117
- this.stream.abort(new Error('Libp2pSocket.resetAndDestroy'));
148
+ this.#log?.('resetAndDestroy');
149
+ this.getStream(stream => {
150
+ stream.abort(new Error('Libp2pSocket.resetAndDestroy'));
151
+ });
118
152
  return this;
119
153
  }
120
154
  setTimeout(timeout, callback) {
121
- this.stream.log('setTimeout %d', timeout);
155
+ this.#log?.('setTimeout %d', timeout);
122
156
  if (callback != null) {
123
157
  this.addListener('timeout', callback);
124
158
  }
@@ -126,23 +160,23 @@ class Libp2pSocket extends Duplex {
126
160
  return this;
127
161
  }
128
162
  setNoDelay(noDelay) {
129
- this.stream.log('setNoDelay %b', noDelay);
163
+ this.#log?.('setNoDelay %b', noDelay);
130
164
  return this;
131
165
  }
132
166
  setKeepAlive(enable, initialDelay) {
133
- this.stream.log('setKeepAlive %b %d', enable, initialDelay);
167
+ this.#log?.('setKeepAlive %b %d', enable, initialDelay);
134
168
  return this;
135
169
  }
136
170
  address() {
137
- this.stream.log('address');
171
+ this.#log?.('address');
138
172
  return {};
139
173
  }
140
174
  unref() {
141
- this.stream.log('unref');
175
+ this.#log?.('unref');
142
176
  return this;
143
177
  }
144
178
  ref() {
145
- this.stream.log('ref');
179
+ this.#log?.('ref');
146
180
  return this;
147
181
  }
148
182
  write(chunk, encoding, cb) {
@@ -1 +1 @@
1
- {"version":3,"file":"stream-to-socket.js","sourceRoot":"","sources":["../../src/stream-to-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI3C,MAAM,WAAW,GAAG,aAAa,CAAA;AAEjC,MAAM,YAAa,SAAQ,MAAM;IACf,kCAAkC,GAAG,EAAE,CAAA;IACvC,UAAU,GAAG,KAAK,CAAA;IAClB,OAAO,GAAG,KAAK,CAAA;IACf,aAAa,CAAQ;IAC9B,SAAS,CAAQ;IACjB,YAAY,CAAQ;IACpB,OAAO,GAAG,WAAW,CAAA;IACrB,aAAa,CAAS;IAEZ,MAAM,CAAQ;IAE/B,YAAa,MAAc,EAAE,UAAsB;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;QAEhC,KAAK,CAAC;YACJ,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;gBAEnD,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAA;gBACrC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;qBACf,IAAI,CAAC,GAAG,EAAE;oBACT,EAAE,EAAE,CAAA;gBACN,CAAC,EAAE,GAAG,CAAC,EAAE;oBACP,EAAE,CAAC,GAAG,CAAC,CAAA;gBACT,CAAC,CAAC,CAAA;YACN,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;gBAE/C,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACrC,IAAI,CAAC;wBACH,OAAO,IAAI,EAAE,CAAC;4BACZ,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;gCAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;6BAC1C,CAAC,CAAA;4BAEF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gCAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;gCAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gCACf,OAAM;4BACR,CAAC;4BAED,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,CAAA;4BAElC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;4BACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;4BAExC,IAAI,CAAC,IAAI,EAAE,CAAC;gCACV,MAAK;4BACP,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAE5E,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACzB,EAAE,EAAE,CAAA;gBACN,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;yBACnB,IAAI,CAAC,GAAG,EAAE;wBACT,EAAE,EAAE,CAAA;oBACN,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBACjB,EAAE,CAAC,GAAG,CAAC,CAAA;oBACT,CAAC,CAAC,CAAA;gBACN,CAAC;YACH,CAAC;YACD,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAExB,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE;qBACxB,IAAI,CAAC,GAAG,EAAE;oBACT,EAAE,EAAE,CAAA;gBACN,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACzB,EAAE,CAAC,GAAG,CAAC,CAAA;gBACT,CAAC,CAAC,CAAA;YACN,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QACrD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;IAC3B,CAAC;IAED,IAAW,UAAU;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClF,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAChF,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACtE,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAMD,OAAO,CAAE,GAAG,IAAW;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAE,QAAyB;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAE5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAE,OAAe,EAAE,QAAqB;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAEzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;QAEpD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAE,OAAiB;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAEzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY,CAAE,MAAgB,EAAE,YAAqB;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAE1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEtB,OAAO,IAAI,CAAA;IACb,CAAC;IAID,KAAK,CAAE,KAAU,EAAE,QAAc,EAAE,EAAQ;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAE,MAAc,EAAE,UAAsB;IACpE,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"stream-to-socket.js","sourceRoot":"","sources":["../../src/stream-to-socket.ts"],"names":[],"mappings":"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"}