@helia/unixfs 1.0.2 → 1.0.4

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.
@@ -1,92 +1,15 @@
1
1
  import * as dagPB from '@ipld/dag-pb';
2
- import { Bucket, createHAMT } from 'hamt-sharding';
3
2
  import { DirSharded } from './dir-sharded.js';
4
3
  import { logger } from '@libp2p/logger';
5
4
  import { UnixFS } from 'ipfs-unixfs';
6
5
  import last from 'it-last';
7
6
  import { hamtHashCode, hamtHashFn, hamtBucketBits } from './hamt-constants.js';
8
7
  import { persist } from './persist.js';
8
+ import { wrapHash } from './consumable-hash.js';
9
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
10
+ // @ts-expect-error no types
11
+ import SparseArray from 'sparse-array';
9
12
  const log = logger('helia:unixfs:commands:utils:hamt-utils');
10
- export const updateHamtDirectory = async (pbNode, blockstore, bucket, options) => {
11
- if (pbNode.Data == null) {
12
- throw new Error('Could not update HAMT directory because parent had no data');
13
- }
14
- // update parent with new bit field
15
- const node = UnixFS.unmarshal(pbNode.Data);
16
- const dir = new UnixFS({
17
- type: 'hamt-sharded-directory',
18
- data: Uint8Array.from(bucket._children.bitField().reverse()),
19
- fanout: BigInt(bucket.tableSize()),
20
- hashType: hamtHashCode,
21
- mode: node.mode,
22
- mtime: node.mtime
23
- });
24
- const updatedPbNode = {
25
- Data: dir.marshal(),
26
- Links: pbNode.Links
27
- };
28
- const buf = dagPB.encode(dagPB.prepare(updatedPbNode));
29
- const cid = await persist(buf, blockstore, options);
30
- return {
31
- node: updatedPbNode,
32
- cid,
33
- size: pbNode.Links.reduce((sum, link) => sum + (link.Tsize ?? 0), buf.byteLength)
34
- };
35
- };
36
- export const recreateHamtLevel = async (blockstore, links, rootBucket, parentBucket, positionAtParent, options) => {
37
- // recreate this level of the HAMT
38
- const bucket = new Bucket({
39
- hash: rootBucket._options.hash,
40
- bits: rootBucket._options.bits
41
- }, parentBucket, positionAtParent);
42
- parentBucket._putObjectAt(positionAtParent, bucket);
43
- await addLinksToHamtBucket(blockstore, links, bucket, rootBucket, options);
44
- return bucket;
45
- };
46
- export const recreateInitialHamtLevel = async (links) => {
47
- const bucket = createHAMT({
48
- hashFn: hamtHashFn,
49
- bits: hamtBucketBits
50
- });
51
- // populate sub bucket but do not recurse as we do not want to load the whole shard
52
- await Promise.all(links.map(async (link) => {
53
- const linkName = (link.Name ?? '');
54
- if (linkName.length === 2) {
55
- const pos = parseInt(linkName, 16);
56
- const subBucket = new Bucket({
57
- hash: bucket._options.hash,
58
- bits: bucket._options.bits
59
- }, bucket, pos);
60
- bucket._putObjectAt(pos, subBucket);
61
- }
62
- await bucket.put(linkName.substring(2), {
63
- size: link.Tsize,
64
- cid: link.Hash
65
- });
66
- }));
67
- return bucket;
68
- };
69
- export const addLinksToHamtBucket = async (blockstore, links, bucket, rootBucket, options) => {
70
- await Promise.all(links.map(async (link) => {
71
- const linkName = (link.Name ?? '');
72
- if (linkName.length === 2) {
73
- log('Populating sub bucket', linkName);
74
- const pos = parseInt(linkName, 16);
75
- const block = await blockstore.get(link.Hash, options);
76
- const node = dagPB.decode(block);
77
- const subBucket = new Bucket({
78
- hash: rootBucket._options.hash,
79
- bits: rootBucket._options.bits
80
- }, bucket, pos);
81
- bucket._putObjectAt(pos, subBucket);
82
- await addLinksToHamtBucket(blockstore, node.Links, subBucket, rootBucket, options);
83
- }
84
- await rootBucket.put(linkName.substring(2), {
85
- size: link.Tsize,
86
- cid: link.Hash
87
- });
88
- }));
89
- };
90
13
  export const toPrefix = (position) => {
91
14
  return position
92
15
  .toString(16)
@@ -94,88 +17,6 @@ export const toPrefix = (position) => {
94
17
  .padStart(2, '0')
95
18
  .substring(0, 2);
96
19
  };
97
- export const generatePath = async (root, name, blockstore, options) => {
98
- // start at the root bucket and descend, loading nodes as we go
99
- const rootBucket = await recreateInitialHamtLevel(root.node.Links);
100
- const position = await rootBucket._findNewBucketAndPos(name);
101
- const path = [{
102
- bucket: position.bucket,
103
- prefix: toPrefix(position.pos)
104
- }];
105
- let currentBucket = position.bucket;
106
- while (currentBucket !== rootBucket) {
107
- path.push({
108
- bucket: currentBucket,
109
- prefix: toPrefix(currentBucket._posAtParent)
110
- });
111
- if (currentBucket._parent == null) {
112
- break;
113
- }
114
- currentBucket = currentBucket._parent;
115
- }
116
- // add the root bucket to the path
117
- path.push({
118
- bucket: rootBucket,
119
- node: root.node
120
- });
121
- path.reverse();
122
- // load PbNode for each path segment
123
- for (let i = 1; i < path.length; i++) {
124
- const segment = path[i];
125
- const previousSegment = path[i - 1];
126
- if (previousSegment.node == null) {
127
- throw new Error('Could not generate HAMT path');
128
- }
129
- // find prefix in links
130
- const link = previousSegment.node.Links
131
- .filter(link => (link.Name ?? '').substring(0, 2) === segment.prefix)
132
- .pop();
133
- // entry was not in shard
134
- if (link == null) {
135
- // reached bottom of tree, file will be added to the current bucket
136
- log(`Link ${segment.prefix}${name} will be added`);
137
- // return path
138
- continue;
139
- }
140
- const linkName = link.Name ?? '';
141
- // found entry
142
- if (linkName === `${segment.prefix}${name}`) {
143
- log(`Link ${segment.prefix}${name} will be replaced`);
144
- // file already existed, file will be added to the current bucket
145
- // return path
146
- continue;
147
- }
148
- // found subshard
149
- log(`Found subshard ${segment.prefix}`);
150
- const block = await blockstore.get(link.Hash);
151
- const node = dagPB.decode(block);
152
- // subshard hasn't been loaded, descend to the next level of the HAMT
153
- if (path[i + 1] == null) {
154
- log(`Loaded new subshard ${segment.prefix}`);
155
- if (segment.bucket == null || segment.prefix == null) {
156
- throw new Error('Shard was invalid');
157
- }
158
- await recreateHamtLevel(blockstore, node.Links, rootBucket, segment.bucket, parseInt(segment.prefix, 16), options);
159
- const position = await rootBucket._findNewBucketAndPos(name);
160
- // i--
161
- path.push({
162
- bucket: position.bucket,
163
- prefix: toPrefix(position.pos),
164
- node
165
- });
166
- continue;
167
- }
168
- if (segment.bucket == null) {
169
- throw new Error('Shard was invalid');
170
- }
171
- // add intermediate links to bucket
172
- await addLinksToHamtBucket(blockstore, node.Links, segment.bucket, rootBucket, options);
173
- segment.node = node;
174
- }
175
- await rootBucket.put(name, true);
176
- path.reverse();
177
- return path;
178
- };
179
20
  export const createShard = async (blockstore, contents, options) => {
180
21
  const shard = new DirSharded({
181
22
  root: true,
@@ -200,4 +41,105 @@ export const createShard = async (blockstore, contents, options) => {
200
41
  }
201
42
  return res;
202
43
  };
44
+ export const updateShardedDirectory = async (path, blockstore, options) => {
45
+ // persist any metadata on the shard root
46
+ const shardRoot = UnixFS.unmarshal(path[0].node.Data ?? new Uint8Array(0));
47
+ // this is always the same
48
+ const fanout = BigInt(Math.pow(2, hamtBucketBits));
49
+ // start from the leaf and ascend to the root
50
+ path.reverse();
51
+ let cid;
52
+ let node;
53
+ for (let i = 0; i < path.length; i++) {
54
+ const isRoot = i === path.length - 1;
55
+ const segment = path[i];
56
+ // go-ipfs uses little endian, that's why we have to
57
+ // reverse the bit field before storing it
58
+ const data = Uint8Array.from(segment.children.bitField().reverse());
59
+ const dir = new UnixFS({
60
+ type: 'hamt-sharded-directory',
61
+ data,
62
+ fanout,
63
+ hashType: hamtHashCode
64
+ });
65
+ if (isRoot) {
66
+ dir.mtime = shardRoot.mtime;
67
+ dir.mode = shardRoot.mode;
68
+ }
69
+ node = {
70
+ Data: dir.marshal(),
71
+ Links: segment.node.Links
72
+ };
73
+ const block = dagPB.encode(dagPB.prepare(node));
74
+ cid = await persist(block, blockstore, options);
75
+ if (!isRoot) {
76
+ // update link in parent sub-shard
77
+ const nextSegment = path[i + 1];
78
+ if (nextSegment == null) {
79
+ throw new Error('Was not operating on shard root but also had no parent?');
80
+ }
81
+ log('updating link in parent sub-shard with prefix %s', nextSegment.prefix);
82
+ nextSegment.node.Links = nextSegment.node.Links.filter(l => l.Name !== nextSegment.prefix);
83
+ nextSegment.node.Links.push({
84
+ Name: nextSegment.prefix,
85
+ Hash: cid,
86
+ Tsize: segment.node.Links.reduce((acc, curr) => acc + (curr.Tsize ?? 0), block.byteLength)
87
+ });
88
+ }
89
+ }
90
+ if (cid == null || node == null) {
91
+ throw new Error('Noting persisted');
92
+ }
93
+ return { cid, node };
94
+ };
95
+ export const recreateShardedDirectory = async (cid, fileName, blockstore, options) => {
96
+ const wrapped = wrapHash(hamtHashFn);
97
+ const hash = wrapped(uint8ArrayFromString(fileName));
98
+ const path = [];
99
+ // descend the HAMT, loading each layer as we head towards the target child
100
+ while (true) {
101
+ const block = await blockstore.get(cid, options);
102
+ const node = dagPB.decode(block);
103
+ const children = new SparseArray();
104
+ const index = await hash.take(hamtBucketBits);
105
+ const prefix = toPrefix(index);
106
+ path.push({
107
+ prefix,
108
+ children,
109
+ node
110
+ });
111
+ let childLink;
112
+ // update sparsearray child layout - the bitfield is used as the data field for the
113
+ // intermediate DAG node so this is required to generate consistent hashes
114
+ for (const link of node.Links) {
115
+ const linkName = link.Name ?? '';
116
+ if (linkName.length < 2) {
117
+ throw new Error('Invalid HAMT - link name was too short');
118
+ }
119
+ const position = parseInt(linkName.substring(0, 2), 16);
120
+ children.set(position, true);
121
+ // we found the child we are looking for
122
+ if (linkName.startsWith(prefix)) {
123
+ childLink = link;
124
+ }
125
+ }
126
+ if (childLink == null) {
127
+ log('no link found with prefix %s for %s', prefix, fileName);
128
+ // hash.untake(hamtBucketBits)
129
+ break;
130
+ }
131
+ const linkName = childLink.Name ?? '';
132
+ if (linkName.length < 2) {
133
+ throw new Error('Invalid HAMT - link name was too short');
134
+ }
135
+ if (linkName.length === 2) {
136
+ // found sub-shard
137
+ cid = childLink.Hash;
138
+ log('descend into sub-shard with prefix %s', linkName);
139
+ continue;
140
+ }
141
+ break;
142
+ }
143
+ return { path, hash };
144
+ };
203
145
  //# sourceMappingURL=hamt-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hamt-utils.js","sourceRoot":"","sources":["../../../../src/commands/utils/hamt-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hamt-utils.js","sourceRoot":"","sources":["../../../../src/commands/utils/hamt-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-link.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AASpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,wBAAwB,EAAE,MAAM,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;CACT;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB5I"}
1
+ {"version":3,"file":"remove-link.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAQpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,wBAAwB,EAAE,MAAM,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;CACT;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB5I"}
@@ -1,7 +1,7 @@
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 { generatePath, updateHamtDirectory } from './hamt-utils.js';
4
+ import { recreateShardedDirectory, updateShardedDirectory } from './hamt-utils.js';
5
5
  import { InvalidParametersError, InvalidPBNodeError } from './errors.js';
6
6
  import { exporter } from 'ipfs-unixfs-exporter';
7
7
  import { persist } from './persist.js';
@@ -41,102 +41,46 @@ const removeFromDirectory = async (parent, name, blockstore, options) => {
41
41
  };
42
42
  };
43
43
  const removeFromShardedDirectory = async (parent, name, blockstore, options) => {
44
- const path = await generatePath(parent, name, blockstore, options);
45
- // remove file from root bucket
46
- const rootBucket = path[path.length - 1].bucket;
47
- if (rootBucket == null) {
48
- throw new Error('Could not generate HAMT path');
44
+ const { path } = await recreateShardedDirectory(parent.cid, name, blockstore, options);
45
+ const finalSegment = path[path.length - 1];
46
+ if (finalSegment == null) {
47
+ throw new Error('Invalid HAMT, could not generate path');
49
48
  }
50
- await rootBucket.del(name);
51
- // update all nodes in the shard path
52
- return await updateShard(path, name, blockstore, options);
53
- };
54
- /**
55
- * The `path` param is a list of HAMT path segments starting with th
56
- */
57
- const updateShard = async (path, name, blockstore, options) => {
58
- const fileName = `${path[0].prefix}${name}`;
59
- // skip first path segment as it is the file to remove
60
- for (let i = 1; i < path.length; i++) {
61
- const lastPrefix = path[i - 1].prefix;
62
- const segment = path[i];
63
- if (segment.node == null) {
64
- throw new InvalidParametersError('Path segment had no associated PBNode');
65
- }
66
- const link = segment.node.Links
67
- .find(link => (link.Name ?? '').substring(0, 2) === lastPrefix);
68
- if (link == null) {
69
- throw new InvalidParametersError(`No link found with prefix ${lastPrefix} for file ${name}`);
70
- }
71
- if (link.Name == null) {
72
- throw new InvalidParametersError(`${lastPrefix} link had no name`);
73
- }
74
- if (link.Name === fileName) {
75
- log(`removing existing link ${link.Name}`);
76
- const links = segment.node.Links.filter((nodeLink) => {
77
- return nodeLink.Name !== link.Name;
78
- });
79
- if (segment.bucket == null) {
80
- throw new Error('Segment bucket was missing');
81
- }
82
- await segment.bucket.del(name);
83
- const result = await updateHamtDirectory({
84
- Data: segment.node.Data,
85
- Links: links
86
- }, blockstore, segment.bucket, options);
87
- segment.node = result.node;
88
- segment.cid = result.cid;
89
- segment.size = result.size;
90
- }
91
- if (link.Name === lastPrefix) {
92
- log(`updating subshard with prefix ${lastPrefix}`);
93
- const lastSegment = path[i - 1];
94
- if (lastSegment.node?.Links.length === 1) {
95
- log(`removing subshard for ${lastPrefix}`);
96
- // convert subshard back to normal file entry
97
- const link = lastSegment.node.Links[0];
98
- link.Name = `${lastPrefix}${(link.Name ?? '').substring(2)}`;
99
- // remove existing prefix
100
- segment.node.Links = segment.node.Links.filter((link) => {
101
- return link.Name !== lastPrefix;
102
- });
103
- // add new child
104
- segment.node.Links.push(link);
49
+ const linkName = finalSegment.node.Links.filter(l => (l.Name ?? '').substring(2) === name).map(l => l.Name).pop();
50
+ if (linkName == null) {
51
+ throw new Error('File not found');
52
+ }
53
+ const prefix = linkName.substring(0, 2);
54
+ const index = parseInt(prefix, 16);
55
+ // remove the file from the shard
56
+ finalSegment.node.Links = finalSegment.node.Links.filter(link => link.Name !== linkName);
57
+ finalSegment.children.unset(index);
58
+ if (finalSegment.node.Links.length === 1) {
59
+ // replace the subshard with the last remaining file in the parent
60
+ while (true) {
61
+ if (path.length === 1) {
62
+ break;
105
63
  }
106
- else {
107
- // replace subshard entry
108
- log(`replacing subshard for ${lastPrefix}`);
109
- // remove existing prefix
110
- segment.node.Links = segment.node.Links.filter((link) => {
111
- return link.Name !== lastPrefix;
112
- });
113
- if (lastSegment.cid == null) {
114
- throw new Error('Did not persist previous segment');
115
- }
116
- // add new child
117
- segment.node.Links.push({
118
- Name: lastPrefix,
119
- Hash: lastSegment.cid,
120
- Tsize: lastSegment.size
121
- });
64
+ const segment = path[path.length - 1];
65
+ if (segment == null || segment.node.Links.length > 1) {
66
+ break;
122
67
  }
123
- if (segment.bucket == null) {
124
- throw new Error('Segment bucket was missing');
68
+ // remove final segment
69
+ path.pop();
70
+ const nextSegment = path[path.length - 1];
71
+ if (nextSegment == null) {
72
+ break;
125
73
  }
126
- const result = await updateHamtDirectory(segment.node, blockstore, segment.bucket, options);
127
- segment.node = result.node;
128
- segment.cid = result.cid;
129
- segment.size = result.size;
74
+ const link = segment.node.Links[0];
75
+ nextSegment.node.Links = nextSegment.node.Links.filter(l => !(l.Name ?? '').startsWith(nextSegment.prefix));
76
+ nextSegment.node.Links.push({
77
+ Hash: link.Hash,
78
+ Name: `${nextSegment.prefix}${(link.Name ?? '').substring(2)}`,
79
+ Tsize: link.Tsize
80
+ });
130
81
  }
131
82
  }
132
- const rootSegment = path[path.length - 1];
133
- if (rootSegment == null || rootSegment.cid == null || rootSegment.node == null) {
134
- throw new InvalidParametersError('Failed to update shard');
135
- }
136
- return {
137
- cid: rootSegment.cid,
138
- node: rootSegment.node
139
- };
83
+ return await updateShardedDirectory(path, blockstore, options);
140
84
  };
141
85
  const convertToFlatDirectory = async (parent, blockstore, options) => {
142
86
  if (parent.node.Data == null) {
@@ -1 +1 @@
1
- {"version":3,"file":"remove-link.js","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove-link.js","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,EAAE,GAAG,CAAA;IAER,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,wBAAsB,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAsDxI;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,wBAAwB,EAAE,MAAM,CAAA;CACjC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAoC3I"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,EAAE,GAAG,CAAA;IAER,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,wBAAsB,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA2DxI;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,wBAAwB,EAAE,MAAM,CAAA;CACjC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAoC3I"}
@@ -4,12 +4,12 @@ import { DoesNotExistError, InvalidParametersError } from './errors.js';
4
4
  import { addLink } from './add-link.js';
5
5
  import { cidToDirectory } from './cid-to-directory.js';
6
6
  import { cidToPBLink } from './cid-to-pblink.js';
7
- const log = logger('helia:unixfs:components:utils:add-link');
7
+ const log = logger('helia:unixfs:components:utils:resolve');
8
8
  export async function resolve(cid, path, blockstore, options) {
9
- log('resolve "%s" under %c', path, cid);
10
9
  if (path == null || path === '') {
11
10
  return { cid };
12
11
  }
12
+ log('resolve "%s" under %c', path, cid);
13
13
  const parts = path.split('/').filter(Boolean);
14
14
  const segments = [{
15
15
  name: '',
@@ -19,6 +19,7 @@ export async function resolve(cid, path, blockstore, options) {
19
19
  for (let i = 0; i < parts.length; i++) {
20
20
  const part = parts[i];
21
21
  const result = await exporter(cid, blockstore, options);
22
+ log('resolving "%s"', part, result);
22
23
  if (result.type === 'file') {
23
24
  if (i < parts.length - 1) {
24
25
  throw new InvalidParametersError('Path was invalid');
@@ -30,6 +31,7 @@ export async function resolve(cid, path, blockstore, options) {
30
31
  for await (const entry of result.content()) {
31
32
  if (entry.name === part) {
32
33
  dirCid = entry.cid;
34
+ break;
33
35
  }
34
36
  }
35
37
  if (dirCid == null) {
@@ -46,6 +48,7 @@ export async function resolve(cid, path, blockstore, options) {
46
48
  throw new InvalidParametersError('Could not resolve path');
47
49
  }
48
50
  }
51
+ log('resolved %s to %c', path, cid);
49
52
  return {
50
53
  cid,
51
54
  path,
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,GAAG,GAAG,MAAM,CAAC,wCAAwC,CAAC,CAAA;AAwB5D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAE,GAAQ,EAAE,IAAwB,EAAE,UAAsB,EAAE,OAAqB;IAC9G,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAEvC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAA;KACf;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAc,CAAC;YAC3B,IAAI,EAAE,EAAE;YACR,GAAG;YACH,IAAI,EAAE,EAAE;SACT,CAAC,CAAA;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;aACrD;YAED,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;SACjB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;YACtC,IAAI,MAAuB,CAAA;YAE3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;gBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;oBACvB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAA;iBACnB;aACF;YAED,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,IAAI,iBAAiB,CAAC,kCAAkC,CAAC,CAAA;aAChE;YAED,GAAG,GAAG,MAAM,CAAA;YAEZ,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,GAAG;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAA;SACH;aAAM;YACL,MAAM,IAAI,sBAAsB,CAAC,wBAAwB,CAAC,CAAA;SAC3D;KACF;IAED,OAAO;QACL,GAAG;QACH,IAAI;QACJ,QAAQ;KACT,CAAA;AACH,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,MAAqB,EAAE,UAAsB,EAAE,OAA8B;IAC3H,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3D,OAAO,GAAG,CAAA;KACX;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;IAEjC,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;IAED,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA;IAEf,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAEzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;QACpC,MAAM,CACJ,SAAS,EACT,MAAM,CACP,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC;YAC/C,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;SACxD,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YAC1D,GAAG,OAAO;YACV,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,GAAG,CAAC,OAAO;SACxB,CAAC,CAAA;QAEF,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;QAChB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QAChB,KAAK,GAAG,MAAM,CAAA;KACf;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,GAAG,GAAG,MAAM,CAAC,uCAAuC,CAAC,CAAA;AAwB3D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAE,GAAQ,EAAE,IAAwB,EAAE,UAAsB,EAAE,OAAqB;IAC9G,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAA;KACf;IAED,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAc,CAAC;YAC3B,IAAI,EAAE,EAAE;YACR,GAAG;YACH,IAAI,EAAE,EAAE;SACT,CAAC,CAAA;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAEvD,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAEnC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;aACrD;YAED,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;SACjB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;YACtC,IAAI,MAAuB,CAAA;YAE3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;gBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;oBACvB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAA;oBAClB,MAAK;iBACN;aACF;YAED,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,IAAI,iBAAiB,CAAC,kCAAkC,CAAC,CAAA;aAChE;YAED,GAAG,GAAG,MAAM,CAAA;YAEZ,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,GAAG;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAA;SACH;aAAM;YACL,MAAM,IAAI,sBAAsB,CAAC,wBAAwB,CAAC,CAAA;SAC3D;KACF;IAED,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAEnC,OAAO;QACL,GAAG;QACH,IAAI;QACJ,QAAQ;KACT,CAAA;AACH,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,MAAqB,EAAE,UAAsB,EAAE,OAA8B;IAC3H,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3D,OAAO,GAAG,CAAA;KACX;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;IAEjC,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;IAED,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA;IAEf,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAEzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;QACpC,MAAM,CACJ,SAAS,EACT,MAAM,CACP,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC;YAC/C,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;SACxD,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YAC1D,GAAG,OAAO;YACV,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,GAAG,CAAC,OAAO;SACxB,CAAC,CAAA;QAEF,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;QAChB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QAChB,KAAK,GAAG,MAAM,CAAA;KACf;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/unixfs",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "A Helia-compatible wrapper for UnixFS",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia-unixfs#readme",
@@ -139,7 +139,6 @@
139
139
  "release": "aegir release"
140
140
  },
141
141
  "dependencies": {
142
- "@helia/interface": "next",
143
142
  "@ipld/dag-pb": "^4.0.0",
144
143
  "@libp2p/interfaces": "^3.3.1",
145
144
  "@libp2p/logger": "^2.0.5",
@@ -152,7 +151,8 @@
152
151
  "it-last": "^2.0.0",
153
152
  "it-pipe": "^2.0.5",
154
153
  "merge-options": "^3.0.4",
155
- "multiformats": "^11.0.1"
154
+ "multiformats": "^11.0.1",
155
+ "sparse-array": "^1.3.2"
156
156
  },
157
157
  "devDependencies": {
158
158
  "aegir": "^38.1.0",