@libp2p/interface-internal 2.1.1-b248eefc0 → 2.1.1-d19974d93

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,4 +1,39 @@
1
1
  import type { Multiaddr } from '@multiformats/multiaddr';
2
+ /**
3
+ * The type of address:
4
+ *
5
+ * - 'transport' a listen address supplied by a transport
6
+ * - 'announce' a pre-configured announce address
7
+ * - 'observed' a peer reported this as a public address
8
+ * - 'dns-mapping' a DNS address dynamically mapped to one or more public addresses
9
+ * - 'ip-mapping' an external IP address dynamically mapped to a LAN address
10
+ */
11
+ export type AddressType = 'transport' | 'announce' | 'observed' | 'dns-mapping' | 'ip-mapping';
12
+ /**
13
+ * An address that has been configured or detected
14
+ */
15
+ export interface NodeAddress {
16
+ /**
17
+ * The multiaddr that represents the address
18
+ */
19
+ multiaddr: Multiaddr;
20
+ /**
21
+ * Dynamically configured addresses such as observed or IP/DNS mapped ones
22
+ * must be verified as valid by AutoNAT or some other means before the current
23
+ * node will add them to it's peer record and share them with peers.
24
+ *
25
+ * When this value is true, it's safe to share the address.
26
+ */
27
+ verified: boolean;
28
+ /**
29
+ * A millisecond timestamp after which this address should be reverified
30
+ */
31
+ expires: number;
32
+ /**
33
+ * The source of this address
34
+ */
35
+ type: AddressType;
36
+ }
2
37
  export interface AddressManager {
3
38
  /**
4
39
  * Get peer listen multiaddrs
@@ -33,6 +68,10 @@ export interface AddressManager {
33
68
  * Get the current node's addresses
34
69
  */
35
70
  getAddresses(): Multiaddr[];
71
+ /**
72
+ * Return all known addresses with metadata
73
+ */
74
+ getAddressesWithMetadata(): NodeAddress[];
36
75
  /**
37
76
  * Adds a mapping between one or more IP addresses and a domain name - when
38
77
  * `getAddresses` is invoked, where the IP addresses are present in a
@@ -44,5 +83,20 @@ export interface AddressManager {
44
83
  * Remove a mapping previously added with `addDNSMapping`.
45
84
  */
46
85
  removeDNSMapping(domain: string): void;
86
+ /**
87
+ * Add a publicly routable address/port/protocol tuple that this node is
88
+ * reachable on. Where this node listens on a link-local (e.g. LAN) address
89
+ * with the same protocol for any transport, an additional listen address will
90
+ * be added with the IP and port replaced with this IP and port.
91
+ *
92
+ * It's possible to add a IPv6 address here and have it added to the address
93
+ * list, this is for the case when a router has an external IPv6 address with
94
+ * port forwarding configured, but it does IPv6 -> IPv4 NAT.
95
+ */
96
+ addPublicAddressMapping(internalIp: string, internalPort: number, externalIp: string, externalPort?: number, protocol?: 'tcp' | 'udp'): void;
97
+ /**
98
+ * Remove a publicly routable address that this node is no longer reachable on
99
+ */
100
+ removePublicAddressMapping(internalIp: string, internalPort: number, externalIp: string, externalPort?: number, protocol?: 'tcp' | 'udp'): void;
47
101
  }
48
102
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/address-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE,CAAA;IAE7B;;OAEG;IACH,gBAAgB,IAAI,SAAS,EAAE,CAAA;IAE/B;;;OAGG;IACH,gBAAgB,IAAI,SAAS,EAAE,CAAA;IAE/B;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAE1C;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAEzC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAEtC;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE,CAAA;IAE3B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE1D;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/address-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAA;AAE9F;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE,CAAA;IAE7B;;OAEG;IACH,gBAAgB,IAAI,SAAS,EAAE,CAAA;IAE/B;;;OAGG;IACH,gBAAgB,IAAI,SAAS,EAAE,CAAA;IAE/B;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAE1C;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAEzC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAEtC;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE,CAAA;IAE3B;;OAEG;IACH,wBAAwB,IAAI,WAAW,EAAE,CAAA;IAEzC;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE1D;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtC;;;;;;;;;OASG;IACH,uBAAuB,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;IAE7I;;OAEG;IACH,0BAA0B,CAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;CACjJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/interface-internal",
3
- "version": "2.1.1-b248eefc0",
3
+ "version": "2.1.1-d19974d93",
4
4
  "description": "Interfaces implemented by internal libp2p components",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/interface-internal#readme",
