@helia/utils 2.5.2-070b7528 → 2.5.2-1361bfa5

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 (72) hide show
  1. package/dist/index.min.js +22 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/abstract-session.d.ts +3 -3
  4. package/dist/src/abstract-session.d.ts.map +1 -1
  5. package/dist/src/abstract-session.js.map +1 -1
  6. package/dist/src/errors.d.ts +4 -0
  7. package/dist/src/errors.d.ts.map +1 -1
  8. package/dist/src/errors.js +4 -0
  9. package/dist/src/errors.js.map +1 -1
  10. package/dist/src/graph-walker.d.ts +3 -21
  11. package/dist/src/graph-walker.d.ts.map +1 -1
  12. package/dist/src/graph-walker.js +20 -17
  13. package/dist/src/graph-walker.js.map +1 -1
  14. package/dist/src/index.d.ts +43 -40
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +62 -30
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/pins.d.ts +1 -1
  19. package/dist/src/pins.d.ts.map +1 -1
  20. package/dist/src/pins.js +11 -39
  21. package/dist/src/pins.js.map +1 -1
  22. package/dist/src/routing.d.ts +7 -5
  23. package/dist/src/routing.d.ts.map +1 -1
  24. package/dist/src/routing.js +10 -4
  25. package/dist/src/routing.js.map +1 -1
  26. package/dist/src/storage.d.ts +5 -6
  27. package/dist/src/storage.d.ts.map +1 -1
  28. package/dist/src/storage.js.map +1 -1
  29. package/dist/src/utils/constants.d.ts +4 -0
  30. package/dist/src/utils/constants.d.ts.map +1 -0
  31. package/dist/src/utils/constants.js +4 -0
  32. package/dist/src/utils/constants.js.map +1 -0
  33. package/dist/src/utils/get-codec.d.ts +2 -2
  34. package/dist/src/utils/get-codec.d.ts.map +1 -1
  35. package/dist/src/utils/get-codec.js +0 -1
  36. package/dist/src/utils/get-codec.js.map +1 -1
  37. package/dist/src/utils/get-crypto.d.ts +4 -0
  38. package/dist/src/utils/get-crypto.d.ts.map +1 -0
  39. package/dist/src/utils/get-crypto.js +35 -0
  40. package/dist/src/utils/get-crypto.js.map +1 -0
  41. package/dist/src/utils/get-hasher.d.ts +2 -2
  42. package/dist/src/utils/get-hasher.d.ts.map +1 -1
  43. package/dist/src/utils/get-hasher.js.map +1 -1
  44. package/dist/src/utils/is-cid.d.ts +3 -0
  45. package/dist/src/utils/is-cid.d.ts.map +1 -0
  46. package/dist/src/utils/is-cid.js +8 -0
  47. package/dist/src/utils/is-cid.js.map +1 -0
  48. package/dist/src/utils/networked-storage.d.ts +3 -2
  49. package/dist/src/utils/networked-storage.d.ts.map +1 -1
  50. package/dist/src/utils/networked-storage.js.map +1 -1
  51. package/dist/src/utils/session-storage.d.ts +6 -7
  52. package/dist/src/utils/session-storage.d.ts.map +1 -1
  53. package/dist/src/utils/session-storage.js.map +1 -1
  54. package/dist/src/utils/storage.d.ts +4 -5
  55. package/dist/src/utils/storage.d.ts.map +1 -1
  56. package/dist/src/utils/storage.js.map +1 -1
  57. package/package.json +28 -30
  58. package/src/abstract-session.ts +4 -4
  59. package/src/errors.ts +5 -0
  60. package/src/graph-walker.ts +30 -43
  61. package/src/index.ts +112 -77
  62. package/src/pins.ts +12 -50
  63. package/src/routing.ts +23 -10
  64. package/src/storage.ts +5 -6
  65. package/src/utils/constants.ts +3 -0
  66. package/src/utils/get-codec.ts +2 -4
  67. package/src/utils/get-crypto.ts +44 -0
  68. package/src/utils/get-hasher.ts +2 -2
  69. package/src/utils/is-cid.ts +9 -0
  70. package/src/utils/networked-storage.ts +3 -2
  71. package/src/utils/session-storage.ts +6 -7
  72. package/src/utils/storage.ts +4 -5
