libp2p 0.32.4 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -1
  2. package/dist/src/circuit/index.d.ts +2 -2
  3. package/dist/src/circuit/index.d.ts.map +1 -1
  4. package/dist/src/circuit/transport.d.ts +1 -1
  5. package/dist/src/circuit/transport.d.ts.map +1 -1
  6. package/dist/src/config.d.ts +0 -1
  7. package/dist/src/connection-manager/auto-dialler.d.ts +56 -0
  8. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -0
  9. package/dist/src/connection-manager/index.d.ts +0 -10
  10. package/dist/src/connection-manager/index.d.ts.map +1 -1
  11. package/dist/src/content-routing/index.d.ts +4 -2
  12. package/dist/src/content-routing/index.d.ts.map +1 -1
  13. package/dist/src/dht/dht-content-routing.d.ts +30 -0
  14. package/dist/src/dht/dht-content-routing.d.ts.map +1 -0
  15. package/dist/src/dht/dht-peer-routing.d.ts +29 -0
  16. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -0
  17. package/dist/src/dialer/dial-request.d.ts +4 -4
  18. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  19. package/dist/src/dialer/index.d.ts +2 -3
  20. package/dist/src/dialer/index.d.ts.map +1 -1
  21. package/dist/src/errors.d.ts +2 -0
  22. package/dist/src/identify/index.d.ts +1 -1
  23. package/dist/src/identify/index.d.ts.map +1 -1
  24. package/dist/src/index.d.ts +6 -5
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/keychain/index.d.ts +1 -1
  27. package/dist/src/keychain/index.d.ts.map +1 -1
  28. package/dist/src/metrics/stats.d.ts +0 -1
  29. package/dist/src/metrics/stats.d.ts.map +1 -1
  30. package/dist/src/nat-manager.d.ts.map +1 -1
  31. package/dist/src/peer-routing.d.ts.map +1 -1
  32. package/dist/src/peer-store/address-book.d.ts +1 -1
  33. package/dist/src/peer-store/address-book.d.ts.map +1 -1
  34. package/dist/src/peer-store/index.d.ts +37 -24
  35. package/dist/src/peer-store/index.d.ts.map +1 -1
  36. package/dist/src/peer-store/metadata-book.d.ts +3 -2
  37. package/dist/src/peer-store/metadata-book.d.ts.map +1 -1
  38. package/dist/src/peer-store/persistent/index.d.ts +1 -2
  39. package/dist/src/peer-store/persistent/index.d.ts.map +1 -1
  40. package/dist/src/record/envelope/index.d.ts +23 -0
  41. package/dist/src/record/envelope/index.d.ts.map +1 -1
  42. package/dist/src/record/peer-record/index.d.ts +6 -0
  43. package/dist/src/record/peer-record/index.d.ts.map +1 -1
  44. package/dist/src/registrar.d.ts +1 -1
  45. package/dist/src/registrar.d.ts.map +1 -1
  46. package/dist/src/upgrader.d.ts +1 -1
  47. package/dist/src/upgrader.d.ts.map +1 -1
  48. package/package.json +70 -62
  49. package/src/circuit/auto-relay.js +4 -4
  50. package/src/circuit/circuit/hop.js +2 -2
  51. package/src/circuit/circuit/stop.js +1 -1
  52. package/src/circuit/circuit/utils.js +2 -2
  53. package/src/circuit/index.js +1 -1
  54. package/src/circuit/transport.js +1 -1
  55. package/src/connection-manager/auto-dialler.js +118 -0
  56. package/src/connection-manager/index.js +0 -52
  57. package/src/content-routing/index.js +35 -9
  58. package/src/dht/dht-content-routing.js +44 -0
  59. package/src/dht/dht-peer-routing.js +51 -0
  60. package/src/dialer/index.js +3 -4
  61. package/src/errors.js +3 -1
  62. package/src/get-peer.js +1 -1
  63. package/src/identify/index.js +8 -8
  64. package/src/index.js +16 -14
  65. package/src/insecure/plaintext.js +1 -1
  66. package/src/keychain/cms.js +2 -2
  67. package/src/keychain/index.js +10 -10
  68. package/src/nat-manager.js +2 -2
  69. package/src/peer-routing.js +3 -2
  70. package/src/peer-store/address-book.js +1 -1
  71. package/src/peer-store/metadata-book.js +2 -1
  72. package/src/peer-store/persistent/index.js +6 -6
  73. package/src/pnet/crypto.js +1 -1
  74. package/src/pnet/key-generator.js +1 -1
  75. package/src/transport-manager.js +1 -1
  76. package/src/upgrader.js +9 -9