@@ -48,14 +48,14 @@
48
48
  "build": "aegir build"
49
49
  },
50
50
  "dependencies": {
51
- "@libp2p/interface": "2.2.1-b248eefc0",
52
- "@libp2p/peer-collections": "6.0.12-b248eefc0",
53
- "@multiformats/multiaddr": "^12.2.3",
54
- "progress-events": "^1.0.0",
51
+ "@libp2p/interface": "2.2.1-d19974d93",
52
+ "@libp2p/peer-collections": "6.0.12-d19974d93",
53
+ "@multiformats/multiaddr": "^12.3.3",
54
+ "progress-events": "^1.0.1",
55
55
  "uint8arraylist": "^2.4.8"
56
56
  },
57
57
  "devDependencies": {
58
- "aegir": "^44.0.1"
58
+ "aegir": "^45.0.5"
59
59
  },
60
60
  "sideEffects": false
61
61
  }
@@ -1,5 +1,45 @@
1
1
  import type { Multiaddr } from '@multiformats/multiaddr'
2
2
 
3
+ /**
4
+ * The type of address:
5
+ *
6
+ * - 'transport' a listen address supplied by a transport
7
+ * - 'announce' a pre-configured announce address
8
+ * - 'observed' a peer reported this as a public address
9
+ * - 'dns-mapping' a DNS address dynamically mapped to one or more public addresses
10
+ * - 'ip-mapping' an external IP address dynamically mapped to a LAN address
11
+ */
12
+ export type AddressType = 'transport' | 'announce' | 'observed' | 'dns-mapping' | 'ip-mapping'
13
+
14
+ /**
15
+ * An address that has been configured or detected
16
+ */
17
+ export interface NodeAddress {
18
+ /**
19
+ * The multiaddr that represents the address
20
+ */
21
+ multiaddr: Multiaddr
22
+
23
+ /**
24
+ * Dynamically configured addresses such as observed or IP/DNS mapped ones
25
+ * must be verified as valid by AutoNAT or some other means before the current
26
+ * node will add them to it's peer record and share them with peers.
27
+ *
28
+ * When this value is true, it's safe to share the address.
29
+ */
30
+ verified: boolean
31
+
32
+ /**
33
+ * A millisecond timestamp after which this address should be reverified
34
+ */
35
+ expires: number
36
+
37
+ /**
38
+ * The source of this address
39
+ */
40
+ type: AddressType
41
+ }
42
+
3
43
  export interface AddressManager {
4
44
  /**
5
45
  * Get peer listen multiaddrs
@@ -41,6 +81,11 @@ export interface AddressManager {
41
81
  */
42
82
  getAddresses(): Multiaddr[]
43
83
 
84
+ /**
85
+ * Return all known addresses with metadata
86
+ */
87
+ getAddressesWithMetadata(): NodeAddress[]
88
+
44
89
  /**
45
90
  * Adds a mapping between one or more IP addresses and a domain name - when
46
91
  * `getAddresses` is invoked, where the IP addresses are present in a
@@ -53,4 +98,21 @@ export interface AddressManager {
53
98
  * Remove a mapping previously added with `addDNSMapping`.
54
99
  */
55
100
  removeDNSMapping(domain: string): void
101
+
102
+ /**
103
+ * Add a publicly routable address/port/protocol tuple that this node is
104
+ * reachable on. Where this node listens on a link-local (e.g. LAN) address
105
+ * with the same protocol for any transport, an additional listen address will
106
+ * be added with the IP and port replaced with this IP and port.
107
+ *
108
+ * It's possible to add a IPv6 address here and have it added to the address
109
+ * list, this is for the case when a router has an external IPv6 address with
110
+ * port forwarding configured, but it does IPv6 -> IPv4 NAT.
111
+ */
112
+ addPublicAddressMapping (internalIp: string, internalPort: number, externalIp: string, externalPort?: number, protocol?: 'tcp' | 'udp'): void
113
+
114
+ /**
115
+ * Remove a publicly routable address that this node is no longer reachable on
116
+ */
117
+ removePublicAddressMapping (internalIp: string, internalPort: number, externalIp: string, externalPort?: number, protocol?: 'tcp' | 'udp'): void
56
118
  }
package/LICENSE DELETED
@@ -1,4 +0,0 @@
1
- This project is dual licensed under MIT and Apache-2.0.
2
-
3
- MIT: https://www.opensource.org/licenses/mit
4
- Apache-2.0: https://www.apache.org/licenses/license-2.0