@libp2p/peer-id 4.2.4-dd7b329c4 → 4.2.4-e1ca9cced

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.
package/dist/src/index.js CHANGED
@@ -13,257 +13,93 @@
13
13
  * console.log(peer.toString()) // "12D3K..."
14
14
  * ```
15
15
  */
16
- import { CodeError } from '@libp2p/interface';
17
- import { peerIdSymbol } from '@libp2p/interface';
16
+ import { publicKeyFromMultihash } from '@libp2p/crypto/keys';
17
+ import { InvalidCIDError, InvalidMultihashError, InvalidParametersError, UnsupportedKeyTypeError } from '@libp2p/interface';
18
18
  import { base58btc } from 'multiformats/bases/base58';
19
- import { bases } from 'multiformats/basics';
20
- import { CID } from 'multiformats/cid';
19
+ import {} from 'multiformats/cid';
21
20
  import * as Digest from 'multiformats/hashes/digest';
22
21
  import { identity } from 'multiformats/hashes/identity';
23
22
  import { sha256 } from 'multiformats/hashes/sha2';
24
- import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
25
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
26
23
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
27
- const inspect = Symbol.for('nodejs.util.inspect.custom');
28
- const baseDecoder = Object
29
- .values(bases)
30
- .map(codec => codec.decoder)
31
- // @ts-expect-error https://github.com/multiformats/js-multiformats/issues/141
32
- .reduce((acc, curr) => acc.or(curr), bases.identity.decoder);
24
+ import { RSAPeerId as RSAPeerIdClass, Ed25519PeerId as Ed25519PeerIdClass, Secp256k1PeerId as Secp256k1PeerIdClass, URLPeerId as URLPeerIdClass } from './peer-id.js';
33
25
  // these values are from https://github.com/multiformats/multicodec/blob/master/table.csv
34
26
  const LIBP2P_KEY_CODE = 0x72;
35
- const MARSHALLED_ED225519_PUBLIC_KEY_LENGTH = 36;
36
- const MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH = 37;
37
- class PeerIdImpl {
38
- type;
39
- multihash;
40
- privateKey;
41
- publicKey;
42
- string;
43
- constructor(init) {
44
- this.type = init.type;
45
- this.multihash = init.multihash;
46
- this.privateKey = init.privateKey;
47
- // mark string cache as non-enumerable
48
- Object.defineProperty(this, 'string', {
49
- enumerable: false,
50
- writable: true
51
- });
52
- }
53
- get [Symbol.toStringTag]() {
54
- return `PeerId(${this.toString()})`;
55
- }
56
- [peerIdSymbol] = true;
57
- toString() {
58
- if (this.string == null) {
59
- this.string = base58btc.encode(this.multihash.bytes).slice(1);
60
- }
61
- return this.string;
62
- }
63
- // return self-describing String representation
64
- // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209
65
- toCID() {
66
- return CID.createV1(LIBP2P_KEY_CODE, this.multihash);
67
- }
68
- toBytes() {
69
- return this.multihash.bytes;
70
- }
71
- /**
72
- * Returns Multiaddr as a JSON string
73
- */
74
- toJSON() {
75
- return this.toString();
76
- }
77
- /**
78
- * Checks the equality of `this` peer against a given PeerId
79
- */
80
- equals(id) {
81
- if (id == null) {
82
- return false;
83
- }
84
- if (id instanceof Uint8Array) {
85
- return uint8ArrayEquals(this.multihash.bytes, id);
86
- }
87
- else if (typeof id === 'string') {
88
- return peerIdFromString(id).equals(this);
89
- }
90
- else if (id?.multihash?.bytes != null) {
91
- return uint8ArrayEquals(this.multihash.bytes, id.multihash.bytes);
92
- }
93
- else {
94
- throw new Error('not valid Id');
95
- }
96
- }
97
- /**
98
- * Returns PeerId as a human-readable string
99
- * https://nodejs.org/api/util.html#utilinspectcustom
100
- *
101
- * @example
102
- * ```TypeScript
103
- * import { peerIdFromString } from '@libp2p/peer-id'
104
- *
105
- * console.info(peerIdFromString('QmFoo'))
106
- * // 'PeerId(QmFoo)'
107
- * ```
108
- */
109
- [inspect]() {
110
- return `PeerId(${this.toString()})`;
111
- }
112
- }
113
- class RSAPeerIdImpl extends PeerIdImpl {
114
- type = 'RSA';
115
- publicKey;
116
- constructor(init) {
117
- super({ ...init, type: 'RSA' });
118
- this.publicKey = init.publicKey;
119
- }
120
- }
121
- class Ed25519PeerIdImpl extends PeerIdImpl {
122
- type = 'Ed25519';
123
- publicKey;
124
- constructor(init) {
125
- super({ ...init, type: 'Ed25519' });
126
- this.publicKey = init.multihash.digest;
127
- }
128
- }
129
- class Secp256k1PeerIdImpl extends PeerIdImpl {
130
- type = 'secp256k1';
131
- publicKey;
132
- constructor(init) {
133
- super({ ...init, type: 'secp256k1' });
134
- this.publicKey = init.multihash.digest;
135
- }
136
- }
137
- // these values are from https://github.com/multiformats/multicodec/blob/master/table.csv
138
27
  const TRANSPORT_IPFS_GATEWAY_HTTP_CODE = 0x0920;
139
- class URLPeerIdImpl {
140
- type = 'url';
141
- multihash;
142
- privateKey;
143
- publicKey;
144
- url;
145
- constructor(url) {
146
- this.url = url.toString();
147
- this.multihash = identity.digest(uint8ArrayFromString(this.url));
148
- }
149
- [inspect]() {
150
- return `PeerId(${this.url})`;
151
- }
152
- [peerIdSymbol] = true;
153
- toString() {
154
- return this.toCID().toString();
155
- }
156
- toCID() {
157
- return CID.createV1(TRANSPORT_IPFS_GATEWAY_HTTP_CODE, this.multihash);
158
- }
159
- toBytes() {
160
- return this.toCID().bytes;
28
+ export function peerIdFromString(str, decoder) {
29
+ let multihash;
30
+ if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {
31
+ // identity hash ed25519/secp256k1 key or sha2-256 hash of
32
+ // rsa public key - base58btc encoded either way
33
+ multihash = Digest.decode(base58btc.decode(`z${str}`));
161
34
  }
162
- equals(other) {
163
- if (other == null) {
164
- return false;
35
+ else {
36
+ if (decoder == null) {
37
+ throw new InvalidParametersError('Please pass a multibase decoder for strings that do not start with "1" or "Q"');
165
38
  }
166
- if (other instanceof Uint8Array) {
167
- other = uint8ArrayToString(other);
168
- }
169
- return other.toString() === this.toString();
170
- }
171
- }
172
- export function createPeerId(init) {
173
- if (init.type === 'RSA') {
174
- return new RSAPeerIdImpl(init);
175
- }
176
- if (init.type === 'Ed25519') {
177
- return new Ed25519PeerIdImpl(init);
178
- }
179
- if (init.type === 'secp256k1') {
180
- return new Secp256k1PeerIdImpl(init);
39
+ multihash = Digest.decode(decoder.decode(str));
181
40
  }
182
- throw new CodeError('Type must be "RSA", "Ed25519" or "secp256k1"', 'ERR_INVALID_PARAMETERS');
41
+ return peerIdFromMultihash(multihash);
183
42
  }
184
- export function peerIdFromPeerId(other) {
185
- if (other.type === 'RSA') {
186
- return new RSAPeerIdImpl(other);
43
+ export function peerIdFromPublicKey(publicKey) {
44
+ if (publicKey.type === 'Ed25519') {
45
+ return new Ed25519PeerIdClass({
46
+ multihash: publicKey.toCID().multihash,
47
+ publicKey
48
+ });
187
49
  }
188
- if (other.type === 'Ed25519') {
189
- return new Ed25519PeerIdImpl(other);
50
+ else if (publicKey.type === 'secp256k1') {
51
+ return new Secp256k1PeerIdClass({
52
+ multihash: publicKey.toCID().multihash,
53
+ publicKey
54
+ });
190
55
  }
191
- if (other.type === 'secp256k1') {
192
- return new Secp256k1PeerIdImpl(other);
56
+ else if (publicKey.type === 'RSA') {
57
+ return new RSAPeerIdClass({
58
+ multihash: publicKey.toCID().multihash,
59
+ publicKey
60
+ });
193
61
  }
194
- throw new CodeError('Not a PeerId', 'ERR_INVALID_PARAMETERS');
62
+ throw new UnsupportedKeyTypeError();
195
63
  }
196
- export function peerIdFromString(str, decoder) {
197
- decoder = decoder ?? baseDecoder;
198
- if (str.charAt(0) === '1' || str.charAt(0) === 'Q') {
199
- // identity hash ed25519/secp256k1 key or sha2-256 hash of
200
- // rsa public key - base58btc encoded either way
201
- const multihash = Digest.decode(base58btc.decode(`z${str}`));
202
- if (str.startsWith('12D')) {
203
- return new Ed25519PeerIdImpl({ multihash });
204
- }
205
- else if (str.startsWith('16U')) {
206
- return new Secp256k1PeerIdImpl({ multihash });
207
- }
208
- else {
209
- return new RSAPeerIdImpl({ multihash });
210
- }
211
- }
212
- return peerIdFromBytes(baseDecoder.decode(str));
64
+ export function peerIdFromPrivateKey(privateKey) {
65
+ return peerIdFromPublicKey(privateKey.publicKey);
213
66
  }
214
- export function peerIdFromBytes(buf) {
215
- try {
216
- const multihash = Digest.decode(buf);
217
- if (multihash.code === identity.code) {
218
- if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {
219
- return new Ed25519PeerIdImpl({ multihash });
67
+ export function peerIdFromMultihash(multihash) {
68
+ if (isSha256Multihash(multihash)) {
69
+ return new RSAPeerIdClass({ multihash });
70
+ }
71
+ else if (isIdentityMultihash(multihash)) {
72
+ try {
73
+ const publicKey = publicKeyFromMultihash(multihash);
74
+ if (publicKey.type === 'Ed25519') {
75
+ return new Ed25519PeerIdClass({ multihash, publicKey });
220
76
  }
221
- else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {
222
- return new Secp256k1PeerIdImpl({ multihash });
77
+ else if (publicKey.type === 'secp256k1') {
78
+ return new Secp256k1PeerIdClass({ multihash, publicKey });
223
79
  }
224
80
  }
225
- if (multihash.code === sha256.code) {
226
- return new RSAPeerIdImpl({ multihash });
81
+ catch (err) {
82
+ // was not Ed or secp key, try URL
83
+ const url = uint8ArrayToString(multihash.digest);
84
+ return new URLPeerIdClass(new URL(url));
227
85
  }
228
86
  }
229
- catch {
230
- return peerIdFromCID(CID.decode(buf));
231
- }
232
- throw new Error('Supplied PeerID CID is invalid');
87
+ throw new InvalidMultihashError('Supplied PeerID Multihash is invalid');
233
88
  }
234
89
  export function peerIdFromCID(cid) {
235
90
  if (cid?.multihash == null || cid.version == null || (cid.version === 1 && (cid.code !== LIBP2P_KEY_CODE) && cid.code !== TRANSPORT_IPFS_GATEWAY_HTTP_CODE)) {
236
- throw new Error('Supplied PeerID CID is invalid');
91
+ throw new InvalidCIDError('Supplied PeerID CID is invalid');
237
92
  }
238
93
  if (cid.code === TRANSPORT_IPFS_GATEWAY_HTTP_CODE) {
239
94
  const url = uint8ArrayToString(cid.multihash.digest);
240
- return new URLPeerIdImpl(new URL(url));
241
- }
242
- const multihash = cid.multihash;
243
- if (multihash.code === sha256.code) {
244
- return new RSAPeerIdImpl({ multihash: cid.multihash });
245
- }
246
- else if (multihash.code === identity.code) {
247
- if (multihash.digest.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {
248
- return new Ed25519PeerIdImpl({ multihash: cid.multihash });
249
- }
250
- else if (multihash.digest.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {
251
- return new Secp256k1PeerIdImpl({ multihash: cid.multihash });
252
- }
95
+ return new URLPeerIdClass(new URL(url));
253
96
  }
254
- throw new Error('Supplied PeerID CID is invalid');
97
+ return peerIdFromMultihash(cid.multihash);
255
98
  }
256
- /**
257
- * @param publicKey - A marshalled public key
258
- * @param privateKey - A marshalled private key
259
- */
260
- export async function peerIdFromKeys(publicKey, privateKey) {
261
- if (publicKey.length === MARSHALLED_ED225519_PUBLIC_KEY_LENGTH) {
262
- return new Ed25519PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });
263
- }
264
- if (publicKey.length === MARSHALLED_SECP256K1_PUBLIC_KEY_LENGTH) {
265
- return new Secp256k1PeerIdImpl({ multihash: Digest.create(identity.code, publicKey), privateKey });
266
- }
267
- return new RSAPeerIdImpl({ multihash: await sha256.digest(publicKey), publicKey, privateKey });
99
+ function isIdentityMultihash(multihash) {
100
+ return multihash.code === identity.code;
101
+ }
102
+ function isSha256Multihash(multihash) {
103
+ return multihash.code === sha256.code;
268
104
  }
269
105
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * An implementation of a peer id
5
+ *
6
+ * @example
7
+ *
8
+ * ```TypeScript
9
+ * import { peerIdFromString } from '@libp2p/peer-id'
10
+ * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')
11
+ *
12
+ * console.log(peer.toCID()) // CID(bafzaa...)
13
+ * console.log(peer.toString()) // "12D3K..."
14
+ * ```
15
+ */
16
+ import { peerIdSymbol } from '@libp2p/interface';
17
+ import { CID } from 'multiformats/cid';
18
+ import type { Ed25519PeerId as Ed25519PeerIdInterface, PeerIdType, RSAPeerId as RSAPeerIdInterface, URLPeerId as URLPeerIdInterface, Secp256k1PeerId as Secp256k1PeerIdInterface, PeerId, PublicKey, Ed25519PublicKey, Secp256k1PublicKey, RSAPublicKey } from '@libp2p/interface';
19
+ import type { MultihashDigest } from 'multiformats/hashes/interface';
20
+ declare const inspect: unique symbol;
21
+ interface PeerIdInit<DigestCode extends number> {
22
+ type: PeerIdType;
23
+ multihash: MultihashDigest<DigestCode>;
24
+ }
25
+ interface RSAPeerIdInit {
26
+ multihash: MultihashDigest<0x12>;
27
+ publicKey?: RSAPublicKey;
28
+ }
29
+ interface Ed25519PeerIdInit {
30
+ multihash: MultihashDigest<0x0>;
31
+ publicKey: Ed25519PublicKey;
32
+ }
33
+ interface Secp256k1PeerIdInit {
34
+ multihash: MultihashDigest<0x0>;
35
+ publicKey: Secp256k1PublicKey;
36
+ }
37
+ declare class PeerIdImpl<DigestCode extends number> {
38
+ type: PeerIdType;
39
+ private readonly multihash;
40
+ readonly publicKey?: PublicKey;
41
+ private string?;
42
+ constructor(init: PeerIdInit<DigestCode>);
43
+ get [Symbol.toStringTag](): string;
44
+ readonly [peerIdSymbol] = true;
45
+ toString(): string;
46
+ toMultihash(): MultihashDigest<DigestCode>;
47
+ toCID(): CID<Uint8Array, 0x72, DigestCode, 1>;
48
+ toJSON(): string;
49
+ /**
50
+ * Checks the equality of `this` peer against a given PeerId
51
+ */
52
+ equals(id?: PeerId | Uint8Array | string): boolean;
53
+ /**
54
+ * Returns PeerId as a human-readable string
55
+ * https://nodejs.org/api/util.html#utilinspectcustom
56
+ *
57
+ * @example
58
+ * ```TypeScript
59
+ * import { peerIdFromString } from '@libp2p/peer-id'
60
+ *
61
+ * console.info(peerIdFromString('QmFoo'))
62
+ * // 'PeerId(QmFoo)'
63
+ * ```
64
+ */
65
+ [inspect](): string;
66
+ }
67
+ export declare class RSAPeerId extends PeerIdImpl<0x12> implements RSAPeerIdInterface {
68
+ readonly type = "RSA";
69
+ readonly publicKey?: RSAPublicKey;
70
+ constructor(init: RSAPeerIdInit);
71
+ }
72
+ export declare class Ed25519PeerId extends PeerIdImpl<0x0> implements Ed25519PeerIdInterface {
73
+ readonly type = "Ed25519";
74
+ readonly publicKey: Ed25519PublicKey;
75
+ constructor(init: Ed25519PeerIdInit);
76
+ }
77
+ export declare class Secp256k1PeerId extends PeerIdImpl<0x0> implements Secp256k1PeerIdInterface {
78
+ readonly type = "secp256k1";
79
+ readonly publicKey: Secp256k1PublicKey;
80
+ constructor(init: Secp256k1PeerIdInit);
81
+ }
82
+ export declare class URLPeerId implements URLPeerIdInterface {
83
+ readonly type = "url";
84
+ readonly multihash: MultihashDigest<0x0>;
85
+ readonly publicKey: undefined;
86
+ readonly url: string;
87
+ constructor(url: URL);
88
+ [inspect](): string;
89
+ readonly [peerIdSymbol] = true;
90
+ toString(): string;
91
+ toMultihash(): MultihashDigest<0x0>;
92
+ toCID(): CID<Uint8Array, 0x0920, 0x0, 1>;
93
+ toJSON(): string;
94
+ equals(other?: PeerId | Uint8Array | string): boolean;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=peer-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-id.d.ts","sourceRoot":"","sources":["../../src/peer-id.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * An implementation of a peer id
5
+ *
6
+ * @example
7
+ *
8
+ * ```TypeScript
9
+ * import { peerIdFromString } from '@libp2p/peer-id'
10
+ * const peer = peerIdFromString('k51qzi5uqu5dkwkqm42v9j9kqcam2jiuvloi16g72i4i4amoo2m8u3ol3mqu6s')
11
+ *
12
+ * console.log(peer.toCID()) // CID(bafzaa...)
13
+ * console.log(peer.toString()) // "12D3K..."
14
+ * ```
15
+ */
16
+ import { peerIdSymbol } from '@libp2p/interface';
17
+ import { base58btc } from 'multiformats/bases/base58';
18
+ import { CID } from 'multiformats/cid';
19
+ import { identity } from 'multiformats/hashes/identity';
20
+ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
21
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
22
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
23
+ const inspect = Symbol.for('nodejs.util.inspect.custom');
24
+ // these values are from https://github.com/multiformats/multicodec/blob/master/table.csv
25
+ const LIBP2P_KEY_CODE = 0x72;
26
+ class PeerIdImpl {
27
+ type;
28
+ multihash;
29
+ publicKey;
30
+ string;
31
+ constructor(init) {
32
+ this.type = init.type;
33
+ this.multihash = init.multihash;
34
+ // mark string cache as non-enumerable
35
+ Object.defineProperty(this, 'string', {
36
+ enumerable: false,
37
+ writable: true
38
+ });
39
+ }
40
+ get [Symbol.toStringTag]() {
41
+ return `PeerId(${this.toString()})`;
42
+ }
43
+ [peerIdSymbol] = true;
44
+ toString() {
45
+ if (this.string == null) {
46
+ this.string = base58btc.encode(this.multihash.bytes).slice(1);
47
+ }
48
+ return this.string;
49
+ }
50
+ toMultihash() {
51
+ return this.multihash;
52
+ }
53
+ // return self-describing String representation
54
+ // in default format from RFC 0001: https://github.com/libp2p/specs/pull/209
55
+ toCID() {
56
+ return CID.createV1(LIBP2P_KEY_CODE, this.multihash);
57
+ }
58
+ toJSON() {
59
+ return this.toString();
60
+ }
61
+ /**
62
+ * Checks the equality of `this` peer against a given PeerId
63
+ */
64
+ equals(id) {
65
+ if (id == null) {
66
+ return false;
67
+ }
68
+ if (id instanceof Uint8Array) {
69
+ return uint8ArrayEquals(this.multihash.bytes, id);
70
+ }
71
+ else if (typeof id === 'string') {
72
+ return this.toString() === id;
73
+ }
74
+ else if (id?.toMultihash()?.bytes != null) {
75
+ return uint8ArrayEquals(this.multihash.bytes, id.toMultihash().bytes);
76
+ }
77
+ else {
78
+ throw new Error('not valid Id');
79
+ }
80
+ }
81
+ /**
82
+ * Returns PeerId as a human-readable string
83
+ * https://nodejs.org/api/util.html#utilinspectcustom
84
+ *
85
+ * @example
86
+ * ```TypeScript
87
+ * import { peerIdFromString } from '@libp2p/peer-id'
88
+ *
89
+ * console.info(peerIdFromString('QmFoo'))
90
+ * // 'PeerId(QmFoo)'
91
+ * ```
92
+ */
93
+ [inspect]() {
94
+ return `PeerId(${this.toString()})`;
95
+ }
96
+ }
97
+ export class RSAPeerId extends PeerIdImpl {
98
+ type = 'RSA';
99
+ publicKey;
100
+ constructor(init) {
101
+ super({ ...init, type: 'RSA' });
102
+ this.publicKey = init.publicKey;
103
+ }
104
+ }
105
+ export class Ed25519PeerId extends PeerIdImpl {
106
+ type = 'Ed25519';
107
+ publicKey;
108
+ constructor(init) {
109
+ super({ ...init, type: 'Ed25519' });
110
+ this.publicKey = init.publicKey;
111
+ }
112
+ }
113
+ export class Secp256k1PeerId extends PeerIdImpl {
114
+ type = 'secp256k1';
115
+ publicKey;
116
+ constructor(init) {
117
+ super({ ...init, type: 'secp256k1' });
118
+ this.publicKey = init.publicKey;
119
+ }
120
+ }
121
+ // these values are from https://github.com/multiformats/multicodec/blob/master/table.csv
122
+ const TRANSPORT_IPFS_GATEWAY_HTTP_CODE = 0x0920;
123
+ export class URLPeerId {
124
+ type = 'url';
125
+ multihash;
126
+ publicKey;
127
+ url;
128
+ constructor(url) {
129
+ this.url = url.toString();
130
+ this.multihash = identity.digest(uint8ArrayFromString(this.url));
131
+ }
132
+ [inspect]() {
133
+ return `PeerId(${this.url})`;
134
+ }
135
+ [peerIdSymbol] = true;
136
+ toString() {
137
+ return this.toCID().toString();
138
+ }
139
+ toMultihash() {
140
+ return this.multihash;
141
+ }
142
+ toCID() {
143
+ return CID.createV1(TRANSPORT_IPFS_GATEWAY_HTTP_CODE, this.toMultihash());
144
+ }
145
+ toJSON() {
146
+ return this.toString();
147
+ }
148
+ equals(other) {
149
+ if (other == null) {
150
+ return false;
151
+ }
152
+ if (other instanceof Uint8Array) {
153
+ other = uint8ArrayToString(other);
154
+ }
155
+ return other.toString() === this.toString();
156
+ }
157
+ }
158
+ //# sourceMappingURL=peer-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-id.js","sourceRoot":"","sources":["../../src/peer-id.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/peer-id",
3
- "version": "4.2.4-dd7b329c4",
3
+ "version": "4.2.4-e1ca9cced",
4
4
  "description": "Implementation of @libp2p/interface-peer-id",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/peer-id#readme",
@@ -54,7 +54,8 @@
54
54
  "test:electron-main": "aegir test -t electron-main"
55
55
  },
56
56
  "dependencies": {
57
- "@libp2p/interface": "1.7.0-dd7b329c4",
57
+ "@libp2p/crypto": "4.1.9-e1ca9cced",
58
+ "@libp2p/interface": "1.7.0-e1ca9cced",
58
59
  "multiformats": "^13.1.0",
59
60
  "uint8arrays": "^5.1.0"
60
61
  },