@libp2p/interface-compliance-tests 5.2.0 → 5.3.0-0c7bbbb07

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,MAAM,mBAAmB,CAAA;iCAE5C,UAAU,mBAAmB,CAAC,KAAG,IAAI;AAA7D,wBAsFC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,MAAM,mBAAmB,CAAA;iCAE5C,UAAU,mBAAmB,CAAC,KAAG,IAAI;AAA7D,wBAyFC"}
@@ -3,6 +3,7 @@ import * as PeerIdFactory from '@libp2p/peer-id-factory';
3
3
  import { expect } from 'aegir/chai';
4
4
  import all from 'it-all';
5
5
  import { pipe } from 'it-pipe';
6
+ import toBuffer from 'it-to-buffer';
6
7
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
7
8
  import peers from '../peers.js';
8
9
  import { createMaConnPair } from './utils/index.js';
@@ -40,12 +41,14 @@ export default (common) => {
40
41
  ]);
41
42
  // Echo server
42
43
  void pipe(inboundResult.conn, inboundResult.conn);
44
+ const input = new Array(10000).fill(0).map((val, index) => {
45
+ return uint8ArrayFromString(`data to encrypt, chunk ${index}`);
46
+ });
43
47
  // Send some data and collect the result
44
- const input = uint8ArrayFromString('data to encrypt');
45
48
  const result = await pipe(async function* () {
46
- yield input;
49
+ yield* input;
47
50
  }, outboundResult.conn, async (source) => all(source));
48
- expect(result).to.eql([input]);
51
+ expect(toBuffer(result.map(b => b.subarray()))).to.equalBytes(toBuffer(input));
49
52
  });
