@helia/interface 0.0.0-270bb98 → 0.0.0-7460719
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/src/blocks.d.ts +104 -0
- package/dist/src/blocks.d.ts.map +1 -0
- package/dist/src/blocks.js +2 -0
- package/dist/src/blocks.js.map +1 -0
- package/dist/src/index.d.ts +4 -45
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +7 -4
- package/src/blocks.ts +144 -0
- package/src/index.ts +6 -52
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { AbortOptions } from '@libp2p/interfaces';
|
|
2
|
+
import type { ProgressEvent, ProgressOptions } from 'progress-events';
|
|
3
|
+
import type { CID } from 'multiformats/cid';
|
|
4
|
+
import type { BitswapNotifyProgressEvents, BitswapWantProgressEvents } from 'ipfs-bitswap';
|
|
5
|
+
import type { AwaitIterable } from './index.js';
|
|
6
|
+
export interface Pair {
|
|
7
|
+
cid: CID;
|
|
8
|
+
block: Uint8Array;
|
|
9
|
+
}
|
|
10
|
+
export type PutBlockProgressEvents = ProgressEvent<'blocks:put:duplicate', CID> | ProgressEvent<'blocks:put:bitswap:notify', CID> | ProgressEvent<'blocks:put:blockstore:put', CID> | BitswapNotifyProgressEvents;
|
|
11
|
+
export type PutManyBlocksProgressEvents = ProgressEvent<'blocks:put-many:duplicate', CID> | ProgressEvent<'blocks:put-many:bitswap:notify', CID> | ProgressEvent<'blocks:put-many:blockstore:put-many'> | BitswapNotifyProgressEvents;
|
|
12
|
+
export type GetBlockProgressEvents = ProgressEvent<'blocks:get:bitswap:want', CID> | ProgressEvent<'blocks:get:blockstore:get', CID> | ProgressEvent<'blocks:get:blockstore:put', CID> | BitswapWantProgressEvents;
|
|
13
|
+
export type GetManyBlocksProgressEvents = ProgressEvent<'blocks:get-many:blockstore:get-many'> | ProgressEvent<'blocks:get-many:bitswap:want', CID> | ProgressEvent<'blocks:get-many:blockstore:put', CID> | BitswapWantProgressEvents;
|
|
14
|
+
export type DeleteBlockProgressEvents = ProgressEvent<'blocks:delete:blockstore:delete', CID>;
|
|
15
|
+
export type DeleteManyBlocksProgressEvents = ProgressEvent<'blocks:delete-many:blockstore:delete-many'>;
|
|
16
|
+
export interface Blocks {
|
|
17
|
+
/**
|
|
18
|
+
* Store the passed block under the passed CID
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
*
|
|
22
|
+
* ```js
|
|
23
|
+
* await store.put([{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }])
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions<PutBlockProgressEvents>) => Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Retrieve the value stored under the given key
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```js
|
|
32
|
+
* const value = await store.get(new Key('awesome'))
|
|
33
|
+
* console.log('got content: %s', value.toString('utf8'))
|
|
34
|
+
* // => got content: datastore
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
get: (key: CID, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>) => Promise<Uint8Array>;
|
|
38
|
+
/**
|
|
39
|
+
* Check for the existence of a value for the passed key
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```js
|
|
43
|
+
*const exists = await store.has(new Key('awesome'))
|
|
44
|
+
*
|
|
45
|
+
*if (exists) {
|
|
46
|
+
* console.log('it is there')
|
|
47
|
+
*} else {
|
|
48
|
+
* console.log('it is not there')
|
|
49
|
+
*}
|
|
50
|
+
*```
|
|
51
|
+
*/
|
|
52
|
+
has: (key: CID, options?: AbortOptions) => Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Remove the record for the passed key
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
*
|
|
58
|
+
* ```js
|
|
59
|
+
* await store.delete(new Key('awesome'))
|
|
60
|
+
* console.log('deleted awesome content :(')
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
delete: (key: CID, options?: AbortOptions & ProgressOptions<DeleteBlockProgressEvents>) => Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Store the given key/value pairs
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```js
|
|
69
|
+
* const source = [{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }]
|
|
70
|
+
*
|
|
71
|
+
* for await (const { key, value } of store.putMany(source)) {
|
|
72
|
+
* console.info(`put content for key ${key}`)
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
putMany: (source: AwaitIterable<Pair>, options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>) => AsyncIterable<Pair>;
|
|
77
|
+
/**
|
|
78
|
+
* Retrieve values for the passed keys
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```js
|
|
82
|
+
* for await (const value of store.getMany([new Key('awesome')])) {
|
|
83
|
+
* console.log('got content:', new TextDecoder('utf8').decode(value))
|
|
84
|
+
* // => got content: datastore
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
getMany: (source: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<GetManyBlocksProgressEvents>) => AsyncIterable<Uint8Array>;
|
|
89
|
+
/**
|
|
90
|
+
* Remove values for the passed keys
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
*
|
|
94
|
+
* ```js
|
|
95
|
+
* const source = [new Key('awesome')]
|
|
96
|
+
*
|
|
97
|
+
* for await (const key of store.deleteMany(source)) {
|
|
98
|
+
* console.log(`deleted content with key ${key}`)
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
deleteMany: (source: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>) => AsyncIterable<CID>;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":""}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
import type { Libp2p } from '@libp2p/interface-libp2p';
|
|
17
|
-
import type { Blockstore } from 'interface-blockstore';
|
|
18
17
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
19
18
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
20
|
-
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
21
19
|
import type { Datastore } from 'interface-datastore';
|
|
22
20
|
import type { Pins } from './pins.js';
|
|
23
21
|
import type { ProgressEvent, ProgressOptions } from 'progress-events';
|
|
24
22
|
import type { CID } from 'multiformats/cid';
|
|
23
|
+
import type { Blocks } from './blocks.js';
|
|
24
|
+
export type AwaitIterable<T> = Iterable<T> | AsyncIterable<T>;
|
|
25
25
|
/**
|
|
26
26
|
* The API presented by a Helia node.
|
|
27
27
|
*/
|
|
@@ -33,7 +33,7 @@ export interface Helia {
|
|
|
33
33
|
/**
|
|
34
34
|
* Where the blocks are stored
|
|
35
35
|
*/
|
|
36
|
-
blockstore:
|
|
36
|
+
blockstore: Blocks;
|
|
37
37
|
/**
|
|
38
38
|
* A key/value store
|
|
39
39
|
*/
|
|
@@ -42,21 +42,6 @@ export interface Helia {
|
|
|
42
42
|
* Pinning operations for blocks in the blockstore
|
|
43
43
|
*/
|
|
44
44
|
pins: Pins;
|
|
45
|
-
/**
|
|
46
|
-
* Returns information about this node
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
*
|
|
50
|
-
* ```typescript
|
|
51
|
-
* import { createHelia } from 'helia'
|
|
52
|
-
*
|
|
53
|
-
* const node = await createHelia()
|
|
54
|
-
* const id = await node.info()
|
|
55
|
-
* console.info(id)
|
|
56
|
-
* // { peerId: PeerId(12D3Foo), ... }
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
info: (options?: InfoOptions) => Promise<InfoResponse>;
|
|
60
45
|
/**
|
|
61
46
|
* Starts the Helia node
|
|
62
47
|
*/
|
|
@@ -70,7 +55,7 @@ export interface Helia {
|
|
|
70
55
|
*/
|
|
71
56
|
gc: (options?: GCOptions) => Promise<void>;
|
|
72
57
|
}
|
|
73
|
-
export type GcEvents = ProgressEvent<'helia:gc:deleted', CID>;
|
|
58
|
+
export type GcEvents = ProgressEvent<'helia:gc:deleted', CID> | ProgressEvent<'helia:gc:error', Error>;
|
|
74
59
|
export interface GCOptions extends AbortOptions, ProgressOptions<GcEvents> {
|
|
75
60
|
}
|
|
76
61
|
export interface InfoOptions extends AbortOptions {
|
|
@@ -80,30 +65,4 @@ export interface InfoOptions extends AbortOptions {
|
|
|
80
65
|
*/
|
|
81
66
|
peerId?: PeerId;
|
|
82
67
|
}
|
|
83
|
-
export interface InfoResponse {
|
|
84
|
-
/**
|
|
85
|
-
* The ID of the peer this info is about
|
|
86
|
-
*/
|
|
87
|
-
peerId: PeerId;
|
|
88
|
-
/**
|
|
89
|
-
* The multiaddrs the peer is listening on
|
|
90
|
-
*/
|
|
91
|
-
multiaddrs: Multiaddr[];
|
|
92
|
-
/**
|
|
93
|
-
* The peer's reported agent version
|
|
94
|
-
*/
|
|
95
|
-
agentVersion: string;
|
|
96
|
-
/**
|
|
97
|
-
* The peer's reported protocol version
|
|
98
|
-
*/
|
|
99
|
-
protocolVersion: string;
|
|
100
|
-
/**
|
|
101
|
-
* The protocols the peer supports
|
|
102
|
-
*/
|
|
103
|
-
protocols: string[];
|
|
104
|
-
/**
|
|
105
|
-
* The status of the node
|
|
106
|
-
*/
|
|
107
|
-
status: 'running' | 'stopped';
|
|
108
|
-
}
|
|
109
68
|
//# 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;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;OAEG;IACH,IAAI,EAAE,IAAI,CAAA;IAEV;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzB;;OAEG;IACH,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,MAAM,QAAQ,GAClB,aAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,GACtC,aAAa,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;AAExC,MAAM,WAAW,SAAU,SAAQ,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC;CAEzE;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/interface",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-7460719",
|
|
4
4
|
"description": "The Helia API",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/master/packages/interface#readme",
|
|
@@ -47,6 +47,10 @@
|
|
|
47
47
|
"types": "./dist/src/index.d.ts",
|
|
48
48
|
"import": "./dist/src/index.js"
|
|
49
49
|
},
|
|
50
|
+
"./blocks": {
|
|
51
|
+
"types": "./dist/src/blocks.d.ts",
|
|
52
|
+
"import": "./dist/src/blocks.js"
|
|
53
|
+
},
|
|
50
54
|
"./pins": {
|
|
51
55
|
"types": "./dist/src/pins.d.ts",
|
|
52
56
|
"import": "./dist/src/pins.js"
|
|
@@ -154,9 +158,8 @@
|
|
|
154
158
|
"@libp2p/interface-libp2p": "^1.1.0",
|
|
155
159
|
"@libp2p/interface-peer-id": "^2.0.1",
|
|
156
160
|
"@libp2p/interfaces": "^3.3.1",
|
|
157
|
-
"
|
|
158
|
-
"
|
|
159
|
-
"interface-datastore": "^7.0.3",
|
|
161
|
+
"interface-datastore": "^8.0.0",
|
|
162
|
+
"ipfs-bitswap": "^17.0.0",
|
|
160
163
|
"multiformats": "^11.0.1",
|
|
161
164
|
"progress-events": "^1.0.0"
|
|
162
165
|
},
|
package/src/blocks.ts
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
2
|
+
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
3
|
+
import type { CID } from 'multiformats/cid'
|
|
4
|
+
import type { BitswapNotifyProgressEvents, BitswapWantProgressEvents } from 'ipfs-bitswap'
|
|
5
|
+
import type { AwaitIterable } from './index.js'
|
|
6
|
+
|
|
7
|
+
export interface Pair {
|
|
8
|
+
cid: CID
|
|
9
|
+
block: Uint8Array
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type PutBlockProgressEvents =
|
|
13
|
+
ProgressEvent<'blocks:put:duplicate', CID> |
|
|
14
|
+
ProgressEvent<'blocks:put:bitswap:notify', CID> |
|
|
15
|
+
ProgressEvent<'blocks:put:blockstore:put', CID> |
|
|
16
|
+
BitswapNotifyProgressEvents
|
|
17
|
+
|
|
18
|
+
export type PutManyBlocksProgressEvents =
|
|
19
|
+
ProgressEvent<'blocks:put-many:duplicate', CID> |
|
|
20
|
+
ProgressEvent<'blocks:put-many:bitswap:notify', CID> |
|
|
21
|
+
ProgressEvent<'blocks:put-many:blockstore:put-many'> |
|
|
22
|
+
BitswapNotifyProgressEvents
|
|
23
|
+
|
|
24
|
+
export type GetBlockProgressEvents =
|
|
25
|
+
ProgressEvent<'blocks:get:bitswap:want', CID> |
|
|
26
|
+
ProgressEvent<'blocks:get:blockstore:get', CID> |
|
|
27
|
+
ProgressEvent<'blocks:get:blockstore:put', CID> |
|
|
28
|
+
BitswapWantProgressEvents
|
|
29
|
+
|
|
30
|
+
export type GetManyBlocksProgressEvents =
|
|
31
|
+
ProgressEvent<'blocks:get-many:blockstore:get-many'> |
|
|
32
|
+
ProgressEvent<'blocks:get-many:bitswap:want', CID> |
|
|
33
|
+
ProgressEvent<'blocks:get-many:blockstore:put', CID> |
|
|
34
|
+
BitswapWantProgressEvents
|
|
35
|
+
|
|
36
|
+
export type DeleteBlockProgressEvents =
|
|
37
|
+
ProgressEvent<'blocks:delete:blockstore:delete', CID>
|
|
38
|
+
|
|
39
|
+
export type DeleteManyBlocksProgressEvents =
|
|
40
|
+
ProgressEvent<'blocks:delete-many:blockstore:delete-many'>
|
|
41
|
+
|
|
42
|
+
export interface Blocks {
|
|
43
|
+
/**
|
|
44
|
+
* Store the passed block under the passed CID
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
*
|
|
48
|
+
* ```js
|
|
49
|
+
* await store.put([{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }])
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions<PutBlockProgressEvents>) => Promise<void>
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Retrieve the value stored under the given key
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```js
|
|
59
|
+
* const value = await store.get(new Key('awesome'))
|
|
60
|
+
* console.log('got content: %s', value.toString('utf8'))
|
|
61
|
+
* // => got content: datastore
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
get: (key: CID, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>) => Promise<Uint8Array>
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Check for the existence of a value for the passed key
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```js
|
|
71
|
+
*const exists = await store.has(new Key('awesome'))
|
|
72
|
+
*
|
|
73
|
+
*if (exists) {
|
|
74
|
+
* console.log('it is there')
|
|
75
|
+
*} else {
|
|
76
|
+
* console.log('it is not there')
|
|
77
|
+
*}
|
|
78
|
+
*```
|
|
79
|
+
*/
|
|
80
|
+
has: (key: CID, options?: AbortOptions) => Promise<boolean>
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Remove the record for the passed key
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
*
|
|
87
|
+
* ```js
|
|
88
|
+
* await store.delete(new Key('awesome'))
|
|
89
|
+
* console.log('deleted awesome content :(')
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
delete: (key: CID, options?: AbortOptions & ProgressOptions<DeleteBlockProgressEvents>) => Promise<void>
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Store the given key/value pairs
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```js
|
|
99
|
+
* const source = [{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }]
|
|
100
|
+
*
|
|
101
|
+
* for await (const { key, value } of store.putMany(source)) {
|
|
102
|
+
* console.info(`put content for key ${key}`)
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
putMany: (
|
|
107
|
+
source: AwaitIterable<Pair>,
|
|
108
|
+
options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>
|
|
109
|
+
) => AsyncIterable<Pair>
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Retrieve values for the passed keys
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```js
|
|
116
|
+
* for await (const value of store.getMany([new Key('awesome')])) {
|
|
117
|
+
* console.log('got content:', new TextDecoder('utf8').decode(value))
|
|
118
|
+
* // => got content: datastore
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
getMany: (
|
|
123
|
+
source: AwaitIterable<CID>,
|
|
124
|
+
options?: AbortOptions & ProgressOptions<GetManyBlocksProgressEvents>
|
|
125
|
+
) => AsyncIterable<Uint8Array>
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Remove values for the passed keys
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
*
|
|
132
|
+
* ```js
|
|
133
|
+
* const source = [new Key('awesome')]
|
|
134
|
+
*
|
|
135
|
+
* for await (const key of store.deleteMany(source)) {
|
|
136
|
+
* console.log(`deleted content with key ${key}`)
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
deleteMany: (
|
|
141
|
+
source: AwaitIterable<CID>,
|
|
142
|
+
options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>
|
|
143
|
+
) => AsyncIterable<CID>
|
|
144
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import type { Libp2p } from '@libp2p/interface-libp2p'
|
|
18
|
-
import type { Blockstore } from 'interface-blockstore'
|
|
19
18
|
import type { AbortOptions } from '@libp2p/interfaces'
|
|
20
19
|
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
21
|
-
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
22
20
|
import type { Datastore } from 'interface-datastore'
|
|
23
21
|
import type { Pins } from './pins.js'
|
|
24
22
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
25
23
|
import type { CID } from 'multiformats/cid'
|
|
24
|
+
import type { Blocks } from './blocks.js'
|
|
25
|
+
|
|
26
|
+
export type AwaitIterable<T> = Iterable<T> | AsyncIterable<T>
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* The API presented by a Helia node.
|
|
@@ -36,7 +37,7 @@ export interface Helia {
|
|
|
36
37
|
/**
|
|
37
38
|
* Where the blocks are stored
|
|
38
39
|
*/
|
|
39
|
-
blockstore:
|
|
40
|
+
blockstore: Blocks
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
43
|
* A key/value store
|
|
@@ -48,22 +49,6 @@ export interface Helia {
|
|
|
48
49
|
*/
|
|
49
50
|
pins: Pins
|
|
50
51
|
|
|
51
|
-
/**
|
|
52
|
-
* Returns information about this node
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
*
|
|
56
|
-
* ```typescript
|
|
57
|
-
* import { createHelia } from 'helia'
|
|
58
|
-
*
|
|
59
|
-
* const node = await createHelia()
|
|
60
|
-
* const id = await node.info()
|
|
61
|
-
* console.info(id)
|
|
62
|
-
* // { peerId: PeerId(12D3Foo), ... }
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
info: (options?: InfoOptions) => Promise<InfoResponse>
|
|
66
|
-
|
|
67
52
|
/**
|
|
68
53
|
* Starts the Helia node
|
|
69
54
|
*/
|
|
@@ -81,7 +66,8 @@ export interface Helia {
|
|
|
81
66
|
}
|
|
82
67
|
|
|
83
68
|
export type GcEvents =
|
|
84
|
-
ProgressEvent<'helia:gc:deleted', CID>
|
|
69
|
+
ProgressEvent<'helia:gc:deleted', CID> |
|
|
70
|
+
ProgressEvent<'helia:gc:error', Error>
|
|
85
71
|
|
|
86
72
|
export interface GCOptions extends AbortOptions, ProgressOptions<GcEvents> {
|
|
87
73
|
|
|
@@ -94,35 +80,3 @@ export interface InfoOptions extends AbortOptions {
|
|
|
94
80
|
*/
|
|
95
81
|
peerId?: PeerId
|
|
96
82
|
}
|
|
97
|
-
|
|
98
|
-
export interface InfoResponse {
|
|
99
|
-
/**
|
|
100
|
-
* The ID of the peer this info is about
|
|
101
|
-
*/
|
|
102
|
-
peerId: PeerId
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* The multiaddrs the peer is listening on
|
|
106
|
-
*/
|
|
107
|
-
multiaddrs: Multiaddr[]
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* The peer's reported agent version
|
|
111
|
-
*/
|
|
112
|
-
agentVersion: string
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* The peer's reported protocol version
|
|
116
|
-
*/
|
|
117
|
-
protocolVersion: string
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* The protocols the peer supports
|
|
121
|
-
*/
|
|
122
|
-
protocols: string[]
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* The status of the node
|
|
126
|
-
*/
|
|
127
|
-
status: 'running' | 'stopped'
|
|
128
|
-
}
|