@@ -23,7 +23,7 @@ declare class PersistentPeerStore extends PeerStore {
23
23
  /**
24
24
  * Backend datastore used to persist data.
25
25
  */
26
- _datastore: import("interface-datastore/dist/src/types").Datastore;
26
+ _datastore: import("interface-datastore").Datastore;
27
27
  /**
28
28
  * Peers modified after the latest data persisted.
29
29
  */
@@ -126,5 +126,4 @@ type PersistentPeerStoreOptions = {
126
126
  };
127
127
  type Batch = import('interface-datastore').Batch;
128
128
  type Address = import('../address-book.js').Address;
129
- import PeerId = require("peer-id");
130
129
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/peer-store/persistent/index.js"],"names":[],"mappings":";AAwBA;;;GAGG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH;IACE;;;OAGG;IACH,8CAFW,6BAA6B,GAAG,0BAA0B,EAwBpE;IAnBC;;OAEG;IACH,mEAA2B;IAE3B;;OAEG;IACH,sBAA4B;IAE5B;;;;OAIG;IACH,gBAFU,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,CAAC,CAEH;IAE/B,kBAA0B;IAsC5B;;;;;;OAMG;IACH,sBAYC;IAED;;;;;;OAMG;IACH,yBAiBC;IAED;;;;;;;OAOG;IACH,8BAiBC;IAED;;;;;OAKG;IACH,oBA+BC;IAED;;;;;;OAMG;IACH,0BA8BC;IAED;;;;;;OAMG;IACH,sBAiBC;IAED;;;;;;OAMG;IACH,2BAkBC;IAED;;;;;;OAMG;IACH,wBAmBC;IAED;;;;;;;;OAQG;IACH,+BA0DC;CACF;;;;;;YAtXa,MAAM;eACN,OAAO,qBAAqB,EAAE,SAAS;;;;;;;;aAPxC,OAAO,qBAAqB,EAAE,KAAK;eACnC,OAAO,oBAAoB,EAAE,OAAO"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/peer-store/persistent/index.js"],"names":[],"mappings":";AAwBA;;;GAGG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH;IACE;;;OAGG;IACH,8CAFW,6BAA6B,GAAG,0BAA0B,EAwBpE;IAnBC;;OAEG;IACH,oDAA2B;IAE3B;;OAEG;IACH,sBAA4B;IAE5B;;;;OAIG;IACH,gBAFU,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,CAAC,CAEH;IAE/B,kBAA0B;IAsC5B;;;;;;OAMG;IACH,sBAYC;IAED;;;;;;OAMG;IACH,yBAiBC;IAED;;;;;;;OAOG;IACH,8BAiBC;IAED;;;;;OAKG;IACH,oBA+BC;IAED;;;;;;OAMG;IACH,0BA8BC;IAED;;;;;;OAMG;IACH,sBAiBC;IAED;;;;;;OAMG;IACH,2BAkBC;IAED;;;;;;OAMG;IACH,wBAmBC;IAED;;;;;;;;OAQG;IACH,+BA0DC;CACF;;;;;;YAtXa,MAAM;eACN,OAAO,qBAAqB,EAAE,SAAS;;;;;;;;aAPxC,OAAO,qBAAqB,EAAE,KAAK;eACnC,OAAO,oBAAoB,EAAE,OAAO"}
@@ -50,8 +50,31 @@ declare namespace Envelope {
50
50
  export { createFromProtobuf, seal, openAndCertify, Record };
51
51
  }
52
52
  import PeerId = require("peer-id");
53
+ /**
54
+ * Unmarshal a serialized Envelope protobuf message.
55
+ *
56
+ * @param {Uint8Array} data
57
+ * @returns {Promise<Envelope>}
58
+ */
53
59
  declare function createFromProtobuf(data: Uint8Array): Promise<Envelope>;
60
+ /**
61
+ * Seal marshals the given Record, places the marshaled bytes inside an Envelope
62
+ * and signs it with the given peerId's private key.
63
+ *
64
+ * @async
65
+ * @param {Record} record
66
+ * @param {PeerId} peerId
67
+ * @returns {Promise<Envelope>}
68
+ */
54
69
  declare function seal(record: Record, peerId: PeerId): Promise<Envelope>;
70
+ /**
71
+ * Open and certify a given marshalled envelope.
72
+ * Data is unmarshalled and the signature validated for the given domain.
73
+ *
74
+ * @param {Uint8Array} data
75
+ * @param {string} domain
76
+ * @returns {Promise<Envelope>}
77
+ */
55
78
  declare function openAndCertify(data: Uint8Array, domain: string): Promise<Envelope>;
56
79
  type Record = import('libp2p-interfaces/src/record/types').Record;