50
53
  it('should return the remote peer id', async () => {
51
54
  const [localConn, remoteConn] = createMaConnPair();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAU,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;iCAQ3C,UAAU,kBAAkB,CAAC,KAAG,IAAI;AAA5D,wBA8KC"}
1
+ {"version":3,"file":"base-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAU,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;iCAQ3C,UAAU,kBAAkB,CAAC,KAAG,IAAI;AAA5D,wBAgaC"}
@@ -1,5 +1,6 @@
1
1
  import { expect } from 'aegir/chai';
2
2
  import all from 'it-all';
3
+ import { byteStream } from 'it-byte-stream';
3
4
  import drain from 'it-drain';
4
5
  import map from 'it-map';
5
6
  import { duplexPair } from 'it-pair/duplex';
@@ -148,6 +149,200 @@ export default (common) => {
148
149
  expect(listenerChunks).to.be.eql(['hey']);
149
150
  expect(dialerChunks).to.be.eql(['hello']);
150
151
  });
152
+ it('should echo a small value via a pipe', async () => {
153
+ const p = duplexPair();
154
+ const onDialerStreamPromise = defer();
155
+ const onDataReceivedPromise = defer();
156
+ const dialerFactory = await common.setup();
157
+ const dialer = dialerFactory.createStreamMuxer({
158
+ direction: 'outbound',
159
+ onIncomingStream: (stream) => {
160
+ onDialerStreamPromise.resolve(stream);
161
+ }
162
+ });
163
+ const listenerFactory = await common.setup();
164
+ const listener = listenerFactory.createStreamMuxer({
165
+ direction: 'inbound',
166
+ onIncomingStream: (stream) => {
167
+ void Promise.resolve().then(async () => {
168
+ const output = new Uint8ArrayList();
169
+ for await (const buf of stream.source) {
170
+ output.append(buf);
171
+ }
172
+ onDataReceivedPromise.resolve(output.subarray());
173
+ });
174
+ }
175
+ });
176
+ void pipe(p[0], dialer, p[0]);
177
+ void pipe(p[1], listener, p[1]);
178
+ const stream = await dialer.newStream();
179
+ const input = Uint8Array.from([0, 1, 2, 3, 4]);
180
+ await pipe([input], stream);
181
+ await stream.close();
182
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
183
+ });
184
+ it('should echo a large value via a pipe', async () => {
185
+ const p = duplexPair();
186
+ const onDialerStreamPromise = defer();
187
+ const onDataReceivedPromise = defer();
188
+ const dialerFactory = await common.setup();
189
+ const dialer = dialerFactory.createStreamMuxer({
190
+ direction: 'outbound',
191
+ onIncomingStream: (stream) => {
192
+ onDialerStreamPromise.resolve(stream);
193
+ }
194
+ });
195
+ const listenerFactory = await common.setup();
196
+ const listener = listenerFactory.createStreamMuxer({
197
+ direction: 'inbound',
198
+ onIncomingStream: (stream) => {
199
+ void Promise.resolve().then(async () => {
200
+ const output = new Uint8ArrayList();
201
+ for await (const buf of stream.source) {
202
+ output.append(buf);
203
+ }
204
+ onDataReceivedPromise.resolve(output.subarray());
205
+ });
206
+ }
207
+ });
208
+ void pipe(p[0], dialer, p[0]);
209
+ void pipe(p[1], listener, p[1]);
210
+ const stream = await dialer.newStream();
211
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0));
212
+ await pipe([input], stream);
213
+ await stream.close();
214
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
215
+ });
216
+ it('should echo a small value via sink', async () => {
217
+ const p = duplexPair();
218
+ const onDialerStreamPromise = defer();
219
+ const onDataReceivedPromise = defer();
220
+ const dialerFactory = await common.setup();
221
+ const dialer = dialerFactory.createStreamMuxer({
222
+ direction: 'outbound',
223
+ onIncomingStream: (stream) => {
224
+ onDialerStreamPromise.resolve(stream);
225
+ }
226
+ });
227
+ const listenerFactory = await common.setup();
228
+ const listener = listenerFactory.createStreamMuxer({
229
+ direction: 'inbound',
230
+ onIncomingStream: (stream) => {
231
+ void Promise.resolve().then(async () => {
232
+ const output = new Uint8ArrayList();
233
+ for await (const buf of stream.source) {
234
+ output.append(buf);
235
+ }
236
+ onDataReceivedPromise.resolve(output.subarray());
237
+ });
238
+ }
239
+ });
240
+ void pipe(p[0], dialer, p[0]);
241
+ void pipe(p[1], listener, p[1]);
242
+ const stream = await dialer.newStream();
243
+ const input = Uint8Array.from([0, 1, 2, 3, 4]);
244
+ await stream.sink([input]);
245
+ await stream.close();
246
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
247
+ });
248
+ it('should echo a large value via sink', async () => {
249
+ const p = duplexPair();
250
+ const onDialerStreamPromise = defer();
251
+ const onDataReceivedPromise = defer();
252
+ const dialerFactory = await common.setup();
253
+ const dialer = dialerFactory.createStreamMuxer({
254
+ direction: 'outbound',
255
+ onIncomingStream: (stream) => {
256
+ onDialerStreamPromise.resolve(stream);
257
+ }
258
+ });
259
+ const listenerFactory = await common.setup();
260
+ const listener = listenerFactory.createStreamMuxer({
261
+ direction: 'inbound',
262
+ onIncomingStream: (stream) => {
263
+ void Promise.resolve().then(async () => {
264
+ const output = new Uint8ArrayList();
265
+ for await (const buf of stream.source) {
266
+ output.append(buf);
267
+ }
268
+ onDataReceivedPromise.resolve(output.subarray());
269
+ });
270
+ }
271
+ });
272
+ void pipe(p[0], dialer, p[0]);
273
+ void pipe(p[1], listener, p[1]);
274
+ const stream = await dialer.newStream();
275
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0));
276
+ await stream.sink([input]);
277
+ await stream.close();
278
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
279
+ });
280
+ it('should echo a small value via a pushable', async () => {
281
+ const p = duplexPair();
282
+ const onDialerStreamPromise = defer();
283
+ const onDataReceivedPromise = defer();
284
+ const dialerFactory = await common.setup();
285
+ const dialer = dialerFactory.createStreamMuxer({
286
+ direction: 'outbound',
287
+ onIncomingStream: (stream) => {
288
+ onDialerStreamPromise.resolve(stream);
289
+ }
290
+ });
291
+ const listenerFactory = await common.setup();
292
+ const listener = listenerFactory.createStreamMuxer({
293
+ direction: 'inbound',
294
+ onIncomingStream: (stream) => {
295
+ void Promise.resolve().then(async () => {
296
+ const output = new Uint8ArrayList();
297
+ for await (const buf of stream.source) {
298
+ output.append(buf);
299
+ }
300
+ onDataReceivedPromise.resolve(output.subarray());
301
+ });
302
+ }
303
+ });
304
+ void pipe(p[0], dialer, p[0]);
305
+ void pipe(p[1], listener, p[1]);
306
+ const stream = await dialer.newStream();
307
+ const input = Uint8Array.from([0, 1, 2, 3, 4]);
308
+ const pushable = byteStream(stream);
309
+ await pushable.write(input);
310
+ await pushable.unwrap().close();
311
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
312
+ });
313
+ it('should echo a large value via a pushable', async () => {
314
+ const p = duplexPair();
315
+ const onDialerStreamPromise = defer();
316
+ const onDataReceivedPromise = defer();
317
+ const dialerFactory = await common.setup();
318
+ const dialer = dialerFactory.createStreamMuxer({
319
+ direction: 'outbound',
320
+ onIncomingStream: (stream) => {
321
+ onDialerStreamPromise.resolve(stream);
322
+ }
323
+ });
324
+ const listenerFactory = await common.setup();
325
+ const listener = listenerFactory.createStreamMuxer({
326
+ direction: 'inbound',
327
+ onIncomingStream: (stream) => {
328
+ void Promise.resolve().then(async () => {
329
+ const output = new Uint8ArrayList();
330
+ for await (const buf of stream.source) {
331
+ output.append(buf);
332
+ }
333
+ onDataReceivedPromise.resolve(output.subarray());
334
+ });
335
+ }
336
+ });
337
+ void pipe(p[0], dialer, p[0]);
338
+ void pipe(p[1], listener, p[1]);
339
+ const stream = await dialer.newStream();
340
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0));
341
+ const pushable = byteStream(stream);
342
+ await pushable.write(input);
343
+ await pushable.unwrap().close();
344
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input);
345
+ });
151
346
  });
