@libp2p/interface-compliance-tests 6.5.0-8484de8a2 → 6.5.0-87bc8d4fb

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 (131) hide show
  1. package/dist/src/connection-encryption/index.d.ts.map +1 -1
  2. package/dist/src/connection-encryption/index.js +15 -24
  3. package/dist/src/connection-encryption/index.js.map +1 -1
  4. package/dist/src/connection-encryption/utils/index.d.ts +3 -0
  5. package/dist/src/connection-encryption/utils/index.d.ts.map +1 -0
  6. package/dist/src/connection-encryption/utils/index.js +21 -0
  7. package/dist/src/connection-encryption/utils/index.js.map +1 -0
  8. package/dist/src/matchers.d.ts +12 -0
  9. package/dist/src/matchers.d.ts.map +1 -0
  10. package/dist/src/matchers.js +14 -0
  11. package/dist/src/matchers.js.map +1 -0
  12. package/dist/src/mocks/connection-manager.d.ts +27 -0
  13. package/dist/src/mocks/connection-manager.d.ts.map +1 -0
  14. package/dist/src/mocks/connection-manager.js +147 -0
  15. package/dist/src/mocks/connection-manager.js.map +1 -0
  16. package/dist/src/mocks/connection.d.ts +41 -0
  17. package/dist/src/mocks/connection.d.ts.map +1 -0
  18. package/dist/src/mocks/connection.js +236 -0
  19. package/dist/src/mocks/connection.js.map +1 -0
  20. package/dist/src/mocks/duplex.d.ts +4 -0
  21. package/dist/src/mocks/duplex.d.ts.map +1 -0
  22. package/dist/src/mocks/duplex.js +9 -0
  23. package/dist/src/mocks/duplex.js.map +1 -0
  24. package/dist/src/mocks/index.d.ts +12 -0
  25. package/dist/src/mocks/index.d.ts.map +1 -0
  26. package/dist/src/mocks/index.js +8 -0
  27. package/dist/src/mocks/index.js.map +1 -0
  28. package/dist/src/mocks/multiaddr-connection.d.ts +17 -0
  29. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
  30. package/dist/src/mocks/multiaddr-connection.js +64 -0
  31. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  32. package/dist/src/mocks/muxer.d.ts +36 -0
  33. package/dist/src/mocks/muxer.d.ts.map +1 -0
  34. package/dist/src/mocks/muxer.js +234 -0
  35. package/dist/src/mocks/muxer.js.map +1 -0
  36. package/dist/src/mocks/registrar.d.ts +16 -0
  37. package/dist/src/mocks/registrar.d.ts.map +1 -0
  38. package/dist/src/mocks/registrar.js +66 -0
  39. package/dist/src/mocks/registrar.js.map +1 -0
  40. package/dist/src/mocks/upgrader.d.ts +9 -0
  41. package/dist/src/mocks/upgrader.d.ts.map +1 -0
  42. package/dist/src/mocks/upgrader.js +46 -0
  43. package/dist/src/mocks/upgrader.js.map +1 -0
  44. package/dist/src/pubsub/api.d.ts +6 -0
  45. package/dist/src/pubsub/api.d.ts.map +1 -0
  46. package/dist/src/pubsub/api.js +88 -0
  47. package/dist/src/pubsub/api.js.map +1 -0
  48. package/dist/src/pubsub/connection-handlers.d.ts +6 -0
  49. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -0
  50. package/dist/src/pubsub/connection-handlers.js +329 -0
  51. package/dist/src/pubsub/connection-handlers.js.map +1 -0
  52. package/dist/src/pubsub/emit-self.d.ts +6 -0
  53. package/dist/src/pubsub/emit-self.d.ts.map +1 -0
  54. package/dist/src/pubsub/emit-self.js +80 -0
  55. package/dist/src/pubsub/emit-self.js.map +1 -0
  56. package/dist/src/pubsub/index.d.ts +18 -0
  57. package/dist/src/pubsub/index.d.ts.map +1 -0
  58. package/dist/src/pubsub/index.js +17 -0
  59. package/dist/src/pubsub/index.js.map +1 -0
  60. package/dist/src/pubsub/messages.d.ts +6 -0
  61. package/dist/src/pubsub/messages.d.ts.map +1 -0
  62. package/dist/src/pubsub/messages.js +48 -0
  63. package/dist/src/pubsub/messages.js.map +1 -0
  64. package/dist/src/pubsub/multiple-nodes.d.ts +6 -0
  65. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -0
  66. package/dist/src/pubsub/multiple-nodes.js +350 -0
  67. package/dist/src/pubsub/multiple-nodes.js.map +1 -0
  68. package/dist/src/pubsub/two-nodes.d.ts +6 -0
  69. package/dist/src/pubsub/two-nodes.d.ts.map +1 -0
  70. package/dist/src/pubsub/two-nodes.js +216 -0
  71. package/dist/src/pubsub/two-nodes.js.map +1 -0
  72. package/dist/src/pubsub/utils.d.ts +5 -0
  73. package/dist/src/pubsub/utils.d.ts.map +1 -0
  74. package/dist/src/pubsub/utils.js +27 -0
  75. package/dist/src/pubsub/utils.js.map +1 -0
  76. package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
  77. package/dist/src/stream-muxer/base-test.js +345 -62
  78. package/dist/src/stream-muxer/base-test.js.map +1 -1
  79. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  80. package/dist/src/stream-muxer/close-test.js +320 -253
  81. package/dist/src/stream-muxer/close-test.js.map +1 -1
  82. package/dist/src/stream-muxer/index.js +2 -2
  83. package/dist/src/stream-muxer/index.js.map +1 -1
  84. package/dist/src/stream-muxer/{stream-test.d.ts → mega-stress-test.d.ts} +2 -2
  85. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -0
  86. package/dist/src/stream-muxer/mega-stress-test.js +11 -0
  87. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -0
  88. package/dist/src/stream-muxer/spawner.d.ts +4 -0
  89. package/dist/src/stream-muxer/spawner.d.ts.map +1 -0
  90. package/dist/src/stream-muxer/spawner.js +39 -0
  91. package/dist/src/stream-muxer/spawner.js.map +1 -0
  92. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -1
  93. package/dist/src/stream-muxer/stress-test.js +16 -70
  94. package/dist/src/stream-muxer/stress-test.js.map +1 -1
  95. package/dist/src/transport/index.d.ts.map +1 -1
  96. package/dist/src/transport/index.js +203 -232
  97. package/dist/src/transport/index.js.map +1 -1
  98. package/dist/src/transport/utils.js +2 -2
  99. package/dist/src/transport/utils.js.map +1 -1
  100. package/package.json +51 -23
  101. package/src/connection-encryption/index.ts +20 -27
  102. package/src/connection-encryption/utils/index.ts +27 -0
  103. package/src/matchers.ts +18 -0
  104. package/src/mocks/connection-manager.ts +216 -0
  105. package/src/mocks/connection.ts +309 -0
  106. package/src/mocks/duplex.ts +11 -0
  107. package/src/mocks/index.ts +11 -0
  108. package/src/mocks/multiaddr-connection.ts +80 -0
  109. package/src/mocks/muxer.ts +331 -0
  110. package/src/mocks/registrar.ts +86 -0
  111. package/src/mocks/upgrader.ts +65 -0
  112. package/src/pubsub/api.ts +116 -0
  113. package/src/pubsub/connection-handlers.ts +413 -0
  114. package/src/pubsub/emit-self.ts +99 -0
  115. package/src/pubsub/index.ts +34 -0
  116. package/src/pubsub/messages.ts +59 -0
  117. package/src/pubsub/multiple-nodes.ts +440 -0
  118. package/src/pubsub/two-nodes.ts +272 -0
  119. package/src/pubsub/utils.ts +34 -0
  120. package/src/stream-muxer/base-test.ts +413 -75
  121. package/src/stream-muxer/close-test.ts +343 -304
  122. package/src/stream-muxer/index.ts +2 -2
  123. package/src/stream-muxer/mega-stress-test.ts +14 -0
  124. package/src/stream-muxer/spawner.ts +57 -0
  125. package/src/stream-muxer/stress-test.ts +18 -92
  126. package/src/transport/index.ts +241 -280
  127. package/src/transport/utils.ts +2 -2
  128. package/dist/src/stream-muxer/stream-test.d.ts.map +0 -1
  129. package/dist/src/stream-muxer/stream-test.js +0 -289
  130. package/dist/src/stream-muxer/stream-test.js.map +0 -1
  131. package/src/stream-muxer/stream-test.ts +0 -380