57
80
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/record/envelope/index.js"],"names":[],"mappings":";AAcA;;GAEG;AAEH;IACE;;;;;;;;;;OAUG;IACH;QAL0B,MAAM,EAArB,MAAM;QACa,WAAW,EAA9B,UAAU;QACS,OAAO,EAA1B,UAAU;QACS,SAAS,EAA5B,UAAU;OAUpB;IAPC,eAAoB;IACpB,wBAA8B;IAC9B,oBAAsB;IACtB,sBAA0B;IAG1B,iCAAyB;IAG3B;;;;OAIG;IACH,WAFa,UAAU,CAiBtB;IAED;;;;;OAKG;IACH,cAHW,QAAQ,GACN,OAAO,CAOnB;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAM5B;CACF;;;;;AAwC6B,0CAHnB,UAAU,GACR,QAAQ,QAAQ,CAAC,CAY7B;AAWe,8BAJL,MAAM,UACN,MAAM,GACJ,QAAQ,QAAQ,CAAC,CAgB7B;AAUyB,sCAJf,UAAU,UACV,MAAM,GACJ,QAAQ,QAAQ,CAAC,CAW7B;cArKY,OAAO,oCAAoC,EAAE,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/record/envelope/index.js"],"names":[],"mappings":";AAcA;;GAEG;AAEH;IACE;;;;;;;;;;OAUG;IACH;QAL0B,MAAM,EAArB,MAAM;QACa,WAAW,EAA9B,UAAU;QACS,OAAO,EAA1B,UAAU;QACS,SAAS,EAA5B,UAAU;OAUpB;IAPC,eAAoB;IACpB,wBAA8B;IAC9B,oBAAsB;IACtB,sBAA0B;IAG1B,iCAAyB;IAG3B;;;;OAIG;IACH,WAFa,UAAU,CAiBtB;IAED;;;;;OAKG;IACH,cAHW,QAAQ,GACN,OAAO,CAOnB;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAM5B;CACF;;;;;AAkCD;;;;;GAKG;AACH,0CAHW,UAAU,GACR,QAAQ,QAAQ,CAAC,CAY7B;AAED;;;;;;;;GAQG;AACH,8BAJW,MAAM,UACN,MAAM,GACJ,QAAQ,QAAQ,CAAC,CAgB7B;AAED;;;;;;;GAOG;AACH,sCAJW,UAAU,UACV,MAAM,GACJ,QAAQ,QAAQ,CAAC,CAW7B;cArKY,OAAO,oCAAoC,EAAE,MAAM"}
@@ -48,6 +48,12 @@ declare namespace PeerRecord {
48
48
  type Record = import('libp2p-interfaces/src/record/types').Record;
49
49
  import PeerId = require("peer-id");
50
50
  import { Multiaddr } from "multiaddr";
51
+ /**
52
+ * Unmarshal Peer Record Protobuf.
53
+ *
54
+ * @param {Uint8Array} buf - marshaled peer record.
55
+ * @returns {PeerRecord}
56
+ */
51
57
  declare function createFromProtobuf(buf: Uint8Array): PeerRecord;
52
58
  import { ENVELOPE_DOMAIN_PEER_RECORD } from "./consts";
53
59
  type Address = import('../../peer-store/address-book.js').Address;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/record/peer-record/index.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;;GAEG;AACH;IACE;;;;;;;;;OASG;IACH;QAJ0B,MAAM,EAArB,MAAM;QACc,UAAU,EAA9B,SAAS,EAAE;QACK,SAAS;OAYnC;IATC,eAAyC;IACzC,kBAA8C;IAE9C,eAAoB;IACpB,wBAA4B;IAC5B,kBAA0B;IAG1B,iCAAyB;IAG3B;;;;OAIG;IACH,WAFa,UAAU,CAgBtB;IAED;;;;;OAKG;IACH,cAHW,OAAO,GACL,OAAO,CAuBnB;CACF;;;;cA9EY,OAAO,oCAAoC,EAAE,MAAM;;;AAsFhC,yCAHrB,UAAU,GACR,UAAU,CAUtB;;eA/FY,OAAO,kCAAkC,EAAE,OAAO"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/record/peer-record/index.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;;GAEG;AACH;IACE;;;;;;;;;OASG;IACH;QAJ0B,MAAM,EAArB,MAAM;QACc,UAAU,EAA9B,SAAS,EAAE;QACK,SAAS;OAYnC;IATC,eAAyC;IACzC,kBAA8C;IAE9C,eAAoB;IACpB,wBAA4B;IAC5B,kBAA0B;IAG1B,iCAAyB;IAG3B;;;;OAIG;IACH,WAFa,UAAU,CAgBtB;IAED;;;;;OAKG;IACH,cAHW,OAAO,GACL,OAAO,CAuBnB;CACF;;;;cA9EY,OAAO,oCAAoC,EAAE,MAAM;;;AAgFhE;;;;;GAKG;AACH,yCAHW,UAAU,GACR,UAAU,CAUtB;;eA/FY,OAAO,kCAAkC,EAAE,OAAO"}
@@ -74,9 +74,9 @@ declare namespace Registrar {
74
74
  export { PeerId, PeerStore, ConnectionManager, Connection, HandlerProps };
75
75
  }
76
76
  import Topology = require("libp2p-interfaces/src/topology");
77
- type HandlerProps = import('./').HandlerProps;
78
77
  type Connection = import("libp2p-interfaces/src/connection/connection");
79
78
  type PeerId = import('peer-id');
80
79
  type PeerStore = import('./peer-store');
81
80
  type ConnectionManager = import('./connection-manager');
81
+ type HandlerProps = import('./').HandlerProps;
82
82
  //# sourceMappingURL=registrar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.js"],"names":[],"mappings":";AAaA;;;;;;GAMG;AAEH;;GAEG;AAEH;;GAEG;AACH;IACE;;;;;OAKG;IACH;QAJ4B,SAAS,EAA1B,SAAS;QACgB,iBAAiB,EAA1C,iBAAiB;OAsB3B;IAjBC,kCAA0B;IAE1B,kDAA0C;IAE1C;;;;OAIG;IACH,YAFU,IAAI,MAAM,EAAE,QAAQ,CAAC,CAEJ;IAE3B,2FAA2F;IAE3F,qBAFuB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,CAE/D;IA+D1B;;;;;OAKG;IACH,0BAHW,UAAU,GACR,IAAI,CAMhB;IA5DD;;OAEG;IACH,4BATyB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,EAWxF;IAZD;;OAEG;IACH,0BAFyB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,CAIxF;IASD;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,UAAU,GAAG,IAAI,CAI7B;IAED;;;;;OAKG;IACH,mBAHW,QAAQ,GACN,MAAM,CAiBlB;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;CAaF;;;;;oBA1GY,OAAO,IAAI,EAAE,YAAY;;cAJzB,OAAO,SAAS,CAAC;iBACjB,OAAO,cAAc,CAAC;yBACtB,OAAO,sBAAsB,CAAC"}