152
347
  };
153
348
  //# sourceMappingURL=base-test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/interface-compliance-tests",
3
- "version": "5.2.0",
3
+ "version": "5.3.0-0c7bbbb07",
4
4
  "description": "Compliance tests for JS libp2p interfaces",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/interface-compliance-tests#readme",
@@ -111,39 +111,40 @@
111
111
  "test:electron-main": "aegir test -t electron-main"
112
112
  },
113
113
  "dependencies": {
114
- "@libp2p/interface": "^1.1.2",
115
- "@libp2p/interface-internal": "^1.0.7",
116
- "@libp2p/logger": "^4.0.5",
117
- "@libp2p/multistream-select": "^5.1.2",
118
- "@libp2p/peer-collections": "^5.1.5",
119
- "@libp2p/peer-id": "^4.0.5",
120
- "@libp2p/peer-id-factory": "^4.0.5",
121
- "@libp2p/utils": "^5.2.3",
122
- "@multiformats/multiaddr": "^12.1.10",
114
+ "@libp2p/interface": "1.1.3-0c7bbbb07",
115
+ "@libp2p/interface-internal": "1.0.8-0c7bbbb07",
116
+ "@libp2p/logger": "4.0.6-0c7bbbb07",
117
+ "@libp2p/multistream-select": "5.1.3-0c7bbbb07",
118
+ "@libp2p/peer-collections": "5.1.6-0c7bbbb07",
119
+ "@libp2p/peer-id": "4.0.6-0c7bbbb07",
120
+ "@libp2p/peer-id-factory": "4.0.6-0c7bbbb07",
121
+ "@libp2p/utils": "5.2.4-0c7bbbb07",
122
+ "@multiformats/multiaddr": "^12.1.14",
123
123
  "abortable-iterator": "^5.0.1",
124
- "aegir": "^42.0.0",
124
+ "aegir": "^42.2.3",
125
125
  "delay": "^6.0.0",
126
- "it-all": "^3.0.2",
127
- "it-drain": "^3.0.2",
128
- "it-map": "^3.0.4",
129
- "it-ndjson": "^1.0.3",
126
+ "it-all": "^3.0.4",
127
+ "it-byte-stream": "^1.0.8",
128
+ "it-drain": "^3.0.5",
129
+ "it-map": "^3.0.5",
130
+ "it-ndjson": "^1.0.5",
130
131
  "it-pair": "^2.0.6",
131
132
  "it-pipe": "^3.0.1",
132
- "it-protobuf-stream": "^1.1.1",
133
+ "it-protobuf-stream": "^1.1.2",
133
134
  "it-pushable": "^3.2.3",
134
135
  "it-stream-types": "^2.0.1",
135
- "it-to-buffer": "^4.0.2",
136
+ "it-to-buffer": "^4.0.5",
136
137
  "merge-options": "^3.0.4",
137
138
  "p-defer": "^4.0.0",
138
139
  "p-event": "^6.0.0",
139
140
  "p-limit": "^5.0.0",
140
141
  "p-wait-for": "^5.0.2",
141
- "protons-runtime": "^5.0.0",
142
- "sinon": "^17.0.0",
143
- "uint8arraylist": "^2.4.7",
144
- "uint8arrays": "^5.0.0"
142
+ "protons-runtime": "^5.4.0",
143
+ "sinon": "^17.0.1",
144
+ "uint8arraylist": "^2.4.8",
145
+ "uint8arrays": "^5.0.1"
145
146
  },
