helia 2.0.2 → 2.0.3-0749cbf

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 (62) hide show
  1. package/dist/index.min.js +38 -59
  2. package/dist/src/block-brokers/bitswap-block-broker.d.ts +20 -0
  3. package/dist/src/block-brokers/bitswap-block-broker.d.ts.map +1 -0
  4. package/dist/src/block-brokers/bitswap-block-broker.js +39 -0
  5. package/dist/src/block-brokers/bitswap-block-broker.js.map +1 -0
  6. package/dist/src/block-brokers/index.d.ts +3 -0
  7. package/dist/src/block-brokers/index.d.ts.map +1 -0
  8. package/dist/src/block-brokers/index.js +3 -0
  9. package/dist/src/block-brokers/index.js.map +1 -0
  10. package/dist/src/block-brokers/trustless-gateway-block-broker.d.ts +15 -0
  11. package/dist/src/block-brokers/trustless-gateway-block-broker.d.ts.map +1 -0
  12. package/dist/src/block-brokers/trustless-gateway-block-broker.js +60 -0
  13. package/dist/src/block-brokers/trustless-gateway-block-broker.js.map +1 -0
  14. package/dist/src/helia.d.ts +0 -1
  15. package/dist/src/helia.d.ts.map +1 -1
  16. package/dist/src/helia.js +5 -26
  17. package/dist/src/helia.js.map +1 -1
  18. package/dist/src/index.d.ts +9 -10
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +33 -35
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/storage.d.ts +7 -2
  23. package/dist/src/storage.d.ts.map +1 -1
  24. package/dist/src/storage.js +14 -0
  25. package/dist/src/storage.js.map +1 -1
  26. package/dist/src/utils/default-hashers.d.ts +3 -0
  27. package/dist/src/utils/default-hashers.d.ts.map +1 -0
  28. package/dist/src/utils/default-hashers.js +11 -0
  29. package/dist/src/utils/default-hashers.js.map +1 -0
  30. package/dist/src/utils/libp2p-defaults.browser.d.ts +7 -3
  31. package/dist/src/utils/libp2p-defaults.browser.d.ts.map +1 -1
  32. package/dist/src/utils/libp2p-defaults.browser.js +7 -5
  33. package/dist/src/utils/libp2p-defaults.browser.js.map +1 -1
  34. package/dist/src/utils/libp2p-defaults.d.ts +7 -3
  35. package/dist/src/utils/libp2p-defaults.d.ts.map +1 -1
  36. package/dist/src/utils/libp2p-defaults.js +11 -5
  37. package/dist/src/utils/libp2p-defaults.js.map +1 -1
  38. package/dist/src/utils/libp2p.d.ts +2 -8
  39. package/dist/src/utils/libp2p.d.ts.map +1 -1
  40. package/dist/src/utils/libp2p.js.map +1 -1
  41. package/dist/src/utils/networked-storage.d.ts +16 -9
  42. package/dist/src/utils/networked-storage.d.ts.map +1 -1
  43. package/dist/src/utils/networked-storage.js +93 -15
  44. package/dist/src/utils/networked-storage.js.map +1 -1
  45. package/dist/src/version.d.ts +1 -1
  46. package/dist/src/version.d.ts.map +1 -1
  47. package/dist/src/version.js +1 -1
  48. package/dist/src/version.js.map +1 -1
  49. package/package.json +30 -4
  50. package/src/block-brokers/bitswap-block-broker.ts +58 -0
  51. package/src/block-brokers/index.ts +2 -0
  52. package/src/block-brokers/trustless-gateway-block-broker.ts +78 -0
  53. package/src/helia.ts +5 -33
  54. package/src/index.ts +50 -41
  55. package/src/storage.ts +19 -2
  56. package/src/utils/default-hashers.ts +12 -0
  57. package/src/utils/libp2p-defaults.browser.ts +18 -7
  58. package/src/utils/libp2p-defaults.ts +24 -7
  59. package/src/utils/libp2p.ts +2 -5
  60. package/src/utils/networked-storage.ts +116 -23
  61. package/src/version.ts +1 -1
  62. package/dist/typedoc-urls.json +0 -8
