@helia/unixfs 5.1.0 → 6.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 (75) hide show
  1. package/dist/index.min.js +2 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/commands/cat.d.ts.map +1 -1
  4. package/dist/src/commands/cat.js +3 -7
  5. package/dist/src/commands/cat.js.map +1 -1
  6. package/dist/src/commands/chmod.d.ts.map +1 -1
  7. package/dist/src/commands/chmod.js +8 -15
  8. package/dist/src/commands/chmod.js.map +1 -1
  9. package/dist/src/commands/cp.d.ts.map +1 -1
  10. package/dist/src/commands/cp.js +4 -12
  11. package/dist/src/commands/cp.js.map +1 -1
  12. package/dist/src/commands/ls.d.ts.map +1 -1
  13. package/dist/src/commands/ls.js +1 -5
  14. package/dist/src/commands/ls.js.map +1 -1
  15. package/dist/src/commands/mkdir.d.ts.map +1 -1
  16. package/dist/src/commands/mkdir.js +8 -16
  17. package/dist/src/commands/mkdir.js.map +1 -1
  18. package/dist/src/commands/rm.d.ts.map +1 -1
  19. package/dist/src/commands/rm.js +2 -9
  20. package/dist/src/commands/rm.js.map +1 -1
  21. package/dist/src/commands/stat.d.ts.map +1 -1
  22. package/dist/src/commands/stat.js +5 -8
  23. package/dist/src/commands/stat.js.map +1 -1
  24. package/dist/src/commands/touch.d.ts.map +1 -1
  25. package/dist/src/commands/touch.js +9 -16
  26. package/dist/src/commands/touch.js.map +1 -1
  27. package/dist/src/commands/utils/add-link.d.ts +3 -3
  28. package/dist/src/commands/utils/add-link.d.ts.map +1 -1
  29. package/dist/src/commands/utils/add-link.js +4 -2
  30. package/dist/src/commands/utils/add-link.js.map +1 -1
  31. package/dist/src/commands/utils/hamt-utils.d.ts +2 -2
  32. package/dist/src/commands/utils/hamt-utils.d.ts.map +1 -1
  33. package/dist/src/commands/utils/hamt-utils.js +2 -1
  34. package/dist/src/commands/utils/hamt-utils.js.map +1 -1
  35. package/dist/src/commands/utils/is-over-shard-threshold.d.ts.map +1 -1
  36. package/dist/src/commands/utils/is-over-shard-threshold.js +2 -1
  37. package/dist/src/commands/utils/is-over-shard-threshold.js.map +1 -1
  38. package/dist/src/commands/utils/persist.d.ts +1 -1
  39. package/dist/src/commands/utils/persist.d.ts.map +1 -1
  40. package/dist/src/commands/utils/persist.js +2 -1
  41. package/dist/src/commands/utils/persist.js.map +1 -1
  42. package/dist/src/commands/utils/remove-link.d.ts +2 -2
  43. package/dist/src/commands/utils/remove-link.d.ts.map +1 -1
  44. package/dist/src/commands/utils/remove-link.js +2 -1
  45. package/dist/src/commands/utils/remove-link.js.map +1 -1
  46. package/dist/src/commands/utils/resolve.d.ts +1 -1
  47. package/dist/src/commands/utils/resolve.d.ts.map +1 -1
  48. package/dist/src/constants.d.ts +3 -0
  49. package/dist/src/constants.d.ts.map +1 -0
  50. package/dist/src/constants.js +3 -0
  51. package/dist/src/constants.js.map +1 -0
  52. package/dist/src/index.d.ts +1 -1
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/package.json +19 -26
  55. package/src/commands/cat.ts +3 -11
  56. package/src/commands/chmod.ts +8 -16
  57. package/src/commands/cp.ts +4 -14
  58. package/src/commands/ls.ts +1 -9
  59. package/src/commands/mkdir.ts +8 -18
  60. package/src/commands/rm.ts +2 -11
  61. package/src/commands/stat.ts +6 -12
  62. package/src/commands/touch.ts +9 -17
  63. package/src/commands/utils/add-link.ts +7 -5
  64. package/src/commands/utils/hamt-utils.ts +4 -3
  65. package/src/commands/utils/is-over-shard-threshold.ts +2 -1
  66. package/src/commands/utils/persist.ts +3 -2
  67. package/src/commands/utils/remove-link.ts +4 -3
  68. package/src/commands/utils/resolve.ts +1 -1
  69. package/src/constants.ts +2 -0
  70. package/src/index.ts +1 -1
  71. package/dist/src/commands/utils/constants.d.ts +0 -2
  72. package/dist/src/commands/utils/constants.d.ts.map +0 -1
  73. package/dist/src/commands/utils/constants.js +0 -2
  74. package/dist/src/commands/utils/constants.js.map +0 -1
  75. package/src/commands/utils/constants.ts +0 -1