146
147
  "devDependencies": {
147
- "protons": "^7.3.0"
148
+ "protons": "^7.5.0"
148
149
  }
149
150
  }
@@ -3,6 +3,7 @@ import * as PeerIdFactory from '@libp2p/peer-id-factory'
3
3
  import { expect } from 'aegir/chai'
4
4
  import all from 'it-all'
5
5
  import { pipe } from 'it-pipe'
6
+ import toBuffer from 'it-to-buffer'
6
7
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
7
8
  import peers from '../peers.js'
8
9
  import { createMaConnPair } from './utils/index.js'
@@ -53,17 +54,20 @@ export default (common: TestSetup<ConnectionEncrypter>): void => {
53
54
  // Echo server
54
55
  void pipe(inboundResult.conn, inboundResult.conn)
55
56
 
57
+ const input = new Array(10_000).fill(0).map((val, index) => {
58
+ return uint8ArrayFromString(`data to encrypt, chunk ${index}`)
59
+ })
60
+
56
61
  // Send some data and collect the result
57
- const input = uint8ArrayFromString('data to encrypt')
58
62
  const result = await pipe(
59
63
  async function * () {
60
- yield input
64
+ yield * input
61
65
  },
62
66
  outboundResult.conn,
63
67
  async (source) => all(source)
64
68
  )
65
69
 
66
- expect(result).to.eql([input])
70
+ expect(toBuffer(result.map(b => b.subarray()))).to.equalBytes(toBuffer(input))
67
71
  })
68
72
 
