@helia/utils 1.4.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.min.js +2 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/abstract-session.d.ts.map +1 -1
  4. package/dist/src/abstract-session.js +6 -4
  5. package/dist/src/abstract-session.js.map +1 -1
  6. package/dist/src/errors.d.ts +13 -0
  7. package/dist/src/errors.d.ts.map +1 -0
  8. package/dist/src/errors.js +13 -0
  9. package/dist/src/errors.js.map +1 -0
  10. package/dist/src/index.d.ts +3 -1
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +5 -1
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/pins.d.ts.map +1 -1
  15. package/dist/src/pins.js +7 -4
  16. package/dist/src/pins.js.map +1 -1
  17. package/dist/src/routing.d.ts.map +1 -1
  18. package/dist/src/routing.js +1 -2
  19. package/dist/src/routing.js.map +1 -1
  20. package/dist/src/storage.d.ts +6 -9
  21. package/dist/src/storage.d.ts.map +1 -1
  22. package/dist/src/storage.js +5 -4
  23. package/dist/src/storage.js.map +1 -1
  24. package/dist/src/utils/datastore-version.d.ts.map +1 -1
  25. package/dist/src/utils/datastore-version.js +2 -1
  26. package/dist/src/utils/datastore-version.js.map +1 -1
  27. package/dist/src/utils/networked-storage.d.ts +6 -9
  28. package/dist/src/utils/networked-storage.d.ts.map +1 -1
  29. package/dist/src/utils/networked-storage.js +11 -10
  30. package/dist/src/utils/networked-storage.js.map +1 -1
  31. package/package.json +33 -38
  32. package/src/abstract-session.ts +8 -5
  33. package/src/errors.ts +14 -0
  34. package/src/index.ts +6 -2
  35. package/src/pins.ts +7 -4
  36. package/src/routing.ts +1 -2
  37. package/src/storage.ts +10 -9
  38. package/src/utils/datastore-version.ts +2 -1
  39. package/src/utils/networked-storage.ts +20 -19
@@ -31,7 +31,7 @@ class Storage {
31
31
  return cid;
32
32
  }
33
33
  options.onProgress?.(new CustomProgressEvent('blocks:put:providers:notify', cid));
34
- await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
34
+ await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, options)));
35
35
  options.onProgress?.(new CustomProgressEvent('blocks:put:blockstore:put', cid));
36
36
  return this.child.put(cid, block, options);
37
37
  }
@@ -46,9 +46,9 @@ class Storage {
46
46
  }
47
47
  return !has;
48
48
  });
49
- const notifyEach = forEach(missingBlocks, async ({ cid, block }) => {
49
+ const notifyEach = forEach(missingBlocks, async ({ cid }) => {
50
50
  options.onProgress?.(new CustomProgressEvent('blocks:put-many:providers:notify', cid));
51
- await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
51
+ await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, options)));
52
52
  });
53
53
  options.onProgress?.(new CustomProgressEvent('blocks:put-many:blockstore:put-many'));
54
54
  yield* this.child.putMany(notifyEach, options);
@@ -56,7 +56,7 @@ class Storage {
56
56
  /**
57
57
  * Get a block by cid
58
58
  */
59
- async get(cid, options = {}) {
59
+ async *get(cid, options = {}) {
60
60
  if (options.offline !== true && !(await this.child.has(cid, options))) {
61
61
  const hasher = await this.getHasher(cid.multihash.code);
62
62
  // we do not have the block locally, get it from a block provider
@@ -69,11 +69,12 @@ class Storage {
69
69
  await this.child.put(cid, block, options);
70
70
  // notify other block providers of the new block
71
71
  options.onProgress?.(new CustomProgressEvent('blocks:get:providers:notify', cid));
72
- await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
73
- return block;
72
+ await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, options)));
73
+ yield block;
74
+ return;
74
75
  }
75
76
  options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:get', cid));
76
- return this.child.get(cid, options);
77
+ yield* this.child.get(cid, options);
77
78
  }
78
79
  /**
79
80
  * Get multiple blocks back from an (async) iterable of cids
@@ -93,7 +94,7 @@ class Storage {
93
94
  await this.child.put(cid, block, options);
94
95
  // notify other block providers of the new block
95
96
  options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:notify', cid));
96
- await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
97
+ await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, options)));
97
98
  }
98
99
  }));
99
100
  }
@@ -219,11 +220,11 @@ class SessionStorage extends Storage {
219
220
  /**
220
221
  * Get a block by cid
221
222
  */