@@ -1,30 +1,20 @@
1
1
  import * as dagPB from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
- import { mergeOptions as mergeOpts } from '@libp2p/utils/merge-options'
4
3
  import { UnixFS } from 'ipfs-unixfs'
5
4
  import { exporter } from 'ipfs-unixfs-exporter'
6
5
  import { CID } from 'multiformats/cid'
7
6
  import { sha256 } from 'multiformats/hashes/sha2'
7
+ import { DEFAULT_CID_VERSION } from '../constants.ts'
8
8
  import { InvalidParametersError, NotADirectoryError } from '../errors.js'
9
9
  import { addLink } from './utils/add-link.js'
10
10
  import { cidToDirectory } from './utils/cid-to-directory.js'
11
11
  import { cidToPBLink } from './utils/cid-to-pblink.js'
12
- import { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js'
13
12
  import type { MkdirOptions } from '../index.js'
14
13
  import type { GetStore, PutStore } from '../unixfs.js'
15
14
 
16
- const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
17
15
  const log = logger('helia:unixfs:mkdir')
18
16
 
19
- const defaultOptions: MkdirOptions = {
20
- cidVersion: 1,
21
- force: false,
22
- shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES
23
- }
24
-
25
17
  export async function mkdir (parentCid: CID, dirname: string, blockstore: GetStore & PutStore, options: Partial<MkdirOptions> = {}): Promise<CID> {
26
- const opts: MkdirOptions = mergeOptions(defaultOptions, options)
27
-
28
18
  if (dirname.includes('/')) {
29
19
  throw new InvalidParametersError('Path must not have slashes')
30
20
  }
@@ -39,8 +29,8 @@ export async function mkdir (parentCid: CID, dirname: string, blockstore: GetSto
39
29
 
40
30
  const metadata = new UnixFS({
41
31
  type: 'directory',
42
- mode: opts.mode,
43
- mtime: opts.mtime
32
+ mode: options.mode,
33
+ mtime: options.mtime
44
34
  })
45
35
 
46
36
  // Persist the new parent PBNode
@@ -50,7 +40,7 @@ export async function mkdir (parentCid: CID, dirname: string, blockstore: GetSto
50
40
  }
51
41
  const buf = dagPB.encode(node)
52
42
  const hash = await sha256.digest(buf)
53
- const emptyDirCid = CID.create(opts.cidVersion, dagPB.code, hash)
43
+ const emptyDirCid = CID.create(options.cidVersion ?? DEFAULT_CID_VERSION, dagPB.code, hash)
54
44
 
55
45
  await blockstore.put(emptyDirCid, buf)
56
46
 
@@ -58,15 +48,15 @@ export async function mkdir (parentCid: CID, dirname: string, blockstore: GetSto
58
48
  directory,
59
49
  pblink
60
50
  ] = await Promise.all([
61
- cidToDirectory(parentCid, blockstore, opts),
62
- cidToPBLink(emptyDirCid, dirname, blockstore, opts)
51
+ cidToDirectory(parentCid, blockstore, options),
52
+ cidToPBLink(emptyDirCid, dirname, blockstore, options)
63
53
  ])
64
54
 
65
55
  log('adding empty dir called %s to %c', dirname, parentCid)
66
56
 
67
57
  const result = await addLink(directory, pblink, blockstore, {
68
- ...opts,
69
- allowOverwriting: opts.force
58
+ ...options,
59
+ allowOverwriting: options.force
70
60
  })
71
61
 
72
62
  return result.cid
@@ -1,33 +1,24 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import { mergeOptions as mergeOpts } from '@libp2p/utils/merge-options'
3
2
  import { InvalidParametersError } from '../errors.js'
4
3
  import { cidToDirectory } from './utils/cid-to-directory.js'
5
- import { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js'
6
4
  import { removeLink } from './utils/remove-link.js'
7
5
  import type { RmOptions } from '../index.js'
8
6
  import type { GetStore, PutStore } from '../unixfs.js'
9
7
  import type { CID } from 'multiformats/cid'
10
8
 
11
- const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
12
9
  const log = logger('helia:unixfs:rm')
13
10
 
14
- const defaultOptions: RmOptions = {
15
- shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES
16
- }
17
-
18
11
  export async function rm (target: CID, name: string, blockstore: GetStore & PutStore, options: Partial<RmOptions> = {}): Promise<CID> {
19
- const opts: RmOptions = mergeOptions(defaultOptions, options)
20
-
21
12
  if (name.includes('/')) {
22
13
  throw new InvalidParametersError('Name must not have slashes')
23
14
  }
24
15
 
25
- const directory = await cidToDirectory(target, blockstore, opts)
16
+ const directory = await cidToDirectory(target, blockstore, options)
26
17
 
27
18
  log('Removing %s from %c', name, target)
28
19
 
29
20
  const result = await removeLink(directory, name, blockstore, {
30
- ...opts,
21
+ ...options,
31
22
  cidVersion: target.version
32
23
  })
33
24
 
@@ -1,15 +1,15 @@
1
1
  import * as dagPb from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
- import { ScalableCuckooFilter } from '@libp2p/utils/filters'
4
- import { mergeOptions as mergeOpts } from '@libp2p/utils/merge-options'
3
+ import { ScalableCuckooFilter } from '@libp2p/utils'
5
4
  import { UnixFS } from 'ipfs-unixfs'
6
5
  import { exporter } from 'ipfs-unixfs-exporter'
6
+ import toBuffer from 'it-to-buffer'
7
7
  import * as raw from 'multiformats/codecs/raw'
8
8
  import { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js'
9
9
  import { resolve } from './utils/resolve.js'
10
10
  import type { ExtendedStatOptions, ExtendedDirectoryStats, ExtendedFileStats, StatOptions, DirectoryStats, FileStats, RawStats, ExtendedRawStats } from '../index.js'
11
11
  import type { GetStore, HasStore } from '../unixfs.js'
12
- import type { Filter } from '@libp2p/utils/filters'
12
+ import type { Filter } from '@libp2p/utils'
13
13
  import type { RawNode, UnixFSDirectory, UnixFSFile } from 'ipfs-unixfs-exporter'
14
14
  import type { CID } from 'multiformats/cid'
15
15
 
@@ -17,22 +17,16 @@ import type { CID } from 'multiformats/cid'
17
17
  const DEFAULT_DIR_MODE = 0x755
18
18
  const DEFAULT_FILE_MODE = 0x644
19
19
 
20
- const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
21
20
  const log = logger('helia:unixfs:stat')
22
21
 
23
- const defaultOptions: StatOptions = {
24
-
25
- }
26
-
27
22
  export async function stat (cid: CID, blockstore: GetStore & HasStore, options?: StatOptions): Promise<FileStats | DirectoryStats | RawStats>
28
23
  export async function stat (cid: CID, blockstore: GetStore & HasStore, options?: ExtendedStatOptions): Promise<ExtendedFileStats | ExtendedDirectoryStats | ExtendedRawStats>
29
24
  export async function stat (cid: CID, blockstore: GetStore & HasStore, options: Partial<ExtendedStatOptions> = {}): Promise<any> {
30
- const opts: StatOptions = mergeOptions(defaultOptions, options)
31
- const resolved = await resolve(cid, options.path, blockstore, opts)
25
+ const resolved = await resolve(cid, options.path, blockstore, options)
32
26
 
33
27
  log('stat %c', resolved.cid)
34
28
 
35
- const result = await exporter(resolved.cid, blockstore, opts)
29
+ const result = await exporter(resolved.cid, blockstore, options)
36
30
 
37
31
  if (result.type === 'raw') {
38
32
  if (options.extended === true) {
@@ -130,7 +124,7 @@ async function inspectDag (cid: CID, blockstore: GetStore & HasStore, isFile: bo
130
124
  const alreadyTraversed = filter.has(cid.bytes)
131
125
  filter.add(cid.bytes)
132
126
 
133
- const block = await blockstore.get(cid, options)
127
+ const block = await toBuffer(blockstore.get(cid, options))
134
128
  results.blocks++
135
129
  results.dagSize += BigInt(block.byteLength)
136
130
 
@@ -1,41 +1,33 @@
1
1
  import * as dagPB from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
- import { mergeOptions as mergeOpts } from '@libp2p/utils/merge-options'
4
3
  import { UnixFS } from 'ipfs-unixfs'
5
4
  import { recursive } from 'ipfs-unixfs-exporter'
6
5
  import { importer } from 'ipfs-unixfs-importer'
7
6
  import last from 'it-last'
8
7
  import { pipe } from 'it-pipe'
8
+ import toBuffer from 'it-to-buffer'
9
9
  import { CID } from 'multiformats/cid'
10
10
  import * as raw from 'multiformats/codecs/raw'
11
11
  import { sha256 } from 'multiformats/hashes/sha2'
12
12
  import { InvalidPBNodeError, NotUnixFSError, UnknownError } from '../errors.js'
13
- import { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js'
14
13
  import { persist } from './utils/persist.js'
15
14
  import { resolve, updatePathCids } from './utils/resolve.js'
16
15
  import type { TouchOptions } from '../index.js'
17
16
  import type { GetStore, PutStore } from '../unixfs.js'
18
17
  import type { PBNode, PBLink } from '@ipld/dag-pb'
19
18
 
20
- const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
21
19
  const log = logger('helia:unixfs:touch')
22
20
 
23
- const defaultOptions: TouchOptions = {
24
- recursive: false,
25
- shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES
26
- }
27
-
28
21
  export async function touch (cid: CID, blockstore: GetStore & PutStore, options: Partial<TouchOptions> = {}): Promise<CID> {
29
- const opts: TouchOptions = mergeOptions(defaultOptions, options)
30
- const resolved = await resolve(cid, opts.path, blockstore, opts)
31
- const mtime = opts.mtime ?? {
22
+ const resolved = await resolve(cid, options.path, blockstore, options)
23
+ const mtime = options.mtime ?? {
32
24
  secs: BigInt(Math.round(Date.now() / 1000)),
33
25
  nsecs: 0
34
26
  }
35
27
 
36
28
  log('touch %c %o', resolved.cid, mtime)
37
29
 
38
- if (opts.recursive) {
30
+ if (options.recursive) {
39
31
  // recursively export from root CID, change perms of each entry then reimport
40
32
  // but do not reimport files, only manipulate dag-pb nodes
41
33
  const root = await pipe(
@@ -69,7 +61,7 @@ export async function touch (cid: CID, blockstore: GetStore & PutStore, options:
69
61
  },
70
62
  // @ts-expect-error blockstore types are incompatible
71
63
  (source) => importer(source, blockstore, {
72
- ...opts,
64
+ ...options,
73
65
  dagBuilder: async function * (source, block) {
74
66
  for await (const entry of source) {
75
67
  yield async function () {
@@ -78,7 +70,7 @@ export async function touch (cid: CID, blockstore: GetStore & PutStore, options:
78
70
 
79
71
  const buf = dagPB.encode(node)
80
72
  const updatedCid = await persist(buf, block, {
81
- ...opts,
73
+ ...options,
82
74
  cidVersion: cid.version
83
75
  })
84
76
 
@@ -105,10 +97,10 @@ export async function touch (cid: CID, blockstore: GetStore & PutStore, options:
105
97
  throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`)
106
98
  }
107
99
 
108
- return updatePathCids(root.cid, resolved, blockstore, opts)
100
+ return updatePathCids(root.cid, resolved, blockstore, options)
109
101
  }
110
102
 
111
- const block = await blockstore.get(resolved.cid, options)
103
+ const block = await toBuffer(blockstore.get(resolved.cid, options))
112
104
  let metadata: UnixFS
113
105
  let links: PBLink[] = []
114
106
 
@@ -136,5 +128,5 @@ export async function touch (cid: CID, blockstore: GetStore & PutStore, options:
136
128
 
137
129
  await blockstore.put(updatedCid, updatedBlock)
138
130
 
139
- return updatePathCids(updatedCid, resolved, blockstore, opts)
131
+ return updatePathCids(updatedCid, resolved, blockstore, options)
140
132
  }
@@ -1,11 +1,13 @@
1
1
  import * as dagPB from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
3
  import { UnixFS } from 'ipfs-unixfs'
4
+ import toBuffer from 'it-to-buffer'
4
5
  import { CID } from 'multiformats/cid'
5
6
  import { sha256 } from 'multiformats/hashes/sha2'
6
7
  // @ts-expect-error no types
7
8
  import SparseArray from 'sparse-array'
8
9
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
10
+ import { DEFAULT_SHARD_SPLIT_THRESHOLD_BYTES } from '../../constants.ts'
9
11
  import { AlreadyExistsError, InvalidParametersError, InvalidPBNodeError } from '../../errors.js'
10
12
  import { wrapHash } from './consumable-hash.js'
11
13
  import { hamtBucketBits, hamtHashFn } from './hamt-constants.js'
@@ -31,9 +33,9 @@ export interface AddLinkResult {
31
33
  }
32
34
 
33
35
  export interface AddLinkOptions extends AbortOptions {
34
- allowOverwriting: boolean
35
- shardSplitThresholdBytes: number
36
- cidVersion: Version
36
+ allowOverwriting?: boolean
37
+ shardSplitThresholdBytes?: number
38
+ cidVersion?: Version
37
39
  }
38
40
 
39
41
  export async function addLink (parent: Directory, child: Required<PBLink>, blockstore: GetStore & PutStore, options: AddLinkOptions): Promise<AddLinkResult> {
@@ -53,12 +55,12 @@ export async function addLink (parent: Directory, child: Required<PBLink>, block
53
55
 
54
56
  const result = await addToDirectory(parent, child, blockstore, options)
55
57
 
56
- if (await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options)) {
58
+ if (await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes ?? DEFAULT_SHARD_SPLIT_THRESHOLD_BYTES, options)) {
57
59
  log('converting directory to sharded directory')
58
60
 
59
61
  const converted = await convertToShardedDirectory(result, blockstore)
60
62
  result.cid = converted.cid
61
- result.node = dagPB.decode(await blockstore.get(converted.cid, options))
63
+ result.node = dagPB.decode(await toBuffer(blockstore.get(converted.cid, options)))
62
64
  }
63
65
 
64
66
  return result
@@ -2,6 +2,7 @@ import * as dagPB from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
3
  import { UnixFS } from 'ipfs-unixfs'
4
4
  import last from 'it-last'
5
+ import toBuffer from 'it-to-buffer'
5
6
  // @ts-expect-error no types
6
7
  import SparseArray from 'sparse-array'
7
8
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
@@ -25,7 +26,7 @@ import type { CID, Version } from 'multiformats/cid'
25
26
  const log = logger('helia:unixfs:commands:utils:hamt-utils')
26
27
 
27
28
  export interface UpdateHamtDirectoryOptions extends AbortOptions {
28
- cidVersion: Version
29
+ cidVersion?: Version
29
30
  }
30
31
 
31
32
  export const toPrefix = (position: number): string => {
@@ -39,7 +40,7 @@ export const toPrefix = (position: number): string => {
39
40
  export interface CreateShardOptions {
40
41
  mtime?: Mtime
41
42
  mode?: number
42
- cidVersion: Version
43
+ cidVersion?: Version
43
44
  }
44
45
 
45
46
  export const createShard = async (blockstore: PutStore, contents: Array<{ name: string, size: bigint, cid: CID }>, options: CreateShardOptions): Promise<ImportResult> => {
@@ -151,7 +152,7 @@ export const recreateShardedDirectory = async (cid: CID, fileName: string, block
151
152
 
152
153
  // descend the HAMT, loading each layer as we head towards the target child
153
154
  while (true) {
154
- const block = await blockstore.get(cid, options)
155
+ const block = await toBuffer(blockstore.get(cid, options))
155
156
  const node = dagPB.decode(block)
156
157
  const children = new SparseArray()
157
158
  const index = await hash.take(hamtBucketBits)
@@ -1,5 +1,6 @@
1
1
  import * as dagPb from '@ipld/dag-pb'
2
2
  import { UnixFS } from 'ipfs-unixfs'
3
+ import toBuffer from 'it-to-buffer'
3
4
  import { CID_V0, CID_V1 } from './dir-sharded.js'
4
5
  import type { GetStore } from '../../unixfs.js'
5
6
  import type { PBNode } from '@ipld/dag-pb'
@@ -68,7 +69,7 @@ async function estimateShardSize (node: PBNode, current: number, max: number, bl
68
69
  current += link.Hash.bytes.byteLength
69
70
 
70
71
  if (link.Hash.code === dagPb.code) {
71
- const block = await blockstore.get(link.Hash, options)
72
+ const block = await toBuffer(blockstore.get(link.Hash, options))
72
73
  const node = dagPb.decode(block)
73
74
 
74
75
  current += await estimateShardSize(node, current, max, blockstore, options)
@@ -1,13 +1,14 @@
1
1
  import * as dagPb from '@ipld/dag-pb'
2
2
  import { CID } from 'multiformats/cid'
3
3
  import { sha256 } from 'multiformats/hashes/sha2'
4
+ import { DEFAULT_CID_VERSION } from '../../constants.ts'
4
5
  import type { PutStore } from '../../unixfs.js'
5
6
  import type { Version as CIDVersion } from 'multiformats/cid'
6
7
  import type { BlockCodec } from 'multiformats/codecs/interface'
7
8
 
8
9
  export interface PersistOptions {
9
10
  codec?: BlockCodec<any, any>
10
- cidVersion: CIDVersion
11
+ cidVersion?: CIDVersion
11
12
  signal?: AbortSignal
12
13
  }
13
14
 
@@ -17,7 +18,7 @@ export const persist = async (buffer: Uint8Array, blockstore: PutStore, options:
17
18
  }
18
19
 
19
20
  const multihash = await sha256.digest(buffer)
20
- const cid = CID.create(options.cidVersion, options.codec.code, multihash)
21
+ const cid = CID.create(options.cidVersion ?? DEFAULT_CID_VERSION, options.codec.code, multihash)
21
22
 
22
23
  await blockstore.put(cid, buffer, {
23
24
  ...options,
@@ -2,6 +2,7 @@ import * as dagPB from '@ipld/dag-pb'
2
2
  import { logger } from '@libp2p/logger'
3
3
  import { UnixFS } from 'ipfs-unixfs'
4
4
  import { exporter } from 'ipfs-unixfs-exporter'
5
+ import { DEFAULT_SHARD_SPLIT_THRESHOLD_BYTES } from '../../constants.ts'
5
6
  import { InvalidParametersError, InvalidPBNodeError } from '../../errors.js'
6
7
  import {
7
8
  recreateShardedDirectory,
@@ -20,8 +21,8 @@ import type { CID, Version } from 'multiformats/cid'
20
21
  const log = logger('helia:unixfs:utils:remove-link')
21
22
 
22
23
  export interface RmLinkOptions extends AbortOptions {
23
- shardSplitThresholdBytes: number
24
- cidVersion: Version
24
+ shardSplitThresholdBytes?: number
25
+ cidVersion?: Version
25
26
  }
26
27
 
27
28
  export interface RemoveLinkResult {
@@ -41,7 +42,7 @@ export async function removeLink (parent: Directory, name: string, blockstore: P
41
42
 
42
43
  const result = await removeFromShardedDirectory(parent, name, blockstore, options)
43
44
 
44
- if (!(await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes, options))) {
45
+ if (!(await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes ?? DEFAULT_SHARD_SPLIT_THRESHOLD_BYTES, options))) {
45
46
  log('converting shard to flat directory %c', parent.cid)
46
47
 
47
48
  return convertToFlatDirectory(result, blockstore, options)
@@ -55,7 +55,7 @@ export async function resolve (cid: CID, path: string | undefined, blockstore: G
55
55
  }
56
56
 
57
57
  export interface UpdatePathCidsOptions extends AbortOptions {
58
- shardSplitThresholdBytes: number
58
+ shardSplitThresholdBytes?: number
59
59
  }
60
60
 
61
61
  /**
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_CID_VERSION = 1
2
+ export const DEFAULT_SHARD_SPLIT_THRESHOLD_BYTES = 262144
package/src/index.ts CHANGED
@@ -78,7 +78,7 @@
78
78
  import { UnixFS as UnixFSClass } from './unixfs.js'
79
79
  import type { GetBlockProgressEvents, ProviderOptions, PutBlockProgressEvents } from '@helia/interface/blocks'
80
80
  import type { AbortOptions } from '@libp2p/interface'
81
- import type { Filter } from '@libp2p/utils/filters'
81
+ import type { Filter } from '@libp2p/utils'
82
82
  import type { Blockstore } from 'interface-blockstore'
83
83
  import type { Mtime, UnixFS as IPFSUnixFS } from 'ipfs-unixfs'
84
84
  import type { ExporterProgressEvents, UnixFSEntry, UnixFSBasicEntry } from 'ipfs-unixfs-exporter'
@@ -1,2 +0,0 @@
1
- export declare const SHARD_SPLIT_THRESHOLD_BYTES = 262144;
2
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,SAAS,CAAA"}
@@ -1,2 +0,0 @@
1
- export const SHARD_SPLIT_THRESHOLD_BYTES = 262144;
2
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/commands/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAA"}
@@ -1 +0,0 @@
1
- export const SHARD_SPLIT_THRESHOLD_BYTES = 262144