69
73
  it('should return the remote peer id', async () => {
@@ -1,5 +1,6 @@
1
1
  import { expect } from 'aegir/chai'
2
2
  import all from 'it-all'
3
+ import { byteStream } from 'it-byte-stream'
3
4
  import drain from 'it-drain'
4
5
  import map from 'it-map'
5
6
  import { duplexPair } from 'it-pair/duplex'
@@ -191,5 +192,247 @@ export default (common: TestSetup<StreamMuxerFactory>): void => {
191
192
  expect(listenerChunks).to.be.eql(['hey'])
192
193
  expect(dialerChunks).to.be.eql(['hello'])
193
194
  })
195
+
196
+ it('should echo a small value via a pipe', async () => {
197
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
198
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
199
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
200
+ const dialerFactory = await common.setup()
201
+ const dialer = dialerFactory.createStreamMuxer({
202
+ direction: 'outbound',
203
+ onIncomingStream: (stream) => {
204
+ onDialerStreamPromise.resolve(stream)
205
+ }
206
+ })
207
+ const listenerFactory = await common.setup()
208
+ const listener = listenerFactory.createStreamMuxer({
209
+ direction: 'inbound',
210
+ onIncomingStream: (stream) => {
211
+ void Promise.resolve().then(async () => {
212
+ const output = new Uint8ArrayList()
213
+
214
+ for await (const buf of stream.source) {
215
+ output.append(buf)
216
+ }
217
+
218
+ onDataReceivedPromise.resolve(output.subarray())
219
+ })
220
+ }
221
+ })
222
+
223
+ void pipe(p[0], dialer, p[0])
224
+ void pipe(p[1], listener, p[1])
225
+
226
+ const stream = await dialer.newStream()
227
+ const input = Uint8Array.from([0, 1, 2, 3, 4])
228
+
229
+ await pipe(
230
+ [input],
231
+ stream
232
+ )
233
+ await stream.close()
234
+
235
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
236
+ })
237
+
238
+ it('should echo a large value via a pipe', async () => {
239
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
240
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
241
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
242
+ const dialerFactory = await common.setup()
243
+ const dialer = dialerFactory.createStreamMuxer({
244
+ direction: 'outbound',
245
+ onIncomingStream: (stream) => {
246
+ onDialerStreamPromise.resolve(stream)
247
+ }
248
+ })
249
+ const listenerFactory = await common.setup()
250
+ const listener = listenerFactory.createStreamMuxer({
251
+ direction: 'inbound',
252
+ onIncomingStream: (stream) => {
253
+ void Promise.resolve().then(async () => {
254
+ const output = new Uint8ArrayList()
255
+
256
+ for await (const buf of stream.source) {
257
+ output.append(buf)
258
+ }
259
+
260
+ onDataReceivedPromise.resolve(output.subarray())
261
+ })
262
+ }
263
+ })
264
+
265
+ void pipe(p[0], dialer, p[0])
266
+ void pipe(p[1], listener, p[1])
267
+
268
+ const stream = await dialer.newStream()
269
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0))
270
+
271
+ await pipe(
272
+ [input],
273
+ stream
274
+ )
275
+ await stream.close()
276
+
277
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
278
+ })
279
+
280
+ it('should echo a small value via sink', async () => {
281
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
282
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
283
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
284
+ const dialerFactory = await common.setup()
285
+ const dialer = dialerFactory.createStreamMuxer({
286
+ direction: 'outbound',
287
+ onIncomingStream: (stream) => {
288
+ onDialerStreamPromise.resolve(stream)
289
+ }
290
+ })
291
+ const listenerFactory = await common.setup()
292
+ const listener = listenerFactory.createStreamMuxer({
293
+ direction: 'inbound',
294
+ onIncomingStream: (stream) => {
295
+ void Promise.resolve().then(async () => {
296
+ const output = new Uint8ArrayList()
297
+
298
+ for await (const buf of stream.source) {
299
+ output.append(buf)
300
+ }
301
+
302
+ onDataReceivedPromise.resolve(output.subarray())
303
+ })
304
+ }
305
+ })
306
+
307
+ void pipe(p[0], dialer, p[0])
308
+ void pipe(p[1], listener, p[1])
309
+
310
+ const stream = await dialer.newStream()
311
+ const input = Uint8Array.from([0, 1, 2, 3, 4])
312
+
313
+ await stream.sink([input])
314
+ await stream.close()
315
+
316
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
317
+ })
318
+
319
+ it('should echo a large value via sink', async () => {
320
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
321
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
322
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
323
+ const dialerFactory = await common.setup()
324
+ const dialer = dialerFactory.createStreamMuxer({
325
+ direction: 'outbound',
326
+ onIncomingStream: (stream) => {
327
+ onDialerStreamPromise.resolve(stream)
328
+ }
329
+ })
330
+ const listenerFactory = await common.setup()
331
+ const listener = listenerFactory.createStreamMuxer({
332
+ direction: 'inbound',
333
+ onIncomingStream: (stream) => {
334
+ void Promise.resolve().then(async () => {
335
+ const output = new Uint8ArrayList()
336
+
337
+ for await (const buf of stream.source) {
338
+ output.append(buf)
339
+ }
340
+
341
+ onDataReceivedPromise.resolve(output.subarray())
342
+ })
343
+ }
344
+ })
345
+
346
+ void pipe(p[0], dialer, p[0])
347
+ void pipe(p[1], listener, p[1])
348
+
349
+ const stream = await dialer.newStream()
350
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0))
351
+
352
+ await stream.sink([input])
353
+ await stream.close()
354
+
355
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
356
+ })
357
+
358
+ it('should echo a small value via a pushable', async () => {
359
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
360
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
361
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
362
+ const dialerFactory = await common.setup()
363
+ const dialer = dialerFactory.createStreamMuxer({
364
+ direction: 'outbound',
365
+ onIncomingStream: (stream) => {
366
+ onDialerStreamPromise.resolve(stream)
367
+ }
368
+ })
369
+ const listenerFactory = await common.setup()
370
+ const listener = listenerFactory.createStreamMuxer({
371
+ direction: 'inbound',
372
+ onIncomingStream: (stream) => {
373
+ void Promise.resolve().then(async () => {
374
+ const output = new Uint8ArrayList()
375
+
376
+ for await (const buf of stream.source) {
377
+ output.append(buf)
378
+ }
379
+
380
+ onDataReceivedPromise.resolve(output.subarray())
381
+ })
382
+ }
383
+ })
384
+
385
+ void pipe(p[0], dialer, p[0])
386
+ void pipe(p[1], listener, p[1])
387
+
388
+ const stream = await dialer.newStream()
389
+ const input = Uint8Array.from([0, 1, 2, 3, 4])
390
+
391
+ const pushable = byteStream(stream)
392
+ await pushable.write(input)
393
+ await pushable.unwrap().close()
394
+
395
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
396
+ })
397
+
398
+ it('should echo a large value via a pushable', async () => {
399
+ const p = duplexPair<Uint8Array | Uint8ArrayList>()
400
+ const onDialerStreamPromise: DeferredPromise<Stream> = defer()
401
+ const onDataReceivedPromise: DeferredPromise<Uint8Array> = defer()
402
+ const dialerFactory = await common.setup()
403
+ const dialer = dialerFactory.createStreamMuxer({
404
+ direction: 'outbound',
405
+ onIncomingStream: (stream) => {
406
+ onDialerStreamPromise.resolve(stream)
407
+ }
408
+ })
409
+ const listenerFactory = await common.setup()
410
+ const listener = listenerFactory.createStreamMuxer({
411
+ direction: 'inbound',
412
+ onIncomingStream: (stream) => {
413
+ void Promise.resolve().then(async () => {
414
+ const output = new Uint8ArrayList()
415
+
416
+ for await (const buf of stream.source) {
417
+ output.append(buf)
418
+ }
419
+
420
+ onDataReceivedPromise.resolve(output.subarray())
421
+ })
422
+ }
423
+ })
424
+
425
+ void pipe(p[0], dialer, p[0])
426
+ void pipe(p[1], listener, p[1])
427
+
428
+ const stream = await dialer.newStream()
429
+ const input = Uint8Array.from(new Array(1024 * 1024 * 10).fill(0))
430
+
431
+ const pushable = byteStream(stream)
432
+ await pushable.write(input)
433
+ await pushable.unwrap().close()
434
+
435
+ expect(await onDataReceivedPromise.promise).to.equalBytes(input)
436
+ })
194
437
  })
