@libp2p/interface 0.0.1 → 0.1.0-e66f4891

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 (44) hide show
  1. package/dist/src/connection/index.d.ts +152 -53
  2. package/dist/src/connection/index.d.ts.map +1 -1
  3. package/dist/src/connection/index.js.map +1 -1
  4. package/dist/src/errors.d.ts.map +1 -1
  5. package/dist/src/errors.js.map +1 -1
  6. package/dist/src/index.d.ts +8 -4
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/keys/index.d.ts.map +1 -1
  9. package/dist/src/keys/index.js.map +1 -1
  10. package/dist/src/peer-store/tags.d.ts.map +1 -1
  11. package/dist/src/peer-store/tags.js.map +1 -1
  12. package/dist/src/pubsub/index.d.ts +236 -0
  13. package/dist/src/pubsub/index.d.ts.map +1 -0
  14. package/dist/src/pubsub/index.js +36 -0
  15. package/dist/src/pubsub/index.js.map +1 -0
  16. package/dist/src/startable.d.ts.map +1 -1
  17. package/dist/src/startable.js.map +1 -1
  18. package/dist/src/stream-handler/index.d.ts +5 -0
  19. package/dist/src/stream-handler/index.d.ts.map +1 -1
  20. package/dist/src/stream-muxer/index.d.ts +6 -2
  21. package/dist/src/stream-muxer/index.d.ts.map +1 -1
  22. package/dist/src/stream-muxer/stream.d.ts +80 -21
  23. package/dist/src/stream-muxer/stream.d.ts.map +1 -1
  24. package/dist/src/stream-muxer/stream.js +224 -168
  25. package/dist/src/stream-muxer/stream.js.map +1 -1
  26. package/dist/src/transport/index.d.ts +5 -0
  27. package/dist/src/transport/index.d.ts.map +1 -1
  28. package/package.json +8 -11
  29. package/src/connection/index.ts +180 -59
  30. package/src/errors.ts +0 -1
  31. package/src/index.ts +8 -4
  32. package/src/keys/index.ts +0 -1
  33. package/src/peer-store/tags.ts +0 -1
  34. package/src/pubsub/index.ts +269 -0
  35. package/src/startable.ts +0 -1
  36. package/src/stream-handler/index.ts +6 -0
  37. package/src/stream-muxer/index.ts +7 -2
  38. package/src/stream-muxer/stream.ts +295 -186
  39. package/src/transport/index.ts +6 -0
  40. package/dist/src/connection/status.d.ts +0 -4
  41. package/dist/src/connection/status.d.ts.map +0 -1
  42. package/dist/src/connection/status.js +0 -4
  43. package/dist/src/connection/status.js.map +0 -1
  44. package/src/connection/status.ts +0 -4
@@ -1,241 +1,297 @@
1
- // import { logger } from '@libp2p/logger'
2
1
  import { abortableSource } from 'abortable-iterator';
3
- import { anySignal } from 'any-signal';
4
2
  import { pushable } from 'it-pushable';
3
+ import defer, {} from 'p-defer';
5
4
  import { Uint8ArrayList } from 'uint8arraylist';
6
5
  import { CodeError } from '../errors.js';
7
- // const log = logger('libp2p:stream')
8
- const log = () => { };
9
- log.trace = () => { };
10
- log.error = () => { };
11
6
  const ERR_STREAM_RESET = 'ERR_STREAM_RESET';
12
- const ERR_STREAM_ABORT = 'ERR_STREAM_ABORT';
13
- const ERR_SINK_ENDED = 'ERR_SINK_ENDED';
14
- const ERR_DOUBLE_SINK = 'ERR_DOUBLE_SINK';
7
+ const ERR_SINK_INVALID_STATE = 'ERR_SINK_INVALID_STATE';
15
8
  function isPromise(res) {
16
9
  return res != null && typeof res.then === 'function';
17
10
  }