@@ -3,8 +3,8 @@
3
3
  import { echo } from '@libp2p/echo'
4
4
  import { memory } from '@libp2p/memory'
5
5
  import { plaintext } from '@libp2p/plaintext'
6
- import { mockMuxer } from '@libp2p/utils'
7
6
  import { createLibp2p } from 'libp2p'
7
+ import { mockMuxer } from '../mocks/muxer.js'
8
8
  import type { Echo } from '@libp2p/echo'
9
9
  import type { Libp2p, Upgrader } from '@libp2p/interface'
10
10
  import type { TransportManager } from '@libp2p/interface-internal'
@@ -28,7 +28,7 @@ export async function createPeer (config: Partial<Libp2pOptions> = {}): Promise<
28
28
  services: {
29
29
  ...config.services,
30
30
  echo: echo({
31
- maxInboundStreams: 5_000
31
+ maxInboundStreams: 5
32
32
  })
33
33
  }
34
34
  })
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/stream-test.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAA4C,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;yBAErF,QAAQ,SAAS,CAAC,kBAAkB,CAAC,KAAG,IAAI;AAA5D,wBA+WC"}
@@ -1,289 +0,0 @@
1
- import { StreamCloseEvent, StreamMessageEvent } from '@libp2p/interface';
2
- import { multiaddrConnectionPair } from '@libp2p/utils';
3
- import { expect } from 'aegir/chai';
4
- import delay from 'delay';
5
- import all from 'it-all';
6
- import { pEvent } from 'p-event';
7
- import Sinon from 'sinon';
8
- import { Uint8ArrayList } from 'uint8arraylist';
9
- import { isValidTick } from "../is-valid-tick.js";
10
- export default (common) => {
11
- describe('streams', () => {
12
- let dialer;
13
- let listener;
14
- let outboundStream;
15
- let inboundStream;
16
- let streams;
17
- let outboundConnection;
18
- let inboundConnection;
19
- beforeEach(async () => {
20
- ([outboundConnection, inboundConnection] = multiaddrConnectionPair());
21
- const dialerFactory = await common.setup();
22
- dialer = dialerFactory.createStreamMuxer(outboundConnection);
23
- const listenerFactory = await common.setup();
24
- listener = listenerFactory.createStreamMuxer(inboundConnection);
25
- streams = await Promise.all([
26
- pEvent(listener, 'stream').then(evt => evt.detail),
27
- dialer.createStream()
28
- ]);
29
- inboundStream = streams[0];
30
- outboundStream = streams[1];
31
- });
32
- afterEach(async () => {
33
- await dialer?.close();
34
- await listener?.close();
35
- });
36
- it('should have correct status after opening', () => {
37
- streams.forEach(stream => {
38
- expect(stream).to.have.property('status', 'open', `${stream.direction} stream status was incorrect`);
39
- expect(stream).to.have.property('writeStatus', 'writable', `${stream.direction} stream writeStatus was incorrect`);
40
- expect(stream).to.have.property('readStatus', 'readable', `${stream.direction} stream readStatus was incorrect`);
41
- });
42
- });
43
- it('should have correct timeline after opening', () => {
44
- streams.forEach(stream => {
45
- expect(isValidTick(stream.timeline.open)).to.equal(true, `${stream.direction} stream timeline.open was incorrect`);
46
- expect(stream).to.not.have.nested.property('timeline.close', `${stream.direction} stream timeline.close was incorrect`);
47
- expect(stream).to.not.have.nested.property('timeline.closeRead', `${stream.direction} stream timeline.closeRead was incorrect`);
48
- expect(stream).to.not.have.nested.property('timeline.closeWrite', `${stream.direction} stream timeline.closeWrite was incorrect`);
49
- expect(stream).to.not.have.nested.property('timeline.reset', `${stream.direction} stream timeline.reset was incorrect`);
50
- expect(stream).to.not.have.nested.property('timeline.abort', `${stream.direction} stream timeline.abort was incorrect`);
51
- });
52
- });
53
- it('outbound stream sends data', async () => {
54
- const messageEventPromise = pEvent(inboundStream, 'message');
55
- const data = Uint8Array.from([0, 1, 2, 3, 4]);
56
- outboundStream.send(data);
57
- const evt = await messageEventPromise;
58
- expect(evt.data.subarray()).to.equalBytes(data);
59
- });
60
- it('inbound stream sends data', async () => {
61
- const messageEventPromise = pEvent(outboundStream, 'message');
62
- const data = Uint8Array.from([0, 1, 2, 3, 4]);
63
- inboundStream.send(data);
64
- const evt = await messageEventPromise;
65
- expect(evt.data.subarray()).to.equalBytes(data);
66
- });
67
- it('closes', async () => {
68
- const signal = AbortSignal.timeout(1_000);
69
- void outboundStream.close({
70
- signal
71
- });
72
- void inboundStream.close({
73
- signal
74
- });
75
- expect(outboundStream).to.have.property('status', 'open');
76
- expect(outboundStream).to.have.property('readStatus', 'readable');
77
- expect(outboundStream).to.have.property('writeStatus', 'closing');
78
- await Promise.all([
79
- pEvent(outboundStream, 'close', {
80
- signal
81
- }),
82
- pEvent(inboundStream, 'close', {
83
- signal
84
- })
85
- ]);
86
- streams.forEach(stream => {
87
- expect(stream).to.have.property('status', 'closed', `${stream.direction} stream status was incorrect`);
88
- expect(stream).to.have.property('writeStatus', 'closed', `${stream.direction} stream writeStatus was incorrect`);
89
- expect(stream).to.have.property('readStatus', 'closed', `${stream.direction} stream readStatus was incorrect`);
90
- expect(isValidTick(stream.timeline.open)).to.equal(true, `${stream.direction} stream timeline.open was incorrect`);
91
- expect(isValidTick(stream.timeline.close)).to.equal(true, `${stream.direction} stream timeline.close was incorrect`);
92
- expect(stream).to.not.have.nested.property('timeline.reset', `${stream.direction} stream timeline.reset was incorrect`);
93
- expect(stream).to.not.have.nested.property('timeline.abort', `${stream.direction} stream timeline.abort was incorrect`);
94
- });
95
- });
96
- it('should send large amounts of data in both directions', async function () {
97
- const timeout = 360_000;
98
- this.timeout(timeout);
99
- const sent = new Array(10)
100
- .fill(0)
101
- .map((val, index) => new Uint8Array(1024 * 1024).fill(index));
102
- // send data in both directions simultaneously
103
- const [outboundReceived, inboundReceived] = await Promise.all([
104
- all(outboundStream),
105
- all(inboundStream),
106
- (async () => {
107
- for (const buf of sent) {
108
- if (!outboundStream.send(buf)) {
109
- await pEvent(outboundStream, 'drain', {
110
- rejectionEvents: [
111
- 'close'
112
- ]
113
- });
114
- }
115
- }
116
- await outboundStream.close();
117
- })(),
118
- (async () => {
119
- for (const buf of sent) {
120
- if (!inboundStream.send(buf)) {
121
- await pEvent(inboundStream, 'drain', {
122
- rejectionEvents: [
123
- 'close'
124
- ]
125
- });
126
- }
127
- }
128
- await inboundStream.close();
129
- })()
130
- ]);
131
- expect(new Uint8ArrayList(...outboundReceived)).to.have.property('byteLength', new Uint8ArrayList(...sent).byteLength);
132
- expect(new Uint8ArrayList(...inboundReceived)).to.have.property('byteLength', new Uint8ArrayList(...sent).byteLength);
133
- });
134
- it('closes for writing', async () => {
135
- const signal = AbortSignal.timeout(1_000);
136
- const eventPromise = pEvent(inboundStream, 'remoteCloseWrite');
137
- void outboundStream.close({
138
- signal
139
- });
140
- expect(outboundStream).to.have.property('writeStatus', 'closing');
141
- await delay(100);
142
- expect(inboundStream).to.have.property('readStatus', 'readable');
143
- await eventPromise;
144
- streams.forEach(stream => {
145
- expect(stream).to.have.property('status', 'open', `${stream.direction} stream status was incorrect`);
146
- expect(isValidTick(stream.timeline.open)).to.equal(true, `${stream.direction} stream timeline.open was incorrect`);
147
- expect(stream).to.not.have.nested.property('timeline.close', `${stream.direction} stream timeline.close was incorrect`);
148
- expect(stream).to.not.have.nested.property('timeline.reset', `${stream.direction} stream timeline.reset was incorrect`);
149
- expect(stream).to.not.have.nested.property('timeline.abort', `${stream.direction} stream timeline.abort was incorrect`);
150
- });
151
- expect(outboundStream).to.have.property('writeStatus', 'closed', 'outbound stream writeStatus was incorrect');
152
- expect(outboundStream).to.have.property('readStatus', 'readable', 'inbound stream readStatus was incorrect');
153
- expect(outboundStream).to.not.have.nested.property('timeline.closeRead', 'inbound stream timeline.closeRead was incorrect');
154
- expect(inboundStream).to.have.property('writeStatus', 'writable', 'inbound stream writeStatus was incorrect');
155
- expect(inboundStream).to.have.property('readStatus', 'readable', 'inbound stream readStatus was incorrect');
156
- });
157
- it('aborts', async () => {
158
- const eventPromises = Promise.all([
159
- pEvent(outboundStream, 'close'),
160
- pEvent(inboundStream, 'close')
161
- ]);
162
- const err = new Error('Urk!');
163
- outboundStream.abort(err);
164
- const [outboundEvent, inboundEvent] = await eventPromises;
165
- streams.forEach(stream => {
166
- expect(stream).to.have.property('writeStatus', 'closed', `${stream.direction} stream writeStatus was incorrect`);
167
- expect(stream).to.have.property('readStatus', 'closed', `${stream.direction} stream readStatus was incorrect`);
168
- expect(isValidTick(stream.timeline.open)).to.equal(true, `${stream.direction} stream timeline.open was incorrect`);
169
- expect(stream).to.not.have.nested.property('timeline.close', `${stream.direction} stream timeline.close was incorrect`);
170
- });
171
- expect(outboundStream).to.have.property('status', 'aborted', 'outbound stream status was incorrect');
172
- expect(isValidTick(outboundStream.timeline.close)).to.equal(true, 'outbound stream timeline.abort was incorrect');
173
- expect(inboundStream).to.have.property('status', 'reset', 'inbound stream status was incorrect');
174
- expect(isValidTick(inboundStream.timeline.close)).to.equal(true, 'inbound stream timeline.reset was incorrect');
175
- expect(() => outboundStream.send(Uint8Array.from([0, 1, 2, 3]))).to.throw()
176
- .with.property('name', 'StreamStateError', 'could still write to aborted stream');
177
- expect(() => inboundStream.send(Uint8Array.from([0, 1, 2, 3]))).to.throw()
178
- .with.property('name', 'StreamStateError', 'could still write to reset stream');
179
- expect(outboundEvent).to.have.property('error', err);
180
- expect(inboundEvent).to.have.nested.property('error.name', 'StreamResetError');
181
- });
182
- it('does not send close read when remote closes write', async () => {
183
- // @ts-expect-error internal method of AbstractMessageStream
184
- const sendCloseReadSpy = Sinon.spy(outboundStream, 'sendCloseRead');
185
- await Promise.all([
186
- pEvent(outboundStream, 'remoteCloseWrite'),
187
- inboundStream.close()
188
- ]);
189
- await delay(100);
190
- expect(sendCloseReadSpy.called).to.be.false();
191
- });
192
- it('does not send close read or write when remote resets', async () => {
193
- // @ts-expect-error internal method of AbstractMessageStream
194
- const sendCloseReadSpy = Sinon.spy(outboundStream, 'sendCloseRead');
195
- // @ts-expect-error internal method of AbstractMessageStream
196
- const sendCloseWriteSpy = Sinon.spy(outboundStream, 'sendCloseWrite');
197
- await Promise.all([
198
- pEvent(outboundStream, 'close'),
199
- inboundStream.abort(new Error('Urk!'))
200
- ]);
201
- await delay(100);
202
- await outboundStream.close();
203
- await delay(100);
204
- expect(sendCloseReadSpy.called).to.be.false();
205
- expect(sendCloseWriteSpy.called).to.be.false();
206
- });
207
- it('should wait for sending data to finish when closing gracefully', async () => {
208
- let sent = 0;
209
- let received = 0;
210
- let filledBuffer = false;
211
- const receivedAll = Promise.withResolvers();
212
- inboundStream.addEventListener('message', (evt) => {
213
- received += evt.data.byteLength;
214
- if (filledBuffer && received === sent) {
215
- receivedAll.resolve(true);
216
- }
217
- });
218
- // fill the send buffer
219
- while (true) {
220
- const length = 1024;
221
- sent += length;
222
- const sendMore = outboundStream.send(new Uint8Array(length));
223
- if (sendMore === false) {
224
- filledBuffer = true;
225
- break;
226
- }
227
- }
228
- expect(outboundStream.writeStatus).to.equal('writable');
229
- expect(outboundStream.writableNeedsDrain).to.be.true();
230
- // close gracefully
231
- await outboundStream.close();
232
- await expect(receivedAll.promise).to.eventually.be.true('did not receive all data');
233
- });
234
- it('should wait for sending data to finish when closing the writable end gracefully', async () => {
235
- let sent = 0;
236
- let received = 0;
237
- let filledBuffer = false;
238
- const receivedAll = Promise.withResolvers();
239
- inboundStream.addEventListener('message', (evt) => {
240
- received += evt.data.byteLength;
241
- if (filledBuffer && received === sent) {
242
- receivedAll.resolve(true);
243
- }
244
- });
245
- // fill the send buffer
246
- while (true) {
247
- const length = 1024;
248
- sent += length;
249
- const sendMore = outboundStream.send(new Uint8Array(length));
250
- if (sendMore === false) {
251
- filledBuffer = true;
252
- break;
253
- }
254
- }
255
- expect(outboundStream.writeStatus).to.equal('writable');
256
- expect(outboundStream.writableNeedsDrain).to.be.true();
257
- // close gracefully
258
- await outboundStream.close();
259
- await expect(receivedAll.promise).to.eventually.be.true('did not receive all data');
260
- });
261
- it('should abort close due to timeout with slow sender', async () => {
262
- const chunkSize = 1024;
263
- // make the 'drain' event slow to fire
264
- // @ts-expect-error private fields
265
- outboundConnection.local.delay = 1000;
266
- inboundStream = streams[0];
267
- outboundStream = streams[1];
268
- // ensure there are bytes left in the write queue
269
- // @ts-expect-error private fields
270
- outboundStream.maxMessageSize = chunkSize - 1;
271
- // fill the send buffer
272
- while (true) {
273
- const sendMore = outboundStream.send(new Uint8Array(chunkSize * 10));
274
- if (sendMore === false) {
275
- expect(outboundStream).to.have.nested.property('writeBuffer.byteLength').that.is.greaterThan(0);
276
- break;
277
- }
278
- }
279
- expect(outboundStream.writeStatus).to.equal('writable');
280
- expect(outboundStream.writableNeedsDrain).to.be.true();
281
- // close stream, should be aborted as drain event will not have fired
282
- await expect(outboundStream.close({
283
- signal: AbortSignal.timeout(10)
284
- })).to.eventually.be.rejected
285
- .with.property('name', 'TimeoutError');
286
- });
287
- });
288
- };
289
- //# sourceMappingURL=stream-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/stream-test.ts"],"names":[],"mappings":"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"}