222
- async get(cid, options = {}) {
223
+ async *get(cid, options = {}) {
223
224
  const signal = anySignal([this.closeController.signal, options.signal]);
224
225
  setMaxListeners(Infinity, signal);
225
226
  try {
226
- return await super.get(cid, {
227
+ yield* super.get(cid, {
227
228
  ...options,
228
229
  signal
229
230
  });
@@ -1 +1 @@
1
- {"version":3,"file":"networked-storage.js","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"networked-storage.js","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/utils",
3
- "version": "1.4.0",
3
+ "version": "2.0.0",
4
4
  "description": "Shared code that implements the Helia API",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/main/packages/utils#readme",
@@ -32,13 +32,6 @@
32
32
  "import": "./dist/src/index.js"
33
33
  }
34
34
  },
35
- "eslintConfig": {
36
- "extends": "ipfs",
37
- "parserOptions": {
38
- "project": true,
39
- "sourceType": "module"
40
- }
41
- },
42
35
  "scripts": {
43
36
  "clean": "aegir clean",
44
37
  "lint": "aegir lint",
@@ -54,43 +47,45 @@
54
47
  "test:electron-main": "aegir test -t electron-main"
55
48
  },
56
49
  "dependencies": {
57
- "@helia/interface": "^5.4.0",
58
- "@ipld/dag-cbor": "^9.2.2",
59
- "@ipld/dag-json": "^10.2.3",
60
- "@ipld/dag-pb": "^4.1.3",
61
- "@libp2p/interface": "^2.5.0",
62
- "@libp2p/keychain": "^5.2.8",
63
- "@libp2p/logger": "^5.1.8",
64
- "@libp2p/utils": "^6.5.1",
65
- "@multiformats/dns": "^1.0.6",
66
- "@multiformats/multiaddr": "^12.4.0",
50
+ "@helia/interface": "^6.0.0",
51
+ "@ipld/dag-cbor": "^9.2.5",
52
+ "@ipld/dag-json": "^10.2.5",
53
+ "@ipld/dag-pb": "^4.1.5",
54
+ "@libp2p/interface": "^3.0.2",
55
+ "@libp2p/keychain": "^6.0.5",
56
+ "@libp2p/logger": "^6.0.5",
57
+ "@libp2p/utils": "^7.0.5",
58
+ "@multiformats/dns": "^1.0.9",
59
+ "@multiformats/multiaddr": "^13.0.1",
67
60
  "any-signal": "^4.1.1",
68
- "blockstore-core": "^5.0.2",
69
- "cborg": "^4.2.6",
70
- "interface-blockstore": "^5.3.1",
71
- "interface-datastore": "^8.3.1",
72
- "interface-store": "^6.0.2",
73
- "it-drain": "^3.0.7",
74
- "it-filter": "^3.1.1",
75
- "it-foreach": "^2.1.1",
76
- "it-merge": "^3.0.5",
77
- "libp2p": "^2.9.0",
78
- "mortice": "^3.0.6",
79
- "multiformats": "^13.3.1",
61
+ "blockstore-core": "^6.0.2",
62
+ "cborg": "^4.2.15",
63
+ "interface-blockstore": "^6.0.1",
64
+ "interface-datastore": "^9.0.2",
65
+ "interface-store": "^7.0.0",
66
+ "it-drain": "^3.0.10",
67
+ "it-filter": "^3.1.4",
68
+ "it-foreach": "^2.1.4",
69
+ "it-merge": "^3.0.12",
70
+ "it-to-buffer": "^4.0.10",
71
+ "libp2p": "^3.0.6",
72
+ "mortice": "^3.3.1",
73
+ "multiformats": "^13.4.1",
80
74
  "p-defer": "^4.0.1",
81
75
  "progress-events": "^1.0.1",
82
76
  "uint8arrays": "^5.1.0"
83
77
  },
84
78
  "devDependencies": {
85
- "@libp2p/crypto": "^5.0.7",
86
- "@libp2p/peer-id": "^5.0.8",
87
- "@types/sinon": "^17.0.3",
88
- "aegir": "^47.0.7",
89
- "datastore-core": "^10.0.2",
79
+ "@libp2p/crypto": "^5.1.12",
80
+ "@libp2p/peer-id": "^6.0.3",
81
+ "@types/sinon": "^17.0.4",
82
+ "aegir": "^47.0.22",
83
+ "datastore-core": "^11.0.2",
90
84
  "delay": "^6.0.0",
91
- "it-all": "^3.0.6",
92
- "race-signal": "^1.1.0",
93
- "sinon": "^20.0.0",
85
+ "it-all": "^3.0.9",
86
+ "it-map": "^3.1.4",
87
+ "race-signal": "^2.0.0",
88
+ "sinon": "^21.0.0",
94
89
  "sinon-ts": "^2.0.0"
95
90
  },
96
91
  "browser": {
@@ -1,12 +1,11 @@
1
1
  import { DEFAULT_SESSION_MIN_PROVIDERS, DEFAULT_SESSION_MAX_PROVIDERS, InsufficientProvidersError } from '@helia/interface'
2
2
  import { AbortError, TypedEventEmitter, setMaxListeners } from '@libp2p/interface'
3
- import { createScalableCuckooFilter } from '@libp2p/utils/filters'
4
- import { Queue } from '@libp2p/utils/queue'
3
+ import { createScalableCuckooFilter, Queue } from '@libp2p/utils'
5
4
  import { base64 } from 'multiformats/bases/base64'
6
5
  import pDefer from 'p-defer'
7
6
  import type { BlockBroker, BlockRetrievalOptions, CreateSessionOptions } from '@helia/interface'
8
7
  import type { AbortOptions, ComponentLogger, Logger, PeerId } from '@libp2p/interface'
9
- import type { Filter } from '@libp2p/utils/filters'
8
+ import type { Filter } from '@libp2p/utils'
10
9
  import type { Multiaddr } from '@multiformats/multiaddr'
11
10
  import type { CID } from 'multiformats/cid'
12
11
  import type { DeferredPromise } from 'p-defer'
@@ -88,7 +87,6 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
88
87
  const queue = new Queue<Uint8Array, { provider: Provider, priority?: number } & AbortOptions>({
89
88
  concurrency: this.maxProviders
90
89
  })
91
- queue.addEventListener('error', () => {})
92
90
  queue.addEventListener('failure', (evt) => {
93
91
  this.log.error('error querying provider %o, evicting from session', evt.detail.job.options.provider, evt.detail.error)
94
92
  this.evict(evt.detail.job.options.provider)
@@ -99,12 +97,17 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
99
97
  deferred.resolve(evt.detail.result)
100
98
  })
101
99
  queue.addEventListener('idle', () => {
102
- if (foundBlock || options.signal?.aborted === true) {
100
+ if (foundBlock) {
103
101
  this.log.trace('session idle, found block')
104
102
  // we either found the block or the user gave up
105
103
  return
106
104
  }
107
105
 
106
+ if (options.signal?.aborted === true) {
107
+ this.log.trace('session idle, signal aborted')
108
+ return
109
+ }
110
+
108
111
  // find more session peers and retry
109
112
  Promise.resolve()
110
113
  .then(async () => {
package/src/errors.ts ADDED
@@ -0,0 +1,14 @@
1
+ export class AlreadyPinnedError extends Error {
2
+ static name = 'AlreadyPinnedError'
3
+ name = 'AlreadyPinnedError'
4
+ }
5
+
6
+ export class BlockPinnedError extends Error {
7
+ static name = 'BlockPinnedError'
8
+ name = 'BlockPinnedError'
9
+ }
10
+
11
+ export class InvalidDatastoreVersion extends Error {
12
+ static name = 'InvalidDatastoreVersion'
13
+ name = 'InvalidDatastoreVersion'
14
+ }
package/src/index.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * modules such as `helia`, `@helia/http`, etc.
6
6
  */
7
7
 
8
- import { contentRoutingSymbol, peerRoutingSymbol, start, stop } from '@libp2p/interface'
8
+ import { contentRoutingSymbol, peerRoutingSymbol, start, stop, TypedEventEmitter } from '@libp2p/interface'
9
9
  import { defaultLogger } from '@libp2p/logger'
10
10
  import { dns } from '@multiformats/dns'
11
11
  import drain from 'it-drain'
@@ -18,7 +18,7 @@ import { getCodec } from './utils/get-codec.js'
18
18
  import { getHasher } from './utils/get-hasher.js'
19
19
  import { NetworkedStorage } from './utils/networked-storage.js'
20
20
  import type { BlockStorageInit } from './storage.js'
21
- import type { Await, CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, Routing } from '@helia/interface'
21
+ import type { Await, CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, HeliaEvents, Routing } from '@helia/interface'
22
22
  import type { BlockBroker } from '@helia/interface/blocks'
23
23
  import type { Pins } from '@helia/interface/pins'
24
24
  import type { ComponentLogger, Libp2p, Logger, Metrics } from '@libp2p/interface'
@@ -187,6 +187,7 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
187
187
  public libp2p: T
188
188
  public blockstore: BlockStorage
189
189
  public datastore: Datastore
190
+ public events: TypedEventEmitter<HeliaEvents<T>>
190
191
  public pins: Pins
191
192
  public logger: ComponentLogger
192
193
  public routing: Routing
@@ -204,6 +205,7 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
204
205
  this.dns = init.dns ?? dns()
205
206
  this.metrics = init.metrics
206
207
  this.libp2p = init.libp2p
208
+ this.events = new TypedEventEmitter<HeliaEvents<T>>()
207
209
 
208
210
  // @ts-expect-error routing is not set
209
211
  const components: Components = {
@@ -261,6 +263,7 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
261
263
  this.routing,
262
264
  this.libp2p
263
265
  )
266
+ this.events.dispatchEvent(new CustomEvent('start', { detail: this }))
264
267
  }
265
268
 
266
269
  async stop (): Promise<void> {
@@ -270,6 +273,7 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
270
273
  this.routing,
271
274
  this.libp2p
272
275
  )
276
+ this.events.dispatchEvent(new CustomEvent('stop', { detail: this }))
273
277
  }
274
278
 
275
279
  async gc (options: GCOptions = {}): Promise<void> {
package/src/pins.ts CHANGED
@@ -1,11 +1,14 @@
1
- import { Queue } from '@libp2p/utils/queue'
1
+ import { InvalidParametersError } from '@libp2p/interface'
2
+ import { Queue } from '@libp2p/utils'
2
3
  import * as cborg from 'cborg'
3
4
  import { Key } from 'interface-datastore'
5
+ import toBuffer from 'it-to-buffer'
4
6
  import { base36 } from 'multiformats/bases/base36'
5
7
  import { createUnsafe } from 'multiformats/block'
6
8
  import { CID } from 'multiformats/cid'
7
9
  import { CustomProgressEvent } from 'progress-events'
8
10
  import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
11
+ import { AlreadyPinnedError } from './errors.ts'
9
12
  import type { CodecLoader } from '@helia/interface'
10
13
  import type { GetBlockProgressEvents } from '@helia/interface/blocks'
11
14
  import type { AddOptions, AddPinEvents, IsPinnedOptions, LsOptions, Pin, Pins, RmOptions } from '@helia/interface/pins'
@@ -75,13 +78,13 @@ export class PinsImpl implements Pins {
75
78
  const pinKey = toDSKey(cid)
76
79
 
77
80
  if (await this.datastore.has(pinKey)) {
78
- throw new Error('Already pinned')
81
+ throw new AlreadyPinnedError('Already pinned')
79
82
  }
80
83
 
81
84
  const depth = Math.round(options.depth ?? Infinity)
82
85
 
83
86
  if (depth < 0) {
84
- throw new Error('Depth must be greater than or equal to 0')
87
+ throw new InvalidParametersError('Depth must be greater than or equal to 0')
85
88
  }
86
89
 
87
90
  // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs
@@ -124,7 +127,7 @@ export class PinsImpl implements Pins {
124
127
  }
125
128
 
126
129
  const codec = await this.getCodec(cid.code)
127
- const bytes = await this.blockstore.get(cid, options)
130
+ const bytes = await toBuffer(this.blockstore.get(cid, options))
128
131
  const block = createUnsafe({ bytes, cid, codec })
129
132
 
130
133
  yield cid
package/src/routing.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { NoRoutersAvailableError } from '@helia/interface'
2
2
  import { NotFoundError, start, stop } from '@libp2p/interface'
3
- import { PeerQueue } from '@libp2p/utils/peer-queue'
3
+ import { PeerQueue } from '@libp2p/utils'
4
4
  import merge from 'it-merge'
5
5
  import type { Routing as RoutingInterface, Provider, RoutingOptions } from '@helia/interface'
6
6
  import type { AbortOptions, ComponentLogger, Logger, Metrics, PeerId, PeerInfo, Startable } from '@libp2p/interface'
@@ -75,7 +75,6 @@ export class Routing implements RoutingInterface, Startable {
75
75
  const queue = new PeerQueue<Provider | null>({
76
76
  concurrency: this.providerLookupConcurrency
77
77
  })
78
- queue.addEventListener('error', () => {})
79
78
 
80
79
  for await (const peer of merge(
81
80
  queue.toGenerator(),
package/src/storage.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { start, stop } from '@libp2p/interface'
2
2
  import createMortice from 'mortice'
3
+ import { BlockPinnedError } from './errors.js'
3
4
  import type { Blocks, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, SessionBlockstore } from '@helia/interface/blocks'
4
5
  import type { Pins } from '@helia/interface/pins'
5
6
  import type { AbortOptions, Startable } from '@libp2p/interface'
6
- import type { Blockstore } from 'interface-blockstore'
7
+ import type { Blockstore, InputPair } from 'interface-blockstore'
7
8
  import type { AwaitIterable } from 'interface-store'
8
9
  import type { Mortice } from 'mortice'
9
10
  import type { CID } from 'multiformats/cid'
@@ -75,7 +76,7 @@ export class BlockStorage implements Blocks, Startable {
75
76
  /**
76
77
  * Put a multiple blocks to the underlying datastore
77
78
  */
78
- async * putMany (blocks: AwaitIterable<{ cid: CID, block: Uint8Array }>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
79
+ async * putMany (blocks: AwaitIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
79
80
  options?.signal?.throwIfAborted()
80
81
  const releaseLock = await this.lock.readLock()
81
82
 
@@ -89,12 +90,12 @@ export class BlockStorage implements Blocks, Startable {
89
90
  /**
90
91
  * Get a block by cid
91
92
  */
92
- async get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): Promise<Uint8Array> {
93
+ async * get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): AsyncGenerator<Uint8Array> {
93
94
  options?.signal?.throwIfAborted()
94
95
  const releaseLock = await this.lock.readLock()
95
96
 
96
97
  try {
97
- return await this.child.get(cid, options)
98
+ yield * this.child.get(cid, options)
98
99
  } finally {
99
100
  releaseLock()
100
101
  }
@@ -103,7 +104,7 @@ export class BlockStorage implements Blocks, Startable {
103
104
  /**
104
105
  * Get multiple blocks back from an (async) iterable of cids
105
106
  */
106
- async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncIterable<Pair> {
107
+ async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
107
108
  options?.signal?.throwIfAborted()
108
109
  const releaseLock = await this.lock.readLock()
109
110
 
@@ -123,7 +124,7 @@ export class BlockStorage implements Blocks, Startable {
123
124
 
124
125
  try {
125
126
  if (await this.pins.isPinned(cid)) {
126
- throw new Error('CID was pinned')
127
+ throw new BlockPinnedError('Block was pinned - please unpin and try again')
127
128
  }
128
129
 
129
130
  await this.child.delete(cid, options)
@@ -135,7 +136,7 @@ export class BlockStorage implements Blocks, Startable {
135
136
  /**
136
137
  * Delete multiple blocks from the blockstore
137
138
  */
138
- async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
139
+ async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
139
140
  options?.signal?.throwIfAborted()
140
141
  const releaseLock = await this.lock.writeLock()
141
142
 
@@ -145,7 +146,7 @@ export class BlockStorage implements Blocks, Startable {
145
146
  yield * this.child.deleteMany((async function * (): AsyncGenerator<CID> {
146
147
  for await (const cid of cids) {
147
148
  if (await storage.pins.isPinned(cid)) {
148
- throw new Error('CID was pinned')
149
+ throw new BlockPinnedError('Block was pinned - please unpin and try again')
149
150
  }
150
151
 
151
152
  yield cid
@@ -167,7 +168,7 @@ export class BlockStorage implements Blocks, Startable {
167
168
  }
168
169
  }
169
170
 
170
- async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AsyncIterable<Pair> {
171
+ async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
171
172
  options?.signal?.throwIfAborted()
172
173
  const releaseLock = await this.lock.readLock()
173
174
 
@@ -1,6 +1,7 @@
1
1
  import { Key } from 'interface-datastore'
2
2
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
3
3
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
4
+ import { InvalidDatastoreVersion } from '../errors.js'
4
5
  import type { Datastore } from 'interface-datastore'
5
6
 
6
7
  const DS_VERSION_KEY = new Key('/version')
@@ -19,6 +20,6 @@ export async function assertDatastoreVersionIsCurrent (datastore: Datastore): Pr
19
20
 
20
21
  if (version !== CURRENT_VERSION) {
21
22
  // TODO: write migrations when we break compatibility - for an example, see https://github.com/ipfs/js-ipfs-repo/tree/master/packages/ipfs-repo-migrations
22
- throw new Error('Unknown datastore version, a datastore migration may be required')
23
+ throw new InvalidDatastoreVersion('Invalid datastore version, a datastore migration may be required')
23
24
  }
24
25
  }
@@ -9,7 +9,7 @@ import { isPromise } from './is-promise.js'
9
9
  import type { HasherLoader } from '@helia/interface'
10
10
  import type { BlockBroker, Blocks, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, BlockRetrievalOptions, CreateSessionOptions, SessionBlockstore } from '@helia/interface/blocks'
11
11
  import type { AbortOptions, ComponentLogger, Logger, LoggerOptions, Startable } from '@libp2p/interface'
12
- import type { Blockstore } from 'interface-blockstore'
12
+ import type { Blockstore, InputPair } from 'interface-blockstore'
13
13
  import type { AwaitIterable } from 'interface-store'
14
14
  import type { CID } from 'multiformats/cid'
15
15
  import type { MultihashDigest, MultihashHasher } from 'multiformats/hashes/interface'
@@ -56,7 +56,7 @@ class Storage implements Blockstore {
56
56
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:put:providers:notify', cid))
57
57
 
58
58
  await Promise.all(
59
- this.components.blockBrokers.map(async broker => broker.announce?.(cid, block, options))
59
+ this.components.blockBrokers.map(async broker => broker.announce?.(cid, options))
60
60
  )
61
61
 
62
62
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:put:blockstore:put', cid))
@@ -67,7 +67,7 @@ class Storage implements Blockstore {
67
67
  /**
68
68
  * Put a multiple blocks to the underlying datastore
69
69
  */
70
- async * putMany (blocks: AwaitIterable<{ cid: CID, block: Uint8Array }>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
70
+ async * putMany (blocks: AwaitIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
71
71
  const missingBlocks = filter(blocks, async ({ cid }): Promise<boolean> => {
72
72
  const has = await this.child.has(cid, options)
73
73
 
@@ -78,10 +78,10 @@ class Storage implements Blockstore {
78
78
  return !has
79
79
  })
80
80
 
81
- const notifyEach = forEach(missingBlocks, async ({ cid, block }): Promise<void> => {
81
+ const notifyEach = forEach(missingBlocks, async ({ cid }): Promise<void> => {
82
82
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:put-many:providers:notify', cid))
83
83
  await Promise.all(
84
- this.components.blockBrokers.map(async broker => broker.announce?.(cid, block, options))
84
+ this.components.blockBrokers.map(async broker => broker.announce?.(cid, options))
85
85
  )
86
86
  })
87
87
 
@@ -92,7 +92,7 @@ class Storage implements Blockstore {
92
92
  /**
93
93
  * Get a block by cid
94
94
  */
95
- async get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): Promise<Uint8Array> {
95
+ async * get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): AsyncGenerator<Uint8Array> {
96
96
  if (options.offline !== true && !(await this.child.has(cid, options))) {
97
97
  const hasher = await this.getHasher(cid.multihash.code)
98
98
 
@@ -108,21 +108,22 @@ class Storage implements Blockstore {
108
108
  // notify other block providers of the new block
109
109
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:get:providers:notify', cid))
110
110
  await Promise.all(
111
- this.components.blockBrokers.map(async broker => broker.announce?.(cid, block, options))
111
+ this.components.blockBrokers.map(async broker => broker.announce?.(cid, options))
112
112
  )
113
113
 
114
- return block
114
+ yield block
115
+ return
115
116
  }
116
117
 
117
118
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:get:blockstore:get', cid))
118
119
 
119
- return this.child.get(cid, options)
120
+ yield * this.child.get(cid, options)
120
121
  }
121
122
 
122
123
  /**
123
124
  * Get multiple blocks back from an (async) iterable of cids
124
125
  */
125
- async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncIterable<Pair> {
126
+ async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
126
127
  options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:get-many'))
127
128
 
128
129
  yield * this.child.getMany(forEach(cids, async (cid): Promise<void> => {
@@ -141,7 +142,7 @@ class Storage implements Blockstore {
141
142
  // notify other block providers of the new block
142
143
  options.onProgress?.(new CustomProgressEvent<CID>('blocks:get-many:providers:notify', cid))
143
144
  await Promise.all(
144
- this.components.blockBrokers.map(async broker => broker.announce?.(cid, block, options))
145
+ this.components.blockBrokers.map(async broker => broker.announce?.(cid, options))
145
146
  )
146
147
  }
147
148
  }))
@@ -159,7 +160,7 @@ class Storage implements Blockstore {
159
160
  /**
160
161
  * Delete multiple blocks from the blockstore
161
162
  */
162
- async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
163
+ async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
163
164
  options.onProgress?.(new CustomProgressEvent('blocks:delete-many:blockstore:delete-many'))
164
165
  yield * this.child.deleteMany((async function * (): AsyncGenerator<CID> {
165
166
  for await (const cid of cids) {
@@ -172,7 +173,7 @@ class Storage implements Blockstore {
172
173
  return this.child.has(cid, options)
173
174
  }
174
175
 
175
- async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AwaitIterable<Pair> {
176
+ async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
176
177
  options.onProgress?.(new CustomProgressEvent('blocks:get-all:blockstore:get-many'))
177
178
  yield * this.child.getAll(options)
178
179
  }
@@ -280,7 +281,7 @@ class SessionStorage extends Storage implements SessionBlockstore {
280
281
  /**
281
282
  * Put a multiple blocks to the underlying datastore
282
283
  */
283
- async * putMany (blocks: AwaitIterable<{ cid: CID, block: Uint8Array }>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
284
+ async * putMany (blocks: AwaitIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
284
285
  const signal = anySignal([this.closeController.signal, options.signal])
285
286
  setMaxListeners(Infinity, signal)
286
287
 
@@ -297,12 +298,12 @@ class SessionStorage extends Storage implements SessionBlockstore {
297
298
  /**
298
299
  * Get a block by cid
299
300
  */
300
- async get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): Promise<Uint8Array> {
301
+ async * get (cid: CID, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents> = {}): AsyncGenerator<Uint8Array> {
301
302
  const signal = anySignal([this.closeController.signal, options.signal])
302
303
  setMaxListeners(Infinity, signal)
303
304
 
304
305
  try {
305
- return await super.get(cid, {
306
+ yield * super.get(cid, {
306
307
  ...options,
307
308
  signal
308
309
  })
@@ -314,7 +315,7 @@ class SessionStorage extends Storage implements SessionBlockstore {
314
315
  /**
315
316
  * Get multiple blocks back from an (async) iterable of cids
316
317
  */
317
- async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncIterable<Pair> {
318
+ async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
318
319
  const signal = anySignal([this.closeController.signal, options.signal])
319
320
  setMaxListeners(Infinity, signal)
320
321
 
@@ -348,7 +349,7 @@ class SessionStorage extends Storage implements SessionBlockstore {
348
349
  /**
349
350
  * Delete multiple blocks from the blockstore
350
351
  */
351
- async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncIterable<CID> {
352
+ async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
352
353
  const signal = anySignal([this.closeController.signal, options.signal])
353
354
  setMaxListeners(Infinity, signal)
354
355
 
@@ -376,7 +377,7 @@ class SessionStorage extends Storage implements SessionBlockstore {
376
377
  }
377
378
  }
378
379
 
379
- async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AwaitIterable<Pair> {
380
+ async * getAll (options: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
380
381
  const signal = anySignal([this.closeController.signal, options.signal])
381
382
  setMaxListeners(Infinity, signal)
382
383