@helia/interop 3.0.1 → 4.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.
Files changed (133) hide show
  1. package/.aegir.js +46 -0
  2. package/README.md +11 -0
  3. package/dist/src/bin.d.ts +3 -0
  4. package/dist/src/bin.d.ts.map +1 -0
  5. package/dist/src/bin.js +20 -0
  6. package/dist/src/bin.js.map +1 -0
  7. package/dist/src/car.spec.d.ts +2 -0
  8. package/dist/src/car.spec.d.ts.map +1 -0
  9. package/dist/src/car.spec.js +77 -0
  10. package/dist/src/car.spec.js.map +1 -0
  11. package/dist/src/dag-cbor.spec.d.ts +2 -0
  12. package/dist/src/dag-cbor.spec.d.ts.map +1 -0
  13. package/dist/src/dag-cbor.spec.js +49 -0
  14. package/dist/src/dag-cbor.spec.js.map +1 -0
  15. package/dist/src/dag-json.spec.d.ts +2 -0
  16. package/dist/src/dag-json.spec.d.ts.map +1 -0
  17. package/dist/src/dag-json.spec.js +49 -0
  18. package/dist/src/dag-json.spec.js.map +1 -0
  19. package/dist/src/fixtures/connect.d.ts +7 -0
  20. package/dist/src/fixtures/connect.d.ts.map +1 -0
  21. package/dist/src/fixtures/connect.js +17 -0
  22. package/dist/src/fixtures/connect.js.map +1 -0
  23. package/dist/src/fixtures/create-helia-http.d.ts +4 -0
  24. package/dist/src/fixtures/create-helia-http.d.ts.map +1 -0
  25. package/dist/src/fixtures/create-helia-http.js +7 -0
  26. package/dist/src/fixtures/create-helia-http.js.map +1 -0
  27. package/dist/src/fixtures/create-helia.browser.d.ts +6 -0
  28. package/dist/src/fixtures/create-helia.browser.d.ts.map +1 -0
  29. package/dist/src/fixtures/create-helia.browser.js +56 -0
  30. package/dist/src/fixtures/create-helia.browser.js.map +1 -0
  31. package/dist/src/fixtures/create-helia.d.ts +6 -0
  32. package/dist/src/fixtures/create-helia.d.ts.map +1 -0
  33. package/dist/src/fixtures/create-helia.js +46 -0
  34. package/dist/src/fixtures/create-helia.js.map +1 -0
  35. package/dist/src/fixtures/create-kubo.browser.d.ts +3 -0
  36. package/dist/src/fixtures/create-kubo.browser.d.ts.map +1 -0
  37. package/dist/src/fixtures/create-kubo.browser.js +30 -0
  38. package/dist/src/fixtures/create-kubo.browser.js.map +1 -0
  39. package/dist/src/fixtures/create-kubo.d.ts +3 -0
  40. package/dist/src/fixtures/create-kubo.d.ts.map +1 -0
  41. package/dist/src/fixtures/create-kubo.js +32 -0
  42. package/dist/src/fixtures/create-kubo.js.map +1 -0
  43. package/dist/src/fixtures/create-peer-ids.d.ts +14 -0
  44. package/dist/src/fixtures/create-peer-ids.d.ts.map +1 -0
  45. package/dist/src/fixtures/create-peer-ids.js +37 -0
  46. package/dist/src/fixtures/create-peer-ids.js.map +1 -0
  47. package/dist/src/fixtures/key-types.d.ts +3 -0
  48. package/dist/src/fixtures/key-types.d.ts.map +1 -0
  49. package/dist/src/fixtures/key-types.js +6 -0
  50. package/dist/src/fixtures/key-types.js.map +1 -0
  51. package/dist/src/fixtures/memory-car.d.ts +7 -0
  52. package/dist/src/fixtures/memory-car.d.ts.map +1 -0
  53. package/dist/src/fixtures/memory-car.js +26 -0
  54. package/dist/src/fixtures/memory-car.js.map +1 -0
  55. package/dist/src/fixtures/wait-for.d.ts +7 -0
  56. package/dist/src/fixtures/wait-for.d.ts.map +1 -0
  57. package/dist/src/fixtures/wait-for.js +17 -0
  58. package/dist/src/fixtures/wait-for.js.map +1 -0
  59. package/dist/src/helia-blockstore.spec.d.ts +2 -0
  60. package/dist/src/helia-blockstore.spec.d.ts.map +1 -0
  61. package/dist/src/helia-blockstore.spec.js +48 -0
  62. package/dist/src/helia-blockstore.spec.js.map +1 -0
  63. package/dist/src/helia-hashes.spec.d.ts +2 -0
  64. package/dist/src/helia-hashes.spec.d.ts.map +1 -0
  65. package/dist/src/helia-hashes.spec.js +50 -0
  66. package/dist/src/helia-hashes.spec.js.map +1 -0
  67. package/dist/src/helia-pins.spec.d.ts +2 -0
  68. package/dist/src/helia-pins.spec.d.ts.map +1 -0
  69. package/dist/src/helia-pins.spec.js +48 -0
  70. package/dist/src/helia-pins.spec.js.map +1 -0
  71. package/dist/src/index.d.ts +12 -0
  72. package/dist/src/index.d.ts.map +1 -1
  73. package/dist/src/index.js +12 -0
  74. package/dist/src/index.js.map +1 -1
  75. package/dist/src/ipns-http.spec.d.ts +2 -0
  76. package/dist/src/ipns-http.spec.d.ts.map +1 -0
  77. package/dist/src/ipns-http.spec.js +55 -0
  78. package/dist/src/ipns-http.spec.js.map +1 -0
  79. package/dist/src/ipns-pubsub.spec.d.ts +2 -0
  80. package/dist/src/ipns-pubsub.spec.d.ts.map +1 -0
  81. package/dist/src/ipns-pubsub.spec.js +151 -0
  82. package/dist/src/ipns-pubsub.spec.js.map +1 -0
  83. package/dist/src/ipns.spec.d.ts +2 -0
  84. package/dist/src/ipns.spec.d.ts.map +1 -0
  85. package/dist/src/ipns.spec.js +146 -0
  86. package/dist/src/ipns.spec.js.map +1 -0
  87. package/dist/src/json.spec.d.ts +2 -0
  88. package/dist/src/json.spec.d.ts.map +1 -0
  89. package/dist/src/json.spec.js +49 -0
  90. package/dist/src/json.spec.js.map +1 -0
  91. package/dist/src/mfs.spec.d.ts +2 -0
  92. package/dist/src/mfs.spec.d.ts.map +1 -0
  93. package/dist/src/mfs.spec.js +85 -0
  94. package/dist/src/mfs.spec.js.map +1 -0
  95. package/dist/src/strings.spec.d.ts +2 -0
  96. package/dist/src/strings.spec.d.ts.map +1 -0
  97. package/dist/src/strings.spec.js +51 -0
  98. package/dist/src/strings.spec.js.map +1 -0
  99. package/dist/src/unixfs-bitswap.spec.d.ts +2 -0
  100. package/dist/src/unixfs-bitswap.spec.d.ts.map +1 -0
  101. package/dist/src/unixfs-bitswap.spec.js +65 -0
  102. package/dist/src/unixfs-bitswap.spec.js.map +1 -0
  103. package/dist/src/unixfs-files.spec.d.ts +2 -0
  104. package/dist/src/unixfs-files.spec.d.ts.map +1 -0
  105. package/dist/src/unixfs-files.spec.js +69 -0
  106. package/dist/src/unixfs-files.spec.js.map +1 -0
  107. package/package.json +33 -20
  108. package/src/bin.ts +25 -0
  109. package/src/car.spec.ts +102 -0
  110. package/src/dag-cbor.spec.ts +65 -0
  111. package/src/dag-json.spec.ts +65 -0
  112. package/src/fixtures/connect.ts +19 -0
  113. package/src/fixtures/create-helia-http.ts +8 -0
  114. package/src/fixtures/create-helia.browser.ts +68 -0
  115. package/src/fixtures/create-helia.ts +55 -0
  116. package/src/fixtures/create-kubo.browser.ts +30 -0
  117. package/src/fixtures/create-kubo.ts +32 -0
  118. package/src/fixtures/create-peer-ids.ts +46 -0
  119. package/src/fixtures/key-types.ts +7 -0
  120. package/src/fixtures/memory-car.ts +33 -0
  121. package/src/fixtures/wait-for.ts +26 -0
  122. package/src/helia-blockstore.spec.ts +59 -0
  123. package/src/helia-hashes.spec.ts +61 -0
  124. package/src/helia-pins.spec.ts +64 -0
  125. package/src/index.ts +13 -0
  126. package/src/ipns-http.spec.ts +68 -0
  127. package/src/ipns-pubsub.spec.ts +187 -0
  128. package/src/ipns.spec.ts +183 -0
  129. package/src/json.spec.ts +65 -0
  130. package/src/mfs.spec.ts +105 -0
  131. package/src/strings.spec.ts +67 -0
  132. package/src/unixfs-bitswap.spec.ts +86 -0
  133. package/src/unixfs-files.spec.ts +89 -0
