@libp2p/utils 6.7.1 → 6.7.2-a02cb0461

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 (120) hide show
  1. package/README.md +16 -1
  2. package/dist/index.min.js +6 -1
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/abstract-message-stream.d.ts +129 -0
  5. package/dist/src/abstract-message-stream.d.ts.map +1 -0
  6. package/dist/src/abstract-message-stream.js +389 -0
  7. package/dist/src/abstract-message-stream.js.map +1 -0
  8. package/dist/src/abstract-multiaddr-connection.d.ts +26 -0
  9. package/dist/src/abstract-multiaddr-connection.d.ts.map +1 -0
  10. package/dist/src/abstract-multiaddr-connection.js +66 -0
  11. package/dist/src/abstract-multiaddr-connection.js.map +1 -0
  12. package/dist/src/abstract-stream-muxer.d.ts +53 -0
  13. package/dist/src/abstract-stream-muxer.d.ts.map +1 -0
  14. package/dist/src/abstract-stream-muxer.js +169 -0
  15. package/dist/src/abstract-stream-muxer.js.map +1 -0
  16. package/dist/src/abstract-stream.d.ts +14 -130
  17. package/dist/src/abstract-stream.d.ts.map +1 -1
  18. package/dist/src/abstract-stream.js +39 -321
  19. package/dist/src/abstract-stream.js.map +1 -1
  20. package/dist/src/errors.d.ts +8 -0
  21. package/dist/src/errors.d.ts.map +1 -1
  22. package/dist/src/errors.js +8 -0
  23. package/dist/src/errors.js.map +1 -1
  24. package/dist/src/index.d.ts +33 -1
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +33 -1
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/length-prefixed-decoder.d.ts +37 -0
  29. package/dist/src/length-prefixed-decoder.d.ts.map +1 -0
  30. package/dist/src/length-prefixed-decoder.js +64 -0
  31. package/dist/src/length-prefixed-decoder.js.map +1 -0
  32. package/dist/src/message-queue.d.ts +61 -0
  33. package/dist/src/message-queue.d.ts.map +1 -0
  34. package/dist/src/message-queue.js +93 -0
  35. package/dist/src/message-queue.js.map +1 -0
  36. package/dist/src/mock-muxer.d.ts +57 -0
  37. package/dist/src/mock-muxer.d.ts.map +1 -0
  38. package/dist/src/mock-muxer.js +204 -0
  39. package/dist/src/mock-muxer.js.map +1 -0
  40. package/dist/src/mock-stream.d.ts +31 -0
  41. package/dist/src/mock-stream.d.ts.map +1 -0
  42. package/dist/src/mock-stream.js +69 -0
  43. package/dist/src/mock-stream.js.map +1 -0
  44. package/dist/src/multiaddr/index.d.ts +7 -0
  45. package/dist/src/multiaddr/index.d.ts.map +1 -0
  46. package/dist/src/multiaddr/index.js +7 -0
  47. package/dist/src/multiaddr/index.js.map +1 -0
  48. package/dist/src/multiaddr-connection-pair.d.ts +25 -0
  49. package/dist/src/multiaddr-connection-pair.d.ts.map +1 -0
  50. package/dist/src/multiaddr-connection-pair.js +103 -0
  51. package/dist/src/multiaddr-connection-pair.js.map +1 -0
  52. package/dist/src/queue/index.d.ts +5 -0
  53. package/dist/src/queue/index.d.ts.map +1 -1
  54. package/dist/src/queue/index.js +24 -9
  55. package/dist/src/queue/index.js.map +1 -1
  56. package/dist/src/rate-limiter.d.ts +1 -15
  57. package/dist/src/rate-limiter.d.ts.map +1 -1
  58. package/dist/src/rate-limiter.js +1 -14
  59. package/dist/src/rate-limiter.js.map +1 -1
  60. package/dist/src/socket-writer.browser.d.ts +2 -0
  61. package/dist/src/socket-writer.browser.d.ts.map +1 -0
  62. package/dist/src/socket-writer.browser.js +4 -0
  63. package/dist/src/socket-writer.browser.js.map +1 -0
  64. package/dist/src/socket-writer.d.ts +19 -0
  65. package/dist/src/socket-writer.d.ts.map +1 -0
  66. package/dist/src/socket-writer.js +43 -0
  67. package/dist/src/socket-writer.js.map +1 -0
  68. package/dist/src/stream-pair.d.ts +42 -0
  69. package/dist/src/stream-pair.d.ts.map +1 -0
  70. package/dist/src/stream-pair.js +40 -0
  71. package/dist/src/stream-pair.js.map +1 -0
  72. package/dist/src/stream-utils.d.ts +199 -0
  73. package/dist/src/stream-utils.d.ts.map +1 -0
  74. package/dist/src/stream-utils.js +369 -0
  75. package/dist/src/stream-utils.js.map +1 -0
  76. package/package.json +19 -163
  77. package/src/abstract-message-stream.ts +549 -0
  78. package/src/abstract-multiaddr-connection.ts +93 -0
  79. package/src/abstract-stream-muxer.ts +239 -0
  80. package/src/abstract-stream.ts +51 -464
  81. package/src/errors.ts +10 -0
  82. package/src/index.ts +33 -1
  83. package/src/length-prefixed-decoder.ts +98 -0
  84. package/src/message-queue.ts +156 -0
  85. package/src/mock-muxer.ts +304 -0
  86. package/src/mock-stream.ts +101 -0
  87. package/src/multiaddr/index.ts +6 -0
  88. package/src/multiaddr-connection-pair.ts +147 -0
  89. package/src/queue/index.ts +30 -9
  90. package/src/rate-limiter.ts +3 -30
  91. package/src/socket-writer.browser.ts +3 -0
  92. package/src/socket-writer.ts +64 -0
  93. package/src/stream-pair.ts +90 -0
  94. package/src/stream-utils.ts +874 -0
  95. package/dist/src/abort-options.d.ts +0 -7
  96. package/dist/src/abort-options.d.ts.map +0 -1
  97. package/dist/src/abort-options.js +0 -14
  98. package/dist/src/abort-options.js.map +0 -1
  99. package/dist/src/array-equals.d.ts +0 -24
  100. package/dist/src/array-equals.d.ts.map +0 -1
  101. package/dist/src/array-equals.js +0 -31
  102. package/dist/src/array-equals.js.map +0 -1
  103. package/dist/src/close-source.d.ts +0 -4
  104. package/dist/src/close-source.d.ts.map +0 -1
  105. package/dist/src/close-source.js +0 -11
  106. package/dist/src/close-source.js.map +0 -1
  107. package/dist/src/close.d.ts +0 -21
  108. package/dist/src/close.d.ts.map +0 -1
  109. package/dist/src/close.js +0 -49
  110. package/dist/src/close.js.map +0 -1
  111. package/dist/src/stream-to-ma-conn.d.ts +0 -23
  112. package/dist/src/stream-to-ma-conn.d.ts.map +0 -1
  113. package/dist/src/stream-to-ma-conn.js +0 -75
  114. package/dist/src/stream-to-ma-conn.js.map +0 -1
  115. package/dist/typedoc-urls.json +0 -147
  116. package/src/abort-options.ts +0 -20
  117. package/src/array-equals.ts +0 -34
  118. package/src/close-source.ts +0 -14
  119. package/src/close.ts +0 -65
  120. package/src/stream-to-ma-conn.ts +0 -105