1
+ {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.js"],"names":[],"mappings":";AAaA;;;;;;GAMG;AAEH;;GAEG;AAEH;;GAEG;AACH;IACE;;;;;OAKG;IACH;QAJ4B,SAAS,EAA1B,SAAS;QACgB,iBAAiB,EAA1C,iBAAiB;OAsB3B;IAjBC,kCAA0B;IAE1B,kDAA0C;IAE1C;;;;OAIG;IACH,YAFU,IAAI,MAAM,EAAE,QAAQ,CAAC,CAEJ;IAE3B,2FAA2F;IAE3F,qBAFuB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,CAE/D;IA+D1B;;;;;OAKG;IACH,0BAHW,UAAU,GACR,IAAI,CAMhB;IA5DD;;OAEG;IACH,4BATyB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,EAWxF;IAZD;;OAEG;IACH,0BAFyB,MAAM,EAAE,GAAC,MAAM,mBAAmB,YAAY,KAAK,IAAI,KAAK,IAAI,CAIxF;IASD;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,UAAU,GAAG,IAAI,CAI7B;IAED;;;;;OAKG;IACH,mBAHW,QAAQ,GACN,MAAM,CAiBlB;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;CAaF;;;;;;cA9GY,OAAO,SAAS,CAAC;iBACjB,OAAO,cAAc,CAAC;yBACtB,OAAO,sBAAsB,CAAC;oBAE9B,OAAO,IAAI,EAAE,YAAY"}
@@ -132,8 +132,8 @@ declare namespace Upgrader {
132
132
  export { MultiaddrConnection, MuxerFactory, Muxer, MuxedStream, Crypto, Connection, Multiaddr, CryptoResult };
133
133
  }
134
134
  import PeerId = require("peer-id");
135
- import { Connection } from "libp2p-interfaces/src/connection";
136
135
  type MultiaddrConnection = import('libp2p-interfaces/src/transport/types').MultiaddrConnection;
136
+ import { Connection } from "libp2p-interfaces/src/connection";
137
137
  type MuxerFactory = import('libp2p-interfaces/src/stream-muxer/types').MuxerFactory;
138
138
  type Muxer = import('libp2p-interfaces/src/stream-muxer/types').Muxer;
139
139
  type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.js"],"names":[],"mappings":";AAiBA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH;IACE;;;;;;;;OAQG;IACH;mBAPW,MAAM;;;;mCAIO,UAAU,KAAK,IAAI;sCACnB,UAAU,KAAK,IAAI;OAmB1C;IATC,kBAA0B;IAC1B,yCAAsB;IACtB,0EAAsB;IACtB,qFAAoB;IACpB,sCAAsC;IACtC,WADW,OAAO,QAAQ,CAAC,GAAG,IAAI,CACb;IACrB,yBAA0B;IAC1B,2BAlBsB,UAAU,KAAK,IAAI,CAkBT;IAChC,8BAlBsB,UAAU,KAAK,IAAI,CAkBH;IAGxC;;;;;;OAMG;IACH,uBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CA6D/B;IAED;;;;;;OAMG;IACH,wBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CAoE/B;IAED;;;;;;;;;;;;OAYG;IACH,0BA8GC;IAED;;;;;;;;OAQG;IACH,kBAGC;IAED;;;;;;;;;OASG;IACH,wBAqBC;IAED;;;;;;;;;;;OAWG;IACH,yBAqBC;IAED;;;;;;;;;OASG;IACH,2BAYC;IAED;;;;;;;;;OASG;IACH,0BAWC;CACF;;;;;;2BAzbY,OAAO,uCAAuC,EAAE,mBAAmB;oBACnE,OAAO,0CAA0C,EAAE,YAAY;aAC/D,OAAO,0CAA0C,EAAE,KAAK;mBACxD,OAAO,0CAA0C,EAAE,WAAW;cAC9D,OAAO,oCAAoC,EAAE,MAAM;;iBAEnD,OAAO,WAAW,EAAE,SAAS;;;;;UAK5B,mBAAmB;gBACnB,MAAM;cACN,MAAM"}
1
+ {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.js"],"names":[],"mappings":";AAiBA;;;;;;;;GAQG;AAEH;;;;;GAKG;AAEH;IACE;;;;;;;;OAQG;IACH;mBAPW,MAAM;;;;mCAIO,UAAU,KAAK,IAAI;sCACnB,UAAU,KAAK,IAAI;OAmB1C;IATC,kBAA0B;IAC1B,yCAAsB;IACtB,0EAAsB;IACtB,qFAAoB;IACpB,sCAAsC;IACtC,WADW,OAAO,QAAQ,CAAC,GAAG,IAAI,CACb;IACrB,yBAA0B;IAC1B,2BAlBsB,UAAU,KAAK,IAAI,CAkBT;IAChC,8BAlBsB,UAAU,KAAK,IAAI,CAkBH;IAGxC;;;;;;OAMG;IACH,uBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CA6D/B;IAED;;;;;;OAMG;IACH,wBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CAoE/B;IAED;;;;;;;;;;;;OAYG;IACH,0BA8GC;IAED;;;;;;;;OAQG;IACH,kBAGC;IAED;;;;;;;;;OASG;IACH,wBAqBC;IAED;;;;;;;;;;;OAWG;IACH,yBAqBC;IAED;;;;;;;;;OASG;IACH,2BAYC;IAED;;;;;;;;;OASG;IACH,0BAWC;CACF;;;;;2BAzbY,OAAO,uCAAuC,EAAE,mBAAmB;;oBACnE,OAAO,0CAA0C,EAAE,YAAY;aAC/D,OAAO,0CAA0C,EAAE,KAAK;mBACxD,OAAO,0CAA0C,EAAE,WAAW;cAC9D,OAAO,oCAAoC,EAAE,MAAM;;iBAEnD,OAAO,WAAW,EAAE,SAAS;;;;;UAK5B,mBAAmB;gBACnB,MAAM;cACN,MAAM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.32.4",
3
+ "version": "0.35.0",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
5
  "leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
6
6
  "main": "src/index.js",
@@ -41,6 +41,7 @@
41
41
  "test:node": "aegir test -t node -f \"./test/**/*.{node,spec}.js\"",
42
42
  "test:browser": "aegir test -t browser",
43
43
  "test:examples": "cd examples && npm run test:all",
44
+ "test:interop": "LIBP2P_JS=$PWD npx aegir test -t node -f ./node_modules/libp2p-interop/test/*",
44
45
  "prepare": "aegir build --no-bundle",
45
46
  "release": "aegir release -t node -t browser",
46
47
  "release-minor": "aegir release --type minor -t node -t browser",
@@ -65,7 +66,7 @@
65
66
  "homepage": "https://libp2p.io",
66
67
  "license": "MIT",
67
68
  "engines": {
68
- "node": ">=14.0.0"
69
+ "node": ">=15.0.0"
69
70
  },
70
71
  "browser": {
71
72
  "@motrix/nat-api": false
@@ -74,23 +75,25 @@
74
75
  "extends": "ipfs",
75
76
  "ignorePatterns": [
76
77
  "!.aegir.js",
77
- "test/ts-use"
78
+ "test/ts-use",
79
+ "*.d.ts"
78
80
  ]
79
81
  },
80
82
  "dependencies": {
81
83
  "@motrix/nat-api": "^0.3.1",
82
84
  "@vascosantos/moving-average": "^1.1.0",
83
85
  "abort-controller": "^3.0.0",
86
+ "abortable-iterator": "^3.0.0",
84
87
  "aggregate-error": "^3.1.0",
85
88
  "any-signal": "^2.1.1",
86
89
  "bignumber.js": "^9.0.1",
87
90
  "class-is": "^1.1.0",
88
91
  "debug": "^4.3.1",
89
92
  "err-code": "^3.0.0",
90
- "es6-promisify": "^6.1.1",
93
+ "es6-promisify": "^7.0.0",
91
94
  "events": "^3.3.0",
92
95
  "hashlru": "^2.3.0",
93
- "interface-datastore": "^5.1.1",
96
+ "interface-datastore": "^6.0.2",
94
97
  "it-all": "^1.0.4",
95
98
  "it-buffer": "^0.1.2",
96
99
  "it-drain": "^1.0.3",
@@ -102,8 +105,8 @@
102
105
  "it-merge": "^1.0.0",
103
106
  "it-pipe": "^1.1.0",
104
107
  "it-take": "^1.0.0",
105
- "libp2p-crypto": "^0.19.4",
106
- "libp2p-interfaces": "^1.0.0",
108
+ "libp2p-crypto": "^0.21.0",
109
+ "libp2p-interfaces": "^2.0.1",
107
110
  "libp2p-utils": "^0.4.0",
108
111
  "mafmt": "^10.0.0",
109
112
  "merge-options": "^3.0.4",
@@ -116,14 +119,14 @@
116
119
  "p-fifo": "^1.0.0",
117
120
  "p-retry": "^4.4.0",
118
121
  "p-settle": "^4.1.1",
119
- "peer-id": "^0.15.0",
122
+ "peer-id": "^0.16.0",
120
123
  "private-ip": "^2.1.0",
121
124
  "protobufjs": "^6.10.2",
122
125
  "retimer": "^3.0.0",
123
126
  "sanitize-filename": "^1.6.3",
124
127
  "set-delayed-interval": "^1.0.0",
125
128
  "streaming-iterables": "^6.0.0",
126
- "timeout-abort-controller": "^1.1.1",
129
+ "timeout-abort-controller": "^2.0.0",
127
130
  "uint8arrays": "^3.0.0",
128
131
  "varint": "^6.0.0",
129
132
  "wherearewe": "^1.0.0",
@@ -136,35 +139,35 @@
136
139
  "@types/node": "^16.0.1",
137
140
  "@types/node-forge": "^0.10.1",
138
141
  "@types/varint": "^6.0.0",
139
- "abortable-iterator": "^3.0.0",
140
- "aegir": "^33.1.1",
142
+ "aegir": "^36.0.0",
141
143
  "buffer": "^6.0.3",
144
+ "datastore-core": "^6.0.7",
142
145
  "delay": "^5.0.0",
143
- "interop-libp2p": "^0.4.0",
144
146
  "into-stream": "^6.0.0",
145
- "ipfs-http-client": "^50.1.1",
147
+ "ipfs-http-client": "^54.0.2",
146
148
  "it-concat": "^2.0.0",
147
149
  "it-pair": "^1.0.0",
148
150
  "it-pushable": "^1.4.0",
149
151
  "libp2p": ".",
150
- "libp2p-bootstrap": "^0.13.0",
152
+ "libp2p-bootstrap": "^0.14.0",
151
153
  "libp2p-delegated-content-routing": "^0.11.0",
152
- "libp2p-delegated-peer-routing": "^0.10.0",
154
+ "libp2p-delegated-peer-routing": "^0.11.0",
153
155
  "libp2p-floodsub": "^0.27.0",
154
156
  "libp2p-gossipsub": "^0.11.0",
155
- "libp2p-interfaces-compliance-tests": "^1.0.0",
156
- "libp2p-kad-dht": "^0.23.0",
157
- "libp2p-mdns": "^0.17.0",
157
+ "libp2p-interfaces-compliance-tests": "^2.0.1",
158
+ "libp2p-interop": "^0.5.0",
159
+ "libp2p-kad-dht": "^0.27.1",
160
+ "libp2p-mdns": "^0.18.0",
158
161
  "libp2p-mplex": "^0.10.1",
159
162
  "libp2p-tcp": "^0.17.0",
160
- "libp2p-webrtc-star": "^0.23.0",
163
+ "libp2p-webrtc-star": "^0.25.0",
161
164
  "libp2p-websockets": "^0.16.0",
162
165
  "nock": "^13.0.3",
163
166
  "p-defer": "^3.0.0",
164
167
  "p-times": "^3.0.0",
165
168
  "p-wait-for": "^3.2.0",
166
169
  "rimraf": "^3.0.2",
167
- "sinon": "^11.1.1",
170
+ "sinon": "^12.0.1",
168
171
  "util": "^0.12.3"
169
172
  },
170
173
  "contributors": [
@@ -178,67 +181,72 @@
178
181
  "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
179
182
  "Maciej Krüger <mkg20001@gmail.com>",
180
183
  "Hugo Dias <mail@hugodias.me>",
181
- "Volker Mische <volker.mische@gmail.com>",
182
- "Chris Dostert <chrisdostert@users.noreply.github.com>",
183
184
  "dirkmc <dirkmdev@gmail.com>",
184
- "Richard Littauer <richard.littauer@gmail.com>",
185
+ "Chris Dostert <chrisdostert@users.noreply.github.com>",
186
+ "Volker Mische <volker.mische@gmail.com>",
185
187
  "zeim839 <50573884+zeim839@users.noreply.github.com>",
186
- "Ryan Bell <ryan@piing.net>",
188
+ "Richard Littauer <richard.littauer@gmail.com>",
187
189
  "a1300 <matthias-knopp@gmx.net>",
190
+ "Ryan Bell <ryan@piing.net>",
188
191
  "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>",
189
- "Andrew Nesbitt <andrewnez@gmail.com>",
190
- "Elven <mon.samuel@qq.com>",
191
- "Franck Royer <franck@royer.one>",
192
192
  "Giovanni T. Parra <fiatjaf@gmail.com>",
193
- "Samlior <samlior@foxmail.com>",
194
- "Thomas Eizinger <thomas@eizinger.io>",
195
193
  "acolytec3 <17355484+acolytec3@users.noreply.github.com>",
196
- "Didrik Nordström <didrik@betamos.se>",
197
- "Irakli Gozalishvili <rfobic@gmail.com>",
198
- "Joel Gustafson <joelg@mit.edu>",
199
- "John Rees <johnrees@users.noreply.github.com>",
200
- "João Santos <joaosantos15@users.noreply.github.com>",
201
- "Julien Bouquillon <contact@revolunet.com>",
202
- "Kevin Kwok <antimatter15@gmail.com>",
203
- "Kevin Lacker <lacker@gmail.com>",
204
- "Lars Gierth <lgierth@users.noreply.github.com>",
205
- "Ethan Lam <elmemphis2000@gmail.com>",
206
- "Marcin Tojek <mtojek@users.noreply.github.com>",
207
- "Michael Burns <5170+mburns@users.noreply.github.com>",
208
- "Miguel Mota <miguelmota2@gmail.com>",
209
- "Nuno Nogueira <nunofmn@gmail.com>",
210
- "Dmitriy Ryajov <dryajov@gmail.com>",
211
- "Philipp Muens <raute1337@gmx.de>",
212
- "RasmusErik Voel Jensen <github@solsort.com>",
213
- "Diogo Silva <fsdiogo@gmail.com>",
194
+ "Franck Royer <franck@royer.one>",
195
+ "Elven <mon.samuel@qq.com>",
214
196
  "Robert Kiel <robert.kiel@hoprnet.org>",
215
- "phillmac <phillmac@users.noreply.github.com>",
216
- "robertkiel <robert.kiel@validitylabs.org>",
197
+ "Andrew Nesbitt <andrewnez@gmail.com>",
198
+ "Samlior <samlior@foxmail.com>",
199
+ "Thomas Eizinger <thomas@eizinger.io>",
200
+ "Didrik Nordström <didrik.nordstrom@gmail.com>",
217
201
  "Smite Chow <xiaopengyou@live.com>",
218
202
  "Soeren <nikorpoulsen@gmail.com>",
219
203
  "Sönke Hahn <soenkehahn@gmail.com>",
220
204
  "TJKoury <TJKoury@gmail.com>",
221
- "shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>",
205
+ "TheStarBoys <41286328+TheStarBoys@users.noreply.github.com>",
222
206
  "Tiago Alves <alvesjtiago@gmail.com>",
223
- "Daijiro Wachi <daijiro.wachi@gmail.com>",
207
+ "XiaoZhang <zxinmyth@gmail.com>",
224
208
  "Yusef Napora <yusef@napora.org>",
225
209
  "Zane Starr <zcstarr@gmail.com>",
226
- "swedneck <40505480+swedneck@users.noreply.github.com>",
227
- "Aleksei <vozhdb@gmail.com>",
228
- "Cindy Wu <ciindy.wu@gmail.com>",
229
- "Aditya Bose <13054902+adbose@users.noreply.github.com>",
230
- "Chris Bratlien <chrisbratlien@gmail.com>",
231
210
  "ebinks <elizabethjbinks@gmail.com>",
211
+ "Aditya Bose <13054902+adbose@users.noreply.github.com>",
212
+ "isan_rivkin <isanrivkin@gmail.com>",
213
+ "mayerwin <mayerwin@users.noreply.github.com>",
214
+ "mcclure <andi.m.mcclure@gmail.com>",
215
+ "patrickwoodhead <91056047+patrickwoodhead@users.noreply.github.com>",
216
+ "phillmac <phillmac@users.noreply.github.com>",
217
+ "robertkiel <robert.kiel@validitylabs.org>",
218
+ "shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>",
219
+ "swedneck <40505480+swedneck@users.noreply.github.com>",
232
220
  "greenSnot <greenSnot@users.noreply.github.com>",
221
+ "Alan Smithee <ggnore.alan.smithee@gmail.com>",
222
+ "Aleksei <vozhdb@gmail.com>",
233
223
  "Bernd Strehl <bernd.strehl@gmail.com>",
234
- "Francis Gulotta <wizard@roborooter.com>",
235
- "isan_rivkin <isanrivkin@gmail.com>",
224
+ "Chris Bratlien <chrisbratlien@gmail.com>",
225
+ "Cindy Wu <ciindy.wu@gmail.com>",
226
+ "Daijiro Wachi <daijiro.wachi@gmail.com>",
227
+ "Diogo Silva <fsdiogo@gmail.com>",
228
+ "Dmitriy Ryajov <dryajov@gmail.com>",
229
+ "Ethan Lam <elmemphis2000@gmail.com>",
230
+ "Fei Liu <liu.feiwood@gmail.com>",
231
+ "Felipe Martins <felipebrasil93@gmail.com>",
236
232
  "Florian-Merle <florian.david.merle@gmail.com>",
237
- "mayerwin <mayerwin@users.noreply.github.com>",
233
+ "Francis Gulotta <wizard@roborooter.com>",
238
234
  "Guy Sviry <32539816+guysv@users.noreply.github.com>",
239
235
  "Henrique Dias <hacdias@gmail.com>",
240
- "mcclure <andi.m.mcclure@gmail.com>",
241
- "Felipe Martins <felipebrasil93@gmail.com>",
242
- "Fei Liu <liu.feiwood@gmail.com>"
236
+ "Irakli Gozalishvili <rfobic@gmail.com>",
237
+ "Joel Gustafson <joelg@mit.edu>",
238
+ "John Rees <johnrees@users.noreply.github.com>",
239
+ "João Santos <joaosantos15@users.noreply.github.com>",
240
+ "Julien Bouquillon <contact@revolunet.com>",
241
+ "Kevin Kwok <antimatter15@gmail.com>",
242
+ "Kevin Lacker <lacker@gmail.com>",
243
+ "Lars Gierth <lgierth@users.noreply.github.com>",
244
+ "Leask Wong <i@leaskh.com>",
245
+ "Marcin Tojek <mtojek@users.noreply.github.com>",
246
+ "Michael Burns <5170+mburns@users.noreply.github.com>",
247
+ "Miguel Mota <miguelmota2@gmail.com>",
248
+ "Nuno Nogueira <nunofmn@gmail.com>",
249
+ "Philipp Muens <raute1337@gmx.de>",
250
+ "RasmusErik Voel Jensen <github@solsort.com>"
243
251
  ]
244
252
  }
@@ -116,7 +116,7 @@ class AutoRelay {
116
116
  this._peerStore.metadataBook.set(peerId, HOP_METADATA_KEY, uint8ArrayFromString(HOP_METADATA_VALUE))
117
117
  await this._addListenRelay(connection, id)
118
118
  }
119
- } catch (err) {
119
+ } catch (/** @type {any} */ err) {
120
120
  this._onError(err)
121
121
  }