package/.aegir.js ADDED
@@ -0,0 +1,46 @@
1
+ import getPort from 'aegir/get-port'
2
+ import { createServer } from 'ipfsd-ctl'
3
+ import * as kuboRpcClient from 'kubo-rpc-client'
4
+
5
+ /** @type {import('aegir').PartialOptions} */
6
+ export default {
7
+ test: {
8
+ files: './dist/src/*.spec.js',
9
+ before: async (options) => {
10
+ if (options.runner !== 'node') {
11
+ const ipfsdPort = await getPort()
12
+ const ipfsdServer = await createServer({
13
+ host: '127.0.0.1',
14
+ port: ipfsdPort
15
+ }, {
16
+ ipfsBin: (await import('kubo')).default.path(),
17
+ kuboRpcModule: kuboRpcClient,
18
+ ipfsOptions: {
19
+ config: {
20
+ Addresses: {
21
+ Swarm: [
22
+ "/ip4/0.0.0.0/tcp/0",
23
+ "/ip4/0.0.0.0/tcp/0/ws"
24
+ ]
25
+ }
26
+ }
27
+ }
28
+ }).start()
29
+
30
+ return {
31
+ env: {
32
+ IPFSD_SERVER: `http://127.0.0.1:${ipfsdPort}`
33
+ },
34
+ ipfsdServer
35
+ }
36
+ }
37
+
38
+ return {}
39
+ },
40
+ after: async (options, beforeResult) => {
41
+ if (options.runner !== 'node') {
42
+ await beforeResult.ipfsdServer.stop()
43
+ }
44
+ }
45
+ }
46
+ }
package/README.md CHANGED
@@ -11,6 +11,17 @@
11
11
 