@@ -0,0 +1,199 @@
1
+ import { Uint8ArrayList } from 'uint8arraylist';
2
+ import type { MessageStream, Stream } from '@libp2p/interface';
3
+ import type { AbortOptions } from '@multiformats/multiaddr';
4
+ import type { Duplex, Transform, Sink } from 'it-stream-types';
5
+ export declare class UnwrappedError extends Error {
6
+ static name: string;
7
+ name: string;
8
+ }
9
+ /**
10
+ * The reported length of the next data message was not a positive integer
11
+ */
12
+ export declare class InvalidMessageLengthError extends Error {
13
+ name: string;
14
+ code: string;
15
+ }
16
+ /**
17
+ * The reported length of the next data message was larger than the configured
18
+ * max allowable value
19
+ */
20
+ export declare class InvalidDataLengthError extends Error {
21
+ name: string;
22
+ code: string;
23
+ }
24
+ /**
25
+ * The varint used to specify the length of the next data message contained more
26
+ * bytes than the configured max allowable value
27
+ */
28
+ export declare class InvalidDataLengthLengthError extends Error {
29
+ name: string;
30
+ code: string;
31
+ }
32
+ export interface ByteStreamOpts {
33
+ /**
34
+ * Incoming bytes are buffered until read, this setting limits how many bytes
35
+ * will be buffered.
36
+ *
37
+ * @default 4_194_304
38
+ */
39
+ maxBufferSize?: number;
40
+ /**
41
+ * If true, prevent message events propagating after they have been received,
42
+ *
43
+ * This is useful for when there are be other observers of messages and the
44
+ * caller does not wish to them to receive anything
45
+ */
46
+ stopPropagation?: boolean;
47
+ }
48
+ export interface ReadBytesOptions extends AbortOptions {
49
+ /**
50
+ * If specified, read this number of bytes from the stream
51
+ */
52
+ bytes: number;
53
+ }
54
+ export interface ByteStream<S extends MessageStream> {
55
+ /**
56
+ * Read bytes from the stream.
57
+ *
58
+ * If a required number of bytes is passed as an option, this will wait for
59
+ * the underlying stream to supply that number of bytes, throwing an
60
+ * `UnexpectedEOFError` if the stream closes before this happens.
61
+ *
62
+ * If no required number of bytes is passed, this will return `null` if the
63
+ * underlying stream closes before supplying any bytes.
64
+ */
65
+ read(options: ReadBytesOptions): Promise<Uint8ArrayList>;
66
+ read(options?: AbortOptions): Promise<Uint8ArrayList | null>;
67
+ /**
68
+ * Write the passed bytes to the stream
69
+ */
70
+ write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
71
+ /**
72
+ * After calling this method the stream can no longer be used. Any unread data
73
+ * will be emitted as a message event during the microtask queue of the
74
+ * current event loop tick.
75
+ */
76
+ unwrap(): S;
77
+ }
78
+ export declare function byteStream<T extends MessageStream>(stream: T, opts?: ByteStreamOpts): ByteStream<T>;
79
+ export interface LengthPrefixedStream<S extends MessageStream = MessageStream> {
80
+ /**
81
+ * Read the next length-prefixed number of bytes from the stream
82
+ */
83
+ read(options?: AbortOptions): Promise<Uint8ArrayList>;
84
+ /**
85
+ * Write the passed bytes to the stream prefixed by their length
86
+ */
87
+ write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
88
+ /**
89
+ * Write passed list of bytes, prefix by their individual lengths to the stream as a single write
90
+ */
91
+ writeV(input: Array<Uint8Array | Uint8ArrayList>, options?: AbortOptions): Promise<void>;
92
+ /**
93
+ * Returns the underlying stream
94
+ */
95
+ unwrap(): S;
96
+ }
97
+ export interface LengthPrefixedStreamOpts extends ByteStreamOpts {
98
+ lengthEncoder(value: number): Uint8ArrayList | Uint8Array;
99
+ lengthDecoder(data: Uint8ArrayList): number;
100
+ maxLengthLength: number;
101
+ maxDataLength: number;
102
+ }
103
+ export declare function lpStream<T extends MessageStream>(stream: T, opts?: Partial<LengthPrefixedStreamOpts>): LengthPrefixedStream<T>;
104
+ /**
105
+ * A protobuf decoder - takes a byte array and returns an object
106
+ */
107
+ export interface ProtobufDecoder<T> {
108
+ (data: Uint8Array | Uint8ArrayList): T;
109
+ }
110
+ /**
111
+ * A protobuf encoder - takes an object and returns a byte array
112
+ */
113
+ export interface ProtobufEncoder<T> {
114
+ (data: T): Uint8Array;
115
+ }
116
+ /**
117
+ * Convenience methods for working with protobuf streams
118
+ */
119
+ export interface ProtobufStream<S extends MessageStream = MessageStream> {
120
+ /**
121
+ * Read the next length-prefixed byte array from the stream and decode it as the passed protobuf format
122
+ */
123
+ read<T>(proto: {
124
+ decode: ProtobufDecoder<T>;
125
+ }, options?: AbortOptions): Promise<T>;
126
+ /**
127
+ * Encode the passed object as a protobuf message and write it's length-prefixed bytes to the stream
128
+ */
129
+ write<T>(data: T, proto: {
130
+ encode: ProtobufEncoder<T>;
131
+ }, options?: AbortOptions): Promise<void>;
132
+ /**
133
+ * Encode the passed objects as protobuf messages and write their length-prefixed bytes to the stream as a single write
134
+ */
135
+ writeV<T>(input: T[], proto: {
136
+ encode: ProtobufEncoder<T>;
137
+ }, options?: AbortOptions): Promise<void>;
138
+ /**
139
+ * Returns an object with read/write methods for operating on one specific type of protobuf message
140
+ */
141
+ pb<T>(proto: {
142
+ encode: ProtobufEncoder<T>;
143
+ decode: ProtobufDecoder<T>;
144
+ }): ProtobufMessageStream<T, S>;
145
+ /**
146
+ * Returns the underlying stream
147
+ */
148
+ unwrap(): S;
149
+ }
150
+ /**
151
+ * A message reader/writer that only uses one type of message
152
+ */
153
+ export interface ProtobufMessageStream<T, S extends MessageStream = MessageStream> {
154
+ /**
155
+ * Read a message from the stream
156
+ */
157
+ read(options?: AbortOptions): Promise<T>;
158
+ /**
159
+ * Write a message to the stream
160
+ */
161
+ write(d: T, options?: AbortOptions): Promise<void>;
162
+ /**
163
+ * Write several messages to the stream
164
+ */
165
+ writeV(d: T[], options?: AbortOptions): Promise<void>;
166
+ /**
167
+ * Unwrap the underlying protobuf stream
168
+ */
169
+ unwrap(): ProtobufStream<S>;
170
+ }
171
+ export interface ProtobufStreamOpts extends LengthPrefixedStreamOpts {
172
+ }
173
+ export declare function pbStream<T extends MessageStream = Stream>(stream: T, opts?: Partial<ProtobufStreamOpts>): ProtobufStream<T>;
174
+ export declare function echo(stream: MessageStream, options?: AbortOptions): Promise<void>;
175
+ export type PipeInput = Iterable<Uint8Array | Uint8ArrayList> | AsyncIterable<Uint8Array | Uint8ArrayList> | Stream;
176
+ export declare function messageStreamToDuplex(stream: Stream): Duplex<AsyncGenerator<Uint8ArrayList | Uint8Array>, Iterable<Uint8ArrayList | Uint8Array> | AsyncIterable<Uint8ArrayList | Uint8Array>, Promise<void>>;
177
+ interface SourceFn<A = any> {
178
+ (): A;
179
+ }
180
+ type PipeSource<A = any> = Iterable<A> | AsyncIterable<A> | SourceFn<A> | Duplex<A, any, any> | MessageStream;
181
+ type PipeTransform<A = any, B = any> = Transform<A, B> | Duplex<B, A> | MessageStream;
182
+ type PipeSink<A = any, B = any> = Sink<A, B> | Duplex<any, A, B> | MessageStream;
183
+ type PipeOutput<A> = A extends Sink<any> ? ReturnType<A> : A extends Duplex<any, any, any> ? ReturnType<A['sink']> : A extends MessageStream ? Promise<void> : never;
184
+ type SingleItemPipeOutput<A> = A extends Iterable<any> ? A : A extends AsyncIterable<any> ? A : A extends SourceFn ? ReturnType<A> : A extends Duplex<any, any, any> ? A['source'] : PipeOutput<A>;
185
+ type PipeFnInput<A> = A extends Iterable<any> ? A : A extends AsyncIterable<any> ? A : A extends SourceFn ? ReturnType<A> : A extends Transform<any, any> ? ReturnType<A> : A extends Duplex<any, any, any> ? A['source'] : never;
186
+ export declare function pipe<A extends PipeSource>(source: A): SingleItemPipeOutput<A>;
187
+ export declare function pipe<A extends PipeSource, B extends PipeSink<PipeFnInput<A>>>(source: A, sink: B): PipeOutput<B>;
188
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeSink<PipeFnInput<B>>>(source: A, transform1: B, sink: C): PipeOutput<C>;
189
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeSink<PipeFnInput<C>>>(source: A, transform1: B, transform2: C, sink: D): PipeOutput<D>;
190
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeSink<PipeFnInput<D>>>(source: A, transform1: B, transform2: C, transform3: D, sink: E): PipeOutput<E>;
191
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeSink<PipeFnInput<E>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, sink: F): PipeOutput<F>;
192
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeSink<PipeFnInput<F>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, sink: G): PipeOutput<G>;
193
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeSink<PipeFnInput<G>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, sink: H): PipeOutput<H>;
194
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeSink<PipeFnInput<H>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, sink: I): PipeOutput<I>;
195
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeSink<PipeFnInput<I>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, sink: J): PipeOutput<J>;
196
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeTransform<PipeFnInput<I>>, K extends PipeSink<PipeFnInput<J>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, transform9: J, sink: K): PipeOutput<K>;
197
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeTransform<PipeFnInput<I>>, K extends PipeTransform<PipeFnInput<J>>, L extends PipeSink<PipeFnInput<K>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, transform9: J, transform10: K, sink: L): PipeOutput<L>;
198
+ export {};
199
+ //# sourceMappingURL=stream-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/stream-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,369 @@
1
+ import { StreamMessageEvent, StreamCloseEvent, InvalidParametersError } from '@libp2p/interface';
2
+ import { pipe as itPipe } from 'it-pipe';
3
+ import { pushable } from 'it-pushable';
4
+ import { pEvent } from 'p-event';
5
+ import { raceSignal } from 'race-signal';
6
+ import * as varint from 'uint8-varint';
7
+ import { Uint8ArrayList } from 'uint8arraylist';
8
+ import { UnexpectedEOFError } from './errors.js';
9
+ const DEFAULT_MAX_BUFFER_SIZE = 4_194_304;
10
+ export class UnwrappedError extends Error {
11
+ static name = 'UnwrappedError';
12
+ name = 'UnwrappedError';
13
+ }
14
+ /**
15
+ * The reported length of the next data message was not a positive integer
16
+ */
17
+ export class InvalidMessageLengthError extends Error {
18
+ name = 'InvalidMessageLengthError';
19
+ code = 'ERR_INVALID_MSG_LENGTH';
20
+ }
21
+ /**
22
+ * The reported length of the next data message was larger than the configured
23
+ * max allowable value
24
+ */
25
+ export class InvalidDataLengthError extends Error {
26
+ name = 'InvalidDataLengthError';
27
+ code = 'ERR_MSG_DATA_TOO_LONG';
28
+ }
29
+ /**
30
+ * The varint used to specify the length of the next data message contained more
31
+ * bytes than the configured max allowable value
32
+ */
33
+ export class InvalidDataLengthLengthError extends Error {
34
+ name = 'InvalidDataLengthLengthError';
35
+ code = 'ERR_MSG_LENGTH_TOO_LONG';
36
+ }
37
+ function isStream(obj) {
38
+ return typeof obj?.closeRead === 'function';
39
+ }
40
+ function isMultiaddrConnection(obj) {
41
+ return typeof obj?.close === 'function';
42
+ }
43
+ function isEOF(obj) {
44
+ if (isStream(obj)) {
45
+ return obj.readStatus === 'closing' || obj.readStatus === 'closed';
46
+ }
47
+ if (isMultiaddrConnection(obj)) {
48
+ return obj.status !== 'open';
49
+ }
50
+ return false;
51
+ }
52
+ function isValid(obj) {
53
+ return obj?.addEventListener != null && obj?.removeEventListener != null && obj?.send != null && obj?.push != null && obj?.log != null;
54
+ }
55
+ export function byteStream(stream, opts) {
56
+ const maxBufferSize = opts?.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE;
57
+ const readBuffer = new Uint8ArrayList();
58
+ let hasBytes = Promise.withResolvers();
59
+ let unwrapped = false;
60
+ if (!isValid(stream)) {
61
+ throw new InvalidParametersError('Argument should be a Stream or a Multiaddr');
62
+ }
63
+ const byteStreamOnMessageListener = (evt) => {
64
+ if (opts?.stopPropagation === true) {
65
+ // evt.stopImmediatePropagation()
66
+ }
67
+ readBuffer.append(evt.data);
68
+ if (readBuffer.byteLength > maxBufferSize) {
69
+ const readBufferSize = readBuffer.byteLength;
70
+ readBuffer.consume(readBuffer.byteLength);
71
+ hasBytes.reject(new Error(`Read buffer overflow - ${readBufferSize} > ${maxBufferSize}`));
72
+ }
73
+ hasBytes.resolve();
74
+ };
75
+ stream.addEventListener('message', byteStreamOnMessageListener);
76
+ const byteStreamOnCloseListener = (evt) => {
77
+ if (evt.error != null) {
78
+ hasBytes.reject(evt.error);
79
+ }
80
+ else {
81
+ hasBytes.resolve();
82
+ }
83
+ };
84
+ stream.addEventListener('close', byteStreamOnCloseListener);
85
+ const byteStreamOnRemoteCloseWrite = () => {
86
+ hasBytes.resolve();
87
+ };
88
+ stream.addEventListener('remoteCloseWrite', byteStreamOnRemoteCloseWrite);
89
+ const byteStream = {
90
+ readBuffer,
91
+ // @ts-expect-error options type prevents type inference
92
+ async read(options) {
93
+ if (unwrapped === true) {
94
+ throw new UnwrappedError('Stream was unwrapped');
95
+ }
96
+ if (isEOF(stream)) {
97
+ if (options?.bytes == null) {
98
+ return null;
99
+ }
100
+ if (readBuffer.byteLength < options.bytes) {
101
+ throw new UnexpectedEOFError(`Unexpected EOF - stream closed after reading ${readBuffer.byteLength}/${options.bytes} bytes`);
102
+ }
103
+ }
104
+ const bytesToRead = options?.bytes ?? 1;
105
+ while (true) {
106
+ if (readBuffer.byteLength >= bytesToRead) {
107
+ // if we are about to exit the loop this promise will not be awaited
108
+ // so resolve it to prevent and unhandled promise rejections that may
109
+ // occur
110
+ hasBytes.resolve();
111
+ break;
112
+ }
113
+ await raceSignal(hasBytes.promise, options?.signal);
114
+ if (isEOF(stream)) {
115
+ if (readBuffer.byteLength === 0 && options?.bytes == null) {
116
+ return null;
117
+ }
118
+ break;
119
+ }
120
+ hasBytes = Promise.withResolvers();
121
+ }
122
+ const toRead = options?.bytes ?? readBuffer.byteLength;
123
+ if (readBuffer.byteLength < toRead) {
124
+ if (isEOF(stream)) {
125
+ throw new UnexpectedEOFError(`Unexpected EOF - stream closed while reading ${readBuffer.byteLength}/${toRead} bytes`);
126
+ }
127
+ return byteStream.read(options);
128
+ }
129
+ const output = readBuffer.sublist(0, toRead);
130
+ readBuffer.consume(toRead);
131
+ return output;
132
+ },
133
+ async write(data, options) {
134
+ if (unwrapped === true) {
135
+ throw new UnwrappedError('Stream was unwrapped');
136
+ }
137
+ if (!stream.send(data)) {
138
+ await pEvent(stream, 'drain', {
139
+ signal: options?.signal,
140
+ rejectionEvents: ['close']
141
+ });
142
+ }
143
+ },
144
+ unwrap() {
145
+ // already unwrapped, just return the original stream
146
+ if (unwrapped) {
147
+ return stream;
148
+ }
149
+ // only unwrap once
150
+ unwrapped = true;
151
+ stream.removeEventListener('message', byteStreamOnMessageListener);
152
+ stream.removeEventListener('close', byteStreamOnCloseListener);
153
+ stream.removeEventListener('remoteCloseWrite', byteStreamOnRemoteCloseWrite);
154
+ // emit any unread data
155
+ if (readBuffer.byteLength > 0) {
156
+ stream.log('stream unwrapped with %d unread bytes', readBuffer.byteLength);
157
+ stream.push(readBuffer);
158
+ }
159
+ return stream;
160
+ }
161
+ };
162
+ return byteStream;
163
+ }
164
+ export function lpStream(stream, opts = {}) {
165
+ const bytes = byteStream(stream, opts);
166
+ if (opts.maxDataLength != null && opts.maxLengthLength == null) {
167
+ // if max data length is set but max length length is not, calculate the
168
+ // max length length needed to encode max data length
169
+ opts.maxLengthLength = varint.encodingLength(opts.maxDataLength);
170
+ }
171
+ const decodeLength = opts?.lengthDecoder ?? varint.decode;
172
+ const encodeLength = opts?.lengthEncoder ?? varint.encode;
173
+ const lpStream = {
174
+ async read(options) {
175
+ let dataLength = -1;
176
+ const lengthBuffer = new Uint8ArrayList();
177
+ while (true) {
178
+ // read one byte at a time until we can decode a varint
179
+ const buf = await bytes.read({
180
+ ...options,
181
+ bytes: 1
182
+ });
183
+ // the underlying resource closed gracefully
184
+ if (buf == null) {
185
+ break;
186
+ }
187
+ // append byte and try to decode
188
+ lengthBuffer.append(buf);
189
+ try {
190
+ dataLength = decodeLength(lengthBuffer);
191
+ }
192
+ catch (err) {
193
+ if (err instanceof RangeError) {
194
+ continue;
195
+ }
196
+ throw err;
197
+ }
198
+ if (dataLength < 0) {
199
+ throw new InvalidMessageLengthError('Invalid message length');
200
+ }
201
+ if (opts?.maxLengthLength != null && lengthBuffer.byteLength > opts.maxLengthLength) {
202
+ throw new InvalidDataLengthLengthError(`Message length length too long - ${lengthBuffer.byteLength} > ${opts.maxLengthLength}`);
203
+ }
204
+ if (dataLength > -1) {
205
+ break;
206
+ }
207
+ }
208
+ if (opts?.maxDataLength != null && dataLength > opts.maxDataLength) {
209
+ throw new InvalidDataLengthError(`Message length too long - ${dataLength} > ${opts.maxDataLength}`);
210
+ }
211
+ const buf = await bytes.read({
212
+ ...options,
213
+ bytes: dataLength
214
+ });
215
+ if (buf == null) {
216
+ throw new UnexpectedEOFError(`Unexpected EOF - tried to read ${dataLength} bytes but the stream closed`);
217
+ }
218
+ if (buf.byteLength !== dataLength) {
219
+ throw new UnexpectedEOFError(`Unexpected EOF - read ${buf.byteLength}/${dataLength} bytes before the stream closed`);
220
+ }
221
+ return buf;
222
+ },
223
+ async write(data, options) {
224
+ // encode, write
225
+ await bytes.write(new Uint8ArrayList(encodeLength(data.byteLength), data), options);
226
+ },
227
+ async writeV(data, options) {
228
+ const list = new Uint8ArrayList(...data.flatMap(buf => ([encodeLength(buf.byteLength), buf])));
229
+ // encode, write
230
+ await bytes.write(list, options);
231
+ },
232
+ unwrap() {
233
+ return bytes.unwrap();
234
+ }
235
+ };
236
+ return lpStream;
237
+ }
238
+ export function pbStream(stream, opts) {
239
+ const lp = lpStream(stream, opts);
240
+ const pbStream = {
241
+ read: async (proto, options) => {
242
+ // readLP, decode
243
+ const value = await lp.read(options);
244
+ return proto.decode(value);
245
+ },
246
+ write: async (message, proto, options) => {
247
+ // encode, writeLP
248
+ await lp.write(proto.encode(message), options);
249
+ },
250
+ writeV: async (messages, proto, options) => {
251
+ // encode, writeLP
252
+ await lp.writeV(messages.map(message => proto.encode(message)), options);
253
+ },
254
+ pb: (proto) => {
255
+ return {
256
+ read: async (options) => pbStream.read(proto, options),
257
+ write: async (d, options) => pbStream.write(d, proto, options),
258
+ writeV: async (d, options) => pbStream.writeV(d, proto, options),
259
+ unwrap: () => pbStream
260
+ };
261
+ },
262
+ unwrap: () => {
263
+ return lp.unwrap();
264
+ }
265
+ };
266
+ return pbStream;
267
+ }
268
+ export async function echo(stream, options) {
269
+ const log = stream.log.newScope('echo');
270
+ const start = Date.now();
271
+ let bytes = 0;
272
+ try {
273
+ for await (const buf of stream) {
274
+ bytes += buf.byteLength;
275
+ if (!stream.send(buf)) {
276
+ stream.pause();
277
+ await pEvent(stream, 'drain', {
278
+ rejectionEvents: [
279
+ 'close'
280
+ ],
281
+ ...options
282
+ });
283
+ stream.resume();
284
+ }
285
+ }
286
+ log('echoed %d bytes in %dms', bytes, Date.now() - start);
287
+ await stream.close(options);
288
+ }
289
+ catch (err) {
290
+ stream.abort(err);
291
+ }
292
+ }
293
+ function isMessageStream(obj) {
294
+ return obj?.addEventListener != null;
295
+ }
296
+ export function messageStreamToDuplex(stream) {
297
+ const source = pushable();
298
+ let onError;
299
+ const onMessage = (evt) => {
300
+ source.push(evt.data);
301
+ };
302
+ const onRemoteCloseWrite = () => {
303
+ source.end();
304
+ stream.removeEventListener('message', onMessage);
305
+ stream.removeEventListener('close', onClose);
306
+ stream.removeEventListener('remoteCloseWrite', onRemoteCloseWrite);
307
+ };
308
+ const onClose = (evt) => {
309
+ source.end(evt.error);
310
+ if (evt.error != null) {
311
+ onError?.reject(evt.error);
312
+ }
313
+ stream.removeEventListener('message', onMessage);
314
+ stream.removeEventListener('close', onClose);
315
+ stream.removeEventListener('remoteCloseWrite', onRemoteCloseWrite);
316
+ };
317
+ stream.addEventListener('message', onMessage);
318
+ stream.addEventListener('close', onClose, {
319
+ once: true
320
+ });
321
+ stream.addEventListener('remoteCloseWrite', onRemoteCloseWrite, {
322
+ once: true
323
+ });
324
+ return {
325
+ source,
326
+ async sink(source) {
327
+ async function* toGenerator() {
328
+ yield* source;
329
+ }
330
+ const gen = toGenerator();
331
+ while (true) {
332
+ onError = Promise.withResolvers();
333
+ const { done, value } = await Promise.race([
334
+ gen.next(),
335
+ onError.promise
336
+ ]);
337
+ if (stream.writeStatus === 'closing' || stream.writeStatus === 'closed') {
338
+ break;
339
+ }
340
+ if (value != null) {
341
+ if (!stream.send(value)) {
342
+ await Promise.race([
343
+ pEvent(stream, 'drain', {
344
+ rejectionEvents: [
345
+ 'close'
346
+ ]
347
+ })
348
+ ]);
349
+ }
350
+ }
351
+ if (done === true) {
352
+ break;
353
+ }
354
+ }
355
+ await stream.close();
356
+ }
357
+ };
358
+ }
359
+ export function pipe(...input) {
360
+ const sources = input.map(source => {
361
+ if (isMessageStream(source)) {
362
+ return messageStreamToDuplex(source);
363
+ }
364
+ return source;
365
+ });
366
+ // @ts-expect-error it-pipe types say args cannot be spread like this
367
+ return itPipe(...sources);
368
+ }
369
+ //# sourceMappingURL=stream-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/stream-utils.ts"],"names":[],"mappings":"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"}