@helia/interop 10.2.5-070b7528 → 10.2.5-73a28eda
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/.aegir.js +1 -1
- package/dist/src/fixtures/create-helia.browser.d.ts.map +1 -1
- package/dist/src/fixtures/create-helia.browser.js +4 -11
- package/dist/src/fixtures/create-helia.browser.js.map +1 -1
- package/dist/src/fixtures/create-helia.d.ts.map +1 -1
- package/dist/src/fixtures/create-helia.js +4 -9
- package/dist/src/fixtures/create-helia.js.map +1 -1
- package/dist/src/fixtures/key-types.d.ts.map +1 -1
- package/dist/src/fixtures/key-types.js +0 -1
- package/dist/src/fixtures/key-types.js.map +1 -1
- package/dist/src/helia-blockstore.spec.js +2 -3
- package/dist/src/helia-blockstore.spec.js.map +1 -1
- package/dist/src/helia-progress-events.spec.js +2 -3
- package/dist/src/helia-progress-events.spec.js.map +1 -1
- package/dist/src/ipns-http.spec.js +6 -2
- package/dist/src/ipns-http.spec.js.map +1 -1
- package/dist/src/ipns-pubsub.spec.js +5 -7
- package/dist/src/ipns-pubsub.spec.js.map +1 -1
- package/dist/src/ipns.spec.js +29 -22
- package/dist/src/ipns.spec.js.map +1 -1
- package/package.json +26 -28
- package/src/fixtures/create-helia.browser.ts +4 -12
- package/src/fixtures/create-helia.ts +4 -9
- package/src/fixtures/key-types.ts +0 -1
- package/src/helia-blockstore.spec.ts +2 -3
- package/src/helia-progress-events.spec.ts +2 -3
- package/src/ipns-http.spec.ts +8 -2
- package/src/ipns-pubsub.spec.ts +5 -7
- package/src/ipns.spec.ts +36 -21
package/.aegir.js
CHANGED
|
@@ -6,7 +6,7 @@ import { path } from 'kubo'
|
|
|
6
6
|
/** @type {import('aegir').PartialOptions} */
|
|
7
7
|
export default {
|
|
8
8
|
test: {
|
|
9
|
-
files: './
|
|
9
|
+
files: './src/*.spec.ts',
|
|
10
10
|
before: async (options) => {
|
|
11
11
|
if (options.runner !== 'node') {
|
|
12
12
|
const ipfsdPort = await getPort()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-helia.browser.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-helia.browser.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.browser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAsB,eAAe,IAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;AACvF,wBAAsB,eAAe,CAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAG,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { bitswap } from '@helia/block-brokers';
|
|
2
|
-
import { ipnsValidator, ipnsSelector } from '@helia/ipns';
|
|
3
2
|
import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht';
|
|
4
3
|
import { webSockets } from '@libp2p/websockets';
|
|
5
4
|
import { sha3512 } from '@multiformats/sha3';
|
|
@@ -21,14 +20,6 @@ export async function createHeliaNode(libp2pOptions) {
|
|
|
21
20
|
...(defaults.services ?? {}),
|
|
22
21
|
...(libp2pOptions?.services ?? {}),
|
|
23
22
|
dht: kadDHT({
|
|
24
|
-
validators: {
|
|
25
|
-
ipns: ipnsValidator
|
|
26
|
-
},
|
|
27
|
-
selectors: {
|
|
28
|
-
ipns: ipnsSelector
|
|
29
|
-
},
|
|
30
|
-
// skips waiting for the initial self-query to find peers
|
|
31
|
-
allowQueryWithZeroPeers: true,
|
|
32
23
|
protocol: '/ipfs/lan/kad/1.0.0',
|
|
33
24
|
peerInfoMapper: removePublicAddressesMapper,
|
|
34
25
|
clientMode: false
|
|
@@ -41,8 +32,10 @@ export async function createHeliaNode(libp2pOptions) {
|
|
|
41
32
|
delete defaults.services.autoNAT;
|
|
42
33
|
// @ts-expect-error services.dcutr is not optional
|
|
43
34
|
delete defaults.services.dcutr;
|
|
44
|
-
// @ts-expect-error services.
|
|
45
|
-
delete defaults.services.
|
|
35
|
+
// @ts-expect-error services.delegatedContentRouting is not optional
|
|
36
|
+
delete defaults.services.delegatedContentRouting;
|
|
37
|
+
// @ts-expect-error services.delegatedPeerRouting is not optional
|
|
38
|
+
delete defaults.services.delegatedPeerRouting;
|
|
46
39
|
return createHelia({
|
|
47
40
|
blockBrokers: [
|
|
48
41
|
bitswap()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-helia.browser.js","sourceRoot":"","sources":["../../../src/fixtures/create-helia.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-helia.browser.js","sourceRoot":"","sources":["../../../src/fixtures/create-helia.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,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;IAEjC,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAA;IAC1B,QAAQ,CAAC,UAAU,GAAG;QACpB,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QAC9B,UAAU,EAAE;KACb,CAAA;IAED,yBAAyB;IACzB,QAAQ,CAAC,eAAe,GAAG;QACzB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;KAC/B,CAAA;IAED,cAAc;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,QAAQ,EAAE,qBAAqB;YAC/B,cAAc,EAAE,2BAA2B;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC;KACH,CAAA;IAED,yBAAyB;IACzB,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,oEAAoE;IACpE,OAAO,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAA;IAChD,iEAAiE;IACjE,OAAO,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAA;IAE7C,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-helia.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-helia.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAsB,eAAe,IAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;AACvF,wBAAsB,eAAe,CAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAG,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { bitswap } from '@helia/block-brokers';
|
|
2
|
-
import { ipnsValidator, ipnsSelector } from '@helia/ipns';
|
|
3
2
|
import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht';
|
|
4
3
|
import { sha3512 } from '@multiformats/sha3';
|
|
5
4
|
import { createHelia, libp2pDefaults } from 'helia';
|
|
@@ -14,12 +13,6 @@ export async function createHeliaNode(libp2pOptions) {
|
|
|
14
13
|
...(defaults.services ?? {}),
|
|
15
14
|
...(libp2pOptions?.services ?? {}),
|
|
16
15
|
dht: kadDHT({
|
|
17
|
-
validators: {
|
|
18
|
-
ipns: ipnsValidator
|
|
19
|
-
},
|
|
20
|
-
selectors: {
|
|
21
|
-
ipns: ipnsSelector
|
|
22
|
-
},
|
|
23
16
|
protocol: '/ipfs/lan/kad/1.0.0',
|
|
24
17
|
peerInfoMapper: removePublicAddressesMapper,
|
|
25
18
|
clientMode: false
|
|
@@ -34,8 +27,10 @@ export async function createHeliaNode(libp2pOptions) {
|
|
|
34
27
|
delete defaults.services.upnp;
|
|
35
28
|
// @ts-expect-error services.dcutr is not optional
|
|
36
29
|
delete defaults.services.dcutr;
|
|
37
|
-
// @ts-expect-error services.
|
|
38
|
-
delete defaults.services.
|
|
30
|
+
// @ts-expect-error services.delegatedContentRouting is not optional
|
|
31
|
+
delete defaults.services.delegatedContentRouting;
|
|
32
|
+
// @ts-expect-error services.delegatedPeerRouting is not optional
|
|
33
|
+
delete defaults.services.delegatedPeerRouting;
|
|
39
34
|
// @ts-expect-error services.autoTLS is not optional
|
|
40
35
|
delete defaults.services.autoTLS;
|
|
41
36
|
return createHelia({
|
|
@@ -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,
|
|
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,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,QAAQ,EAAE,qBAAqB;YAC/B,cAAc,EAAE,2BAA2B;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC;KACH,CAAA;IAED,oCAAoC;IACpC,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAA;IAE3B,6CAA6C;IAC7C,oDAAoD;IACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAChC,iDAAiD;IACjD,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAA;IAC7B,kDAAkD;IAClD,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC9B,oEAAoE;IACpE,OAAO,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAA;IAChD,iEAAiE;IACjE,OAAO,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAA;IAC7C,oDAAoD;IACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAEhC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-types.d.ts","sourceRoot":"","sources":["../../../src/fixtures/key-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,eAAO,MAAM,QAAQ,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"key-types.d.ts","sourceRoot":"","sources":["../../../src/fixtures/key-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,eAAO,MAAM,QAAQ,EAAE,OAAO,EAG7B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-types.js","sourceRoot":"","sources":["../../../src/fixtures/key-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,SAAS;IACT,
|
|
1
|
+
{"version":3,"file":"key-types.js","sourceRoot":"","sources":["../../../src/fixtures/key-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,SAAS;IACT,KAAK;CACN,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { randomBytes } from '@libp2p/crypto';
|
|
2
1
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
3
2
|
import { expect } from 'aegir/chai';
|
|
4
3
|
import toBuffer from 'it-to-buffer';
|
|
@@ -27,7 +26,7 @@ describe('helia - blockstore', () => {
|
|
|
27
26
|
}
|
|
28
27
|
});
|
|
29
28
|
it('should be able to send a block', async () => {
|
|
30
|
-
const input =
|
|
29
|
+
const input = crypto.getRandomValues(new Uint8Array(10));
|
|
31
30
|
const digest = await sha256.digest(input);
|
|
32
31
|
const cid = CID.createV1(raw.code, digest);
|
|
33
32
|
await helia.blockstore.put(cid, input);
|
|
@@ -35,7 +34,7 @@ describe('helia - blockstore', () => {
|
|
|
35
34
|
expect(output).to.equalBytes(input);
|
|
36
35
|
});
|
|
37
36
|
it('should be able to receive a block', async () => {
|
|
38
|
-
const input =
|
|
37
|
+
const input = crypto.getRandomValues(new Uint8Array(10));
|
|
39
38
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
40
39
|
cidVersion: 1,
|
|
41
40
|
rawLeaves: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helia-blockstore.spec.js","sourceRoot":"","sources":["../../src/helia-blockstore.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"helia-blockstore.spec.js","sourceRoot":"","sources":["../../src/helia-blockstore.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,KAAY,CAAA;IAChB,IAAI,IAAc,CAAA;IAClB,IAAI,QAAkB,CAAA;IAEtB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;QAC7B,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC5B,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;QAE/B,wBAAwB;QACxB,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACzE,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,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACrD,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { randomBytes } from '@libp2p/crypto';
|
|
2
1
|
import { contentRoutingSymbol } from '@libp2p/interface';
|
|
3
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
4
3
|
import { CODE_P2P, multiaddr } from '@multiformats/multiaddr';
|
|
@@ -53,7 +52,7 @@ describe('helia - progress events', () => {
|
|
|
53
52
|
}
|
|
54
53
|
});
|
|
55
54
|
it('should yield routing events', async () => {
|
|
56
|
-
const input =
|
|
55
|
+
const input = crypto.getRandomValues(new Uint8Array(10));
|
|
57
56
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
58
57
|
cidVersion: 1,
|
|
59
58
|
rawLeaves: true
|
|
@@ -71,7 +70,7 @@ describe('helia - progress events', () => {
|
|
|
71
70
|
expect(events.get('helia:routing:find-providers:end')).to.be.greaterThan(0);
|
|
72
71
|
});
|
|
73
72
|
it('should yield block broker events', async () => {
|
|
74
|
-
const input =
|
|
73
|
+
const input = crypto.getRandomValues(new Uint8Array(10));
|
|
75
74
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
76
75
|
cidVersion: 1,
|
|
77
76
|
rawLeaves: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helia-progress-events.spec.js","sourceRoot":"","sources":["../../src/helia-progress-events.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"helia-progress-events.spec.js","sourceRoot":"","sources":["../../src/helia-progress-events.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { ipns } from '@helia/ipns';
|
|
|
3
3
|
import { delegatedHTTPRouting } from '@helia/routers';
|
|
4
4
|
import { peerIdFromCID } from '@libp2p/peer-id';
|
|
5
5
|
import { expect } from 'aegir/chai';
|
|
6
|
+
import last from 'it-last';
|
|
6
7
|
import { CID } from 'multiformats/cid';
|
|
7
8
|
import { isNode } from 'wherearewe';
|
|
8
9
|
import { createKuboNode } from "./fixtures/create-kubo.js";
|
|
@@ -49,8 +50,11 @@ describe('@helia/ipns - http', () => {
|
|
|
49
50
|
key: keyName
|
|
50
51
|
});
|
|
51
52
|
const key = peerIdFromCID(CID.parse(res.name));
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
const result = await last(name.resolve(key.toMultihash()));
|
|
54
|
+
if (result == null) {
|
|
55
|
+
throw new Error('No results found');
|
|
56
|
+
}
|
|
57
|
+
expect(result.record.value).to.equal(`/ipfs/${cid}`);
|
|
54
58
|
});
|
|
55
59
|
});
|
|
56
60
|
//# sourceMappingURL=ipns-http.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipns-http.spec.js","sourceRoot":"","sources":["../../src/ipns-http.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,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,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,KAAyB,CAAA;IAC7B,IAAI,IAAc,CAAA;IAClB,IAAI,IAAU,CAAA;IAEd;;;;OAIG;IACH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAClC,KAAK,GAAG,MAAM,eAAe,CAAC;YAC5B,OAAO,EAAE;gBACP,oBAAoB,CAAC;oBACnB,GAAG,EAAE,QAAQ,CAAC,OAAO;iBACtB,CAAC;aACH;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,
|
|
1
|
+
{"version":3,"file":"ipns-http.spec.js","sourceRoot":"","sources":["../../src/ipns-http.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,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,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,KAAyB,CAAA;IAC7B,IAAI,IAAc,CAAA;IAClB,IAAI,IAAU,CAAA;IAEd;;;;OAIG;IACH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAClC,KAAK,GAAG,MAAM,eAAe,CAAC;YAC5B,OAAO,EAAE;gBACP,oBAAoB,CAAC;oBACnB,GAAG,EAAE,QAAQ,CAAC,OAAO;iBACtB,CAAC;aACH;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,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAE1D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACrC,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* eslint max-nested-callbacks: ["error", 5] */
|
|
2
2
|
import { ipns } from '@helia/ipns';
|
|
3
3
|
import { pubsub } from '@helia/ipns/routing';
|
|
4
|
-
import { generateKeyPair } from '@libp2p/crypto/keys';
|
|
5
4
|
import { floodsub } from '@libp2p/floodsub';
|
|
6
5
|
import { peerIdFromCID } from '@libp2p/peer-id';
|
|
7
6
|
import { expect } from 'aegir/chai';
|
|
@@ -55,12 +54,11 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
55
54
|
const input = Uint8Array.from([0, 1, 2, 3, 4]);
|
|
56
55
|
const digest = await sha256.digest(input);
|
|
57
56
|
const cid = CID.createV1(raw.code, digest);
|
|
58
|
-
const privateKey = await generateKeyPair('Ed25519');
|
|
59
57
|
const keyName = 'my-ipns-key';
|
|
60
|
-
await helia.
|
|
58
|
+
const privateKey = await helia.keychain.generateKey(keyName);
|
|
61
59
|
// first call to pubsub resolver will fail but we should trigger
|
|
62
60
|
// subscribing pubsub for updates
|
|
63
|
-
await expect(last(kubo.api.name.resolve(privateKey.publicKey
|
|
61
|
+
await expect(last(kubo.api.name.resolve(`${privateKey.publicKey}`, {
|
|
64
62
|
timeout: 100
|
|
65
63
|
}))).to.eventually.be.undefined();
|
|
66
64
|
// wait for kubo to be subscribed to updates
|
|
@@ -111,7 +109,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
111
109
|
throw new Error('Incorrect hash type');
|
|
112
110
|
}
|
|
113
111
|
// first call to pubsub resolver should fail but we should now be subscribed for updates
|
|
114
|
-
await expect(name.resolve(peerCid.multihash)).to.eventually.be.rejected();
|
|
112
|
+
await expect(last(name.resolve(peerCid.multihash))).to.eventually.be.rejected();
|
|
115
113
|
// actual pubsub subscription name
|
|
116
114
|
const subscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
|
|
117
115
|
uint8ArrayFromString('/ipns/'),
|
|
@@ -140,7 +138,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
140
138
|
// we should get an update eventually
|
|
141
139
|
await waitFor(async () => {
|
|
142
140
|
try {
|
|
143
|
-
resolveResult = await name.resolve(peerId.toMultihash());
|
|
141
|
+
resolveResult = await last(name.resolve(peerId.toMultihash()));
|
|
144
142
|
return true;
|
|
145
143
|
}
|
|
146
144
|
catch {
|
|
@@ -153,7 +151,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
153
151
|
if (resolveResult == null) {
|
|
154
152
|
throw new Error('Failed to resolve CID');
|
|
155
153
|
}
|
|
156
|
-
expect(resolveResult.
|
|
154
|
+
expect(resolveResult.record.value).to.equal(`/ipfs/${cid}`);
|
|
157
155
|
});
|
|
158
156
|
});
|
|
159
157
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipns-pubsub.spec.js","sourceRoot":"","sources":["../../src/ipns-pubsub.spec.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ipns-pubsub.spec.js","sourceRoot":"","sources":["../../src/ipns-pubsub.spec.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,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,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,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;AAQhD,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,KAA4D,CAAA;QAChE,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,QAAQ,EAAE;iBACnB;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,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE5D,gEAAgE;YAChE,iCAAiC;YACjC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,EAAE;gBACjE,OAAO,EAAE,GAAG;aACb,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;YAEjC,4CAA4C;YAC5C,MAAM,oBAAoB,GAAG,SAAS,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA;YACrF,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,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK;aACzC,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,OAAO,EAAE,GAAG,CAAC,CAAA;YAEhC,yDAAyD;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;gBACjF,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,aAAa,CAAC,OAAO,CAAC,CAAA;YAErC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;YACxC,CAAC;YAED,wFAAwF;YACxF,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;YAE/E,kCAAkC;YAClC,MAAM,gBAAgB,GAAG,WAAW,kBAAkB,CAAC,gBAAgB,CAAC;gBACtE,oBAAoB,CAAC,QAAQ,CAAC;gBAC9B,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK;aAC3B,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,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;oBAE9D,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,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/src/ipns.spec.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ipns } from '@helia/ipns';
|
|
2
|
-
import { generateKeyPair, privateKeyToProtobuf } from '@libp2p/crypto/keys';
|
|
3
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
4
3
|
import { expect } from 'aegir/chai';
|
|
5
|
-
import { multihashToIPNSRoutingKey } from 'ipns';
|
|
6
4
|
import last from 'it-last';
|
|
5
|
+
import { base36 } from 'multiformats/bases/base36';
|
|
7
6
|
import { CID } from 'multiformats/cid';
|
|
8
7
|
import * as raw from 'multiformats/codecs/raw';
|
|
9
8
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
9
|
+
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
10
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
10
11
|
import { isElectronMain } from 'wherearewe';
|
|
11
12
|
import { connect } from "./fixtures/connect.js";
|
|
12
13
|
import { createHeliaNode } from "./fixtures/create-helia.js";
|
|
@@ -14,6 +15,12 @@ import { createKuboNode } from "./fixtures/create-kubo.js";
|
|
|
14
15
|
import { sortClosestPeers } from "./fixtures/create-peer-ids.js";
|
|
15
16
|
import { keyTypes } from "./fixtures/key-types.js";
|
|
16
17
|
import { waitFor } from "./fixtures/wait-for.js";
|
|
18
|
+
function multihashToIPNSRoutingKey(digest) {
|
|
19
|
+
return uint8ArrayConcat([
|
|
20
|
+
uint8ArrayFromString('/ipns/'),
|
|
21
|
+
digest.bytes
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
17
24
|
keyTypes.forEach(type => {
|
|
18
25
|
describe(`@helia/ipns - default routing with ${type} keys`, () => {
|
|
19
26
|
let helia;
|
|
@@ -21,7 +28,7 @@ keyTypes.forEach(type => {
|
|
|
21
28
|
let name;
|
|
22
29
|
// the CID we are going to publish
|
|
23
30
|
let value;
|
|
24
|
-
// the
|
|
31
|
+
// the key we will use to publish the value
|
|
25
32
|
let key;
|
|
26
33
|
/**
|
|
27
34
|
* Ensure that for the CID we are going to publish, the resolver has a peer ID that
|
|
@@ -34,18 +41,15 @@ keyTypes.forEach(type => {
|
|
|
34
41
|
value = CID.createV1(raw.code, digest);
|
|
35
42
|
helia = await createHeliaNode();
|
|
36
43
|
kubo = await createKuboNode();
|
|
37
|
-
// find a
|
|
44
|
+
// find a key that is KAD-closer to the resolver than the publisher when
|
|
45
|
+
// used as an IPNS key
|
|
38
46
|
while (true) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
else {
|
|
46
|
-
key = await generateKeyPair('RSA', 2048);
|
|
47
|
-
}
|
|
48
|
-
const routingKey = multihashToIPNSRoutingKey(key.publicKey?.toMultihash());
|
|
47
|
+
await helia.keychain.removeKey('test-key');
|
|
48
|
+
key = await helia.keychain.generateKey('test-key', {
|
|
49
|
+
type
|
|
50
|
+
});
|
|
51
|
+
await helia.keychain.removeKey('test-key');
|
|
52
|
+
const routingKey = multihashToIPNSRoutingKey(key.publicKey.toMultihash());
|
|
49
53
|
const [closest] = await sortClosestPeers(routingKey, [
|
|
50
54
|
helia.libp2p.peerId,
|
|
51
55
|
peerIdFromString((await kubo.api.id()).id.toString())
|
|
@@ -96,11 +100,10 @@ keyTypes.forEach(type => {
|
|
|
96
100
|
await kubo.stop();
|
|
97
101
|
}
|
|
98
102
|
});
|
|
99
|
-
it(
|
|
103
|
+
it('should publish on helia and resolve on kubo', async () => {
|
|
100
104
|
await createNodes('kubo');
|
|
101
|
-
const privateKey = await generateKeyPair('Ed25519');
|
|
102
105
|
const keyName = 'my-ipns-key';
|
|
103
|
-
await helia.
|
|
106
|
+
const privateKey = await helia.keychain.generateKey(keyName);
|
|
104
107
|
await name.publish(keyName, value);
|
|
105
108
|
const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString()));
|
|
106
109
|
if (resolved == null) {
|
|
@@ -123,8 +126,7 @@ keyTypes.forEach(type => {
|
|
|
123
126
|
const { cid } = await kubo.api.add(Uint8Array.from([0, 1, 2, 3, 4]));
|
|
124
127
|
// ensure the key is in the kubo keychain so we can use it to publish the IPNS record
|
|
125
128
|
const body = new FormData();
|
|
126
|
-
|
|
127
|
-
body.append('key', new Blob([privateKeyToProtobuf(key)]));
|
|
129
|
+
body.append('key', new Blob([key.toProtobuf()]));
|
|
128
130
|
// can't use the kubo-rpc-api for this call yet
|
|
129
131
|
const config = kubo.api.getEndpointConfig();
|
|
130
132
|
const response = await fetch(`http://${config.host}:${config.port}${config.pathname}/key/import?arg=${keyName}`, {
|
|
@@ -132,14 +134,19 @@ keyTypes.forEach(type => {
|
|
|
132
134
|
body
|
|
133
135
|
});
|
|
134
136
|
expect(response).to.have.property('status', 200);
|
|
137
|
+
const json = await response.json();
|
|
138
|
+
expect(json.Id).to.equal(key.publicKey.toCID().toString(base36), 'did not import key correctly');
|
|
135
139
|
const oneHourNS = BigInt(60 * 60 * 1e+9);
|
|
136
140
|
await kubo.api.name.publish(cid, {
|
|
137
141
|
key: keyName,
|
|
138
142
|
ttl: '1h'
|
|
139
143
|
});
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
const result = await last(name.resolve(key.publicKey));
|
|
145
|
+
if (result == null) {
|
|
146
|
+
throw new Error('No result found');
|
|
147
|
+
}
|
|
148
|
+
expect(result.record.value).to.equal(`/ipfs/${cid}`);
|
|
149
|
+
expect(result.record.ttl).to.equal(oneHourNS);
|
|
143
150
|
});
|
|
144
151
|
});
|
|
145
152
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipns.spec.js","sourceRoot":"","sources":["../../src/ipns.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ipns.spec.js","sourceRoot":"","sources":["../../src/ipns.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,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,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,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,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,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAQhD,SAAS,yBAAyB,CAAE,MAAuB;IACzD,OAAO,gBAAgB,CAAC;QACtB,oBAAoB,CAAC,QAAQ,CAAC;QAC9B,MAAM,CAAC,KAAK;KACb,CAAC,CAAA;AACJ,CAAC;AAED,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACtB,QAAQ,CAAC,sCAAsC,IAAI,OAAO,EAAE,GAAG,EAAE;QAC/D,IAAI,KAA2C,CAAA;QAC/C,IAAI,IAAc,CAAA;QAClB,IAAI,IAAU,CAAA;QAEd,kCAAkC;QAClC,IAAI,KAAU,CAAA;QAEd,2CAA2C;QAC3C,IAAI,GAAe,CAAA;QAEnB;;;;WAIG;QACH,KAAK,UAAU,WAAW,CAAE,QAA0B;YACpD,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,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAEtC,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;YAC/B,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;YAE7B,wEAAwE;YACxE,sBAAsB;YACtB,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;gBAC1C,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE;oBACjD,IAAI;iBACL,CAAC,CAAA;gBACF,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;gBAE1C,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;gBAEzE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE;oBACnD,KAAK,CAAC,MAAM,CAAC,MAAM;oBACnB,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;iBACtD,CAAC,CAAA;gBAEF,IAAI,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;oBACjG,MAAK;gBACP,CAAC;gBAED,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChE,MAAK;gBACP,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,kDAAkD;YAClD,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAA;YAEjD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,KAAK,GAAG,KAAK,CAAA;gBAEjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;oBACpH,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAChC,KAAK,GAAG,IAAI,CAAA;oBACd,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAA;YACd,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,sCAAsC;aAChD,CAAC,CAAA;YAEF,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,KAAK,GAAG,KAAK,CAAA;gBAEjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAChC,KAAK,GAAG,IAAI,CAAA;oBACd,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAA;YACd,CAAC,EAAE;gBACD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,sCAAsC;aAChD,CAAC,CAAA;YAEF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,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,WAAW,CAAC,MAAM,CAAC,CAAA;YAEzB,MAAM,OAAO,GAAG,aAAa,CAAA;YAC7B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC5D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YAEnF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAChD,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,2DAA2D;gBAC3D,+DAA+D;gBAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;YACpB,CAAC;YAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,oCAAoC;gBACpC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;YACpB,CAAC;YAED,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;YAE1B,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;YAEpE,qFAAqF;YACrF,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;YAEhD,+CAA+C;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,mBAAmB,OAAO,EAAE,EAAE;gBAC/G,MAAM,EAAE,MAAM;gBACd,IAAI;aACL,CAAC,CAAA;YAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YAEhD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,8BAA8B,CAAC,CAAA;YAEhG,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;YAExC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,IAAI;aACV,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;YAEtD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/interop",
|
|
3
|
-
"version": "10.2.5-
|
|
3
|
+
"version": "10.2.5-73a28eda",
|
|
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",
|
|
@@ -52,52 +52,50 @@
|
|
|
52
52
|
"test:electron-main": "aegir test -t electron-main"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@helia/block-brokers": "5.2.4-
|
|
56
|
-
"@helia/car": "5.4.2-
|
|
57
|
-
"@helia/dag-cbor": "5.1.1-
|
|
58
|
-
"@helia/dag-json": "5.1.1-
|
|
59
|
-
"@helia/dnslink": "1.2.1-
|
|
60
|
-
"@helia/http": "3.1.4-
|
|
61
|
-
"@helia/interface": "6.2.1-
|
|
62
|
-
"@helia/ipns": "9.2.1-
|
|
63
|
-
"@helia/json": "5.1.1-
|
|
64
|
-
"@helia/mfs": "7.1.1-
|
|
65
|
-
"@helia/routers": "5.1.1-
|
|
66
|
-
"@helia/strings": "5.1.1-
|
|
67
|
-
"@helia/unixfs": "7.2.1-
|
|
55
|
+
"@helia/block-brokers": "5.2.4-73a28eda",
|
|
56
|
+
"@helia/car": "5.4.2-73a28eda",
|
|
57
|
+
"@helia/dag-cbor": "5.1.1-73a28eda",
|
|
58
|
+
"@helia/dag-json": "5.1.1-73a28eda",
|
|
59
|
+
"@helia/dnslink": "1.2.1-73a28eda",
|
|
60
|
+
"@helia/http": "3.1.4-73a28eda",
|
|
61
|
+
"@helia/interface": "6.2.1-73a28eda",
|
|
62
|
+
"@helia/ipns": "9.2.1-73a28eda",
|
|
63
|
+
"@helia/json": "5.1.1-73a28eda",
|
|
64
|
+
"@helia/mfs": "7.1.1-73a28eda",
|
|
65
|
+
"@helia/routers": "5.1.1-73a28eda",
|
|
66
|
+
"@helia/strings": "5.1.1-73a28eda",
|
|
67
|
+
"@helia/unixfs": "7.2.1-73a28eda",
|
|
68
68
|
"@ipld/car": "^5.4.3",
|
|
69
|
-
"@ipld/dag-cbor": "^
|
|
69
|
+
"@ipld/dag-cbor": "^10.0.0",
|
|
70
70
|
"@ipld/dag-pb": "^4.1.5",
|
|
71
|
-
"@libp2p/crypto": "^5.1.15",
|
|
72
71
|
"@libp2p/floodsub": "^11.0.16",
|
|
73
72
|
"@libp2p/interface": "^3.2.0",
|
|
74
73
|
"@libp2p/kad-dht": "^16.2.0",
|
|
75
|
-
"@libp2p/keychain": "^6.
|
|
74
|
+
"@libp2p/keychain": "^6.1.1",
|
|
76
75
|
"@libp2p/peer-id": "^6.0.6",
|
|
77
76
|
"@libp2p/utils": "^7.0.15",
|
|
78
77
|
"@libp2p/websockets": "^10.1.8",
|
|
79
78
|
"@multiformats/multiaddr": "^13.0.1",
|
|
80
|
-
"@multiformats/sha3": "^
|
|
79
|
+
"@multiformats/sha3": "^4.0.0",
|
|
81
80
|
"aegir": "^48.0.4",
|
|
82
|
-
"helia": "6.1.4-
|
|
83
|
-
"ipfs-unixfs-importer": "^
|
|
84
|
-
"ipfsd-ctl": "^
|
|
85
|
-
"ipns": "^10.1.3",
|
|
81
|
+
"helia": "6.1.4-73a28eda",
|
|
82
|
+
"ipfs-unixfs-importer": "^17.0.0",
|
|
83
|
+
"ipfsd-ctl": "^17.0.0",
|
|
86
84
|
"it-all": "^3.0.11",
|
|
87
85
|
"it-drain": "^3.0.12",
|
|
88
86
|
"it-last": "^3.0.11",
|
|
89
87
|
"it-map": "^3.1.5",
|
|
90
|
-
"it-to-buffer": "^
|
|
88
|
+
"it-to-buffer": "^5.0.0",
|
|
91
89
|
"kubo": "^0.41.0",
|
|
92
|
-
"kubo-rpc-client": "^
|
|
90
|
+
"kubo-rpc-client": "^7.0.0",
|
|
93
91
|
"libp2p": "^3.2.0",
|
|
94
|
-
"multiformats": "^
|
|
95
|
-
"uint8arrays": "^
|
|
92
|
+
"multiformats": "^14.0.0",
|
|
93
|
+
"uint8arrays": "^6.1.1",
|
|
96
94
|
"wherearewe": "^2.0.1"
|
|
97
95
|
},
|
|
98
96
|
"browser": {
|
|
99
|
-
"./
|
|
100
|
-
"./
|
|
97
|
+
"./src/fixtures/create-helia.ts": "./src/fixtures/create-helia.browser.ts",
|
|
98
|
+
"./src/fixtures/create-kubo.ts": "./src/fixtures/create-kubo.browser.ts",
|
|
101
99
|
"./dist/src/bin.js": "./dist/src/index.js",
|
|
102
100
|
"kubo": false
|
|
103
101
|
},
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { bitswap } from '@helia/block-brokers'
|
|
2
|
-
import { ipnsValidator, ipnsSelector } from '@helia/ipns'
|
|
3
2
|
import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht'
|
|
4
3
|
import { webSockets } from '@libp2p/websockets'
|
|
5
4
|
import { sha3512 } from '@multiformats/sha3'
|
|
@@ -30,15 +29,6 @@ export async function createHeliaNode (libp2pOptions?: Libp2pOptions): Promise<H
|
|
|
30
29
|
...(defaults.services ?? {}),
|
|
31
30
|
...(libp2pOptions?.services ?? {}),
|
|
32
31
|
dht: kadDHT({
|
|
33
|
-
validators: {
|
|
34
|
-
ipns: ipnsValidator
|
|
35
|
-
},
|
|
36
|
-
selectors: {
|
|
37
|
-
ipns: ipnsSelector
|
|
38
|
-
},
|
|
39
|
-
// skips waiting for the initial self-query to find peers
|
|
40
|
-
allowQueryWithZeroPeers: true,
|
|
41
|
-
|
|
42
32
|
protocol: '/ipfs/lan/kad/1.0.0',
|
|
43
33
|
peerInfoMapper: removePublicAddressesMapper,
|
|
44
34
|
clientMode: false
|
|
@@ -53,8 +43,10 @@ export async function createHeliaNode (libp2pOptions?: Libp2pOptions): Promise<H
|
|
|
53
43
|
delete defaults.services.autoNAT
|
|
54
44
|
// @ts-expect-error services.dcutr is not optional
|
|
55
45
|
delete defaults.services.dcutr
|
|
56
|
-
// @ts-expect-error services.
|
|
57
|
-
delete defaults.services.
|
|
46
|
+
// @ts-expect-error services.delegatedContentRouting is not optional
|
|
47
|
+
delete defaults.services.delegatedContentRouting
|
|
48
|
+
// @ts-expect-error services.delegatedPeerRouting is not optional
|
|
49
|
+
delete defaults.services.delegatedPeerRouting
|
|
58
50
|
|
|
59
51
|
return createHelia<Libp2p<DefaultLibp2pServices>>({
|
|
60
52
|
blockBrokers: [
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { bitswap } from '@helia/block-brokers'
|
|
2
|
-
import { ipnsValidator, ipnsSelector } from '@helia/ipns'
|
|
3
2
|
import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht'
|
|
4
3
|
import { sha3512 } from '@multiformats/sha3'
|
|
5
4
|
import { createHelia, libp2pDefaults } from 'helia'
|
|
@@ -20,12 +19,6 @@ export async function createHeliaNode (libp2pOptions?: Libp2pOptions): Promise<H
|
|
|
20
19
|
...(defaults.services ?? {}),
|
|
21
20
|
...(libp2pOptions?.services ?? {}),
|
|
22
21
|
dht: kadDHT({
|
|
23
|
-
validators: {
|
|
24
|
-
ipns: ipnsValidator
|
|
25
|
-
},
|
|
26
|
-
selectors: {
|
|
27
|
-
ipns: ipnsSelector
|
|
28
|
-
},
|
|
29
22
|
protocol: '/ipfs/lan/kad/1.0.0',
|
|
30
23
|
peerInfoMapper: removePublicAddressesMapper,
|
|
31
24
|
clientMode: false
|
|
@@ -42,8 +35,10 @@ export async function createHeliaNode (libp2pOptions?: Libp2pOptions): Promise<H
|
|
|
42
35
|
delete defaults.services.upnp
|
|
43
36
|
// @ts-expect-error services.dcutr is not optional
|
|
44
37
|
delete defaults.services.dcutr
|
|
45
|
-
// @ts-expect-error services.
|
|
46
|
-
delete defaults.services.
|
|
38
|
+
// @ts-expect-error services.delegatedContentRouting is not optional
|
|
39
|
+
delete defaults.services.delegatedContentRouting
|
|
40
|
+
// @ts-expect-error services.delegatedPeerRouting is not optional
|
|
41
|
+
delete defaults.services.delegatedPeerRouting
|
|
47
42
|
// @ts-expect-error services.autoTLS is not optional
|
|
48
43
|
delete defaults.services.autoTLS
|
|
49
44
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { randomBytes } from '@libp2p/crypto'
|
|
2
1
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
3
2
|
import { expect } from 'aegir/chai'
|
|
4
3
|
import toBuffer from 'it-to-buffer'
|
|
@@ -35,7 +34,7 @@ describe('helia - blockstore', () => {
|
|
|
35
34
|
})
|
|
36
35
|
|
|
37
36
|
it('should be able to send a block', async () => {
|
|
38
|
-
const input =
|
|
37
|
+
const input = crypto.getRandomValues(new Uint8Array(10))
|
|
39
38
|
const digest = await sha256.digest(input)
|
|
40
39
|
const cid = CID.createV1(raw.code, digest)
|
|
41
40
|
await helia.blockstore.put(cid, input)
|
|
@@ -45,7 +44,7 @@ describe('helia - blockstore', () => {
|
|
|
45
44
|
})
|
|
46
45
|
|
|
47
46
|
it('should be able to receive a block', async () => {
|
|
48
|
-
const input =
|
|
47
|
+
const input = crypto.getRandomValues(new Uint8Array(10))
|
|
49
48
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
50
49
|
cidVersion: 1,
|
|
51
50
|
rawLeaves: true
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { randomBytes } from '@libp2p/crypto'
|
|
2
1
|
import { contentRoutingSymbol } from '@libp2p/interface'
|
|
3
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
4
3
|
import { CODE_P2P, multiaddr } from '@multiformats/multiaddr'
|
|
@@ -62,7 +61,7 @@ describe('helia - progress events', () => {
|
|
|
62
61
|
})
|
|
63
62
|
|
|
64
63
|
it('should yield routing events', async () => {
|
|
65
|
-
const input =
|
|
64
|
+
const input = crypto.getRandomValues(new Uint8Array(10))
|
|
66
65
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
67
66
|
cidVersion: 1,
|
|
68
67
|
rawLeaves: true
|
|
@@ -82,7 +81,7 @@ describe('helia - progress events', () => {
|
|
|
82
81
|
})
|
|
83
82
|
|
|
84
83
|
it('should yield block broker events', async () => {
|
|
85
|
-
const input =
|
|
84
|
+
const input = crypto.getRandomValues(new Uint8Array(10))
|
|
86
85
|
const { cid } = await kubo.api.add({ content: input }, {
|
|
87
86
|
cidVersion: 1,
|
|
88
87
|
rawLeaves: true
|
package/src/ipns-http.spec.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ipns } from '@helia/ipns'
|
|
|
3
3
|
import { delegatedHTTPRouting } from '@helia/routers'
|
|
4
4
|
import { peerIdFromCID } from '@libp2p/peer-id'
|
|
5
5
|
import { expect } from 'aegir/chai'
|
|
6
|
+
import last from 'it-last'
|
|
6
7
|
import { CID } from 'multiformats/cid'
|
|
7
8
|
import { isNode } from 'wherearewe'
|
|
8
9
|
import { createKuboNode } from './fixtures/create-kubo.ts'
|
|
@@ -62,7 +63,12 @@ describe('@helia/ipns - http', () => {
|
|
|
62
63
|
})
|
|
63
64
|
|
|
64
65
|
const key = peerIdFromCID(CID.parse(res.name))
|
|
65
|
-
const
|
|
66
|
-
|
|
66
|
+
const result = await last(name.resolve(key.toMultihash()))
|
|
67
|
+
|
|
68
|
+
if (result == null) {
|
|
69
|
+
throw new Error('No results found')
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
expect(result.record.value).to.equal(`/ipfs/${cid}`)
|
|
67
73
|
})
|
|
68
74
|
})
|
package/src/ipns-pubsub.spec.ts
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import { ipns } from '@helia/ipns'
|
|
4
4
|
import { pubsub } from '@helia/ipns/routing'
|
|
5
|
-
import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
6
5
|
import { floodsub } from '@libp2p/floodsub'
|
|
7
6
|
import { peerIdFromCID } from '@libp2p/peer-id'
|
|
8
7
|
import { expect } from 'aegir/chai'
|
|
@@ -70,13 +69,12 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
70
69
|
const digest = await sha256.digest(input)
|
|
71
70
|
const cid = CID.createV1(raw.code, digest)
|
|
72
71
|
|
|
73
|
-
const privateKey = await generateKeyPair('Ed25519')
|
|
74
72
|
const keyName = 'my-ipns-key'
|
|
75
|
-
await helia.
|
|
73
|
+
const privateKey = await helia.keychain.generateKey(keyName)
|
|
76
74
|
|
|
77
75
|
// first call to pubsub resolver will fail but we should trigger
|
|
78
76
|
// subscribing pubsub for updates
|
|
79
|
-
await expect(last(kubo.api.name.resolve(privateKey.publicKey
|
|
77
|
+
await expect(last(kubo.api.name.resolve(`${privateKey.publicKey}`, {
|
|
80
78
|
timeout: 100
|
|
81
79
|
}))).to.eventually.be.undefined()
|
|
82
80
|
|
|
@@ -137,7 +135,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
// first call to pubsub resolver should fail but we should now be subscribed for updates
|
|
140
|
-
await expect(name.resolve(peerCid.multihash)).to.eventually.be.rejected()
|
|
138
|
+
await expect(last(name.resolve(peerCid.multihash))).to.eventually.be.rejected()
|
|
141
139
|
|
|
142
140
|
// actual pubsub subscription name
|
|
143
141
|
const subscriptionName = `/record/${uint8ArrayToString(uint8ArrayConcat([
|
|
@@ -173,7 +171,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
173
171
|
// we should get an update eventually
|
|
174
172
|
await waitFor(async () => {
|
|
175
173
|
try {
|
|
176
|
-
resolveResult = await name.resolve(peerId.toMultihash())
|
|
174
|
+
resolveResult = await last(name.resolve(peerId.toMultihash()))
|
|
177
175
|
|
|
178
176
|
return true
|
|
179
177
|
} catch {
|
|
@@ -188,7 +186,7 @@ keyTypes.filter(keyType => keyType !== 'RSA').forEach(keyType => {
|
|
|
188
186
|
throw new Error('Failed to resolve CID')
|
|
189
187
|
}
|
|
190
188
|
|
|
191
|
-
expect(resolveResult.
|
|
189
|
+
expect(resolveResult.record.value).to.equal(`/ipfs/${cid}`)
|
|
192
190
|
})
|
|
193
191
|
})
|
|
194
192
|
})
|
package/src/ipns.spec.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ipns } from '@helia/ipns'
|
|
2
|
-
import { generateKeyPair, privateKeyToProtobuf } from '@libp2p/crypto/keys'
|
|
3
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
4
3
|
import { expect } from 'aegir/chai'
|
|
5
|
-
import { multihashToIPNSRoutingKey } from 'ipns'
|
|
6
4
|
import last from 'it-last'
|
|
5
|
+
import { base36 } from 'multiformats/bases/base36'
|
|
7
6
|
import { CID } from 'multiformats/cid'
|
|
8
7
|
import * as raw from 'multiformats/codecs/raw'
|
|
9
8
|
import { sha256 } from 'multiformats/hashes/sha2'
|
|
9
|
+
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
|
|
10
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
10
11
|
import { isElectronMain } from 'wherearewe'
|
|
11
12
|
import { connect } from './fixtures/connect.ts'
|
|
12
13
|
import { createHeliaNode } from './fixtures/create-helia.ts'
|
|
@@ -14,10 +15,19 @@ import { createKuboNode } from './fixtures/create-kubo.ts'
|
|
|
14
15
|
import { sortClosestPeers } from './fixtures/create-peer-ids.ts'
|
|
15
16
|
import { keyTypes } from './fixtures/key-types.ts'
|
|
16
17
|
import { waitFor } from './fixtures/wait-for.ts'
|
|
18
|
+
import type { PrivateKey } from '@helia/interface'
|
|
17
19
|
import type { IPNS } from '@helia/ipns'
|
|
18
|
-
import type { Libp2p
|
|
20
|
+
import type { Libp2p } from '@libp2p/interface'
|
|
19
21
|
import type { DefaultLibp2pServices, Helia } from 'helia'
|
|
20
22
|
import type { KuboNode } from 'ipfsd-ctl'
|
|
23
|
+
import type { MultihashDigest } from 'multiformats/cid'
|
|
24
|
+
|
|
25
|
+
function multihashToIPNSRoutingKey (digest: MultihashDigest): Uint8Array<ArrayBuffer> {
|
|
26
|
+
return uint8ArrayConcat([
|
|
27
|
+
uint8ArrayFromString('/ipns/'),
|
|
28
|
+
digest.bytes
|
|
29
|
+
])
|
|
30
|
+
}
|
|
21
31
|
|
|
22
32
|
keyTypes.forEach(type => {
|
|
23
33
|
describe(`@helia/ipns - default routing with ${type} keys`, () => {
|
|
@@ -28,7 +38,7 @@ keyTypes.forEach(type => {
|
|
|
28
38
|
// the CID we are going to publish
|
|
29
39
|
let value: CID
|
|
30
40
|
|
|
31
|
-
// the
|
|
41
|
+
// the key we will use to publish the value
|
|
32
42
|
let key: PrivateKey
|
|
33
43
|
|
|
34
44
|
/**
|
|
@@ -44,17 +54,16 @@ keyTypes.forEach(type => {
|
|
|
44
54
|
helia = await createHeliaNode()
|
|
45
55
|
kubo = await createKuboNode()
|
|
46
56
|
|
|
47
|
-
// find a
|
|
57
|
+
// find a key that is KAD-closer to the resolver than the publisher when
|
|
58
|
+
// used as an IPNS key
|
|
48
59
|
while (true) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
key = await generateKeyPair('RSA', 2048)
|
|
55
|
-
}
|
|
60
|
+
await helia.keychain.removeKey('test-key')
|
|
61
|
+
key = await helia.keychain.generateKey('test-key', {
|
|
62
|
+
type
|
|
63
|
+
})
|
|
64
|
+
await helia.keychain.removeKey('test-key')
|
|
56
65
|
|
|
57
|
-
const routingKey = multihashToIPNSRoutingKey(key.publicKey
|
|
66
|
+
const routingKey = multihashToIPNSRoutingKey(key.publicKey.toMultihash())
|
|
58
67
|
|
|
59
68
|
const [closest] = await sortClosestPeers(routingKey, [
|
|
60
69
|
helia.libp2p.peerId,
|
|
@@ -119,12 +128,11 @@ keyTypes.forEach(type => {
|
|
|
119
128
|
}
|
|
120
129
|
})
|
|
121
130
|
|
|
122
|
-
it(
|
|
131
|
+
it('should publish on helia and resolve on kubo', async () => {
|
|
123
132
|
await createNodes('kubo')
|
|
124
133
|
|
|
125
|
-
const privateKey = await generateKeyPair('Ed25519')
|
|
126
134
|
const keyName = 'my-ipns-key'
|
|
127
|
-
await helia.
|
|
135
|
+
const privateKey = await helia.keychain.generateKey(keyName)
|
|
128
136
|
await name.publish(keyName, value)
|
|
129
137
|
|
|
130
138
|
const resolved = await last(kubo.api.name.resolve(privateKey.publicKey.toString()))
|
|
@@ -155,8 +163,7 @@ keyTypes.forEach(type => {
|
|
|
155
163
|
|
|
156
164
|
// ensure the key is in the kubo keychain so we can use it to publish the IPNS record
|
|
157
165
|
const body = new FormData()
|
|
158
|
-
|
|
159
|
-
body.append('key', new Blob([privateKeyToProtobuf(key)]))
|
|
166
|
+
body.append('key', new Blob([key.toProtobuf()]))
|
|
160
167
|
|
|
161
168
|
// can't use the kubo-rpc-api for this call yet
|
|
162
169
|
const config = kubo.api.getEndpointConfig()
|
|
@@ -167,6 +174,9 @@ keyTypes.forEach(type => {
|
|
|
167
174
|
|
|
168
175
|
expect(response).to.have.property('status', 200)
|
|
169
176
|
|
|
177
|
+
const json = await response.json()
|
|
178
|
+
expect(json.Id).to.equal(key.publicKey.toCID().toString(base36), 'did not import key correctly')
|
|
179
|
+
|
|
170
180
|
const oneHourNS = BigInt(60 * 60 * 1e+9)
|
|
171
181
|
|
|
172
182
|
await kubo.api.name.publish(cid, {
|
|
@@ -174,9 +184,14 @@ keyTypes.forEach(type => {
|
|
|
174
184
|
ttl: '1h'
|
|
175
185
|
})
|
|
176
186
|
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
187
|
+
const result = await last(name.resolve(key.publicKey))
|
|
188
|
+
|
|
189
|
+
if (result == null) {
|
|
190
|
+
throw new Error('No result found')
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
expect(result.record.value).to.equal(`/ipfs/${cid}`)
|
|
194
|
+
expect(result.record.ttl).to.equal(oneHourNS)
|
|
180
195
|
})
|
|
181
196
|
})
|
|
182
197
|
})
|