195
438
  }
@@ -1,38 +0,0 @@
1
- {
2
- "default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.connection.default.html",
3
- "./connection:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.connection.default.html",
4
- "./connection-encryption:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.connection_encryption.default.html",
5
- "TestSetup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.index.TestSetup.html",
6
- ".:TestSetup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.index.TestSetup.html",
7
- "isValidTick": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.is_valid_tick.isValidTick.html",
8
- "./is-valid-tick:isValidTick": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.is_valid_tick.isValidTick.html",
9
- "MockNetworkComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.mocks.MockNetworkComponents.html",
10
- "MockUpgraderInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.mocks.MockUpgraderInit.html",
11
- "mockNetwork": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface_compliance_tests.mocks.mockNetwork.html",
12
- "connectionPair": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.connectionPair.html",
13
- "mockConnection": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockConnection.html",
14
- "mockConnectionGater": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockConnectionGater.html",
15
- "mockConnectionManager": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockConnectionManager.html",
16
- "mockDuplex": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockDuplex.html",
17
- "mockMetrics": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockMetrics.html",
18
- "mockMultiaddrConnPair": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockMultiaddrConnPair.html",
19
- "mockMultiaddrConnection": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockMultiaddrConnection.html",
20
- "mockMuxer": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockMuxer.html",
21
- "mockRegistrar": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockRegistrar.html",
22
- "mockStream": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockStream.html",
23
- "mockUpgrader": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.mockUpgrader.html",
24
- "streamPair": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.mocks.streamPair.html",
25
- "./peer-discovery:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.peer_discovery.default.html",
26
- "./peers:default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface_compliance_tests.peers.default.html",
27
- "PubSubArgs": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.pubsub.PubSubArgs.html",
28
- "./pubsub:PubSubArgs": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.pubsub.PubSubArgs.html",
29
- "PubSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.pubsub.PubSubComponents.html",
30
- "./pubsub:PubSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.pubsub.PubSubComponents.html",
31
- "./pubsub:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.pubsub.default.html",
32
- "./stream-muxer:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.stream_muxer.default.html",
33
- "Connector": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.transport.Connector.html",
34
- "./transport:Connector": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.transport.Connector.html",
35
- "TransportTestFixtures": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.transport.TransportTestFixtures.html",
36
- "./transport:TransportTestFixtures": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface_compliance_tests.transport.TransportTestFixtures.html",
37
- "./transport:default": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface_compliance_tests.transport.default.html"
38
- }