12
12
  > Interop tests for Helia
13
13
 
14
+ # About
15
+
16
+ Runs interop tests between Helia and Kubo.
17
+
18
+ ## Example - Testing a new Kubo release
19
+
20
+ ```console
21
+ $ npm i @helia/interop
22
+ $ KUBO_BINARY=/path/to/kubo helia-interop
23
+ ```
24
+
14
25
  # Install
15
26
 
16
27
  ```console
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ #! /usr/bin/env node
2
+ /* eslint-disable no-console */
3
+ import { spawn } from 'node:child_process';
4
+ import { dirname, resolve } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ // aegir should be run from `node_modules/@helia/interop`
7
+ const cwd = resolve(dirname(fileURLToPath(import.meta.url)), '../../');
8
+ const test = spawn('npx', ['aegir', 'test'], {
9
+ cwd
10
+ });
11
+ test.stdout.on('data', (data) => {
12
+ process.stdout.write(data);
13
+ });
14
+ test.stderr.on('data', (data) => {
15
+ process.stderr.write(data);
16
+ });
17
+ test.on('close', (code) => {
18
+ process.exit(code ?? 0);
19
+ });
20
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":";AACA,+BAA+B;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,yDAAyD;AACzD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEtE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;IAC3C,GAAG;CACJ,CAAC,CAAA;AAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;IACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;AACzB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=car.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"car.spec.d.ts","sourceRoot":"","sources":["../../src/car.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ /* eslint-env mocha */
2
+ import { car } from '@helia/car';
3
+ import { unixfs } from '@helia/unixfs';
4
+ import { CarReader } from '@ipld/car';
5
+ import { expect } from 'aegir/chai';
6
+ import drain from 'it-drain';
7
+ import toBuffer from 'it-to-buffer';
8
+ import { CID } from 'multiformats/cid';
9
+ import { createHeliaNode } from './fixtures/create-helia.js';
10
+ import { createKuboNode } from './fixtures/create-kubo.js';
11
+ import { memoryCarWriter } from './fixtures/memory-car.js';
12
+ describe('@helia/car', () => {
13
+ let helia;
14
+ let c;
15
+ let u;
16
+ let kubo;
17
+ beforeEach(async () => {
18
+ helia = await createHeliaNode();
19
+ c = car(helia);
20
+ u = unixfs(helia);
21
+ kubo = await createKuboNode();
22
+ // connect helia to kubo
23
+ await helia.libp2p.dial(kubo.peer.addresses);
24
+ });
25
+ afterEach(async () => {
26
+ if (helia != null) {
27
+ await helia.stop();
28
+ }
29
+ if (kubo != null) {
30
+ await kubo.stop();
31
+ }
32
+ });
33
+ it('should export a car from Helia, import and read the contents from kubo', async () => {
34
+ const chunkSize = 1024 * 1024;
35
+ const size = chunkSize * 10;
36
+ const input = [];
37
+ const candidate = {
38
+ content: (async function* () {
39
+ for (let i = 0; i < size; i += chunkSize) {
40
+ const buf = new Uint8Array(chunkSize);
41
+ input.push(buf);
42
+ yield buf;
43
+ }
44
+ }())
45
+ };
46
+ const cid = await u.addFile(candidate);
47
+ const writer = memoryCarWriter(cid);
48
+ await c.export(cid, writer);
49
+ const buf = await writer.bytes();
50
+ await drain(kubo.api.dag.import([buf]));
51
+ const output = [];
52
+ for await (const b of kubo.api.cat(cid)) {
53
+ output.push(b);
54
+ }
55
+ expect(toBuffer(output)).to.equalBytes(toBuffer(input));
56
+ });
57
+ it('should export a car from kubo, import and read the contents from Helia', async () => {
58
+ const chunkSize = 1024 * 1024;
59
+ const size = chunkSize * 10;
60
+ const input = [];
61
+ const candidate = {
62
+ content: (async function* () {
63
+ for (let i = 0; i < size; i += chunkSize) {
64
+ const buf = new Uint8Array(chunkSize);
65
+ input.push(buf);
66
+ yield buf;
67
+ }
68
+ }())
69
+ };
70
+ const { cid } = await kubo.api.add(candidate.content);
71
+ const bytes = await toBuffer(kubo.api.dag.export(cid));
72
+ const reader = await CarReader.fromBytes(bytes);
73
+ await c.import(reader);
74
+ expect(await toBuffer(u.cat(CID.parse(cid.toString())))).to.equalBytes(toBuffer(input));
75
+ });
76
+ });
77
+ //# sourceMappingURL=car.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"car.spec.js","sourceRoot":"","sources":["../../src/car.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dag-cbor.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-cbor.spec.d.ts","sourceRoot":"","sources":["../../src/dag-cbor.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ /* eslint-env mocha */
2
+ import { dagCbor } from '@helia/dag-cbor';
3
+ import * as codec from '@ipld/dag-cbor';
4
+ import { expect } from 'aegir/chai';
5
+ import { CID } from 'multiformats/cid';
6
+ import { createHeliaNode } from './fixtures/create-helia.js';
7
+ import { createKuboNode } from './fixtures/create-kubo.js';
8
+ describe('@helia/dag-cbor', () => {
9
+ let helia;
10
+ let d;
11
+ let kubo;
12
+ async function expectSameCid(data, heliaOpts = {}, kuboOpts = {}) {
13
+ const heliaCid = await d.add(data(), heliaOpts);
14
+ const kuboCid = await kubo.api.dag.put(data(), kuboOpts);
15
+ expect(heliaCid.toString()).to.equal(kuboCid.toString());
16
+ }
17
+ beforeEach(async () => {
18
+ helia = await createHeliaNode();
19
+ d = dagCbor(helia);
20
+ kubo = await createKuboNode();
21
+ await helia.libp2p.dial((await (kubo.api.id())).addresses);
22
+ });
23
+ afterEach(async () => {
24
+ if (helia != null) {
25
+ await helia.stop();
26
+ }
27
+ if (kubo != null) {
28
+ await kubo.stop();
29
+ }
30
+ });
31
+ it('should create the same CID for a string', async () => {
32
+ const candidate = () => ({ hello: 'world' });
33
+ await expectSameCid(candidate);
34
+ });
35
+ it('should add to helia and fetch from kubo', async () => {
36
+ const input = { hello: 'world' };
37
+ const cid = await d.add(input);
38
+ const block = await kubo.api.block.get(cid);
39
+ const output = codec.decode(block);
40
+ expect(output).to.deep.equal(input);
41
+ });
42
+ it('should add to kubo and fetch from helia', async () => {
43
+ const input = { hello: 'world' };
44
+ const cid = await kubo.api.block.put(codec.encode(input));
45
+ const output = await d.get(CID.parse(cid.toString()));
46
+ expect(output).to.deep.equal(input);
47
+ });
48
+ });
49
+ //# sourceMappingURL=dag-cbor.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-cbor.spec.js","sourceRoot":"","sources":["../../src/dag-cbor.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dag-json.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-json.spec.d.ts","sourceRoot":"","sources":["../../src/dag-json.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ /* eslint-env mocha */
2
+ import { dagJson } from '@helia/dag-json';
3
+ import { expect } from 'aegir/chai';
4
+ import { CID } from 'multiformats/cid';
5
+ import * as codec from 'multiformats/codecs/json';
6
+ import { createHeliaNode } from './fixtures/create-helia.js';
7
+ import { createKuboNode } from './fixtures/create-kubo.js';
8
+ describe('@helia/dag-json', () => {
9
+ let helia;
10
+ let d;
11
+ let kubo;
12
+ async function expectSameCid(data, heliaOpts = {}, kuboOpts = { format: 'dag-json' }) {
13
+ const heliaCid = await d.add(data(), heliaOpts);
14
+ const kuboCid = await kubo.api.block.put(codec.encode(data()), kuboOpts);
15
+ expect(heliaCid.toString()).to.equal(kuboCid.toString());
16
+ }
17
+ beforeEach(async () => {
18
+ helia = await createHeliaNode();
19
+ d = dagJson(helia);
20
+ kubo = await createKuboNode();
21
+ await helia.libp2p.dial((await (kubo.api.id())).addresses);
22
+ });
23
+ afterEach(async () => {
24
+ if (helia != null) {
25
+ await helia.stop();
26
+ }
27
+ if (kubo != null) {
28
+ await kubo.stop();
29
+ }
30
+ });
31
+ it('should create the same CID for a string', async () => {
32
+ const candidate = () => ({ hello: 'world' });
33
+ await expectSameCid(candidate);
34
+ });
35
+ it('should add to helia and fetch from kubo', async () => {
36
+ const input = { hello: 'world' };
37
+ const cid = await d.add(input);
38
+ const block = await kubo.api.block.get(cid);
39
+ const output = codec.decode(block);
40
+ expect(output).to.deep.equal(input);
41
+ });
42
+ it('should add to kubo and fetch from helia', async () => {
43
+ const input = { hello: 'world' };
44
+ const cid = await kubo.api.block.put(codec.encode(input));
45
+ const output = await d.get(CID.parse(cid.toString()));
46
+ expect(output).to.deep.equal(input);
47
+ });
48
+ });
49
+ //# sourceMappingURL=dag-json.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-json.spec.js","sourceRoot":"","sources":["../../src/dag-json.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { HeliaLibp2p } from 'helia';
2
+ import type { Controller } from 'ipfsd-ctl';
3
+ /**
4
+ * Connect the two nodes by dialing a protocol stream
5
+ */
6
+ export declare function connect(helia: HeliaLibp2p<any>, kubo: Controller, protocol: string): Promise<void>;
7
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/fixtures/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,wBAAsB,OAAO,CAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzG"}
@@ -0,0 +1,17 @@
1
+ import { expect } from 'aegir/chai';
2
+ /**
3
+ * Connect the two nodes by dialing a protocol stream
4
+ */
5
+ export async function connect(helia, kubo, protocol) {
6
+ let connected = false;
7
+ for (const addr of kubo.peer.addresses) {
8
+ try {
9
+ await helia.libp2p.dialProtocol(addr, protocol);
10
+ connected = true;
11
+ break;
12
+ }
13
+ catch { }
14
+ }
15
+ expect(connected).to.be.true('could not connect Helia to Kubo');
16
+ }
17
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/fixtures/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAInC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAE,KAAuB,EAAE,IAAgB,EAAE,QAAgB;IACxF,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC/C,SAAS,GAAG,IAAI,CAAA;YAChB,MAAK;QACP,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;AACjE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type HeliaHTTPInit } from '@helia/http';
2
+ import type { Helia } from '@helia/interface';
3
+ export declare function createHeliaHTTP(init?: Partial<HeliaHTTPInit>): Promise<Helia>;
4
+ //# sourceMappingURL=create-helia-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-helia-http.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAE7C,wBAAsB,eAAe,CAAE,IAAI,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAIxF"}
@@ -0,0 +1,7 @@
1
+ import { createHeliaHTTP as createHelia } from '@helia/http';
2
+ export async function createHeliaHTTP(init = {}) {
3
+ return createHelia({
4
+ ...init
5
+ });
6
+ }
7
+ //# sourceMappingURL=create-helia-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-helia-http.js","sourceRoot":"","sources":["../../../src/fixtures/create-helia-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,WAAW,EAAsB,MAAM,aAAa,CAAA;AAGhF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,OAA+B,EAAE;IACtE,OAAO,WAAW,CAAC;QACjB,GAAG,IAAI;KACR,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Libp2p } from '@libp2p/interface';
2
+ import type { DefaultLibp2pServices, HeliaLibp2p } from 'helia';
3
+ import type { Libp2pOptions } from 'libp2p';
4
+ export declare function createHeliaNode(): Promise<HeliaLibp2p<Libp2p<DefaultLibp2pServices>>>;
5
+ export declare function createHeliaNode<Services extends Record<string, unknown>>(libp2pOptions: Libp2pOptions<Services>): Promise<HeliaLibp2p<Libp2p<Services & DefaultLibp2pServices>>>;
6
+ //# sourceMappingURL=create-helia.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-helia.browser.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.browser.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAsB,eAAe,IAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAC7F,wBAAsB,eAAe,CAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAG,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { bitswap } from '@helia/block-brokers';
2
+ import { ipnsValidator, ipnsSelector } from '@helia/ipns';
3
+ import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht';
4
+ import { webSockets } from '@libp2p/websockets';
5
+ import { all } from '@libp2p/websockets/filters';
6
+ import { sha3512 } from '@multiformats/sha3';
7
+ import { createHelia, libp2pDefaults } from 'helia';
8
+ export async function createHeliaNode(libp2pOptions) {
9
+ const defaults = libp2pDefaults();
10
+ // allow dialing insecure WebSockets
11
+ defaults.transports?.pop();
12
+ defaults.transports = [
13
+ ...(defaults.transports ?? []),
14
+ webSockets({
15
+ filter: all
16
+ })
17
+ ];
18
+ // allow dialing loopback
19
+ defaults.connectionGater = {
20
+ denyDialMultiaddr: () => false
21
+ };
22
+ // use LAN DHT
23
+ defaults.services = {
24
+ ...(defaults.services ?? {}),
25
+ ...(libp2pOptions?.services ?? {}),
26
+ dht: kadDHT({
27
+ validators: {
28
+ ipns: ipnsValidator
29
+ },
30
+ selectors: {
31
+ ipns: ipnsSelector
32
+ },
33
+ // skips waiting for the initial self-query to find peers
34
+ allowQueryWithZeroPeers: true,
35
+ protocol: '/ipfs/lan/kad/1.0.0',
36
+ peerInfoMapper: removePublicAddressesMapper,
37
+ clientMode: false
38
+ })
39
+ };
40
+ // remove bootstrappers
41
+ defaults.peerDiscovery = [];
42
+ // remove services that are not used in tests
43
+ delete defaults.services.autoNAT;
44
+ delete defaults.services.dcutr;
45
+ delete defaults.services.delegatedRouting;
46
+ return createHelia({
47
+ blockBrokers: [
48
+ bitswap()
49
+ ],
50
+ libp2p: defaults,
51
+ hashers: [
52
+ sha3512
53
+ ]
54
+ });
55
+ }
56
+ //# sourceMappingURL=create-helia.browser.js.map
@@ -0,0 +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,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAA;AAChD,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,CAAC;YACT,MAAM,EAAE,GAAG;SACZ,CAAC;KACH,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,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,uBAAuB;IACvB,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAA;IAE3B,6CAA6C;IAC7C,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC9B,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"}
@@ -0,0 +1,6 @@
1
+ import type { Libp2p } from '@libp2p/interface';
2
+ import type { DefaultLibp2pServices, HeliaLibp2p } from 'helia';
3
+ import type { Libp2pOptions } from 'libp2p';
4
+ export declare function createHeliaNode(): Promise<HeliaLibp2p<Libp2p<DefaultLibp2pServices>>>;
5
+ export declare function createHeliaNode<Services extends Record<string, unknown>>(libp2pOptions: Libp2pOptions<Services>): Promise<HeliaLibp2p<Libp2p<Services & DefaultLibp2pServices>>>;
6
+ //# sourceMappingURL=create-helia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-helia.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-helia.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAsB,eAAe,IAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAC7F,wBAAsB,eAAe,CAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAG,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { bitswap } from '@helia/block-brokers';
2
+ import { ipnsValidator, ipnsSelector } from '@helia/ipns';
3
+ import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht';
4
+ import { sha3512 } from '@multiformats/sha3';
5
+ import { createHelia, libp2pDefaults } from 'helia';
6
+ export async function createHeliaNode(libp2pOptions) {
7
+ const defaults = libp2pDefaults();
8
+ defaults.addresses = {
9
+ listen: [
10
+ '/ip4/0.0.0.0/tcp/0'
11
+ ]
12
+ };
13
+ defaults.services = {
14
+ ...(defaults.services ?? {}),
15
+ ...(libp2pOptions?.services ?? {}),
16
+ dht: kadDHT({
17
+ validators: {
18
+ ipns: ipnsValidator
19
+ },
20
+ selectors: {
21
+ ipns: ipnsSelector
22
+ },
23
+ // skips waiting for the initial self-query to find peers
24
+ allowQueryWithZeroPeers: true,
25
+ protocol: '/ipfs/lan/kad/1.0.0',
26
+ peerInfoMapper: removePublicAddressesMapper,
27
+ clientMode: false
28
+ })
29
+ };
30
+ // remove bootstrappers, mdns, etc
31
+ defaults.peerDiscovery = [];
32
+ // remove services that are not used in tests
33
+ delete defaults.services.autoNAT;
34
+ delete defaults.services.dcutr;
35
+ delete defaults.services.delegatedRouting;
36
+ return createHelia({
37
+ blockBrokers: [
38
+ bitswap()
39
+ ],
40
+ libp2p: defaults,
41
+ hashers: [
42
+ sha3512
43
+ ]
44
+ });
45
+ }
46
+ //# sourceMappingURL=create-helia.js.map
@@ -0,0 +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,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAA;IAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC9B,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"}
@@ -0,0 +1,3 @@
1
+ import { type Controller } from 'ipfsd-ctl';
2
+ export declare function createKuboNode(): Promise<Controller>;
3
+ //# sourceMappingURL=create-kubo.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-kubo.browser.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-kubo.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,WAAW,CAAA;AAG7D,wBAAsB,cAAc,IAAK,OAAO,CAAC,UAAU,CAAC,CA0B3D"}
@@ -0,0 +1,30 @@
1
+ import { createController } from 'ipfsd-ctl';
2
+ import * as kuboRpcClient from 'kubo-rpc-client';
3
+ export async function createKuboNode() {
4
+ return createController({
5
+ kuboRpcModule: kuboRpcClient,
6
+ test: true,
7
+ endpoint: process.env.IPFSD_SERVER,
8
+ ipfsOptions: {
9
+ config: {
10
+ Addresses: {
11
+ Swarm: [
12
+ '/ip4/0.0.0.0/tcp/0',
13
+ '/ip4/0.0.0.0/tcp/0/ws'
14
+ ],
15
+ Gateway: '/ip4/127.0.0.1/tcp/8180'
16
+ },
17
+ Gateway: {
18
+ NoFetch: true,
19
+ ExposeRoutingAPI: true,
20
+ HTTPHeaders: {
21
+ 'Access-Control-Allow-Origin': ['*'],
22
+ 'Access-Control-Allow-Methods': ['GET', 'POST', 'PUT', 'OPTIONS']
23
+ }
24
+ }
25
+ }
26
+ },
27
+ args: ['--enable-pubsub-experiment', '--enable-namesys-pubsub']
28
+ });
29
+ }
30
+ //# sourceMappingURL=create-kubo.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-kubo.browser.js","sourceRoot":"","sources":["../../../src/fixtures/create-kubo.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,gBAAgB,CAAC;QACtB,aAAa,EAAE,aAAa;QAC5B,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAClC,WAAW,EAAE;YACX,MAAM,EAAE;gBACN,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,oBAAoB;wBACpB,uBAAuB;qBACxB;oBACD,OAAO,EAAE,yBAAyB;iBACnC;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI;oBACb,gBAAgB,EAAE,IAAI;oBACtB,WAAW,EAAE;wBACX,6BAA6B,EAAE,CAAC,GAAG,CAAC;wBACpC,8BAA8B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;qBAClE;iBACF;aACF;SACF;QACD,IAAI,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;KAChE,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Controller } from 'ipfsd-ctl';
2
+ export declare function createKuboNode(): Promise<Controller>;
3
+ //# sourceMappingURL=create-kubo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-kubo.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-kubo.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAI7D,wBAAsB,cAAc,IAAK,OAAO,CAAC,UAAU,CAAC,CA0B3D"}
@@ -0,0 +1,32 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error */
2
+ import { createController } from 'ipfsd-ctl';
3
+ import { path as kuboPath } from 'kubo';
4
+ import * as kuboRpcClient from 'kubo-rpc-client';
5
+ export async function createKuboNode() {
6
+ return createController({
7
+ kuboRpcModule: kuboRpcClient,
8
+ ipfsBin: kuboPath(),
9
+ test: true,
10
+ ipfsOptions: {
11
+ config: {
12
+ Addresses: {
13
+ Swarm: [
14
+ '/ip4/0.0.0.0/tcp/4001',
15
+ '/ip4/0.0.0.0/tcp/4002/ws'
16
+ ],
17
+ Gateway: '/ip4/127.0.0.1/tcp/8180'
18
+ },
19
+ Gateway: {
20
+ NoFetch: true,
21
+ ExposeRoutingAPI: true,
22
+ HTTPHeaders: {
23
+ 'Access-Control-Allow-Origin': ['*'],
24
+ 'Access-Control-Allow-Methods': ['GET', 'POST', 'PUT', 'OPTIONS']
25
+ }
26
+ }
27
+ }
28
+ },
29
+ args: ['--enable-pubsub-experiment', '--enable-namesys-pubsub']
30
+ });
31
+ }
32
+ //# sourceMappingURL=create-kubo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-kubo.js","sourceRoot":"","sources":["../../../src/fixtures/create-kubo.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,gBAAgB,CAAC;QACtB,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,QAAQ,EAAE;QACnB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE;YACX,MAAM,EAAE;gBACN,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,uBAAuB;wBACvB,0BAA0B;qBAC3B;oBACD,OAAO,EAAE,yBAAyB;iBACnC;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI;oBACb,gBAAgB,EAAE,IAAI;oBACtB,WAAW,EAAE;wBACX,6BAA6B,EAAE,CAAC,GAAG,CAAC;wBACpC,8BAA8B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;qBAClE;iBACF;aACF;SACF;QACD,IAAI,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;KAChE,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PeerId } from '@libp2p/interface';
2
+ /**
3
+ * Sort peers by distance to the KadID of the passed buffer
4
+ */
5
+ export declare function sortClosestPeers(buf: Uint8Array, peers: PeerId[]): Promise<PeerId[]>;
6
+ /**
7
+ * Creates a DHT ID by hashing a Peer ID
8
+ */
9
+ export declare function convertPeerId(peerId: PeerId): Promise<Uint8Array>;
10
+ /**
11
+ * Creates a DHT ID by hashing a given Uint8Array
12
+ */
13
+ export declare function convertBuffer(buf: Uint8Array): Promise<Uint8Array>;
14
+ //# sourceMappingURL=create-peer-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-peer-ids.d.ts","sourceRoot":"","sources":["../../../src/fixtures/create-peer-ids.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;GAEG;AACH,wBAAsB,gBAAgB,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB3F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAIzE"}