122
122
  }
@@ -169,7 +169,7 @@ class AutoRelay {
169
169
  try {
170
170
  await this._transportManager.listen([new Multiaddr(listenAddr)])
171
171
  // Announce multiaddrs will update on listen success by TransportManager event being triggered
172
- } catch (err) {
172
+ } catch (/** @type {any} */ err) {
173
173
  this._onError(err)
174
174
  this._listenRelays.delete(id)
175
175
  }
@@ -267,7 +267,7 @@ class AutoRelay {
267
267
  return
268
268
  }
269
269
  }
270
- } catch (err) {
270
+ } catch (/** @type {any} */ err) {
271
271
  this._onError(err)
272
272
  }
273
273
  }
@@ -279,7 +279,7 @@ class AutoRelay {
279
279
  try {
280
280
  const connection = await this._libp2p.dial(peerId)
281
281
  await this._addListenRelay(connection, peerId.toB58String())
282
- } catch (err) {
282
+ } catch (/** @type {any} */ err) {
283
283
  this._onError(err, `could not connect and listen on known hop relay ${peerId.toB58String()}`)
284
284
  }
285
285
  }
@@ -54,7 +54,7 @@ async function handleHop ({
54
54
  // Validate the HOP request has the required input
55
55
  try {
56
56
  validateAddrs(request, streamHandler)
57
- } catch (err) {
57
+ } catch (/** @type {any} */ err) {
58
58
  return log.error('invalid hop request via peer %s', connection.remotePeer.toB58String(), err)
59
59
  }
60
60
 
@@ -93,7 +93,7 @@ async function handleHop ({
93
93
  connection: destinationConnection,
94
94
  request: stopRequest
95
95
  })
96
- } catch (err) {
96
+ } catch (/** @type {any} */ err) {
97
97
  return log.error(err)
98
98
  }
99
99
 
@@ -34,7 +34,7 @@ module.exports.handleStop = function handleStop ({
34
34
  // Validate the STOP request has the required input
35
35
  try {
36
36
  validateAddrs(request, streamHandler)
37
- } catch (err) {
37
+ } catch (/** @type {any} */ err) {
38
38
  return log.error('invalid stop request via peer %s', connection.remotePeer.toB58String(), err)
39
39
  }
40
40
 
@@ -34,7 +34,7 @@ function validateAddrs (msg, streamHandler) {
34
34
  return new Multiaddr(addr)
35
35
  })
36
36
  }
37
- } catch (err) {
37
+ } catch (/** @type {any} */ err) {
38
38
  writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
39
39
  ? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID
40
40
  : CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID)