@@ -2,10 +2,10 @@ import { UnknownHashAlgorithmError } from '@helia/interface'
2
2
  import { identity } from 'multiformats/hashes/identity'
3
3
  import { sha256, sha512 } from 'multiformats/hashes/sha2'
4
4
  import { isPromise } from './is-promise.ts'
5
- import type { Await } from '@helia/interface'
5
+ import type { HasherLoader } from '@helia/interface'
6
6
  import type { MultihashHasher } from 'multiformats/hashes/interface'
7
7
 
8
- export function getHasher (initialHashers: MultihashHasher[] = [], loadHasher?: (code: number) => Await<MultihashHasher>): (code: number) => Await<MultihashHasher> {
8
+ export function getHasher (initialHashers: MultihashHasher[] = [], loadHasher?: HasherLoader): HasherLoader {
9
9
  const hashers: Record<number, MultihashHasher> = {
10
10
  [sha256.code]: sha256,
11
11
  [sha512.code]: sha512,
@@ -0,0 +1,9 @@
1
+ import { CID } from 'multiformats/cid'
2
+
3
+ export function isCID (obj?: any): obj is CID {
4
+ if (obj == null) {
5
+ return false
6
+ }
7
+
8
+ return CID.asCID(obj) != null
9
+ }
@@ -3,8 +3,9 @@ import { InvalidConfigurationError } from '../errors.ts'
3
3
  import { SessionStorage } from './session-storage.ts'
4
4
  import { Storage } from './storage.ts'
5
5
  import type { StorageComponents, StorageInit } from './storage.ts'
6
- import type { BlockBroker, Blocks, CreateSessionOptions, SessionBlockstore } from '@helia/interface/blocks'
7
- import type { AbortOptions, Startable } from '@libp2p/interface'
6
+ import type { BlockBroker, Blocks, CreateSessionOptions, SessionBlockstore } from '@helia/interface'
7
+ import type { Startable } from '@libp2p/interface'
8
+ import type { AbortOptions } from 'abort-error'
8
9
  import type { Blockstore } from 'interface-blockstore'
9
10
  import type { CID } from 'multiformats/cid'
10
11
 
@@ -2,11 +2,10 @@ import { setMaxListeners } from '@libp2p/interface'
2
2
  import { anySignal } from 'any-signal'
3
3
  import { Storage } from './storage.ts'
4
4
  import type { StorageComponents } from './storage.ts'
5
- import type { Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, SessionBlockstore, SessionBlockBroker } from '@helia/interface/blocks'
6
- import type { AbortOptions, PeerId } from '@libp2p/interface'
5
+ import type { Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, SessionBlockstore, SessionBlockBroker } from '@helia/interface'
6
+ import type { AbortOptions } from '@libp2p/interface'
7
7
  import type { Multiaddr } from '@multiformats/multiaddr'
8
8
  import type { InputPair } from 'interface-blockstore'
9
- import type { AwaitIterable } from 'interface-store'
10
9
  import type { CID } from 'multiformats/cid'
11
10
  import type { ProgressOptions } from 'progress-events'
12
11
 
@@ -36,7 +35,7 @@ export class SessionStorage extends Storage<SessionBlockBroker> implements Sessi
36
35
  this.closeController.abort()
37
36
  }
38
37
 
39
- async addPeer (peer: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<void> {
38
+ async addPeer (peer: CID | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<void> {
40
39
  await Promise.all(
41
40
  this.blockBrokers
42
41
  .map(broker => broker.addPeer(peer, options))
@@ -63,7 +62,7 @@ export class SessionStorage extends Storage<SessionBlockBroker> implements Sessi
63
62
  /**
64
63
  * Put a multiple blocks to the underlying datastore
65
64
  */
66
- async * putMany (blocks: AwaitIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
65
+ async * putMany (blocks: Iterable<InputPair> | AsyncIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
67
66
  const signal = anySignal([this.closeController.signal, options.signal])
68
67
  setMaxListeners(Infinity, signal)
69
68
 
@@ -97,7 +96,7 @@ export class SessionStorage extends Storage<SessionBlockBroker> implements Sessi
97
96
  /**
98
97
  * Get multiple blocks back from an (async) iterable of cids
99
98
  */
100
- async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
99
+ async * getMany (cids: Iterable<CID> | AsyncIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
101
100
  const signal = anySignal([this.closeController.signal, options.signal])
102
101
  setMaxListeners(Infinity, signal)
103
102
 
@@ -131,7 +130,7 @@ export class SessionStorage extends Storage<SessionBlockBroker> implements Sessi
131
130
  /**
132
131
  * Delete multiple blocks from the blockstore
133
132
  */
134
- async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
133
+ async * deleteMany (cids: Iterable<CID> | AsyncIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
135
134
  const signal = anySignal([this.closeController.signal, options.signal])
136
135
  setMaxListeners(Infinity, signal)
137
136
 
@@ -8,10 +8,9 @@ import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
8
8
  import { BlockNotFoundWhileOfflineError, InvalidConfigurationError, LoadBlockFailedError } from '../errors.ts'
9
9
  import { isPromise } from './is-promise.ts'
10
10
  import type { HasherLoader } from '@helia/interface'
11
- import type { BlockBroker, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, BlockRetrievalOptions } from '@helia/interface/blocks'
11
+ import type { BlockBroker, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, BlockRetrievalOptions } from '@helia/interface'
12
12
  import type { AbortOptions, ComponentLogger, Logger, LoggerOptions } from '@libp2p/interface'
13
13
  import type { Blockstore, InputPair } from 'interface-blockstore'
14
- import type { AwaitIterable } from 'interface-store'
15
14
  import type { CID } from 'multiformats/cid'
16
15
  import type { MultihashDigest, MultihashHasher } from 'multiformats/hashes/interface'
17
16
  import type { ProgressEvent, ProgressOptions } from 'progress-events'
@@ -72,7 +71,7 @@ export class Storage <Broker extends BlockBroker<ProgressEvent<any, any>, Progre
72
71
  /**
73
72
  * Put a multiple blocks to the underlying datastore
74
73
  */
75
- async * putMany (blocks: AwaitIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
74
+ async * putMany (blocks: Iterable<InputPair> | AsyncIterable<InputPair>, options: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
76
75
  const missingBlocks = filter(blocks, async ({ cid }): Promise<boolean> => {
77
76
  const has = await this.child.has(cid, options)
78
77
 
@@ -137,7 +136,7 @@ export class Storage <Broker extends BlockBroker<ProgressEvent<any, any>, Progre
137
136
  /**
138
137
  * Get multiple blocks back from an (async) iterable of cids
139
138
  */
140
- async * getMany (cids: AwaitIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
139
+ async * getMany (cids: Iterable<CID> | AsyncIterable<CID>, options: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents> = {}): AsyncGenerator<Pair> {
141
140
  options.onProgress?.(new CustomProgressEvent('blocks:get-many:blockstore:get-many'))
142
141
 
143
142
  yield * this.child.getMany(forEach(cids, async (cid): Promise<void> => {
@@ -182,7 +181,7 @@ export class Storage <Broker extends BlockBroker<ProgressEvent<any, any>, Progre
182
181
  /**
183
182
  * Delete multiple blocks from the blockstore
184
183
  */
185
- async * deleteMany (cids: AwaitIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
184
+ async * deleteMany (cids: Iterable<CID> | AsyncIterable<CID>, options: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents> = {}): AsyncGenerator<CID> {
186
185
  options.onProgress?.(new CustomProgressEvent('blocks:delete-many:blockstore:delete-many'))
187
186
  yield * this.child.deleteMany((async function * (): AsyncGenerator<CID> {
188
187
  for await (const cid of cids) {