18
11
  export class AbstractStream {
19
12
  id;
20
- stat;
13
+ direction;
14
+ timeline;
15
+ protocol;
21
16
  metadata;
22
17
  source;
23
- abortController;
24
- resetController;
25
- closeController;
26
- sourceEnded;
27
- sinkEnded;
28
- sinkSunk;
18
+ status;
19
+ readStatus;
20
+ writeStatus;
21
+ sinkController;
22
+ sinkEnd;
29
23
  endErr;
30
24
  streamSource;
31
25
  onEnd;
32
- maxDataSize;
26
+ onCloseRead;
27
+ onCloseWrite;
28
+ onReset;
29
+ onAbort;
30
+ log;
33
31
  constructor(init) {
34
- this.abortController = new AbortController();
35
- this.resetController = new AbortController();
36
- this.closeController = new AbortController();
37
- this.sourceEnded = false;
38
- this.sinkEnded = false;
39
- this.sinkSunk = false;
32
+ this.sinkController = new AbortController();
33
+ this.sinkEnd = defer();
34
+ this.log = init.log;
35
+ // stream status
36
+ this.status = 'open';
37
+ this.readStatus = 'ready';
38
+ this.writeStatus = 'ready';
40
39
  this.id = init.id;
41
40
  this.metadata = init.metadata ?? {};
42
- this.stat = {
43
- direction: init.direction,
44
- timeline: {
45
- open: Date.now()
46
- }
41
+ this.direction = init.direction;
42
+ this.timeline = {
43
+ open: Date.now()
47
44
  };
48
- this.maxDataSize = init.maxDataSize;
49
45
  this.onEnd = init.onEnd;
46
+ this.onCloseRead = init?.onCloseRead;
47
+ this.onCloseWrite = init?.onCloseWrite;
48
+ this.onReset = init?.onReset;
49
+ this.onAbort = init?.onAbort;
50
50
  this.source = this.streamSource = pushable({
51
- onEnd: () => {
52
- // already sent a reset message
53
- if (this.stat.timeline.reset !== null) {
54
- const res = this.sendCloseRead();
55
- if (isPromise(res)) {
56
- res.catch(err => {
57
- log.error('error while sending close read', err);
58
- });
59
- }
51
+ onEnd: (err) => {
52
+ if (err != null) {
53
+ this.log.trace('source ended with error', err);
54
+ }
55
+ else {
56
+ this.log.trace('source ended');
60
57
  }
61
- this.onSourceEnd();
58
+ this.readStatus = 'closed';
59
+ this.onSourceEnd(err);
62
60
  }
63
61
  });
64
62
  // necessary because the libp2p upgrader wraps the sink function
65
63
  this.sink = this.sink.bind(this);
66
64
  }
65
+ async sink(source) {
66
+ if (this.writeStatus !== 'ready') {
67
+ throw new CodeError(`writable end state is "${this.writeStatus}" not "ready"`, ERR_SINK_INVALID_STATE);
68
+ }
69
+ try {
70
+ this.writeStatus = 'writing';
71
+ const options = {
72
+ signal: this.sinkController.signal
73
+ };
74
+ if (this.direction === 'outbound') { // If initiator, open a new stream
75
+ const res = this.sendNewStream(options);
76
+ if (isPromise(res)) {
77
+ await res;
78
+ }
79
+ }
80
+ source = abortableSource(source, this.sinkController.signal, {
81
+ returnOnAbort: true
82
+ });
83
+ this.log.trace('sink reading from source');
84
+ for await (let data of source) {
85
+ data = data instanceof Uint8Array ? new Uint8ArrayList(data) : data;
86
+ const res = this.sendData(data, options);
87
+ if (isPromise(res)) { // eslint-disable-line max-depth
88
+ await res;
89
+ }
90
+ }
91
+ this.log.trace('sink finished reading from source');
92
+ this.writeStatus = 'done';
93
+ this.log.trace('sink calling closeWrite');
94
+ await this.closeWrite(options);
95
+ this.onSinkEnd();
96
+ }
97
+ catch (err) {
98
+ this.log.trace('sink ended with error, calling abort with error', err);
99
+ this.abort(err);
100
+ throw err;
101
+ }
102
+ finally {
103
+ this.log.trace('resolve sink end');
104
+ this.sinkEnd.resolve();
105
+ }
106
+ }
67
107
  onSourceEnd(err) {
68
- if (this.sourceEnded) {
108
+ if (this.timeline.closeRead != null) {
69
109
  return;
70
110
  }
71
- this.stat.timeline.closeRead = Date.now();
72
- this.sourceEnded = true;
73
- log.trace('%s stream %s source end - err: %o', this.stat.direction, this.id, err);
111
+ this.timeline.closeRead = Date.now();
74
112
  if (err != null && this.endErr == null) {
75
113
  this.endErr = err;
76
114
  }
77
- if (this.sinkEnded) {
78
- this.stat.timeline.close = Date.now();
115
+ this.onCloseRead?.();
116
+ if (this.timeline.closeWrite != null) {
117
+ this.log.trace('source and sink ended');
118
+ this.timeline.close = Date.now();
79
119
  if (this.onEnd != null) {
80
120
  this.onEnd(this.endErr);
81
121
  }
82
122
  }
123
+ else {
124
+ this.log.trace('source ended, waiting for sink to end');
125
+ }
83
126
  }
84
127
  onSinkEnd(err) {
85
- if (this.sinkEnded) {
128
+ if (this.timeline.closeWrite != null) {
86
129
  return;
87
130
  }
88
- this.stat.timeline.closeWrite = Date.now();
89
- this.sinkEnded = true;
90
- log.trace('%s stream %s sink end - err: %o', this.stat.direction, this.id, err);
131
+ this.timeline.closeWrite = Date.now();
91
132
  if (err != null && this.endErr == null) {
92
133
  this.endErr = err;
93
134
  }
94
- if (this.sourceEnded) {
95
- this.stat.timeline.close = Date.now();
135
+ this.onCloseWrite?.();
136
+ if (this.timeline.closeRead != null) {
137
+ this.log.trace('sink and source ended');
138
+ this.timeline.close = Date.now();
96
139
  if (this.onEnd != null) {
97
140
  this.onEnd(this.endErr);
98
141
  }
99
142
  }
143
+ else {
144
+ this.log.trace('sink ended, waiting for source to end');
145
+ }
100
146
  }
101
147
  // Close for both Reading and Writing
102
- close() {
103
- log.trace('%s stream %s close', this.stat.direction, this.id);
104
- this.closeRead();
105
- this.closeWrite();
106
- }
107
- // Close for reading
108
- closeRead() {
109
- log.trace('%s stream %s closeRead', this.stat.direction, this.id);
110
- if (this.sourceEnded) {
148
+ async close(options) {
149
+ this.log.trace('closing gracefully');
150
+ this.status = 'closing';
151
+ await Promise.all([
152
+ this.closeRead(options),
153
+ this.closeWrite(options)
154
+ ]);
155
+ this.status = 'closed';
156
+ this.log.trace('closed gracefully');
157
+ }
158
+ async closeRead(options = {}) {
159
+ if (this.readStatus === 'closing' || this.readStatus === 'closed') {
111
160
  return;
112
161
  }
113
- this.streamSource.end();
162
+ this.log.trace('closing readable end of stream with starting read status "%s"', this.readStatus);
163
+ const readStatus = this.readStatus;
164
+ this.readStatus = 'closing';
165
+ if (readStatus === 'ready') {
166
+ this.log.trace('ending internal source queue');
167
+ this.streamSource.end();
168
+ }
169
+ if (this.status !== 'reset' && this.status !== 'aborted') {
170
+ this.log.trace('send close read to remote');
171
+ await this.sendCloseRead(options);
172
+ }
173
+ this.log.trace('closed readable end of stream');
114
174
  }
115
- // Close for writing
116
- closeWrite() {
117
- log.trace('%s stream %s closeWrite', this.stat.direction, this.id);
118
- if (this.sinkEnded) {
175
+ async closeWrite(options = {}) {
176
+ if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {
119
177
  return;
120
178
  }
121
- this.closeController.abort();
122
- try {
123
- // need to call this here as the sink method returns in the catch block
124
- // when the close controller is aborted
125
- const res = this.sendCloseWrite();
126
- if (isPromise(res)) {
127
- res.catch(err => {
128
- log.error('error while sending close write', err);
179
+ this.log.trace('closing writable end of stream with starting write status "%s"', this.writeStatus);
180
+ const writeStatus = this.writeStatus;
181
+ if (this.writeStatus === 'ready') {
182
+ this.log.trace('sink was never sunk, sink an empty array');
183
+ await this.sink([]);
184
+ }
185
+ this.writeStatus = 'closing';
186
+ if (writeStatus === 'writing') {
187
+ // stop reading from the source passed to `.sink` in the microtask queue
188
+ // - this lets any data queued by the user in the current tick get read
189
+ // before we exit
190
+ await new Promise((resolve, reject) => {
191
+ queueMicrotask(() => {
192
+ this.log.trace('aborting source passed to .sink');
193
+ this.sinkController.abort();
194
+ this.sinkEnd.promise.then(resolve, reject);
129
195
  });
130
- }
196
+ });
131
197
  }
132
- catch (err) {
133
- log.trace('%s stream %s error sending close', this.stat.direction, this.id, err);
198
+ if (this.status !== 'reset' && this.status !== 'aborted') {
199
+ this.log.trace('send close write to remote');
200
+ await this.sendCloseWrite(options);
134
201
  }
135
- this.onSinkEnd();
202
+ this.writeStatus = 'closed';
203
+ this.log.trace('closed writable end of stream');
136
204
  }
137
- // Close for reading and writing (local error)
205
+ /**
206
+ * Close immediately for reading and writing and send a reset message (local
207
+ * error)
208
+ */
138
209
  abort(err) {
139
- log.trace('%s stream %s abort', this.stat.direction, this.id, err);
140
- // End the source with the passed error
141
- this.streamSource.end(err);
142
- this.abortController.abort();
143
- this.onSinkEnd(err);
210
+ if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {
211
+ return;
212
+ }
213
+ this.log('abort with error', err);
214
+ // try to send a reset message
215
+ this.log('try to send reset to remote');
216
+ const res = this.sendReset();
217
+ if (isPromise(res)) {
218
+ res.catch((err) => {
219
+ this.log.error('error sending reset message', err);
220
+ });
221
+ }
222
+ this.status = 'aborted';
223
+ this.timeline.abort = Date.now();
224
+ this._closeSinkAndSource(err);
225
+ this.onAbort?.(err);
144
226
  }
145
- // Close immediately for reading and writing (remote error)
227
+ /**
228
+ * Receive a reset message - close immediately for reading and writing (remote
229
+ * error)
230
+ */
146
231
  reset() {
232
+ if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {
233
+ return;
234
+ }
147
235
  const err = new CodeError('stream reset', ERR_STREAM_RESET);
148
- this.resetController.abort();
149
- this.streamSource.end(err);
150
- this.onSinkEnd(err);
236
+ this.status = 'reset';
237
+ this._closeSinkAndSource(err);
238
+ this.onReset?.();
151
239
  }
152
- async sink(source) {
153
- if (this.sinkSunk) {
154
- throw new CodeError('sink already called on stream', ERR_DOUBLE_SINK);
155
- }
156
- this.sinkSunk = true;
157
- if (this.sinkEnded) {
158
- throw new CodeError('stream closed for writing', ERR_SINK_ENDED);
159
- }
160
- const signal = anySignal([
161
- this.abortController.signal,
162
- this.resetController.signal,
163
- this.closeController.signal
164
- ]);
165
- try {
166
- source = abortableSource(source, signal);
167
- if (this.stat.direction === 'outbound') { // If initiator, open a new stream
168
- const res = this.sendNewStream();
169
- if (isPromise(res)) {
170
- await res;
171
- }
172
- }
173
- for await (let data of source) {
174
- while (data.length > 0) {
175
- if (data.length <= this.maxDataSize) {
176
- const res = this.sendData(data instanceof Uint8Array ? new Uint8ArrayList(data) : data);
177
- if (isPromise(res)) { // eslint-disable-line max-depth
178
- await res;
179
- }
180
- break;
181
- }
182
- data = data instanceof Uint8Array ? new Uint8ArrayList(data) : data;
183
- const res = this.sendData(data.sublist(0, this.maxDataSize));
184
- if (isPromise(res)) {
185
- await res;
186
- }
187
- data.consume(this.maxDataSize);
188
- }
189
- }
240
+ _closeSinkAndSource(err) {
241
+ this._closeSink(err);
242
+ this._closeSource(err);
243
+ }
244
+ _closeSink(err) {
245
+ // if the sink function is running, cause it to end
246
+ if (this.writeStatus === 'writing') {
247
+ this.log.trace('end sink source');
248
+ this.sinkController.abort();
190
249
  }
191
- catch (err) {
192
- if (err.type === 'aborted' && err.message === 'The operation was aborted') {
193
- if (this.closeController.signal.aborted) {
194
- return;
195
- }
196
- if (this.resetController.signal.aborted) {
197
- err.message = 'stream reset';
198
- err.code = ERR_STREAM_RESET;
199
- }
200
- if (this.abortController.signal.aborted) {
201
- err.message = 'stream aborted';
202
- err.code = ERR_STREAM_ABORT;
203
- }
204
- }
205
- // Send no more data if this stream was remotely reset
206
- if (err.code === ERR_STREAM_RESET) {
207
- log.trace('%s stream %s reset', this.stat.direction, this.id);
208
- }
209
- else {
210
- log.trace('%s stream %s error', this.stat.direction, this.id, err);
211
- try {
212
- const res = this.sendReset();
213
- if (isPromise(res)) {
214
- await res;
215
- }
216
- this.stat.timeline.reset = Date.now();
217
- }
218
- catch (err) {
219
- log.trace('%s stream %s error sending reset', this.stat.direction, this.id, err);
220
- }
221
- }
250
+ this.onSinkEnd(err);
251
+ }
252
+ _closeSource(err) {
253
+ // if the source is not ending, end it
254
+ if (this.readStatus !== 'closing' && this.readStatus !== 'closed') {
255
+ this.log.trace('ending source with %d bytes to be read by consumer', this.streamSource.readableLength);
256
+ this.readStatus = 'closing';
222
257
  this.streamSource.end(err);
223
- this.onSinkEnd(err);
224
- throw err;
225
258
  }
226
- finally {
227
- signal.clear();
259
+ }
260
+ /**
261
+ * The remote closed for writing so we should expect to receive no more
262
+ * messages
263
+ */
264
+ remoteCloseWrite() {
265
+ if (this.readStatus === 'closing' || this.readStatus === 'closed') {
266
+ this.log('received remote close write but local source is already closed');
267
+ return;
228
268
  }
229
- try {
230
- const res = this.sendCloseWrite();
231
- if (isPromise(res)) {
232
- await res;
233
- }
269
+ this.log.trace('remote close write');
270
+ this._closeSource();
271
+ }
272
+ /**
273
+ * The remote closed for reading so we should not send any more
274
+ * messages
275
+ */
276
+ remoteCloseRead() {
277
+ if (this.writeStatus === 'closing' || this.writeStatus === 'closed') {
278
+ this.log('received remote close read but local sink is already closed');
279
+ return;
234
280
  }
235
- catch (err) {
236
- log.trace('%s stream %s error sending close', this.stat.direction, this.id, err);
281
+ this.log.trace('remote close read');
282
+ this._closeSink();
283
+ }
284
+ /**
285
+ * The underlying muxer has closed, no more messages can be sent or will
286
+ * be received, close immediately to free up resources
287
+ */
288
+ destroy() {
289
+ if (this.status === 'closed' || this.status === 'aborted' || this.status === 'reset') {
290
+ this.log('received destroy but we are already closed');
291
+ return;
237
292
  }
238
- this.onSinkEnd();
293
+ this.log.trace('muxer destroyed');
294
+ this._closeSinkAndSource();
239
295
  }
240
296
  /**
241
297
  * When an extending class reads data from it's implementation-specific source,
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/stream-muxer/stream.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAiB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAIxC,sCAAsC;AAEtC,MAAM,GAAG,GAAQ,GAAG,EAAE,GAAE,CAAC,CAAA;AACzB,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AACpB,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAEpB,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,cAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,eAAe,GAAG,iBAAiB,CAAA;AA8BzC,SAAS,SAAS,CAAE,GAAS;IAC3B,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAA;AACtD,CAAC;AAED,MAAM,OAAgB,cAAc;IAC3B,EAAE,CAAQ;IACV,IAAI,CAAY;IAChB,QAAQ,CAAyB;IACjC,MAAM,CAA+C;IAE3C,eAAe,CAAiB;IAChC,eAAe,CAAiB;IAChC,eAAe,CAAiB;IACzC,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,MAAM,CAAmB;IAChB,YAAY,CAA0B;IACtC,KAAK,CAAoC;IACzC,WAAW,CAAQ;IAEpC,YAAa,IAAwB;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG;YACV,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;aACjB;SACF,CAAA;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAEvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAiB;YACzD,KAAK,EAAE,GAAG,EAAE;gBACV,+BAA+B;gBAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,EAAE;oBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;oBAEhC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;wBAClB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACd,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;wBAClD,CAAC,CAAC,CAAA;qBACH;iBACF;gBAED,IAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC;SACF,CAAC,CAAA;QAEF,gEAAgE;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAES,WAAW,CAAE,GAAW;QAChC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAEjF,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;SAClB;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAErC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;aACxB;SACF;IACH,CAAC;IAES,SAAS,CAAE,GAAW;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAE/E,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;SAClB;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAErC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;aACxB;SACF;IACH,CAAC;IAED,qCAAqC;IACrC,KAAK;QACH,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,oBAAoB;IACpB,SAAS;QACP,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAEjE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;IAED,oBAAoB;IACpB,UAAU;QACR,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAElE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAM;SACP;QAED,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAE5B,IAAI;YACF,uEAAuE;YACvE,uCAAuC;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YAEjC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACd,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAA;gBACnD,CAAC,CAAC,CAAA;aACH;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAE,GAAU;QACf,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAClE,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;IAED,2DAA2D;IAC3D,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAC3D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,MAA2C;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,SAAS,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAA;SACtE;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAA;SACjE;QAED,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,MAAM;YAC3B,IAAI,CAAC,eAAe,CAAC,MAAM;YAC3B,IAAI,CAAC,eAAe,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAExC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,EAAE,kCAAkC;gBAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;gBAEhC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;oBAClB,MAAM,GAAG,CAAA;iBACV;aACF;YAED,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,MAAM,EAAE;gBAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;wBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;wBAEvF,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,gCAAgC;4BACpD,MAAM,GAAG,CAAA;yBACV;wBAED,MAAK;qBACN;oBACD,IAAI,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;oBACnE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;oBAE5D,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;wBAClB,MAAM,GAAG,CAAA;qBACV;oBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;iBAC/B;aACF;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,2BAA2B,EAAE;gBACzE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvC,OAAM;iBACP;gBAED,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvC,GAAG,CAAC,OAAO,GAAG,cAAc,CAAA;oBAC5B,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAA;iBAC5B;gBAED,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAA;oBAC9B,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAA;iBAC5B;aACF;YAED,sDAAsD;YACtD,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;gBACjC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;aAC9D;iBAAM;gBACL,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBAClE,IAAI;oBACF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;oBAE5B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;wBAClB,MAAM,GAAG,CAAA;qBACV;oBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;iBACtC;gBAAC,OAAO,GAAG,EAAE;oBACZ,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;iBACjF;aACF;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAEnB,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,MAAM,CAAC,KAAK,EAAE,CAAA;SACf;QAED,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YAEjC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,MAAM,GAAG,CAAA;aACV;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAED;;;OAGG;IACH,UAAU,CAAE,IAAoB;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAA;IACzC,CAAC;CA6BF"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/stream-muxer/stream.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,11 @@ export interface UpgraderOptions {
82
82
  skipEncryption?: boolean;
83
83
  skipProtection?: boolean;
84
84
  muxerFactory?: StreamMuxerFactory;
85
+ /**
86
+ * The passed MultiaddrConnection has limits place on duration and/or data
87
+ * transfer amounts so is not expected to be open for very long.
88
+ */
89
+ transient?: boolean;
85
90
  }
86
91
  export interface Upgrader {
87
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IAC3B,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,QAAS,SAAQ,YAAY,CAAC,cAAc,CAAC;IAC5D;;OAEG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C;;OAEG;IACH,QAAQ,EAAE,MAAM,SAAS,EAAE,CAAA;IAC3B;;;;OAIG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,eAAO,MAAM,MAAM,eAAkC,CAAA;AAErD,MAAM,WAAW,iBAAiB;IAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE;AAErE,MAAM,WAAW,eAAe;IAAG,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAA;CAAE;AAE3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE5B;;OAEG;IACH,CAAC,MAAM,CAAC,EAAE,IAAI,CAAA;IAEd;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAElE;;OAEG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,QAAQ,CAAA;IAE5D;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAE3D;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB;;OAEG;IACH,SAAS,IAAI;IAEb;;OAEG;IACH,QAAQ,IAAA;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7F;;OAEG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IAC3B,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,QAAS,SAAQ,YAAY,CAAC,cAAc,CAAC;IAC5D;;OAEG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C;;OAEG;IACH,QAAQ,EAAE,MAAM,SAAS,EAAE,CAAA;IAC3B;;;;OAIG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,eAAO,MAAM,MAAM,eAAkC,CAAA;AAErD,MAAM,WAAW,iBAAiB;IAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE;AAErE,MAAM,WAAW,eAAe;IAAG,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAA;CAAE;AAE3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE5B;;OAEG;IACH,CAAC,MAAM,CAAC,EAAE,IAAI,CAAA;IAEd;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAElE;;OAEG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,QAAQ,CAAA;IAE5D;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAE3D;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB;;OAEG;IACH,SAAS,IAAI;IAEb;;OAEG;IACH,QAAQ,IAAA;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAEjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7F;;OAEG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/interface",
3
- "version": "0.0.1",
3
+ "version": "0.1.0-e66f4891",
4
4
  "description": "The interface implemented by a libp2p node",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/interface#readme",
@@ -56,10 +56,6 @@
56
56
  "types": "./dist/src/connection-gater/index.d.ts",
57
57
  "import": "./dist/src/connection-gater/index.js"
58
58
  },
59
- "./connection/status": {
60
- "types": "./dist/src/connection/status.d.ts",
61
- "import": "./dist/src/connection/status.js"
62
- },
63
59
  "./content-routing": {
64
60
  "types": "./dist/src/content-routing/index.d.ts",
65
61
  "import": "./dist/src/content-routing/index.js"
@@ -112,6 +108,10 @@
112
108
  "types": "./dist/src/peer-store/tags.d.ts",
113
109
  "import": "./dist/src/peer-store/tags.js"
114
110
  },
111
+ "./pubsub": {
112
+ "types": "./dist/src/pubsub/index.d.ts",
113
+ "import": "./dist/src/pubsub/index.js"
114
+ },
115
115
  "./record": {
116
116
  "types": "./dist/src/record/index.d.ts",
117
117
  "import": "./dist/src/record/index.js"
@@ -159,19 +159,16 @@
159
159
  "dependencies": {
160
160
  "@multiformats/multiaddr": "^12.1.3",
161
161
  "abortable-iterator": "^5.0.1",
162
- "any-signal": "^4.1.1",
163
- "it-pushable": "^3.1.3",
162
+ "it-pushable": "^3.2.0",
164
163
  "it-stream-types": "^2.0.1",
165
164
  "multiformats": "^12.0.1",
165
+ "p-defer": "^4.0.0",
166
166
  "uint8arraylist": "^2.4.3"
167
167
  },
168
168
  "devDependencies": {
169
169
  "@types/sinon": "^10.0.15",
170
- "aegir": "^39.0.10",
170
+ "aegir": "^40.0.1",
171
171
  "sinon": "^15.1.2",
172
172
  "sinon-ts": "^1.0.0"
173
- },
174
- "typedoc": {
175
- "entryPoint": "./src/index.ts"
176
173
  }
177
174
  }