helia 3.0.1 → 4.0.0-e554493
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +39 -61
- package/dist/src/helia-p2p.d.ts +18 -0
- package/dist/src/helia-p2p.d.ts.map +1 -0
- package/dist/src/helia-p2p.js +22 -0
- package/dist/src/helia-p2p.js.map +1 -0
- package/dist/src/index.d.ts +9 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/libp2p-defaults.browser.d.ts +0 -2
- package/dist/src/utils/libp2p-defaults.browser.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.browser.js +1 -3
- package/dist/src/utils/libp2p-defaults.browser.js.map +1 -1
- package/dist/src/utils/libp2p-defaults.d.ts +0 -2
- package/dist/src/utils/libp2p-defaults.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.js +0 -2
- package/dist/src/utils/libp2p-defaults.js.map +1 -1
- package/dist/src/utils/libp2p.d.ts.map +1 -1
- package/dist/src/utils/libp2p.js +14 -6
- package/dist/src/utils/libp2p.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +17 -27
- package/src/helia-p2p.ts +37 -0
- package/src/index.ts +30 -10
- package/src/utils/libp2p-defaults.browser.ts +1 -5
- package/src/utils/libp2p-defaults.ts +0 -4
- package/src/utils/libp2p.ts +17 -8
- package/src/version.ts +1 -1
- package/dist/src/helia.d.ts +0 -26
- package/dist/src/helia.d.ts.map +0 -1
- package/dist/src/helia.js +0 -81
- package/dist/src/helia.js.map +0 -1
- package/dist/src/pins.d.ts +0 -17
- package/dist/src/pins.d.ts.map +0 -1
- package/dist/src/pins.js +0 -166
- package/dist/src/pins.js.map +0 -1
- package/dist/src/storage.d.ts +0 -63
- package/dist/src/storage.d.ts.map +0 -1
- package/dist/src/storage.js +0 -140
- package/dist/src/storage.js.map +0 -1
- package/dist/src/utils/dag-walkers.d.ts +0 -27
- package/dist/src/utils/dag-walkers.d.ts.map +0 -1
- package/dist/src/utils/dag-walkers.js +0 -157
- package/dist/src/utils/dag-walkers.js.map +0 -1
- package/dist/src/utils/datastore-version.d.ts +0 -3
- package/dist/src/utils/datastore-version.d.ts.map +0 -1
- package/dist/src/utils/datastore-version.js +0 -19
- package/dist/src/utils/datastore-version.js.map +0 -1
- package/dist/src/utils/default-hashers.d.ts +0 -3
- package/dist/src/utils/default-hashers.d.ts.map +0 -1
- package/dist/src/utils/default-hashers.js +0 -11
- package/dist/src/utils/default-hashers.js.map +0 -1
- package/dist/typedoc-urls.json +0 -10
- package/src/helia.ts +0 -107
- package/src/pins.ts +0 -239
- package/src/storage.ts +0 -172
- package/src/utils/dag-walkers.ts +0 -181
- package/src/utils/datastore-version.ts +0 -23
- package/src/utils/default-hashers.ts +0 -12
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Helia, type HeliaInit } from '@helia/utils';
|
|
2
|
+
import type { BlockBroker } from './index.js';
|
|
3
|
+
import type { Libp2p } from '@libp2p/interface';
|
|
4
|
+
import type { Blockstore } from 'interface-blockstore';
|
|
5
|
+
import type { Datastore } from 'interface-datastore';
|
|
6
|
+
export interface HeliaP2PInit<T extends Libp2p = Libp2p> extends HeliaInit {
|
|
7
|
+
libp2p: T;
|
|
8
|
+
blockstore: Blockstore;
|
|
9
|
+
datastore: Datastore;
|
|
10
|
+
blockBrokers: Array<(components: any) => BlockBroker>;
|
|
11
|
+
}
|
|
12
|
+
export declare class HeliaP2P<T extends Libp2p> extends Helia {
|
|
13
|
+
libp2p: T;
|
|
14
|
+
constructor(init: HeliaP2PInit<T>);
|
|
15
|
+
start(): Promise<void>;
|
|
16
|
+
stop(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=helia-p2p.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helia-p2p.d.ts","sourceRoot":"","sources":["../../src/helia-p2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS;IACxE,MAAM,EAAE,CAAC,CAAA;IACT,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,YAAY,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,KAAK,WAAW,CAAC,CAAA;CACtD;AAED,qBAAa,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK;IAC5C,MAAM,EAAE,CAAC,CAAA;gBAEH,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAW5B,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAKvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Helia } from '@helia/utils';
|
|
2
|
+
export class HeliaP2P extends Helia {
|
|
3
|
+
libp2p;
|
|
4
|
+
constructor(init) {
|
|
5
|
+
super({
|
|
6
|
+
...init,
|
|
7
|
+
components: {
|
|
8
|
+
libp2p: init.libp2p
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
this.libp2p = init.libp2p;
|
|
12
|
+
}
|
|
13
|
+
async start() {
|
|
14
|
+
await super.start();
|
|
15
|
+
await this.libp2p.start();
|
|
16
|
+
}
|
|
17
|
+
async stop() {
|
|
18
|
+
await super.stop();
|
|
19
|
+
await this.libp2p.stop();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=helia-p2p.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helia-p2p.js","sourceRoot":"","sources":["../../src/helia-p2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,cAAc,CAAA;AAapD,MAAM,OAAO,QAA2B,SAAQ,KAAK;IAC5C,MAAM,CAAG;IAEhB,YAAa,IAAqB;QAChC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,UAAU,EAAE;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -30,8 +30,6 @@ import type { Libp2pOptions } from 'libp2p';
|
|
|
30
30
|
import type { CID } from 'multiformats/cid';
|
|
31
31
|
import type { MultihashHasher } from 'multiformats/hashes/interface';
|
|
32
32
|
export * from '@helia/interface';
|
|
33
|
-
export * from '@helia/interface/blocks';
|
|
34
|
-
export * from '@helia/interface/pins';
|
|
35
33
|
export type { DefaultLibp2pServices };
|
|
36
34
|
export { libp2pDefaults };
|
|
37
35
|
/**
|
|
@@ -53,8 +51,11 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
53
51
|
* If node options are passed, they will be merged with the default
|
|
54
52
|
* config for the current platform. In this case all passed config
|
|
55
53
|
* keys will replace those from the default config.
|
|
54
|
+
*
|
|
55
|
+
* The libp2p `start` option is not supported, instead please pass `start` in
|
|
56
|
+
* the root of the HeliaInit object.
|
|
56
57
|
*/
|
|
57
|
-
libp2p?: T | Libp2pOptions
|
|
58
|
+
libp2p?: T | Omit<Libp2pOptions, 'start'>;
|
|
58
59
|
/**
|
|
59
60
|
* The blockstore is where blocks are stored
|
|
60
61
|
*/
|
|
@@ -111,9 +112,12 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
111
112
|
*/
|
|
112
113
|
keychain?: KeychainInit;
|
|
113
114
|
}
|
|
115
|
+
export interface HeliaLibp2p<T extends Libp2p = Libp2p<DefaultLibp2pServices>> extends Helia {
|
|
116
|
+
libp2p: T;
|
|
117
|
+
}
|
|
114
118
|
/**
|
|
115
119
|
* Create and return a Helia node
|
|
116
120
|
*/
|
|
117
|
-
export declare function createHelia<T extends Libp2p>(init: HeliaInit<T>): Promise<
|
|
118
|
-
export declare function createHelia(init?: HeliaInit<Libp2p<DefaultLibp2pServices>>): Promise<
|
|
121
|
+
export declare function createHelia<T extends Libp2p>(init: HeliaInit<T>): Promise<HeliaLibp2p<T>>;
|
|
122
|
+
export declare function createHelia(init?: HeliaInit<Libp2p<DefaultLibp2pServices>>): Promise<HeliaLibp2p<Libp2p<DefaultLibp2pServices>>>;
|
|
119
123
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAIpE,cAAc,kBAAkB,CAAA;AAEhC,YAAY,EAAE,qBAAqB,EAAE,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAClD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAEzC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAE3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,KAAK,WAAW,CAAC,CAAA;IAEtD;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAA;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAE,SAAQ,KAAK;IAC1F,MAAM,EAAE,CAAC,CAAA;CACV;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAE,CAAC,SAAS,MAAM,EAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAClG,wBAAsB,WAAW,CAAE,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -18,16 +18,16 @@
|
|
|
18
18
|
* fs.cat(CID.parse('bafyFoo'))
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
+
import { bitswap, trustlessGateway } from '@helia/block-brokers';
|
|
22
|
+
import { libp2pRouting } from '@helia/routers';
|
|
21
23
|
import { MemoryBlockstore } from 'blockstore-core';
|
|
22
24
|
import { MemoryDatastore } from 'datastore-core';
|
|
23
|
-
import {
|
|
25
|
+
import { HeliaP2P } from './helia-p2p.js';
|
|
24
26
|
import { libp2pDefaults } from './utils/libp2p-defaults.js';
|
|
25
27
|
import { createLibp2p } from './utils/libp2p.js';
|
|
26
28
|
// re-export interface types so people don't have to depend on @helia/interface
|
|
27
29
|
// if they don't want to
|
|
28
30
|
export * from '@helia/interface';
|
|
29
|
-
export * from '@helia/interface/blocks';
|
|
30
|
-
export * from '@helia/interface/pins';
|
|
31
31
|
export { libp2pDefaults };
|
|
32
32
|
export async function createHelia(init = {}) {
|
|
33
33
|
const datastore = init.datastore ?? new MemoryDatastore();
|
|
@@ -39,15 +39,27 @@ export async function createHelia(init = {}) {
|
|
|
39
39
|
else {
|
|
40
40
|
libp2p = await createLibp2p({
|
|
41
41
|
...init,
|
|
42
|
-
libp2p:
|
|
42
|
+
libp2p: {
|
|
43
|
+
...init.libp2p,
|
|
44
|
+
// ignore the libp2p start parameter as it should be on the main init
|
|
45
|
+
// object instead
|
|
46
|
+
start: undefined
|
|
47
|
+
},
|
|
43
48
|
datastore
|
|
44
49
|
});
|
|
45
50
|
}
|
|
46
|
-
const helia = new
|
|
51
|
+
const helia = new HeliaP2P({
|
|
47
52
|
...init,
|
|
48
53
|
libp2p,
|
|
49
54
|
datastore,
|
|
50
|
-
blockstore
|
|
55
|
+
blockstore,
|
|
56
|
+
blockBrokers: init.blockBrokers ?? [
|
|
57
|
+
trustlessGateway(),
|
|
58
|
+
bitswap()
|
|
59
|
+
],
|
|
60
|
+
routers: [
|
|
61
|
+
libp2pRouting(libp2p)
|
|
62
|
+
]
|
|
51
63
|
});
|
|
52
64
|
if (init.start !== false) {
|
|
53
65
|
await helia.start();
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAYhD,+EAA+E;AAC/E,wBAAwB;AACxB,cAAc,kBAAkB,CAAA;AAGhC,OAAO,EAAE,cAAc,EAAE,CAAA;AAsGzB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAE,OAAkB,EAAE;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,eAAe,EAAE,CAAA;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,gBAAgB,EAAE,CAAA;IAE5D,IAAI,MAAqC,CAAA;IAEzC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAI,CAAC,MAAa,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,YAAY,CAAwB;YACjD,GAAG,IAAI;YACP,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,MAAM;gBAEd,qEAAqE;gBACrE,iBAAiB;gBACjB,KAAK,EAAE,SAAS;aACjB;YACD,SAAS;SACV,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;QACzB,GAAG,IAAI;QACP,MAAM;QACN,SAAS;QACT,UAAU;QACV,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI;YACjC,gBAAgB,EAAE;YAClB,OAAO,EAAE;SACV;QACD,OAAO,EAAE;YACP,aAAa,CAAC,MAAM,CAAC;SACtB;KACF,CAAC,CAAA;IAEF,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,QAAQ,CAAE,GAAQ;IACzB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,8DAA8D;IAC9D,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,CAAC,CAAA;IAEvG,2DAA2D;IAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -3,7 +3,6 @@ import { type KadDHT } from '@libp2p/kad-dht';
|
|
|
3
3
|
import { type Keychain } from '@libp2p/keychain';
|
|
4
4
|
import { type PingService } from '@libp2p/ping';
|
|
5
5
|
import type { Libp2pDefaultsOptions } from './libp2p.js';
|
|
6
|
-
import type { PubSub } from '@libp2p/interface';
|
|
7
6
|
import type { Libp2pOptions } from 'libp2p';
|
|
8
7
|
export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
9
8
|
autoNAT: unknown;
|
|
@@ -13,7 +12,6 @@ export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
|
13
12
|
identify: Identify;
|
|
14
13
|
keychain: Keychain;
|
|
15
14
|
ping: PingService;
|
|
16
|
-
pubsub: PubSub;
|
|
17
15
|
}
|
|
18
16
|
export declare function libp2pDefaults(options?: Libp2pDefaultsOptions): Libp2pOptions<DefaultLibp2pServices>;
|
|
19
17
|
//# sourceMappingURL=libp2p-defaults.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-defaults.browser.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"libp2p-defaults.browser.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.browser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AASrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,OAAO,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAE,OAAO,GAAE,qBAA0B,GAAG,aAAa,CAAC,qBAAqB,CAAC,CA+CzG"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
2
1
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
3
2
|
import { yamux } from '@chainsafe/libp2p-yamux';
|
|
4
3
|
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client';
|
|
@@ -63,8 +62,7 @@ export function libp2pDefaults(options = {}) {
|
|
|
63
62
|
agentVersion: `${name}/${version} ${libp2pInfo.name}/${libp2pInfo.version} UserAgent=${globalThis.navigator.userAgent}`
|
|
64
63
|
}),
|
|
65
64
|
keychain: keychain(options.keychain),
|
|
66
|
-
ping: ping()
|
|
67
|
-
pubsub: gossipsub()
|
|
65
|
+
ping: ping()
|
|
68
66
|
}
|
|
69
67
|
};
|
|
70
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-defaults.browser.js","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"libp2p-defaults.browser.js","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAA;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,IAAI,EAAoB,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAcpD,MAAM,UAAU,cAAc,CAAE,UAAiC,EAAE;IACjE,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,SAAS;aACV;SACF;QACD,UAAU,EAAE;YACV,qBAAqB,CAAC;gBACpB,cAAc,EAAE,CAAC;aAClB,CAAC;YACF,MAAM,EAAE;YACR,YAAY,EAAE;YACd,YAAY,EAAE;YACd,UAAU,EAAE;SACb;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE;SACR;QACD,YAAY,EAAE;YACZ,KAAK,EAAE;YACP,KAAK,EAAE;SACR;QACD,aAAa,EAAE;YACb,SAAS,CAAC,eAAe,CAAC;SAC3B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,EAAE;YAClB,KAAK,EAAE,KAAK,EAAE;YACd,gBAAgB,EAAE,GAAG,EAAE,CAAC,qCAAqC,CAAC,4BAA4B,CAAC;YAC3F,GAAG,EAAE,MAAM,CAAC;gBACV,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE;oBACV,IAAI,EAAE,aAAa;iBACpB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,YAAY;iBACnB;aACF,CAAC;YACF,QAAQ,EAAE,QAAQ,CAAC;gBACjB,YAAY,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,cAAc,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE;aACxH,CAAC;YACF,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpC,IAAI,EAAE,IAAI,EAAE;SACb;KACF,CAAA;AACH,CAAC"}
|
|
@@ -4,7 +4,6 @@ import { type KadDHT } from '@libp2p/kad-dht';
|
|
|
4
4
|
import { type Keychain } from '@libp2p/keychain';
|
|
5
5
|
import { type PingService } from '@libp2p/ping';
|
|
6
6
|
import type { Libp2pDefaultsOptions } from './libp2p.js';
|
|
7
|
-
import type { PubSub } from '@libp2p/interface';
|
|
8
7
|
import type { Libp2pOptions } from 'libp2p';
|
|
9
8
|
export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
10
9
|
autoNAT: unknown;
|
|
@@ -14,7 +13,6 @@ export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
|
14
13
|
identify: Identify;
|
|
15
14
|
keychain: Keychain;
|
|
16
15
|
ping: PingService;
|
|
17
|
-
pubsub: PubSub;
|
|
18
16
|
relay: CircuitRelayService;
|
|
19
17
|
upnp: unknown;
|
|
20
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-defaults.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"libp2p-defaults.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.ts"],"names":[],"mappings":"AAKA,OAAO,EAA6C,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9G,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG1D,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAUrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,OAAO,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;CACd;AAED,wBAAgB,cAAc,CAAE,OAAO,GAAE,qBAA0B,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAqDzG"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
2
1
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
3
2
|
import { yamux } from '@chainsafe/libp2p-yamux';
|
|
4
3
|
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client';
|
|
@@ -68,7 +67,6 @@ export function libp2pDefaults(options = {}) {
|
|
|
68
67
|
}),
|
|
69
68
|
keychain: keychain(options.keychain),
|
|
70
69
|
ping: ping(),
|
|
71
|
-
pubsub: gossipsub(),
|
|
72
70
|
relay: circuitRelayServer({
|
|
73
71
|
advertise: true
|
|
74
72
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-defaults.js","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"libp2p-defaults.js","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAA;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAA4B,MAAM,0BAA0B,CAAA;AAC9G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,IAAI,EAAoB,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAgBpD,MAAM,UAAU,cAAc,CAAE,UAAiC,EAAE;IACjE,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,oBAAoB;gBACpB,eAAe;gBACf,SAAS;aACV;SACF;QACD,UAAU,EAAE;YACV,qBAAqB,CAAC;gBACpB,cAAc,EAAE,CAAC;aAClB,CAAC;YACF,GAAG,EAAE;YACL,MAAM,EAAE;YACR,YAAY,EAAE;YACd,UAAU,EAAE;SACb;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE;SACR;QACD,YAAY,EAAE;YACZ,KAAK,EAAE;YACP,KAAK,EAAE;SACR;QACD,aAAa,EAAE;YACb,IAAI,EAAE;YACN,SAAS,CAAC,eAAe,CAAC;SAC3B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,EAAE;YAClB,KAAK,EAAE,KAAK,EAAE;YACd,gBAAgB,EAAE,GAAG,EAAE,CAAC,qCAAqC,CAAC,4BAA4B,CAAC;YAC3F,GAAG,EAAE,MAAM,CAAC;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,aAAa;iBACpB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,YAAY;iBACnB;aACF,CAAC;YACF,QAAQ,EAAE,QAAQ,CAAC;gBACjB,YAAY,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,cAAc,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;aACpH,CAAC;YACF,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpC,IAAI,EAAE,IAAI,EAAE;YACZ,KAAK,EAAE,kBAAkB,CAAC;gBACxB,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,IAAI,EAAE,OAAO,EAAE;SAChB;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED,wBAAsB,YAAY,CAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB,EAAG,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAqCnJ"}
|
package/dist/src/utils/libp2p.js
CHANGED
|
@@ -4,27 +4,35 @@ import { Key } from 'interface-datastore';
|
|
|
4
4
|
import { createLibp2p as create } from 'libp2p';
|
|
5
5
|
import { libp2pDefaults } from './libp2p-defaults.js';
|
|
6
6
|
export async function createLibp2p(options) {
|
|
7
|
-
|
|
7
|
+
const peerId = options.libp2p?.peerId;
|
|
8
8
|
const logger = options.logger ?? defaultLogger();
|
|
9
|
+
const selfKey = new Key('/pkcs8/self');
|
|
10
|
+
let chain;
|
|
9
11
|
// if no peer id was passed, try to load it from the keychain
|
|
10
|
-
if (peerId == null) {
|
|
11
|
-
|
|
12
|
+
if (peerId == null && options.datastore != null) {
|
|
13
|
+
chain = keychain(options.keychain)({
|
|
12
14
|
datastore: options.datastore,
|
|
13
15
|
logger
|
|
14
16
|
});
|
|
15
|
-
const selfKey = new Key('/pkcs8/self');
|
|
16
17
|
if (await options.datastore.has(selfKey)) {
|
|
17
18
|
// load the peer id from the keychain
|
|
18
|
-
|
|
19
|
+
options.libp2p = options.libp2p ?? {};
|
|
20
|
+
options.libp2p.peerId = await chain.exportPeerId('self');
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
const defaults = libp2pDefaults(options);
|
|
24
|
+
defaults.datastore = defaults.datastore ?? options.datastore;
|
|
22
25
|
options = options ?? {};
|
|
23
26
|
// @ts-expect-error derived ServiceMap is not compatible with ServiceFactoryMap
|
|
24
|
-
|
|
27
|
+
const node = await create({
|
|
25
28
|
...defaults,
|
|
26
29
|
...options.libp2p,
|
|
27
30
|
start: false
|
|
28
31
|
});
|
|
32
|
+
if (peerId == null && chain != null && !await options.datastore.has(selfKey)) {
|
|
33
|
+
// persist the peer id in the keychain for next time
|
|
34
|
+
await chain.importPeer('self', node.peerId);
|
|
35
|
+
}
|
|
36
|
+
return node;
|
|
29
37
|
}
|
|
30
38
|
//# sourceMappingURL=libp2p.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../../src/utils/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAoBrD,MAAM,CAAC,KAAK,UAAU,YAAY,CAA8D,OAA+B;IAC7H,
|
|
1
|
+
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../../src/utils/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAoBrD,MAAM,CAAC,KAAK,UAAU,YAAY,CAA8D,OAA+B;IAC7H,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAA;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAA;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAA;IACtC,IAAI,KAA2B,CAAA;IAE/B,6DAA6D;IAC7D,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAChD,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,qCAAqC;YACrC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;YACrC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAA;IAC5D,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;IAEvB,+EAA+E;IAC/E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;QACxB,GAAG,QAAQ;QACX,GAAG,OAAO,CAAC,MAAM;QACjB,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;IAEF,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7E,oDAAoD;QACpD,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,kBAAkB,CAAA;AACtC,eAAO,MAAM,IAAI,UAAU,CAAA"}
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAA;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helia",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-e554493",
|
|
4
4
|
"description": "An implementation of IPFS in JavaScript",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/helia#readme",
|
|
@@ -54,15 +54,13 @@
|
|
|
54
54
|
"prepublishOnly": "node scripts/update-version.js && npm run build"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@chainsafe/libp2p-
|
|
58
|
-
"@chainsafe/libp2p-noise": "^14.0.0",
|
|
57
|
+
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
59
58
|
"@chainsafe/libp2p-yamux": "^6.0.1",
|
|
60
|
-
"@helia/block-brokers": "
|
|
61
|
-
"@helia/delegated-routing-v1-http-api-client": "^
|
|
62
|
-
"@helia/interface": "
|
|
63
|
-
"@
|
|
64
|
-
"@
|
|
65
|
-
"@ipld/dag-pb": "^4.0.3",
|
|
59
|
+
"@helia/block-brokers": "2.0.0-e554493",
|
|
60
|
+
"@helia/delegated-routing-v1-http-api-client": "^3.0.0",
|
|
61
|
+
"@helia/interface": "4.0.0-e554493",
|
|
62
|
+
"@helia/routers": "1.0.0-e554493",
|
|
63
|
+
"@helia/utils": "0.0.1-e554493",
|
|
66
64
|
"@libp2p/autonat": "^1.0.1",
|
|
67
65
|
"@libp2p/bootstrap": "^10.0.2",
|
|
68
66
|
"@libp2p/circuit-relay-v2": "^1.0.2",
|
|
@@ -77,31 +75,23 @@
|
|
|
77
75
|
"@libp2p/ping": "^1.0.1",
|
|
78
76
|
"@libp2p/tcp": "^9.0.2",
|
|
79
77
|
"@libp2p/upnp-nat": "^1.0.1",
|
|
80
|
-
"@libp2p/utils": "^5.2.0",
|
|
81
78
|
"@libp2p/webrtc": "^4.0.3",
|
|
82
|
-
"@libp2p/websockets": "^8.0.
|
|
79
|
+
"@libp2p/websockets": "^8.0.10",
|
|
83
80
|
"@libp2p/webtransport": "^4.0.3",
|
|
84
|
-
"blockstore-core": "^4.
|
|
85
|
-
"
|
|
86
|
-
"datastore-core": "^9.0.0",
|
|
81
|
+
"blockstore-core": "^4.3.8",
|
|
82
|
+
"datastore-core": "^9.2.6",
|
|
87
83
|
"interface-blockstore": "^5.2.7",
|
|
88
|
-
"interface-datastore": "^8.2.
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"libp2p": "^1.0.3",
|
|
93
|
-
"mortice": "^3.0.1",
|
|
94
|
-
"multiformats": "^13.0.0",
|
|
95
|
-
"progress-events": "^1.0.0",
|
|
96
|
-
"uint8arrays": "^5.0.1"
|
|
84
|
+
"interface-datastore": "^8.2.9",
|
|
85
|
+
"ipns": "^9.0.0",
|
|
86
|
+
"libp2p": "^1.1.1",
|
|
87
|
+
"multiformats": "^13.0.0"
|
|
97
88
|
},
|
|
98
89
|
"devDependencies": {
|
|
99
90
|
"@multiformats/mafmt": "^12.1.5",
|
|
100
|
-
"@multiformats/multiaddr": "^12.1.
|
|
101
|
-
"@types/sinon": "^17.0.2",
|
|
91
|
+
"@multiformats/multiaddr": "^12.1.12",
|
|
102
92
|
"aegir": "^42.1.0",
|
|
103
|
-
"
|
|
104
|
-
"it-
|
|
93
|
+
"it-all": "^3.0.4",
|
|
94
|
+
"it-drain": "^3.0.5"
|
|
105
95
|
},
|
|
106
96
|
"browser": {
|
|
107
97
|
"./dist/src/utils/libp2p-defaults.js": "./dist/src/utils/libp2p-defaults.browser.js"
|
package/src/helia-p2p.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Helia, type HeliaInit } from '@helia/utils'
|
|
2
|
+
import type { BlockBroker } from './index.js'
|
|
3
|
+
import type { Libp2p } from '@libp2p/interface'
|
|
4
|
+
import type { Blockstore } from 'interface-blockstore'
|
|
5
|
+
import type { Datastore } from 'interface-datastore'
|
|
6
|
+
|
|
7
|
+
export interface HeliaP2PInit<T extends Libp2p = Libp2p> extends HeliaInit {
|
|
8
|
+
libp2p: T
|
|
9
|
+
blockstore: Blockstore
|
|
10
|
+
datastore: Datastore
|
|
11
|
+
blockBrokers: Array<(components: any) => BlockBroker>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class HeliaP2P<T extends Libp2p> extends Helia {
|
|
15
|
+
public libp2p: T
|
|
16
|
+
|
|
17
|
+
constructor (init: HeliaP2PInit<T>) {
|
|
18
|
+
super({
|
|
19
|
+
...init,
|
|
20
|
+
components: {
|
|
21
|
+
libp2p: init.libp2p
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
this.libp2p = init.libp2p
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async start (): Promise<void> {
|
|
29
|
+
await super.start()
|
|
30
|
+
await this.libp2p.start()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async stop (): Promise<void> {
|
|
34
|
+
await super.stop()
|
|
35
|
+
await this.libp2p.stop()
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
+
import { bitswap, trustlessGateway } from '@helia/block-brokers'
|
|
23
|
+
import { libp2pRouting } from '@helia/routers'
|
|
22
24
|
import { MemoryBlockstore } from 'blockstore-core'
|
|
23
25
|
import { MemoryDatastore } from 'datastore-core'
|
|
24
|
-
import {
|
|
26
|
+
import { HeliaP2P } from './helia-p2p.js'
|
|
25
27
|
import { libp2pDefaults } from './utils/libp2p-defaults.js'
|
|
26
28
|
import { createLibp2p } from './utils/libp2p.js'
|
|
27
29
|
import type { DefaultLibp2pServices } from './utils/libp2p-defaults.js'
|
|
@@ -38,8 +40,6 @@ import type { MultihashHasher } from 'multiformats/hashes/interface'
|
|
|
38
40
|
// re-export interface types so people don't have to depend on @helia/interface
|
|
39
41
|
// if they don't want to
|
|
40
42
|
export * from '@helia/interface'
|
|
41
|
-
export * from '@helia/interface/blocks'
|
|
42
|
-
export * from '@helia/interface/pins'
|
|
43
43
|
|
|
44
44
|
export type { DefaultLibp2pServices }
|
|
45
45
|
export { libp2pDefaults }
|
|
@@ -64,8 +64,11 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
64
64
|
* If node options are passed, they will be merged with the default
|
|
65
65
|
* config for the current platform. In this case all passed config
|
|
66
66
|
* keys will replace those from the default config.
|
|
67
|
+
*
|
|
68
|
+
* The libp2p `start` option is not supported, instead please pass `start` in
|
|
69
|
+
* the root of the HeliaInit object.
|
|
67
70
|
*/
|
|
68
|
-
libp2p?: T | Libp2pOptions
|
|
71
|
+
libp2p?: T | Omit<Libp2pOptions, 'start'>
|
|
69
72
|
|
|
70
73
|
/**
|
|
71
74
|
* The blockstore is where blocks are stored
|
|
@@ -132,12 +135,16 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
132
135
|
keychain?: KeychainInit
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
export interface HeliaLibp2p<T extends Libp2p = Libp2p<DefaultLibp2pServices>> extends Helia {
|
|
139
|
+
libp2p: T
|
|
140
|
+
}
|
|
141
|
+
|
|
135
142
|
/**
|
|
136
143
|
* Create and return a Helia node
|
|
137
144
|
*/
|
|
138
|
-
export async function createHelia <T extends Libp2p> (init: HeliaInit<T>): Promise<
|
|
139
|
-
export async function createHelia (init?: HeliaInit<Libp2p<DefaultLibp2pServices>>): Promise<
|
|
140
|
-
export async function createHelia (init: HeliaInit = {}): Promise<
|
|
145
|
+
export async function createHelia <T extends Libp2p> (init: HeliaInit<T>): Promise<HeliaLibp2p<T>>
|
|
146
|
+
export async function createHelia (init?: HeliaInit<Libp2p<DefaultLibp2pServices>>): Promise<HeliaLibp2p<Libp2p<DefaultLibp2pServices>>>
|
|
147
|
+
export async function createHelia (init: HeliaInit = {}): Promise<HeliaLibp2p> {
|
|
141
148
|
const datastore = init.datastore ?? new MemoryDatastore()
|
|
142
149
|
const blockstore = init.blockstore ?? new MemoryBlockstore()
|
|
143
150
|
|
|
@@ -148,16 +155,29 @@ export async function createHelia (init: HeliaInit = {}): Promise<Helia<unknown>
|
|
|
148
155
|
} else {
|
|
149
156
|
libp2p = await createLibp2p<DefaultLibp2pServices>({
|
|
150
157
|
...init,
|
|
151
|
-
libp2p:
|
|
158
|
+
libp2p: {
|
|
159
|
+
...init.libp2p,
|
|
160
|
+
|
|
161
|
+
// ignore the libp2p start parameter as it should be on the main init
|
|
162
|
+
// object instead
|
|
163
|
+
start: undefined
|
|
164
|
+
},
|
|
152
165
|
datastore
|
|
153
166
|
})
|
|
154
167
|
}
|
|
155
168
|
|
|
156
|
-
const helia = new
|
|
169
|
+
const helia = new HeliaP2P({
|
|
157
170
|
...init,
|
|
158
171
|
libp2p,
|
|
159
172
|
datastore,
|
|
160
|
-
blockstore
|
|
173
|
+
blockstore,
|
|
174
|
+
blockBrokers: init.blockBrokers ?? [
|
|
175
|
+
trustlessGateway(),
|
|
176
|
+
bitswap()
|
|
177
|
+
],
|
|
178
|
+
routers: [
|
|
179
|
+
libp2pRouting(libp2p)
|
|
180
|
+
]
|
|
161
181
|
})
|
|
162
182
|
|
|
163
183
|
if (init.start !== false) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
|
|
2
1
|
import { noise } from '@chainsafe/libp2p-noise'
|
|
3
2
|
import { yamux } from '@chainsafe/libp2p-yamux'
|
|
4
3
|
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'
|
|
@@ -20,7 +19,6 @@ import * as libp2pInfo from 'libp2p/version'
|
|
|
20
19
|
import { name, version } from '../version.js'
|
|
21
20
|
import { bootstrapConfig } from './bootstrappers.js'
|
|
22
21
|
import type { Libp2pDefaultsOptions } from './libp2p.js'
|
|
23
|
-
import type { PubSub } from '@libp2p/interface'
|
|
24
22
|
import type { Libp2pOptions } from 'libp2p'
|
|
25
23
|
|
|
26
24
|
export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
@@ -31,7 +29,6 @@ export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
|
31
29
|
identify: Identify
|
|
32
30
|
keychain: Keychain
|
|
33
31
|
ping: PingService
|
|
34
|
-
pubsub: PubSub
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
export function libp2pDefaults (options: Libp2pDefaultsOptions = {}): Libp2pOptions<DefaultLibp2pServices> {
|
|
@@ -78,8 +75,7 @@ export function libp2pDefaults (options: Libp2pDefaultsOptions = {}): Libp2pOpti
|
|
|
78
75
|
agentVersion: `${name}/${version} ${libp2pInfo.name}/${libp2pInfo.version} UserAgent=${globalThis.navigator.userAgent}`
|
|
79
76
|
}),
|
|
80
77
|
keychain: keychain(options.keychain),
|
|
81
|
-
ping: ping()
|
|
82
|
-
pubsub: gossipsub()
|
|
78
|
+
ping: ping()
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
81
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
|
|
2
1
|
import { noise } from '@chainsafe/libp2p-noise'
|
|
3
2
|
import { yamux } from '@chainsafe/libp2p-yamux'
|
|
4
3
|
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'
|
|
@@ -22,7 +21,6 @@ import * as libp2pInfo from 'libp2p/version'
|
|
|
22
21
|
import { name, version } from '../version.js'
|
|
23
22
|
import { bootstrapConfig } from './bootstrappers.js'
|
|
24
23
|
import type { Libp2pDefaultsOptions } from './libp2p.js'
|
|
25
|
-
import type { PubSub } from '@libp2p/interface'
|
|
26
24
|
import type { Libp2pOptions } from 'libp2p'
|
|
27
25
|
|
|
28
26
|
export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
@@ -33,7 +31,6 @@ export interface DefaultLibp2pServices extends Record<string, unknown> {
|
|
|
33
31
|
identify: Identify
|
|
34
32
|
keychain: Keychain
|
|
35
33
|
ping: PingService
|
|
36
|
-
pubsub: PubSub
|
|
37
34
|
relay: CircuitRelayService
|
|
38
35
|
upnp: unknown
|
|
39
36
|
}
|
|
@@ -85,7 +82,6 @@ export function libp2pDefaults (options: Libp2pDefaultsOptions = {}): Libp2pOpti
|
|
|
85
82
|
}),
|
|
86
83
|
keychain: keychain(options.keychain),
|
|
87
84
|
ping: ping(),
|
|
88
|
-
pubsub: gossipsub(),
|
|
89
85
|
relay: circuitRelayServer({
|
|
90
86
|
advertise: true
|
|
91
87
|
}),
|