@@ -0,0 +1,20 @@
1
+ import type { BlockAnnouncer, BlockRetriever } from '@helia/interface/blocks';
2
+ import type { Libp2p } from '@libp2p/interface';
3
+ import type { Startable } from '@libp2p/interface/startable';
4
+ import type { Blockstore } from 'interface-blockstore';
5
+ import type { AbortOptions } from 'interface-store';
6
+ import type { BitswapNotifyProgressEvents, BitswapWantBlockProgressEvents } from 'ipfs-bitswap';
7
+ import type { CID } from 'multiformats/cid';
8
+ import type { MultihashHasher } from 'multiformats/hashes/interface';
9
+ import type { ProgressOptions } from 'progress-events';
10
+ export declare class BitswapBlockBroker implements BlockAnnouncer<ProgressOptions<BitswapNotifyProgressEvents>>, BlockRetriever<ProgressOptions<BitswapWantBlockProgressEvents>>, Startable {
11
+ private readonly bitswap;
12
+ private started;
13
+ constructor(libp2p: Libp2p, blockstore: Blockstore, hashers: MultihashHasher[]);
14
+ isStarted(): boolean;
15
+ start(): Promise<void>;
16
+ stop(): Promise<void>;
17
+ announce(cid: CID, block: Uint8Array, options?: ProgressOptions<BitswapNotifyProgressEvents>): void;
18
+ retrieve(cid: CID, options?: AbortOptions & ProgressOptions<BitswapWantBlockProgressEvents>): Promise<Uint8Array>;
19
+ }
20
+ //# sourceMappingURL=bitswap-block-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitswap-block-broker.d.ts","sourceRoot":"","sources":["../../../src/block-brokers/bitswap-block-broker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAW,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AACxG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,qBAAa,kBAAmB,YAAW,cAAc,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC,EAAE,cAAc,CACvH,eAAe,CAAC,8BAA8B,CAAC,CAC9C,EAAE,SAAS;IACV,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE;IAmB/E,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAKvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,2BAA2B,CAAC,GAAG,IAAI;IAI9F,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC,8BAA8B,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAGzH"}
@@ -0,0 +1,39 @@
1
+ import { createBitswap } from 'ipfs-bitswap';
2
+ export class BitswapBlockBroker {
3
+ bitswap;
4
+ started;
5
+ constructor(libp2p, blockstore, hashers) {
6
+ this.bitswap = createBitswap(libp2p, blockstore, {
7
+ hashLoader: {
8
+ getHasher: async (codecOrName) => {
9
+ const hasher = hashers.find(hasher => {
10
+ return hasher.code === codecOrName || hasher.name === codecOrName;
11
+ });
12
+ if (hasher != null) {
13
+ return hasher;
14
+ }
15
+ throw new Error(`Could not load hasher for code/name "${codecOrName}"`);
16
+ }
17
+ }
18
+ });
19
+ this.started = false;
20
+ }
21
+ isStarted() {
22
+ return this.started;
23
+ }
24
+ async start() {
25
+ await this.bitswap.start();
26
+ this.started = true;
27
+ }
28
+ async stop() {
29
+ await this.bitswap.stop();
30
+ this.started = false;
31
+ }
32
+ announce(cid, block, options) {
33
+ this.bitswap.notify(cid, block, options);
34
+ }
35
+ async retrieve(cid, options) {
36
+ return this.bitswap.want(cid, options);
37
+ }
38
+ }
39
+ //# sourceMappingURL=bitswap-block-broker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitswap-block-broker.js","sourceRoot":"","sources":["../../../src/block-brokers/bitswap-block-broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAW5C,MAAM,OAAO,kBAAkB;IAGZ,OAAO,CAAS;IACzB,OAAO,CAAS;IAExB,YAAa,MAAc,EAAE,UAAsB,EAAE,OAA0B;QAC7E,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE;YAC/C,UAAU,EAAE;gBACV,SAAS,EAAE,KAAK,EAAE,WAA4B,EAAoC,EAAE;oBAClF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACnC,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAA;oBACnE,CAAC,CAAC,CAAA;oBAEF,IAAI,MAAM,IAAI,IAAI,EAAE;wBAClB,OAAO,MAAM,CAAA;qBACd;oBAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,WAAW,GAAG,CAAC,CAAA;gBACzE,CAAC;aACF;SACF,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,QAAQ,CAAE,GAAQ,EAAE,KAAiB,EAAE,OAAsD;QAC3F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,GAAQ,EAAE,OAAwE;QAChG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export { BitswapBlockBroker } from './bitswap-block-broker.js';
2
+ export { TrustedGatewayBlockBroker } from './trustless-gateway-block-broker.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/block-brokers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { BitswapBlockBroker } from './bitswap-block-broker.js';
2
+ export { TrustedGatewayBlockBroker } from './trustless-gateway-block-broker.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/block-brokers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { BlockRetriever } from '@helia/interface/blocks';
2
+ import type { AbortOptions } from 'interface-store';
3
+ import type { CID } from 'multiformats/cid';
4
+ import type { ProgressEvent, ProgressOptions } from 'progress-events';
5
+ export type TrustlessGatewayGetBlockProgressEvents = ProgressEvent<'trustless-gateway:get-block:fetch', URL>;
6
+ /**
7
+ * A class that accepts a list of trustless gateways that are queried
8
+ * for blocks.
9
+ */
10
+ export declare class TrustedGatewayBlockBroker implements BlockRetriever<ProgressOptions<TrustlessGatewayGetBlockProgressEvents>> {
11
+ private readonly gateways;
12
+ constructor(urls: Array<string | URL>);
13
+ retrieve(cid: CID, options?: AbortOptions & ProgressOptions<TrustlessGatewayGetBlockProgressEvents>): Promise<Uint8Array>;
14
+ }
15
+ //# sourceMappingURL=trustless-gateway-block-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trustless-gateway-block-broker.d.ts","sourceRoot":"","sources":["../../../src/block-brokers/trustless-gateway-block-broker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIrE,MAAM,MAAM,sCAAsC,GAChD,aAAa,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;AAEzD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAChE,eAAe,CAAC,sCAAsC,CAAC,CACtD;IACC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAO;gBAEnB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IAIhC,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,sCAAsC,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAiBrI"}
@@ -0,0 +1,60 @@
1
+ import { logger } from '@libp2p/logger';
2
+ const log = logger('helia:trustless-gateway-block-provider');
3
+ /**
4
+ * A class that accepts a list of trustless gateways that are queried
5
+ * for blocks.
6
+ */
7
+ export class TrustedGatewayBlockBroker {
8
+ gateways;
9
+ constructor(urls) {
10
+ this.gateways = urls.map(url => new URL(url.toString()));
11
+ }
12
+ async retrieve(cid, options = {}) {
13
+ // choose a gateway
14
+ const url = this.gateways[Math.floor(Math.random() * this.gateways.length)];
15
+ log('getting block for %c from %s', cid, url);
16
+ try {
17
+ const block = await getRawBlockFromGateway(url, cid, options.signal);
18
+ log('got block for %c from %s', cid, url);
19
+ return block;
20
+ }
21
+ catch (err) {
22
+ log.error('failed to get block for %c from %s', cid, url, err);
23
+ throw err;
24
+ }
25
+ }
26
+ }
27
+ async function getRawBlockFromGateway(url, cid, signal) {
28
+ const gwUrl = new URL(url);
29
+ gwUrl.pathname = `/ipfs/${cid.toString()}`;
30
+ // necessary as not every gateway supports dag-cbor, but every should support
31
+ // sending raw block as-is
32
+ gwUrl.search = '?format=raw';
33
+ if (signal?.aborted === true) {
34
+ throw new Error(`Signal to fetch raw block for CID ${cid} from gateway ${gwUrl.toString()} was aborted prior to fetch`);
35
+ }
36
+ try {
37
+ const res = await fetch(gwUrl.toString(), {
38
+ signal,
39
+ headers: {
40
+ // also set header, just in case ?format= is filtered out by some
41
+ // reverse proxy
42
+ Accept: 'application/vnd.ipld.raw'
43
+ },
44
+ cache: 'force-cache'
45
+ });
46
+ if (!res.ok) {
47
+ throw new Error(`unable to fetch raw block for CID ${cid} from gateway ${gwUrl.toString()}`);
48
+ }
49
+ return new Uint8Array(await res.arrayBuffer());
50
+ }
51
+ catch (cause) {
52
+ // @ts-expect-error - TS thinks signal?.aborted can only be false now
53
+ // because it was checked for true above.
54
+ if (signal?.aborted === true) {
55
+ throw new Error(`fetching raw block for CID ${cid} from gateway ${gwUrl.toString()} was aborted`);
56
+ }
57
+ throw new Error(`unable to fetch raw block for CID ${cid}`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=trustless-gateway-block-broker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trustless-gateway-block-broker.js","sourceRoot":"","sources":["../../../src/block-brokers/trustless-gateway-block-broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAMvC,MAAM,GAAG,GAAG,MAAM,CAAC,wCAAwC,CAAC,CAAA;AAK5D;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IAGnB,QAAQ,CAAO;IAEhC,YAAa,IAAyB;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,GAAQ,EAAE,UAAkF,EAAE;QAC5G,mBAAmB;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAE3E,GAAG,CAAC,8BAA8B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAE7C,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YACpE,GAAG,CAAC,0BAA0B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAEzC,OAAO,KAAK,CAAA;SACb;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAE9D,MAAM,GAAG,CAAA;SACV;IACH,CAAC;CACF;AAED,KAAK,UAAU,sBAAsB,CAAE,GAAQ,EAAE,GAAQ,EAAE,MAAoB;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IAE1C,6EAA6E;IAC7E,0BAA0B;IAC1B,KAAK,CAAC,MAAM,GAAG,aAAa,CAAA;IAE5B,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,iBAAiB,KAAK,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAA;KACxH;IAED,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM;YACN,OAAO,EAAE;gBACP,iEAAiE;gBACjE,gBAAgB;gBAChB,MAAM,EAAE,0BAA0B;aACnC;YACD,KAAK,EAAE,aAAa;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,iBAAiB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;SAC7F;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;KAC/C;IAAC,OAAO,KAAK,EAAE;QACd,qEAAqE;QACrE,yCAAyC;QACzC,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,iBAAiB,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;SAClG;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAA;KAC5D;AACH,CAAC"}
@@ -11,7 +11,6 @@ interface HeliaImplInit<T extends Libp2p = Libp2p> extends HeliaInit<T> {
11
11
  datastore: Datastore;
12
12
  }
13
13
  export declare class HeliaImpl implements Helia {
14
- #private;
15
14
  libp2p: Libp2p;
16
15
  blockstore: BlockStorage;
17
16
  datastore: Datastore;
@@ -1 +1 @@
1
- {"version":3,"file":"helia.d.ts","sourceRoot":"","sources":["../../src/helia.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,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;AAMpD,UAAU,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,CAAC,CAAA;IACT,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,SAAU,YAAW,KAAK;;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,YAAY,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,IAAI,CAAA;gBAIJ,IAAI,EAAE,aAAa;IAqC1B,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAOvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAKtB,EAAE,CAAE,OAAO,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BlD"}
1
+ {"version":3,"file":"helia.d.ts","sourceRoot":"","sources":["../../src/helia.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,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;AAKpD,UAAU,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,CAAC,CAAA;IACT,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,SAAU,YAAW,KAAK;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,YAAY,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,IAAI,CAAA;gBAEJ,IAAI,EAAE,aAAa;IAe1B,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAMvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAKtB,EAAE,CAAE,OAAO,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BlD"}
package/dist/src/helia.js CHANGED
@@ -1,8 +1,6 @@
1
+ import { start, stop } from '@libp2p/interface/startable';
1
2
  import { logger } from '@libp2p/logger';
2
- import { createBitswap } from 'ipfs-bitswap';
3
3
  import drain from 'it-drain';
4
- import { identity } from 'multiformats/hashes/identity';
5
- import { sha256, sha512 } from 'multiformats/hashes/sha2';
6
4
  import { CustomProgressEvent } from 'progress-events';
7
5
  import { PinsImpl } from './pins.js';
8
6
  import { BlockStorage } from './storage.js';
@@ -14,29 +12,10 @@ export class HeliaImpl {
14
12
  blockstore;
15
13
  datastore;
16
14
  pins;
17
- #bitswap;
18
15
  constructor(init) {
19
- const hashers = [
20
- sha256,
21
- sha512,
22
- identity,
23
- ...(init.hashers ?? [])
24
- ];
25
- this.#bitswap = createBitswap(init.libp2p, init.blockstore, {
26
- hashLoader: {
27
- getHasher: async (codecOrName) => {
28
- const hasher = hashers.find(hasher => {
29
- return hasher.code === codecOrName || hasher.name === codecOrName;
30
- });
31
- if (hasher != null) {
32
- return hasher;
33
- }
34
- throw new Error(`Could not load hasher for code/name "${codecOrName}"`);
35
- }
36
- }
37
- });
38
16
  const networkedStorage = new NetworkedStorage(init.blockstore, {
39
- bitswap: this.#bitswap
17
+ blockBrokers: init.blockBrokers,
18
+ hashers: init.hashers
40
19
  });
41
20
  this.pins = new PinsImpl(init.datastore, networkedStorage, init.dagWalkers ?? []);
42
21
  this.libp2p = init.libp2p;
@@ -47,12 +26,12 @@ export class HeliaImpl {
47
26
  }
48
27
  async start() {
49
28
  await assertDatastoreVersionIsCurrent(this.datastore);
50
- await this.#bitswap?.start();
29
+ await start(this.blockstore);
51
30
  await this.libp2p.start();
52
31
  }
53
32
  async stop() {
54
33
  await this.libp2p.stop();
55
- await this.#bitswap?.stop();
34
+ await stop(this.blockstore);
56
35
  }
57
36
  async gc(options = {}) {
58
37
  const releaseLock = await this.blockstore.lock.writeLock();
@@ -1 +1 @@
1
- {"version":3,"file":"helia.js","sourceRoot":"","sources":["../../src/helia.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helia.js","sourceRoot":"","sources":["../../src/helia.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,10 @@
20
20
  * fs.cat(CID.parse('bafyFoo'))
21
21
  * ```
22
22
  */
23
+ import type { DefaultLibp2pServices } from './utils/libp2p-defaults.js';
23
24
  import type { Helia } from '@helia/interface';
25
+ import type { BlockBroker } from '@helia/interface/blocks';
24
26
  import type { Libp2p } from '@libp2p/interface';
25
- import type { PubSub } from '@libp2p/interface/pubsub';
26
- import type { DualKadDHT } from '@libp2p/kad-dht';
27
27
  import type { Blockstore } from 'interface-blockstore';
28
28
  import type { Datastore } from 'interface-datastore';
29
29
  import type { Libp2pOptions } from 'libp2p';
@@ -37,7 +37,7 @@ export * from '@helia/interface/pins';
37
37
  */
38
38
  export interface DAGWalker {
39
39
  codec: number;
40
- walk: (block: Uint8Array) => AsyncGenerator<CID, void, undefined>;
40
+ walk(block: Uint8Array): AsyncGenerator<CID, void, undefined>;
41
41
  }
42
42
  /**
43
43
  * Options used to create a Helia node.
@@ -73,6 +73,11 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
73
73
  * encoded within that block.
74
74
  */
75
75
  dagWalkers?: DAGWalker[];
76
+ /**
77
+ * A list of strategies used to fetch blocks when they are not present in
78
+ * the local blockstore
79
+ */
80
+ blockBrokers?: BlockBroker[];
76
81
  /**
77
82
  * Pass `false` to not start the Helia node
78
83
  */
@@ -98,11 +103,5 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
98
103
  * Create and return a Helia node
99
104
  */
100
105
  export declare function createHelia<T extends Libp2p>(init: HeliaInit<T>): Promise<Helia<T>>;
101
- export declare function createHelia(init?: HeliaInit<Libp2p<{
102
- dht: DualKadDHT;
103
- pubsub: PubSub;
104
- }>>): Promise<Helia<Libp2p<{
105
- dht: DualKadDHT;
106
- pubsub: PubSub;
107
- }>>>;
106
+ export declare function createHelia(init?: HeliaInit<Libp2p<DefaultLibp2pServices>>): Promise<Helia<Libp2p<DefaultLibp2pServices>>>;
108
107
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,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;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AAIrC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAClD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,aAAa,CAAA;IAE1B;;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;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAE,CAAC,SAAS,MAAM,EAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,wBAAsB,WAAW,CAAE,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,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,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,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;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AAIrC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAClD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,aAAa,CAAA;IAE1B;;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,WAAW,EAAE,CAAA;IAE5B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAmBD;;GAEG;AACH,wBAAsB,WAAW,CAAE,CAAC,SAAS,MAAM,EAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,wBAAsB,WAAW,CAAE,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA"}
package/dist/src/index.js CHANGED
@@ -23,7 +23,9 @@
23
23
  import { logger } from '@libp2p/logger';
24
24
  import { MemoryBlockstore } from 'blockstore-core';
25
25
  import { MemoryDatastore } from 'datastore-core';
26
+ import { BitswapBlockBroker, TrustedGatewayBlockBroker } from './block-brokers/index.js';
26
27
  import { HeliaImpl } from './helia.js';
28
+ import { defaultHashers } from './utils/default-hashers.js';
27
29
  import { createLibp2p } from './utils/libp2p.js';
28
30
  import { name, version } from './version.js';
29
31
  // re-export interface types so people don't have to depend on @helia/interface
@@ -32,6 +34,18 @@ export * from '@helia/interface';
32
34
  export * from '@helia/interface/blocks';
33
35
  export * from '@helia/interface/pins';
34
36
  const log = logger('helia');
37
+ const DEFAULT_TRUSTLESS_GATEWAYS = [
38
+ // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/
39
+ 'https://dweb.link',
40
+ // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/
41
+ 'https://cf-ipfs.com',
42
+ // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/
43
+ 'https://4everland.io',
44
+ // 2023-10-03: IPNS, Origin, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/
45
+ 'https://w3s.link',
46
+ // 2023-10-03: IPNS, and Block/CAR support from https://ipfs-public-gateway-checker.on.fleek.co/
47
+ 'https://cloudflare-ipfs.com'
48
+ ];
35
49
  export async function createHelia(init = {}) {
36
50
  const datastore = init.datastore ?? new MemoryDatastore();
37
51
  const blockstore = init.blockstore ?? new MemoryBlockstore();
@@ -42,27 +56,24 @@ export async function createHelia(init = {}) {
42
56
  else {
43
57
  libp2p = await createLibp2p(datastore, init.libp2p);
44
58
  }
59
+ const hashers = defaultHashers(init.hashers);
60
+ const blockBrokers = init.blockBrokers ?? [
61
+ new BitswapBlockBroker(libp2p, blockstore, hashers),
62
+ new TrustedGatewayBlockBroker(DEFAULT_TRUSTLESS_GATEWAYS)
63
+ ];
45
64
  const helia = new HeliaImpl({
46
65
  ...init,
47
66
  datastore,
48
67
  blockstore,
49
- libp2p
68
+ libp2p,
69
+ blockBrokers,
70
+ hashers
50
71
  });
51
72
  if (init.start !== false) {
52
73
  await helia.start();
53
74
  }
54
75
  // add helia to agent version
55
- if (helia.libp2p.isStarted()) {
56
- await addHeliaToAgentVersion(helia);
57
- }
58
- else {
59
- helia.libp2p.addEventListener('start', () => {
60
- addHeliaToAgentVersion(helia)
61
- .catch(err => {
62
- log.error('could not add Helia to agent version', err);
63
- });
64
- });
65
- }
76
+ addHeliaToAgentVersion(helia);
66
77
  return helia;
67
78
  }
68
79
  function isLibp2p(obj) {
@@ -74,31 +85,18 @@ function isLibp2p(obj) {
74
85
  // if these are all functions it's probably a libp2p object
75
86
  return funcs.every(m => typeof obj[m] === 'function');
76
87
  }
77
- async function addHeliaToAgentVersion(helia) {
88
+ function addHeliaToAgentVersion(helia) {
78
89
  // add helia to agent version
79
- const peer = await helia.libp2p.peerStore.get(helia.libp2p.peerId);
80
- const versionBuf = peer.metadata.get('AgentVersion');
81
- if (versionBuf == null) {
82
- // identify was not configured
83
- return;
84
- }
85
- let versionStr = new TextDecoder().decode(versionBuf);
86
- if (versionStr.match(/js-libp2p\/\d+\.\d+\.\d+\sUserAgent=/) == null) {
87
- // the user changed the agent version
88
- return;
89
- }
90
- if (versionStr.includes(name)) {
91
- // update version name
92
- versionStr = `${name}/${version} ${versionStr.split(' ').slice(1).join(' ')}`;
90
+ try {
91
+ const existingAgentVersion = helia.libp2p.services.identify.host.agentVersion;
92
+ if (existingAgentVersion.match(/js-libp2p\/\d+\.\d+\.\d+\sUserAgent=/) == null) {
93
+ // the user changed the agent version
94
+ return;
95
+ }
96
+ helia.libp2p.services.identify.host.agentVersion = `${name}/${version} ${helia.libp2p.services.identify.host.agentVersion}`;
93
97
  }
94
- else {
95
- // just prepend version name
96
- versionStr = `${name}/${version} ${versionStr}`;
98
+ catch (err) {
99
+ log.error('could not add Helia to agent version', err);
97
100
  }
98
- await helia.libp2p.peerStore.merge(helia.libp2p.peerId, {
99
- metadata: {
100
- AgentVersion: new TextEncoder().encode(versionStr)
101
- }
102
- });
103
101
  }
104
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type Startable } from '@libp2p/interface/startable';
1
2
  import type { Blocks, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions } from '@helia/interface/blocks';
2
3
  import type { Pins } from '@helia/interface/pins';
3
4
  import type { AbortOptions } from '@libp2p/interface';
@@ -10,21 +11,25 @@ export interface BlockStorageInit {
10
11
  holdGcLock?: boolean;
11
12
  }
12
13
  export interface GetOptions extends AbortOptions {
13
- progress?: (evt: Event) => void;
14
+ progress?(evt: Event): void;
14
15
  }
15
16
  /**
16
17
  * BlockStorage is a hybrid blockstore that puts/gets blocks from a configured
17
18
  * blockstore (that may be on disk, s3, or something else). If the blocks are
18
19
  * not present Bitswap will be used to fetch them from network peers.
19
20
  */
20
- export declare class BlockStorage implements Blocks {
21
+ export declare class BlockStorage implements Blocks, Startable {
21
22
  lock: Mortice;
22
23
  private readonly child;
23
24
  private readonly pins;
25
+ private started;
24
26
  /**
25
27
  * Create a new BlockStorage
26
28
  */
27
29
  constructor(blockstore: Blockstore, pins: Pins, options?: BlockStorageInit);
30
+ isStarted(): boolean;
31
+ start(): Promise<void>;
32
+ stop(): Promise<void>;
28
33
  unwrap(): Blockstore;
29
34
  /**
30
35
  * Put a block to the underlying datastore
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/Q,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;CAChC;AAED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,MAAM;IAClC,IAAI,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAE3B;;OAEG;gBACU,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,gBAAqB;IAQ/E,MAAM,IAAK,UAAU;IAIrB;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAU3H;;OAEG;IACK,OAAO,CAAE,MAAM,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,EAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,2BAA2B,CAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAUvK;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAiB,GAAG,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUnI;;OAEG;IACK,OAAO,CAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,GAAE,iBAAiB,GAAG,YAAY,GAAG,eAAe,CAAC,2BAA2B,CAAM,GAAG,aAAa,CAAC,IAAI,CAAC;IAU9J;;OAEG;IACG,MAAM,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,yBAAyB,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/G;;OAEG;IACK,UAAU,CAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,8BAA8B,CAAM,GAAG,aAAa,CAAC,GAAG,CAAC;IAoBzI,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1D,MAAM,CAAE,OAAO,GAAE,YAAY,GAAG,eAAe,CAAC,0BAA0B,CAAM,GAAG,aAAa,CAAC,IAAI,CAAC;CAS/G"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { start, stop } from '@libp2p/interface/startable';
1
2
  import createMortice from 'mortice';
2
3
  /**
3
4
  * BlockStorage is a hybrid blockstore that puts/gets blocks from a configured
@@ -8,6 +9,7 @@ export class BlockStorage {
8
9
  lock;
9
10
  child;
10
11
  pins;
12
+ started;
11
13
  /**
12
14
  * Create a new BlockStorage
13
15
  */
@@ -17,6 +19,18 @@ export class BlockStorage {
17
19
  this.lock = createMortice({
18
20
  singleProcess: options.holdGcLock
19
21
  });
22
+ this.started = false;
23
+ }
24
+ isStarted() {
25
+ return this.started;
26
+ }
27
+ async start() {
28
+ await start(this.child);
29
+ this.started = true;
30
+ }
31
+ async stop() {
32
+ await stop(this.child);
33
+ this.started = false;
20
34
  }
21
35
  unwrap() {
22
36
  return this.child;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MultihashHasher } from 'multiformats/hashes/interface';
2
+ export declare function defaultHashers(hashers?: MultihashHasher[]): MultihashHasher[];
3
+ //# sourceMappingURL=default-hashers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-hashers.d.ts","sourceRoot":"","sources":["../../../src/utils/default-hashers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,wBAAgB,cAAc,CAAE,OAAO,GAAE,eAAe,EAAO,GAAG,eAAe,EAAE,CAOlF"}
@@ -0,0 +1,11 @@
1
+ import { identity } from 'multiformats/hashes/identity';
2
+ import { sha256, sha512 } from 'multiformats/hashes/sha2';
3
+ export function defaultHashers(hashers = []) {
4
+ return [
5
+ sha256,
6
+ sha512,
7
+ identity,
8
+ ...hashers
9
+ ];
10
+ }
11
+ //# sourceMappingURL=default-hashers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-hashers.js","sourceRoot":"","sources":["../../../src/utils/default-hashers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAGzD,MAAM,UAAU,cAAc,CAAE,UAA6B,EAAE;IAC7D,OAAO;QACL,MAAM;QACN,MAAM;QACN,QAAQ;QACR,GAAG,OAAO;KACX,CAAA;AACH,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import { type DualKadDHT } from '@libp2p/kad-dht';
2
+ import { type IdentifyService } from 'libp2p/identify';
3
+ import { type PingService } from 'libp2p/ping';
2
4
  import type { PubSub } from '@libp2p/interface/pubsub';
3
5
  import type { Libp2pOptions } from 'libp2p';
4
- export declare function libp2pDefaults(): Libp2pOptions<{
6
+ export interface DefaultLibp2pServices extends Record<string, unknown> {
5
7
  dht: DualKadDHT;
6
8
  pubsub: PubSub;
7
- identify: unknown;
9
+ identify: IdentifyService;
8
10
  autoNAT: unknown;
9
11
  dcutr: unknown;
10
- }>;
12
+ ping: PingService;
13
+ }
14
+ export declare function libp2pDefaults(): Libp2pOptions<DefaultLibp2pServices>;
11
15
  //# 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":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,iBAAiB,CAAA;AAYzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAgB,cAAc,IAAK,aAAa,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA6CzI"}
1
+ {"version":3,"file":"libp2p-defaults.browser.d.ts","sourceRoot":"","sources":["../../../src/utils/libp2p-defaults.browser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,iBAAiB,CAAA;AAUzD,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,wBAAgB,cAAc,IAAK,aAAa,CAAC,qBAAqB,CAAC,CA8CtE"}