@@ -47,7 +47,7 @@ function validateAddrs (msg, streamHandler) {
47
47
  return new Multiaddr(addr)
48
48
  })
49
49
  }
50
- } catch (err) {
50
+ } catch (/** @type {any} */ err) {
51
51
  writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
52
52
  ? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID
53
53
  : CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID)
@@ -87,7 +87,7 @@ class Relay {
87
87
  try {
88
88
  const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS)
89
89
  await this._libp2p.contentRouting.provide(cid)
90
- } catch (err) {
90
+ } catch (/** @type {any} */ err) {
91
91
  if (err.code === 'NO_ROUTERS_AVAILABLE') {
92
92
  log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err)
93
93
  // Stop the advertise
@@ -171,7 +171,7 @@ class Circuit {
171
171
  log('new outbound connection %s', maConn.remoteAddr)
172
172
 
173
173
  return this._upgrader.upgradeOutbound(maConn)
174
- } catch (err) {
174
+ } catch (/** @type {any} */ err) {
175
175
  log.error('Circuit relay dial failed', err)
176
176
  disconnectOnFailure && await relayConnection.close()
177
177
  throw err
@@ -0,0 +1,118 @@
1
+ 'use strict'
2
+
3
+ const debug = require('debug')
4
+ const mergeOptions = require('merge-options')
5
+ // @ts-ignore retimer does not have types
6
+ const retimer = require('retimer')
7
+
8
+ const log = Object.assign(debug('libp2p:connection-manager:auto-dialler'), {
9
+ error: debug('libp2p:connection-manager:auto-dialler:err')
10
+ })
11
+
12
+ const defaultOptions = {
13
+ enabled: true,
14
+ minConnections: 0,
15
+ autoDialInterval: 10000
16
+ }
17
+
18
+ /**
19
+ * @typedef {import('../index')} Libp2p
20
+ * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
21
+ */
22
+
23
+ /**
24
+ * @typedef {Object} AutoDiallerOptions
25
+ * @property {boolean} [enabled = true] - Should preemptively guarantee connections are above the low watermark
26
+ * @property {number} [minConnections = 0] - The minimum number of connections to avoid pruning
27
+ * @property {number} [autoDialInterval = 10000] - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
28
+ */
29
+
30
+ class AutoDialler {
31
+ /**
32
+ * Proactively tries to connect to known peers stored in the PeerStore.
33
+ * It will keep the number of connections below the upper limit and sort
34
+ * the peers to connect based on wether we know their keys and protocols.
35
+ *
36
+ * @class
37
+ * @param {Libp2p} libp2p
38
+ * @param {AutoDiallerOptions} options
39
+ */
40
+ constructor (libp2p, options = {}) {
41
+ this._options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, options)
42
+ this._libp2p = libp2p
43
+ this._running = false
44
+ this._autoDialTimeout = null
45
+ this._autoDial = this._autoDial.bind(this)
46
+
47
+ log('options: %j', this._options)
48
+ }
49
+
50
+ /**
51
+ * Starts the auto dialer
52
+ */
53
+ start () {
54
+ if (!this._options.enabled) {
55
+ log('not enabled')
56
+ return
57
+ }
58
+
59
+ this._running = true
60
+ this._autoDial()
61
+ log('started')
62
+ }
63
+
64
+ /**
65
+ * Stops the auto dialler
66
+ */
67
+ async stop () {
68
+ if (!this._options.enabled) {
69
+ log('not enabled')
70
+ return
71
+ }
72
+
73
+ this._running = false
74
+ this._autoDialTimeout && this._autoDialTimeout.clear()
75
+ log('stopped')
76
+ }
77
+
78
+ async _autoDial () {
79
+ const minConnections = this._options.minConnections
80
+
81
+ // Already has enough connections
82
+ if (this._libp2p.connections.size >= minConnections) {
83
+ this._autoDialTimeout = retimer(this._autoDial, this._options.autoDialInterval)
84
+ return
85
+ }
86
+
87
+ // Sort peers on wether we know protocols of public keys for them
88
+ const peers = Array.from(this._libp2p.peerStore.peers.values())
89
+ .sort((a, b) => {
90
+ if (b.protocols && b.protocols.length && (!a.protocols || !a.protocols.length)) {
91
+ return 1
92
+ } else if (b.id.pubKey && !a.id.pubKey) {
93
+ return 1
94
+ }
95
+ return -1
96
+ })
97
+
98
+ for (let i = 0; this._running && i < peers.length && this._libp2p.connections.size < minConnections; i++) {
99
+ if (!this._libp2p.connectionManager.get(peers[i].id)) {
100
+ log('connecting to a peerStore stored peer %s', peers[i].id.toB58String())
101
+ try {
102
+ await this._libp2p.dialer.connectToPeer(peers[i].id)
103
+ } catch (/** @type {any} */ err) {
104
+ log.error('could not connect to peerStore stored peer', err)
105
+ }
106
+ }
107
+ }
108
+
109
+ // Connection Manager was stopped
110
+ if (!this._running) {
111
+ return
112
+ }
113
+
114
+ this._autoDialTimeout = retimer(this._autoDial, this._options.autoDialInterval)
115
+ }
116
+ }
117
+
118
+ module.exports = AutoDialler