@helia/interop 6.1.8 → 7.0.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.
@@ -20,8 +20,6 @@ export async function createHeliaNode(libp2pOptions) {
20
20
  selectors: {
21
21
  ipns: ipnsSelector
22
22
  },
23
- // skips waiting for the initial self-query to find peers
24
- allowQueryWithZeroPeers: true,
25
23
  protocol: '/ipfs/lan/kad/1.0.0',
26
24
  peerInfoMapper: removePublicAddressesMapper,
27
25
  clientMode: false
@@ -1 +1 @@
1
- {"version":3,"file":"create-helia.js","sourceRoot":"","sources":["../../../src/fixtures/create-helia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAOnD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,aAA6B;IAClE,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;IACjC,QAAQ,CAAC,SAAS,GAAG;QACnB,MAAM,EAAE;YACN,oBAAoB;SACrB;KACF,CAAA;IACD,QAAQ,CAAC,QAAQ,GAAG;QAClB,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QAClC,GAAG,EAAE,MAAM,CAAC;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,aAAa;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,YAAY;aACnB;YACD,yDAAyD;YACzD,uBAAuB,EAAE,IAAI;YAE7B,QAAQ,EAAE,qBAAqB;YAC/B,cAAc,EAAE,2BAA2B;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC;KACH,CAAA;IAED,kCAAkC;IAClC,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAA;IAE3B,6CAA6C;IAC7C,oDAAoD;IACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAChC,kDAAkD;IAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC9B,6DAA6D;IAC7D,OAAO,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAA;IAEzC,OAAO,WAAW,CAAgC;QAChD,YAAY,EAAE;YACZ,OAAO,EAAE;SACV;QACD,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YACP,OAAO;SACR;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"create-helia.js","sourceRoot":"","sources":["../../../src/fixtures/create-helia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAOnD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,aAA6B;IAClE,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;IACjC,QAAQ,CAAC,SAAS,GAAG;QACnB,MAAM,EAAE;YACN,oBAAoB;SACrB;KACF,CAAA;IACD,QAAQ,CAAC,QAAQ,GAAG;QAClB,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QAClC,GAAG,EAAE,MAAM,CAAC;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,aAAa;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,YAAY;aACnB;YACD,QAAQ,EAAE,qBAAqB;YAC/B,cAAc,EAAE,2BAA2B;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC;KACH,CAAA;IAED,kCAAkC;IAClC,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAA;IAE3B,6CAA6C;IAC7C,oDAAoD;IACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAChC,kDAAkD;IAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC9B,6DAA6D;IAC7D,OAAO,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAA;IAEzC,OAAO,WAAW,CAAgC;QAChD,YAAY,EAAE;YACZ,OAAO,EAAE;SACV;QACD,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YACP,OAAO;SACR;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -25,7 +25,7 @@ export async function sortClosestPeers(buf, peers) {
25
25
  * Creates a DHT ID by hashing a Peer ID
26
26
  */
27
27
  export async function convertPeerId(peerId) {
28
- return convertBuffer(peerId.toBytes());
28
+ return convertBuffer(peerId.toMultihash().bytes);
29
29
  }
30
30
  /**
31
31
  * Creates a DHT ID by hashing a given Uint8Array
@@ -1 +1 @@
1
- {"version":3,"file":"create-peer-ids.js","sourceRoot":"","sources":["../../../src/fixtures/create-peer-ids.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAE,GAAe,EAAE,KAAe;IACtE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAEtC,MAAM,SAAS,GAAG,MAAM,GAAG,CACzB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;QAEpC,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC;SACnC,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,SAAS;SACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,MAAc;IACjD,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,GAAe;IAClD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE1C,OAAO,SAAS,CAAC,MAAM,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"create-peer-ids.js","sourceRoot":"","sources":["../../../src/fixtures/create-peer-ids.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAE,GAAe,EAAE,KAAe;IACtE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAEtC,MAAM,SAAS,GAAG,MAAM,GAAG,CACzB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;QAEpC,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC;SACnC,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,SAAS;SACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,MAAc;IACjD,OAAO,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAA;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAE,GAAe;IAClD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE1C,OAAO,SAAS,CAAC,MAAM,CAAA;AACzB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  /* eslint-env mocha */
2
2
  import { ipns } from '@helia/ipns';
3
3
  import { delegatedHTTPRouting } from '@helia/routers';
4
- import { peerIdFromString } from '@libp2p/peer-id';
4
+ import { peerIdFromCID } from '@libp2p/peer-id';
5
5
  import { expect } from 'aegir/chai';
6
+ import { CID } from 'multiformats/cid';
6
7
  import { isNode } from 'wherearewe';
7
8
  import { createHeliaHTTP } from './fixtures/create-helia-http.js';
8
9
  import { createKuboNode } from './fixtures/create-kubo.js';
@@ -45,8 +46,8 @@ describe('@helia/ipns - http', () => {
45
46
  const res = await kubo.api.name.publish(cid, {
46
47
  key: keyName
47
48
  });
48
- const key = peerIdFromString(res.name);
49
- const { cid: resolvedCid } = await name.resolve(key);
49
+ const key = peerIdFromCID(CID.parse(res.name));
50
+ const { cid: resolvedCid } = await name.resolve(key.toMultihash());
50
51
  expect(resolvedCid.toString()).to.equal(cid.toString());
51
52
  });
52
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ipns-http.spec.js","sourceRoot":"","sources":["../../src/ipns-http.spec.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,KAAY,CAAA;IAChB,IAAI,IAAc,CAAA;IAClB,IAAI,IAAU,CAAA;IAEd;;;;OAIG;IACH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;QAC7B,KAAK,GAAG,MAAM,eAAe,CAAC;YAC5B,OAAO,EAAE;gBACP,oBAAoB,CAAC,uBAAuB,CAAC;aAC9C;SACF,CAAC,CAAA;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iFAAiF;YACjF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAA;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3C,GAAG,EAAE,OAAO;SACb,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEtC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ipns-http.spec.js","sourceRoot":"","sources":["../../src/ipns-http.spec.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,KAAY,CAAA;IAChB,IAAI,IAAc,CAAA;IAClB,IAAI,IAAU,CAAA;IAEd;;;;OAIG;IACH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;QAC7B,KAAK,GAAG,MAAM,eAAe,CAAC;YAC5B,OAAO,EAAE;gBACP,oBAAoB,CAAC,uBAAuB,CAAC;aAC9C;SACF,CAAC,CAAA;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iFAAiF;YACjF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAA;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3C,GAAG,EAAE,OAAO;SACb,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9C,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;QAClE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -3,12 +3,14 @@
3
3
  import { gossipsub } from '@chainsafe/libp2p-gossipsub';
4
4
  import { ipns } from '@helia/ipns';
5
5
  import { pubsub } from '@helia/ipns/routing';
6
- import { peerIdFromKeys } from '@libp2p/peer-id';
6
+ import { generateKeyPair } from '@libp2p/crypto/keys';
7
+ import { peerIdFromCID } from '@libp2p/peer-id';
7
8
  import { expect } from 'aegir/chai';
8
9
  import last from 'it-last';
9
10
  import { base36 } from 'multiformats/bases/base36';
10
11
  import { CID } from 'multiformats/cid';
11
12
  import * as raw from 'multiformats/codecs/raw';
13
+ import { hasCode } from 'multiformats/hashes/digest';
12
14
  import { identity } from 'multiformats/hashes/identity';
13
15
  import { sha256 } from 'multiformats/hashes/sha2';
14
16
  import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
@@ -19,7 +21,6 @@ import { createHeliaNode } from './fixtures/create-helia.js';
19
21
  import { createKuboNode } from './fixtures/create-kubo.js';
20
22
  import { keyTypes } from './fixtures/key-types.js';
21
23
  import { waitFor } from './fixtures/wait-for.js';
22
- const LIBP2P_KEY_CODEC = 0x72;
23
24
  // skip RSA tests because we need the DHT enabled to find the public key
24
25
  // component of the keypair, but that means we can't test pubsub
25
26
  // resolution because Kubo will use the DHT as well
@@ -55,18 +56,14 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
55
56
  const input = Uint8Array.from([0, 1, 2, 3, 4]);
56
57
  const digest = await sha256.digest(input);
57
58
  const cid = CID.createV1(raw.code, digest);
58
- const keyName = 'my-ipns-key';
59
- await helia.libp2p.services.keychain.createKey(keyName, keyType);
60
- const peerId = await helia.libp2p.services.keychain.exportPeerId(keyName);
61
- if (peerId.publicKey == null) {
62
- throw new Error('No public key present');
63
- }
64
- // first call to pubsub resolver will fail but we should trigger subscribing pubsub for updates
65
- await expect(last(kubo.api.name.resolve(peerId, {
59
+ const privateKey = await generateKeyPair('Ed25519');
60
+ // first call to pubsub resolver will fail but we should trigger
61
+ // subscribing pubsub for updates
62
+ await expect(last(kubo.api.name.resolve(privateKey.publicKey.toString(), {
66
63
  timeout: 100
67
64
  }))).to.eventually.be.undefined();
68
65
  // wait for kubo to be subscribed to updates
69
- const kuboSubscriptionName = `/ipns/${CID.createV1(LIBP2P_KEY_CODEC, identity.digest(peerId.publicKey)).toString(base36)}`;
66
+ const kuboSubscriptionName = `/ipns/${privateKey.publicKey.toCID().toString(base36)}`;
70
67
  await waitFor(async () => {
71
68
  const subs = await kubo.api.name.pubsub.subs();
72
69
  return subs.includes(kuboSubscriptionName);
@@ -77,7 +74,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
77
74
  // wait for helia to see that kubo is subscribed to the topic for record updates
78
75
  const heliaSubscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
79
76
  uint8ArrayFromString('/ipns/'),
80
- peerId.toBytes()
77
+ privateKey.publicKey.toMultihash().bytes
81
78
  ]), 'base64url')}`;
82
79
  const kuboPeerId = (await kubo.api.id()).id.toString();
83
80
  await waitFor(async () => {
@@ -88,9 +85,9 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
88
85
  message: 'Helia did not see that Kubo was registered for record updates'
89
86
  });
90
87
  // publish should now succeed
91
- await name.publish(peerId, cid);
88
+ await name.publish(privateKey, cid);
92
89
  // kubo should now be able to resolve IPNS name instantly
93
- const resolved = await last(kubo.api.name.resolve(peerId, {
90
+ const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString(), {
94
91
  timeout: 100
95
92
  }));
96
93
  expect(resolved).to.equal(`/ipfs/${cid.toString()}`);
@@ -108,13 +105,16 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
108
105
  });
109
106
  // the generated id is libp2p-key CID with the public key as an identity multihash
110
107
  const peerCid = CID.parse(result.id, base36);
111
- const peerId = await peerIdFromKeys(peerCid.multihash.digest);
108
+ const peerId = peerIdFromCID(peerCid);
109
+ if (!hasCode(peerCid.multihash, identity.code)) {
110
+ throw new Error('Incorrect hash type');
111
+ }
112
112
  // first call to pubsub resolver should fail but we should now be subscribed for updates
113
- await expect(name.resolve(peerId)).to.eventually.be.rejected();
113
+ await expect(name.resolve(peerCid.multihash)).to.eventually.be.rejected();
114
114
  // actual pubsub subscription name
115
115
  const subscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
116
116
  uint8ArrayFromString('/ipns/'),
117
- peerId.toBytes()
117
+ peerId.toMultihash().bytes
118
118
  ]), 'base64url')}`;
119
119
  // wait for helia to be subscribed to the topic for record updates
120
120
  await waitFor(async () => {
@@ -139,7 +139,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
139
139
  // we should get an update eventually
140
140
  await waitFor(async () => {
141
141
  try {
142
- resolveResult = await name.resolve(peerId);
142
+ resolveResult = await name.resolve(peerId.toMultihash());
143
143
  return true;
144
144
  }
145
145
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"ipns-pubsub.spec.js","sourceRoot":"","sources":["../../src/ipns-pubsub.spec.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,+CAA+C;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAOhD,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAE7B,wEAAwE;AACxE,gEAAgE;AAChE,mDAAmD;AACnD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAC9D,QAAQ,CAAC,qCAAqC,OAAO,OAAO,EAAE,GAAG,EAAE;QACjE,IAAI,KAAkE,CAAA;QACtE,IAAI,IAAc,CAAA;QAClB,IAAI,IAAU,CAAA;QAEd,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,KAAK,GAAG,MAAM,eAAe,CAAC;gBAC5B,QAAQ,EAAE;oBACR,MAAM,EAAE,SAAS,EAAE;iBACpB;aACF,CAAC,CAAA;YACF,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;YAE7B,wBAAwB;YACxB,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;YAE5C,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;gBACjB,OAAO,EAAE;oBACP,MAAM,CAAC,KAAK,CAAC;iBACd;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;YACpB,CAAC;YAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YACnB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAE1C,MAAM,OAAO,GAAG,aAAa,CAAA;YAC7B,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAEzE,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;YAC1C,CAAC;YAED,+FAA+F;YAC/F,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC9C,OAAO,EAAE,GAAG;aACb,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;YAEjC,4CAA4C;YAC5C,MAAM,oBAAoB,GAAG,SAAS,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA;YAC1H,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;YAC5C,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,0CAA0C;aACpD,CAAC,CAAA;YAEF,gFAAgF;YAChF,MAAM,qBAAqB,GAAG,WAAW,kBAAkB,CAAC,gBAAgB,CAAC;gBAC3E,oBAAoB,CAAC,QAAQ,CAAC;gBAC9B,MAAM,CAAC,OAAO,EAAE;aACjB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAA;YAClB,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;YACtD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;gBAChF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC1D,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,+DAA+D;aACzE,CAAC,CAAA;YAEF,6BAA6B;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAE/B,yDAAyD;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACxD,OAAO,EAAE,GAAG;aACb,CAAC,CAAC,CAAA;YAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK;YACrD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,sCAAsC;gBACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;YACpB,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAA;YAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC7C,iDAAiD;gBACjD,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;aAC5B,CAAC,CAAA;YAEF,kFAAkF;YAClF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAE7D,wFAAwF;YACxF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;YAE9D,kCAAkC;YAClC,MAAM,gBAAgB,GAAG,WAAW,kBAAkB,CAAC,gBAAgB,CAAC;gBACtE,oBAAoB,CAAC,QAAQ,CAAC;gBAC9B,MAAM,CAAC,OAAO,EAAE;aACjB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAA;YAElB,kEAAkE;YAClE,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;YAC5E,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2CAA2C;aACrD,CAAC,CAAA;YAEF,gFAAgF;YAChF,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBAE3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9E,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,+DAA+D;aACzE,CAAC,CAAA;YAEF,kFAAkF;YAClF,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,GAAG,EAAE,OAAO;aACb,CAAC,CAAA;YAEF,IAAI,aAAwC,CAAA;YAE5C,qCAAqC;YACrC,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC;oBACH,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBAE1C,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,yCAAyC;aACnD,CAAC,CAAA;YAEF,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;YAC1C,CAAC;YAED,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ipns-pubsub.spec.js","sourceRoot":"","sources":["../../src/ipns-pubsub.spec.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  /* eslint-env mocha */
2
2
  import { ipns } from '@helia/ipns';
3
+ import { generateKeyPair, privateKeyToProtobuf } from '@libp2p/crypto/keys';
3
4
  import { peerIdFromString } from '@libp2p/peer-id';
4
- import { createEd25519PeerId, createRSAPeerId, createSecp256k1PeerId } from '@libp2p/peer-id-factory';
5
5
  import { expect } from 'aegir/chai';
6
+ import { multihashToIPNSRoutingKey } from 'ipns';
6
7
  import last from 'it-last';
7
8
  import { CID } from 'multiformats/cid';
8
9
  import * as raw from 'multiformats/codecs/raw';
9
10
  import { sha256 } from 'multiformats/hashes/sha2';
10
- import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
11
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
12
11
  import { isElectronMain } from 'wherearewe';
13
12
  import { connect } from './fixtures/connect.js';
14
13
  import { createHeliaNode } from './fixtures/create-helia.js';
@@ -39,18 +38,15 @@ keyTypes.forEach(type => {
39
38
  // find a PeerId that is KAD-closer to the resolver than the publisher when used as an IPNS key
40
39
  while (true) {
41
40
  if (type === 'Ed25519') {
42
- key = await createEd25519PeerId();
41
+ key = await generateKeyPair('Ed25519');
43
42
  }
44
43
  else if (type === 'secp256k1') {
45
- key = await createSecp256k1PeerId();
44
+ key = await generateKeyPair('secp256k1');
46
45
  }
47
46
  else {
48
- key = await createRSAPeerId();
47
+ key = await generateKeyPair('RSA', 2048);
49
48
  }
50
- const routingKey = uint8ArrayConcat([
51
- uint8ArrayFromString('/ipns/'),
52
- key.toBytes()
53
- ]);
49
+ const routingKey = multihashToIPNSRoutingKey(key.publicKey?.toMultihash());
54
50
  const [closest] = await sortClosestPeers(routingKey, [
55
51
  helia.libp2p.peerId,
56
52
  peerIdFromString((await kubo.api.id()).id.toString())
@@ -103,10 +99,9 @@ keyTypes.forEach(type => {
103
99
  });
104
100
  it(`should publish on helia and resolve on kubo using a ${type} key`, async () => {
105
101
  await createNodes('kubo');
106
- const keyName = 'my-ipns-key';
107
- await helia.libp2p.services.keychain.importPeer(keyName, key);
108
- await name.publish(key, value);
109
- const resolved = await last(kubo.api.name.resolve(key.toString()));
102
+ const privateKey = await generateKeyPair('Ed25519');
103
+ await name.publish(privateKey, value);
104
+ const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString()));
110
105
  if (resolved == null) {
111
106
  throw new Error('kubo failed to resolve name');
112
107
  }
@@ -127,7 +122,7 @@ keyTypes.forEach(type => {
127
122
  const { cid } = await kubo.api.add(Uint8Array.from([0, 1, 2, 3, 4]));
128
123
  // ensure the key is in the kubo keychain so we can use it to publish the IPNS record
129
124
  const body = new FormData();
130
- body.append('key', new Blob([key.privateKey ?? new Uint8Array(0)]));
125
+ body.append('key', new Blob([privateKeyToProtobuf(key)]));
131
126
  // can't use the kubo-rpc-api for this call yet
132
127
  const config = kubo.api.getEndpointConfig();
133
128
  const response = await fetch(`http://${config.host}:${config.port}${config.pathname}/key/import?arg=${keyName}`, {
@@ -140,7 +135,7 @@ keyTypes.forEach(type => {
140
135
  key: keyName,
141
136
  ttl: '1h'
142
137
  });
143
- const { cid: resolvedCid, record } = await name.resolve(key);
138
+ const { cid: resolvedCid, record } = await name.resolve(key.publicKey);
144
139
  expect(resolvedCid.toString()).to.equal(cid.toString());
145
140
  expect(record.ttl).to.equal(oneHourNS);
146
141
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ipns.spec.js","sourceRoot":"","sources":["../../src/ipns.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipns.spec.js","sourceRoot":"","sources":["../../src/ipns.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/interop",
3
- "version": "6.1.8",
3
+ "version": "7.0.0",
4
4
  "description": "Interop tests for Helia",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/main/packages/interop#readme",
@@ -47,6 +47,7 @@
47
47
  "clean": "aegir clean",
48
48
  "lint": "aegir lint",
49
49
  "dep-check": "aegir dep-check",
50
+ "doc-check": "aegir doc-check",
50
51
  "build": "aegir build",
51
52
  "test": "aegir test",
52
53
  "test:chrome": "aegir test -t browser --cov",
@@ -57,40 +58,41 @@
57
58
  "test:electron-main": "aegir test -t electron-main"
58
59
  },
59
60
  "dependencies": {
60
- "@chainsafe/libp2p-gossipsub": "^13.0.0",
61
- "@helia/block-brokers": "^3.0.4",
62
- "@helia/car": "^3.2.1",
63
- "@helia/dag-cbor": "^3.0.6",
64
- "@helia/dag-json": "^3.0.6",
65
- "@helia/http": "^1.0.11",
66
- "@helia/interface": "^4.3.1",
67
- "@helia/ipns": "^7.2.3",
68
- "@helia/json": "^3.0.6",
69
- "@helia/mfs": "^3.0.8",
70
- "@helia/routers": "^1.1.1",
71
- "@helia/strings": "^3.0.6",
72
- "@helia/unixfs": "^3.0.7",
61
+ "@chainsafe/libp2p-gossipsub": "^14.0.0",
62
+ "@helia/block-brokers": "^4.0.0",
63
+ "@helia/car": "^4.0.0",
64
+ "@helia/dag-cbor": "^4.0.0",
65
+ "@helia/dag-json": "^4.0.0",
66
+ "@helia/http": "^2.0.0",
67
+ "@helia/interface": "^5.0.0",
68
+ "@helia/ipns": "^8.0.0",
69
+ "@helia/json": "^4.0.0",
70
+ "@helia/mfs": "^4.0.0",
71
+ "@helia/routers": "^2.0.0",
72
+ "@helia/strings": "^4.0.0",
73
+ "@helia/unixfs": "^4.0.0",
73
74
  "@ipld/car": "^5.3.0",
74
75
  "@ipld/dag-cbor": "^9.2.0",
75
- "@libp2p/interface": "^1.1.4",
76
- "@libp2p/kad-dht": "^12.0.8",
77
- "@libp2p/keychain": "^4.0.9",
78
- "@libp2p/peer-id": "^4.0.7",
79
- "@libp2p/peer-id-factory": "^4.0.7",
80
- "@libp2p/websockets": "^8.0.16",
76
+ "@libp2p/crypto": "^5.0.0",
77
+ "@libp2p/interface": "^2.0.0",
78
+ "@libp2p/kad-dht": "^14.0.0",
79
+ "@libp2p/keychain": "^5.0.2",
80
+ "@libp2p/peer-id": "^5.0.0",
81
+ "@libp2p/websockets": "^9.0.0",
81
82
  "@multiformats/sha3": "^3.0.2",
82
83
  "aegir": "^44.0.1",
83
- "helia": "^4.2.6",
84
+ "helia": "^5.0.0",
84
85
  "ipfs-unixfs-importer": "^15.2.4",
85
- "ipfsd-ctl": "^14.0.0",
86
+ "ipfsd-ctl": "^15.0.0",
87
+ "ipns": "^10.0.0",
86
88
  "it-all": "^3.0.4",
87
89
  "it-drain": "^3.0.5",
88
90
  "it-last": "^3.0.4",
89
91
  "it-map": "^3.0.5",
90
92
  "it-to-buffer": "^4.0.5",
91
- "kubo": "^0.29.0",
92
- "kubo-rpc-client": "^4.0.0",
93
- "libp2p": "^1.2.4",
93
+ "kubo": "^0.30.0",
94
+ "kubo-rpc-client": "^5.0.0",
95
+ "libp2p": "^2.0.0",
94
96
  "multiformats": "^13.1.0",
95
97
  "p-defer": "^4.0.0",
96
98
  "uint8arrays": "^5.0.2",
@@ -26,9 +26,6 @@ export async function createHeliaNode (libp2pOptions?: Libp2pOptions): Promise<H
26
26
  selectors: {
27
27
  ipns: ipnsSelector
28
28
  },
29
- // skips waiting for the initial self-query to find peers
30
- allowQueryWithZeroPeers: true,
31
-
32
29
  protocol: '/ipfs/lan/kad/1.0.0',
33
30
  peerInfoMapper: removePublicAddressesMapper,
34
31
  clientMode: false
@@ -33,7 +33,7 @@ export async function sortClosestPeers (buf: Uint8Array, peers: PeerId[]): Promi
33
33
  * Creates a DHT ID by hashing a Peer ID
34
34
  */
35
35
  export async function convertPeerId (peerId: PeerId): Promise<Uint8Array> {
36
- return convertBuffer(peerId.toBytes())
36
+ return convertBuffer(peerId.toMultihash().bytes)
37
37
  }
38
38
 
39
39
  /**
@@ -2,8 +2,9 @@
2
2
 
3
3
  import { ipns } from '@helia/ipns'
4
4
  import { delegatedHTTPRouting } from '@helia/routers'
5
- import { peerIdFromString } from '@libp2p/peer-id'
5
+ import { peerIdFromCID } from '@libp2p/peer-id'
6
6
  import { expect } from 'aegir/chai'
7
+ import { CID } from 'multiformats/cid'
7
8
  import { isNode } from 'wherearewe'
8
9
  import { createHeliaHTTP } from './fixtures/create-helia-http.js'
9
10
  import { createKuboNode } from './fixtures/create-kubo.js'
@@ -58,9 +59,8 @@ describe('@helia/ipns - http', () => {
58
59
  key: keyName
59
60
  })
60
61
 
61
- const key = peerIdFromString(res.name)
62
-
63
- const { cid: resolvedCid } = await name.resolve(key)
62
+ const key = peerIdFromCID(CID.parse(res.name))
63
+ const { cid: resolvedCid } = await name.resolve(key.toMultihash())
64
64
  expect(resolvedCid.toString()).to.equal(cid.toString())
65
65
  })
66
66
  })
@@ -4,12 +4,14 @@
4
4
  import { gossipsub } from '@chainsafe/libp2p-gossipsub'
5
5
  import { ipns } from '@helia/ipns'
6
6
  import { pubsub } from '@helia/ipns/routing'
7
- import { peerIdFromKeys } from '@libp2p/peer-id'
7
+ import { generateKeyPair } from '@libp2p/crypto/keys'
8
+ import { peerIdFromCID } from '@libp2p/peer-id'
8
9
  import { expect } from 'aegir/chai'
9
10
  import last from 'it-last'
10
11
  import { base36 } from 'multiformats/bases/base36'
11
12
  import { CID } from 'multiformats/cid'
12
13
  import * as raw from 'multiformats/codecs/raw'
14
+ import { hasCode } from 'multiformats/hashes/digest'
13
15
  import { identity } from 'multiformats/hashes/identity'
14
16
  import { sha256 } from 'multiformats/hashes/sha2'
15
17
  import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
@@ -26,8 +28,6 @@ import type { Keychain } from '@libp2p/keychain'
26
28
  import type { HeliaLibp2p } from 'helia'
27
29
  import type { KuboNode } from 'ipfsd-ctl'
28
30
 
29
- const LIBP2P_KEY_CODEC = 0x72
30
-
31
31
  // skip RSA tests because we need the DHT enabled to find the public key
32
32
  // component of the keypair, but that means we can't test pubsub
33
33
  // resolution because Kubo will use the DHT as well
@@ -70,21 +70,16 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
70
70
  const digest = await sha256.digest(input)
71
71
  const cid = CID.createV1(raw.code, digest)
72
72
 
73
- const keyName = 'my-ipns-key'
74
- await helia.libp2p.services.keychain.createKey(keyName, keyType)
75
- const peerId = await helia.libp2p.services.keychain.exportPeerId(keyName)
76
-
77
- if (peerId.publicKey == null) {
78
- throw new Error('No public key present')
79
- }
73
+ const privateKey = await generateKeyPair('Ed25519')
80
74
 
81
- // first call to pubsub resolver will fail but we should trigger subscribing pubsub for updates
82
- await expect(last(kubo.api.name.resolve(peerId, {
75
+ // first call to pubsub resolver will fail but we should trigger
76
+ // subscribing pubsub for updates
77
+ await expect(last(kubo.api.name.resolve(privateKey.publicKey.toString(), {
83
78
  timeout: 100
84
79
  }))).to.eventually.be.undefined()
85
80
 
86
81
  // wait for kubo to be subscribed to updates
87
- const kuboSubscriptionName = `/ipns/${CID.createV1(LIBP2P_KEY_CODEC, identity.digest(peerId.publicKey)).toString(base36)}`
82
+ const kuboSubscriptionName = `/ipns/${privateKey.publicKey.toCID().toString(base36)}`
88
83
  await waitFor(async () => {
89
84
  const subs = await kubo.api.name.pubsub.subs()
90
85
  return subs.includes(kuboSubscriptionName)
@@ -96,7 +91,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
96
91
  // wait for helia to see that kubo is subscribed to the topic for record updates
97
92
  const heliaSubscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
98
93
  uint8ArrayFromString('/ipns/'),
99
- peerId.toBytes()
94
+ privateKey.publicKey.toMultihash().bytes
100
95
  ]), 'base64url')}`
101
96
  const kuboPeerId = (await kubo.api.id()).id.toString()
102
97
  await waitFor(async () => {
@@ -108,10 +103,10 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
108
103
  })
109
104
 
110
105
  // publish should now succeed
111
- await name.publish(peerId, cid)
106
+ await name.publish(privateKey, cid)
112
107
 
113
108
  // kubo should now be able to resolve IPNS name instantly
114
- const resolved = await last(kubo.api.name.resolve(peerId, {
109
+ const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString(), {
115
110
  timeout: 100
116
111
  }))
117
112
 
@@ -133,15 +128,19 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
133
128
 
134
129
  // the generated id is libp2p-key CID with the public key as an identity multihash
135
130
  const peerCid = CID.parse(result.id, base36)
136
- const peerId = await peerIdFromKeys(peerCid.multihash.digest)
131
+ const peerId = peerIdFromCID(peerCid)
132
+
133
+ if (!hasCode(peerCid.multihash, identity.code)) {
134
+ throw new Error('Incorrect hash type')
135
+ }
137
136
 
138
137
  // first call to pubsub resolver should fail but we should now be subscribed for updates
139
- await expect(name.resolve(peerId)).to.eventually.be.rejected()
138
+ await expect(name.resolve(peerCid.multihash)).to.eventually.be.rejected()
140
139
 
141
140
  // actual pubsub subscription name
142
141
  const subscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
143
142
  uint8ArrayFromString('/ipns/'),
144
- peerId.toBytes()
143
+ peerId.toMultihash().bytes
145
144
  ]), 'base64url')}`
146
145
 
147
146
  // wait for helia to be subscribed to the topic for record updates
@@ -172,7 +171,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
172
171
  // we should get an update eventually
173
172
  await waitFor(async () => {
174
173
  try {
175
- resolveResult = await name.resolve(peerId)
174
+ resolveResult = await name.resolve(peerId.toMultihash())
176
175
 
177
176
  return true
178
177
  } catch {
package/src/ipns.spec.ts CHANGED
@@ -1,15 +1,14 @@
1
1
  /* eslint-env mocha */
2
2
 
3
3
  import { ipns } from '@helia/ipns'
4
+ import { generateKeyPair, privateKeyToProtobuf } from '@libp2p/crypto/keys'
4
5
  import { peerIdFromString } from '@libp2p/peer-id'
5
- import { createEd25519PeerId, createRSAPeerId, createSecp256k1PeerId } from '@libp2p/peer-id-factory'
6
6
  import { expect } from 'aegir/chai'
7
+ import { multihashToIPNSRoutingKey } from 'ipns'
7
8
  import last from 'it-last'
8
9
  import { CID } from 'multiformats/cid'
9
10
  import * as raw from 'multiformats/codecs/raw'
10
11
  import { sha256 } from 'multiformats/hashes/sha2'
11
- import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
12
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
13
12
  import { isElectronMain } from 'wherearewe'
14
13
  import { connect } from './fixtures/connect.js'
15
14
  import { createHeliaNode } from './fixtures/create-helia.js'
@@ -18,7 +17,7 @@ import { sortClosestPeers } from './fixtures/create-peer-ids.js'
18
17
  import { keyTypes } from './fixtures/key-types.js'
19
18
  import { waitFor } from './fixtures/wait-for.js'
20
19
  import type { IPNS } from '@helia/ipns'
21
- import type { PeerId } from '@libp2p/interface'
20
+ import type { PrivateKey } from '@libp2p/interface'
22
21
  import type { HeliaLibp2p } from 'helia'
23
22
  import type { KuboNode } from 'ipfsd-ctl'
24
23
 
@@ -32,7 +31,7 @@ keyTypes.forEach(type => {
32
31
  let value: CID
33
32
 
34
33
  // the public key we will use to publish the value
35
- let key: PeerId
34
+ let key: PrivateKey
36
35
 
37
36
  /**
38
37
  * Ensure that for the CID we are going to publish, the resolver has a peer ID that
@@ -50,17 +49,14 @@ keyTypes.forEach(type => {
50
49
  // find a PeerId that is KAD-closer to the resolver than the publisher when used as an IPNS key
51
50
  while (true) {
52
51
  if (type === 'Ed25519') {
53
- key = await createEd25519PeerId()
52
+ key = await generateKeyPair('Ed25519')
54
53
  } else if (type === 'secp256k1') {
55
- key = await createSecp256k1PeerId()
54
+ key = await generateKeyPair('secp256k1')
56
55
  } else {
57
- key = await createRSAPeerId()
56
+ key = await generateKeyPair('RSA', 2048)
58
57
  }
59
58
 
60
- const routingKey = uint8ArrayConcat([
61
- uint8ArrayFromString('/ipns/'),
62
- key.toBytes()
63
- ])
59
+ const routingKey = multihashToIPNSRoutingKey(key.publicKey?.toMultihash())
64
60
 
65
61
  const [closest] = await sortClosestPeers(routingKey, [
66
62
  helia.libp2p.peerId,
@@ -128,12 +124,11 @@ keyTypes.forEach(type => {
128
124
  it(`should publish on helia and resolve on kubo using a ${type} key`, async () => {
129
125
  await createNodes('kubo')
130
126
 
131
- const keyName = 'my-ipns-key'
132
- await helia.libp2p.services.keychain.importPeer(keyName, key)
127
+ const privateKey = await generateKeyPair('Ed25519')
133
128
 
134
- await name.publish(key, value)
129
+ await name.publish(privateKey, value)
135
130
 
136
- const resolved = await last(kubo.api.name.resolve(key.toString()))
131
+ const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString()))
137
132
 
138
133
  if (resolved == null) {
139
134
  throw new Error('kubo failed to resolve name')
@@ -161,7 +156,7 @@ keyTypes.forEach(type => {
161
156
 
162
157
  // ensure the key is in the kubo keychain so we can use it to publish the IPNS record
163
158
  const body = new FormData()
164
- body.append('key', new Blob([key.privateKey ?? new Uint8Array(0)]))
159
+ body.append('key', new Blob([privateKeyToProtobuf(key)]))
165
160
 
166
161
  // can't use the kubo-rpc-api for this call yet
167
162
  const config = kubo.api.getEndpointConfig()
@@ -179,7 +174,7 @@ keyTypes.forEach(type => {
179
174
  ttl: '1h'
180
175
  })
181
176
 
182
- const { cid: resolvedCid, record } = await name.resolve(key)
177
+ const { cid: resolvedCid, record } = await name.resolve(key.publicKey)
183
178
  expect(resolvedCid.toString()).to.equal(cid.toString())
184
179
  expect(record.ttl).to.equal(oneHourNS)
185
180
  })