@helia/unixfs 0.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/index.min.js +1 -1
- package/dist/src/commands/cat.d.ts +1 -1
- package/dist/src/commands/cat.d.ts.map +1 -1
- package/dist/src/commands/cat.js +1 -1
- package/dist/src/commands/cat.js.map +1 -1
- package/dist/src/commands/chmod.d.ts.map +1 -1
- package/dist/src/commands/chmod.js +14 -12
- package/dist/src/commands/chmod.js.map +1 -1
- package/dist/src/commands/cp.d.ts +1 -1
- package/dist/src/commands/cp.d.ts.map +1 -1
- package/dist/src/commands/cp.js +5 -2
- package/dist/src/commands/cp.js.map +1 -1
- package/dist/src/commands/ls.d.ts +2 -1
- package/dist/src/commands/ls.d.ts.map +1 -1
- package/dist/src/commands/ls.js +1 -1
- package/dist/src/commands/ls.js.map +1 -1
- package/dist/src/commands/mkdir.d.ts.map +1 -1
- package/dist/src/commands/mkdir.js +4 -2
- package/dist/src/commands/mkdir.js.map +1 -1
- package/dist/src/commands/rm.d.ts +1 -1
- package/dist/src/commands/rm.d.ts.map +1 -1
- package/dist/src/commands/rm.js +9 -3
- package/dist/src/commands/rm.js.map +1 -1
- package/dist/src/commands/stat.d.ts +1 -1
- package/dist/src/commands/stat.d.ts.map +1 -1
- package/dist/src/commands/stat.js +19 -15
- package/dist/src/commands/stat.js.map +1 -1
- package/dist/src/commands/touch.d.ts.map +1 -1
- package/dist/src/commands/touch.js +15 -13
- package/dist/src/commands/touch.js.map +1 -1
- package/dist/src/commands/utils/add-link.d.ts +4 -2
- package/dist/src/commands/utils/add-link.d.ts.map +1 -1
- package/dist/src/commands/utils/add-link.js +24 -24
- package/dist/src/commands/utils/add-link.js.map +1 -1
- package/dist/src/commands/utils/cid-to-directory.d.ts +3 -3
- package/dist/src/commands/utils/cid-to-directory.d.ts.map +1 -1
- package/dist/src/commands/utils/cid-to-directory.js +1 -1
- package/dist/src/commands/utils/cid-to-directory.js.map +1 -1
- package/dist/src/commands/utils/cid-to-pblink.d.ts +3 -3
- package/dist/src/commands/utils/cid-to-pblink.d.ts.map +1 -1
- package/dist/src/commands/utils/cid-to-pblink.js.map +1 -1
- package/dist/src/commands/utils/constants.d.ts +2 -0
- package/dist/src/commands/utils/constants.d.ts.map +1 -0
- package/dist/src/commands/utils/constants.js +2 -0
- package/dist/src/commands/utils/constants.js.map +1 -0
- package/dist/src/commands/utils/dir-sharded.d.ts +47 -41
- package/dist/src/commands/utils/dir-sharded.d.ts.map +1 -1
- package/dist/src/commands/utils/dir-sharded.js +99 -15
- package/dist/src/commands/utils/dir-sharded.js.map +1 -1
- package/dist/src/commands/utils/errors.d.ts +22 -6
- package/dist/src/commands/utils/errors.d.ts.map +1 -1
- package/dist/src/commands/utils/errors.js +34 -8
- package/dist/src/commands/utils/errors.js.map +1 -1
- package/dist/src/commands/utils/hamt-constants.d.ts +1 -1
- package/dist/src/commands/utils/hamt-constants.d.ts.map +1 -1
- package/dist/src/commands/utils/hamt-constants.js +1 -1
- package/dist/src/commands/utils/hamt-constants.js.map +1 -1
- package/dist/src/commands/utils/hamt-utils.d.ts +15 -12
- package/dist/src/commands/utils/hamt-utils.d.ts.map +1 -1
- package/dist/src/commands/utils/hamt-utils.js +40 -39
- package/dist/src/commands/utils/hamt-utils.js.map +1 -1
- package/dist/src/commands/utils/is-over-shard-threshold.d.ts +10 -0
- package/dist/src/commands/utils/is-over-shard-threshold.d.ts.map +1 -0
- package/dist/src/commands/utils/is-over-shard-threshold.js +62 -0
- package/dist/src/commands/utils/is-over-shard-threshold.js.map +1 -0
- package/dist/src/commands/utils/persist.d.ts +7 -6
- package/dist/src/commands/utils/persist.d.ts.map +1 -1
- package/dist/src/commands/utils/persist.js +6 -3
- package/dist/src/commands/utils/persist.js.map +1 -1
- package/dist/src/commands/utils/remove-link.d.ts +6 -2
- package/dist/src/commands/utils/remove-link.d.ts.map +1 -1
- package/dist/src/commands/utils/remove-link.js +143 -55
- package/dist/src/commands/utils/remove-link.js.map +1 -1
- package/dist/src/commands/utils/resolve.d.ts +6 -3
- package/dist/src/commands/utils/resolve.d.ts.map +1 -1
- package/dist/src/commands/utils/resolve.js +4 -4
- package/dist/src/commands/utils/resolve.js.map +1 -1
- package/dist/src/index.d.ts +14 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -7
- package/dist/src/index.js.map +1 -1
- package/dist/typedoc-urls.json +14 -0
- package/package.json +8 -7
- package/src/commands/cat.ts +3 -2
- package/src/commands/chmod.ts +13 -10
- package/src/commands/cp.ts +7 -4
- package/src/commands/ls.ts +4 -3
- package/src/commands/mkdir.ts +5 -3
- package/src/commands/rm.ts +9 -5
- package/src/commands/stat.ts +22 -17
- package/src/commands/touch.ts +15 -12
- package/src/commands/utils/add-link.ts +32 -31
- package/src/commands/utils/cid-to-directory.ts +4 -4
- package/src/commands/utils/cid-to-pblink.ts +3 -3
- package/src/commands/utils/constants.ts +2 -0
- package/src/commands/utils/dir-sharded.ts +162 -63
- package/src/commands/utils/errors.ts +42 -8
- package/src/commands/utils/hamt-constants.ts +1 -1
- package/src/commands/utils/hamt-utils.ts +59 -50
- package/src/commands/utils/is-over-shard-threshold.ts +78 -0
- package/src/commands/utils/persist.ts +13 -8
- package/src/commands/utils/remove-link.ts +178 -77
- package/src/commands/utils/resolve.ts +12 -7
- package/src/index.ts +15 -17
- package/dist/src/commands/add.d.ts +0 -6
- package/dist/src/commands/add.d.ts.map +0 -1
- package/dist/src/commands/add.js +0 -38
- package/dist/src/commands/add.js.map +0 -1
- package/src/commands/add.ts +0 -46
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as dagPB from '@ipld/dag-pb';
|
|
2
|
-
import { CID } from 'multiformats/cid';
|
|
3
2
|
import { logger } from '@libp2p/logger';
|
|
4
3
|
import { UnixFS } from 'ipfs-unixfs';
|
|
5
4
|
import { generatePath, updateHamtDirectory } from './hamt-utils.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { InvalidParametersError, InvalidPBNodeError } from './errors.js';
|
|
6
|
+
import { exporter } from 'ipfs-unixfs-exporter';
|
|
7
|
+
import { persist } from './persist.js';
|
|
8
|
+
import { isOverShardThreshold } from './is-over-shard-threshold.js';
|
|
9
9
|
const log = logger('helia:unixfs:utils:remove-link');
|
|
10
10
|
export async function removeLink(parent, name, blockstore, options) {
|
|
11
11
|
if (parent.node.Data == null) {
|
|
@@ -13,10 +13,15 @@ export async function removeLink(parent, name, blockstore, options) {
|
|
|
13
13
|
}
|
|
14
14
|
const meta = UnixFS.unmarshal(parent.node.Data);
|
|
15
15
|
if (meta.type === 'hamt-sharded-directory') {
|
|
16
|
-
log(`
|
|
17
|
-
|
|
16
|
+
log(`removing ${name} from sharded directory`);
|
|
17
|
+
const result = await removeFromShardedDirectory(parent, name, blockstore, options);
|
|
18
|
+
if (!(await isOverShardThreshold(result.node, blockstore, options.shardSplitThresholdBytes))) {
|
|
19
|
+
log('converting shard to flat directory %c', parent.cid);
|
|
20
|
+
return await convertToFlatDirectory(result, blockstore, options);
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
18
23
|
}
|
|
19
|
-
log(`
|
|
24
|
+
log(`removing link ${name} regular directory`);
|
|
20
25
|
return await removeFromDirectory(parent, name, blockstore, options);
|
|
21
26
|
}
|
|
22
27
|
const removeFromDirectory = async (parent, name, blockstore, options) => {
|
|
@@ -25,9 +30,10 @@ const removeFromDirectory = async (parent, name, blockstore, options) => {
|
|
|
25
30
|
return link.Name !== name;
|
|
26
31
|
});
|
|
27
32
|
const parentBlock = dagPB.encode(parent.node);
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
const parentCid = await persist(parentBlock, blockstore, {
|
|
34
|
+
...options,
|
|
35
|
+
cidVersion: parent.cid.version
|
|
36
|
+
});
|
|
31
37
|
log(`Updated regular directory ${parentCid}`);
|
|
32
38
|
return {
|
|
33
39
|
node: parent.node,
|
|
@@ -35,58 +41,140 @@ const removeFromDirectory = async (parent, name, blockstore, options) => {
|
|
|
35
41
|
};
|
|
36
42
|
};
|
|
37
43
|
const removeFromShardedDirectory = async (parent, name, blockstore, options) => {
|
|
38
|
-
const
|
|
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');
|
|
49
|
+
}
|
|
39
50
|
await rootBucket.del(name);
|
|
40
|
-
|
|
41
|
-
return await
|
|
51
|
+
// update all nodes in the shard path
|
|
52
|
+
return await updateShard(path, name, blockstore, options);
|
|
42
53
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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);
|
|
105
|
+
}
|
|
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
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (segment.bucket == null) {
|
|
124
|
+
throw new Error('Segment bucket was missing');
|
|
125
|
+
}
|
|
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;
|
|
130
|
+
}
|
|
47
131
|
}
|
|
48
|
-
const
|
|
49
|
-
if (node == null) {
|
|
50
|
-
throw new InvalidParametersError('
|
|
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');
|
|
51
135
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return nodeLink.Name !== link.Name;
|
|
61
|
-
});
|
|
62
|
-
await bucket.del(name);
|
|
63
|
-
parent.node = node;
|
|
64
|
-
return await updateHamtDirectory(parent, blockstore, links, bucket, options);
|
|
136
|
+
return {
|
|
137
|
+
cid: rootSegment.cid,
|
|
138
|
+
node: rootSegment.node
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
const convertToFlatDirectory = async (parent, blockstore, options) => {
|
|
142
|
+
if (parent.node.Data == null) {
|
|
143
|
+
throw new InvalidParametersError('Invalid parent passed to convertToFlatDirectory');
|
|
65
144
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const child = {
|
|
69
|
-
Hash: result.cid,
|
|
70
|
-
Tsize: result.size,
|
|
71
|
-
Name: prefix
|
|
145
|
+
const rootNode = {
|
|
146
|
+
Links: []
|
|
72
147
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const link = result.node.Links[0];
|
|
77
|
-
child.Name = `${prefix}${(link.Name ?? '').substring(2)}`;
|
|
78
|
-
child.Hash = link.Hash;
|
|
79
|
-
child.Tsize = link.Tsize ?? 0;
|
|
148
|
+
const dir = await exporter(parent.cid, blockstore);
|
|
149
|
+
if (dir.type !== 'directory') {
|
|
150
|
+
throw new Error('Unexpected node type');
|
|
80
151
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
152
|
+
for await (const entry of dir.content()) {
|
|
153
|
+
let tsize = 0;
|
|
154
|
+
if (entry.node instanceof Uint8Array) {
|
|
155
|
+
tsize = entry.node.byteLength;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
tsize = dagPB.encode(entry.node).length;
|
|
159
|
+
}
|
|
160
|
+
rootNode.Links.push({
|
|
161
|
+
Hash: entry.cid,
|
|
162
|
+
Name: entry.name,
|
|
163
|
+
Tsize: tsize
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
// copy mode/mtime over if set
|
|
167
|
+
const oldUnixfs = UnixFS.unmarshal(parent.node.Data);
|
|
168
|
+
rootNode.Data = new UnixFS({ type: 'directory', mode: oldUnixfs.mode, mtime: oldUnixfs.mtime }).marshal();
|
|
169
|
+
const block = dagPB.encode(dagPB.prepare(rootNode));
|
|
170
|
+
const cid = await persist(block, blockstore, {
|
|
171
|
+
codec: dagPB,
|
|
172
|
+
cidVersion: parent.cid.version,
|
|
173
|
+
signal: options.signal
|
|
88
174
|
});
|
|
89
|
-
|
|
90
|
-
|
|
175
|
+
return {
|
|
176
|
+
cid,
|
|
177
|
+
node: rootNode
|
|
178
|
+
};
|
|
91
179
|
};
|
|
92
180
|
//# sourceMappingURL=remove-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-link.js","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"remove-link.js","sourceRoot":"","sources":["../../../../src/commands/utils/remove-link.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACL,YAAY,EAEZ,mBAAmB,EAEpB,MAAM,iBAAiB,CAAA;AAKxB,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,MAAM,GAAG,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAA;AAYpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,MAAiB,EAAE,IAAY,EAAE,UAAsB,EAAE,OAAsB;IAC/G,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;QAC5B,MAAM,IAAI,kBAAkB,CAAC,yBAAyB,CAAC,CAAA;KACxD;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE;QAC1C,GAAG,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAA;QAE9C,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAElF,IAAI,CAAC,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,EAAE;YAC5F,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;YAExD,OAAO,MAAM,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;SACjE;QAED,OAAO,MAAM,CAAA;KACd;IAED,GAAG,CAAC,iBAAiB,IAAI,oBAAoB,CAAC,CAAA;IAE9C,OAAO,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAiB,EAAE,IAAY,EAAE,UAAsB,EAAE,OAAqB,EAA6B,EAAE;IAC9I,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE;QACvD,GAAG,OAAO;QACV,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;KAC/B,CAAC,CAAA;IAEF,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;IAE7C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,SAAS;KACf,CAAA;AACH,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,KAAK,EAAE,MAAiB,EAAE,IAAY,EAAE,UAAsB,EAAE,OAAmC,EAAuC,EAAE;IAC7K,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAElE,+BAA+B;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;IAE/C,IAAI,UAAU,IAAI,IAAI,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;KAChD;IAED,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAE1B,qCAAqC;IACrC,OAAO,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,GAAG,KAAK,EAAE,IAAuB,EAAE,IAAY,EAAE,UAAsB,EAAE,OAAmC,EAAuC,EAAE;IACpK,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,CAAA;IAE3C,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEvB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;YACxB,MAAM,IAAI,sBAAsB,CAAC,uCAAuC,CAAC,CAAA;SAC1E;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK;aAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAA;QAEjE,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,MAAM,IAAI,sBAAsB,CAAC,6BAA6B,UAAU,aAAa,IAAI,EAAE,CAAC,CAAA;SAC7F;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,MAAM,IAAI,sBAAsB,CAAC,GAAG,UAAU,mBAAmB,CAAC,CAAA;SACnE;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1B,GAAG,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAE1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnD,OAAO,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAA;YACpC,CAAC,CAAC,CAAA;YAEF,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;aAC9C;YAED,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAE9B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;gBACvC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;gBACvB,KAAK,EAAE,KAAK;aACb,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAEvC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YAC1B,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;YACxB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;SAC3B;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAA;YAElD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAE/B,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAA;gBAE1C,6CAA6C;gBAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACtC,IAAI,CAAC,IAAI,GAAG,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;gBAE5D,yBAAyB;gBACzB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtD,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAA;gBACjC,CAAC,CAAC,CAAA;gBAEF,gBAAgB;gBAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC9B;iBAAM;gBACL,yBAAyB;gBACzB,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAA;gBAE3C,yBAAyB;gBACzB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtD,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAA;gBACjC,CAAC,CAAC,CAAA;gBAEF,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;iBACpD;gBAED,gBAAgB;gBAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW,CAAC,GAAG;oBACrB,KAAK,EAAE,WAAW,CAAC,IAAI;iBACxB,CAAC,CAAA;aACH;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;aAC9C;YAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC3F,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YAC1B,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;YACxB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;SAC3B;KACF;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEzC,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE;QAC9E,MAAM,IAAI,sBAAsB,CAAC,wBAAwB,CAAC,CAAA;KAC3D;IAED,OAAO;QACL,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,IAAI,EAAE,WAAW,CAAC,IAAI;KACvB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAiB,EAAE,UAAsB,EAAE,OAAsB,EAA6B,EAAE;IACpI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;QAC5B,MAAM,IAAI,sBAAsB,CAAC,iDAAiD,CAAC,CAAA;KACpF;IAED,MAAM,QAAQ,GAAW;QACvB,KAAK,EAAE,EAAE;KACV,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAElD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACxC;IAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;QACvC,IAAI,KAAK,GAAG,CAAC,CAAA;QAEb,IAAI,KAAK,CAAC,IAAI,YAAY,UAAU,EAAE;YACpC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAA;SAC9B;aAAM;YACL,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;SACxC;QAED,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,KAAK,CAAC,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK;SACb,CAAC,CAAA;KACH;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpD,QAAQ,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IACzG,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE;QAC3C,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IAEF,OAAO;QACL,GAAG;QACH,IAAI,EAAE,QAAQ;KACf,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { CID } from 'multiformats/cid';
|
|
2
|
-
import { Blockstore } from 'ipfs-unixfs-exporter';
|
|
3
2
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
3
|
+
import type { Blockstore } from 'interface-blockstore';
|
|
4
4
|
export interface Segment {
|
|
5
5
|
name: string;
|
|
6
6
|
cid: CID;
|
|
7
|
-
size:
|
|
7
|
+
size: bigint;
|
|
8
8
|
}
|
|
9
9
|
export interface ResolveResult {
|
|
10
10
|
/**
|
|
@@ -20,9 +20,12 @@ export interface ResolveResult {
|
|
|
20
20
|
segments?: Segment[];
|
|
21
21
|
}
|
|
22
22
|
export declare function resolve(cid: CID, path: string | undefined, blockstore: Blockstore, options: AbortOptions): Promise<ResolveResult>;
|
|
23
|
+
export interface UpdatePathCidsOptions extends AbortOptions {
|
|
24
|
+
shardSplitThresholdBytes: number;
|
|
25
|
+
}
|
|
23
26
|
/**
|
|
24
27
|
* Where we have descended into a DAG to update a child node, ascend up the DAG creating
|
|
25
28
|
* new hashes and blocks for the changed content
|
|
26
29
|
*/
|
|
27
|
-
export declare function updatePathCids(cid: CID, result: ResolveResult, blockstore: Blockstore, options:
|
|
30
|
+
export declare function updatePathCids(cid: CID, result: ResolveResult, blockstore: Blockstore, options: UpdatePathCidsOptions): Promise<CID>;
|
|
28
31
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -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;
|
|
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,7 +1,6 @@
|
|
|
1
1
|
import { exporter } from 'ipfs-unixfs-exporter';
|
|
2
|
-
import { InvalidParametersError } from '@helia/interface/errors';
|
|
3
2
|
import { logger } from '@libp2p/logger';
|
|
4
|
-
import { DoesNotExistError } from './errors.js';
|
|
3
|
+
import { DoesNotExistError, InvalidParametersError } from './errors.js';
|
|
5
4
|
import { addLink } from './add-link.js';
|
|
6
5
|
import { cidToDirectory } from './cid-to-directory.js';
|
|
7
6
|
import { cidToPBLink } from './cid-to-pblink.js';
|
|
@@ -15,7 +14,7 @@ export async function resolve(cid, path, blockstore, options) {
|
|
|
15
14
|
const segments = [{
|
|
16
15
|
name: '',
|
|
17
16
|
cid,
|
|
18
|
-
size:
|
|
17
|
+
size: 0n
|
|
19
18
|
}];
|
|
20
19
|
for (let i = 0; i < parts.length; i++) {
|
|
21
20
|
const part = parts[i];
|
|
@@ -74,7 +73,8 @@ export async function updatePathCids(cid, result, blockstore, options) {
|
|
|
74
73
|
]);
|
|
75
74
|
const result = await addLink(directory, pblink, blockstore, {
|
|
76
75
|
...options,
|
|
77
|
-
allowOverwriting: true
|
|
76
|
+
allowOverwriting: true,
|
|
77
|
+
cidVersion: cid.version
|
|
78
78
|
});
|
|
79
79
|
cid = result.cid;
|
|
80
80
|
parent.cid = cid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/commands/utils/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CID, Version } from 'multiformats/cid';
|
|
2
2
|
import type { Blockstore } from 'interface-blockstore';
|
|
3
3
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
4
|
-
import type { ImportCandidate, ImportResult, UserImporterOptions } from 'ipfs-unixfs-importer';
|
|
5
4
|
import type { Mtime } from 'ipfs-unixfs';
|
|
6
5
|
import type { UnixFSEntry } from 'ipfs-unixfs-exporter';
|
|
7
6
|
export interface UnixFSComponents {
|
|
@@ -15,9 +14,11 @@ export interface CatOptions extends AbortOptions {
|
|
|
15
14
|
export interface ChmodOptions extends AbortOptions {
|
|
16
15
|
recursive: boolean;
|
|
17
16
|
path?: string;
|
|
17
|
+
shardSplitThresholdBytes: number;
|
|
18
18
|
}
|
|
19
19
|
export interface CpOptions extends AbortOptions {
|
|
20
20
|
force: boolean;
|
|
21
|
+
shardSplitThresholdBytes: number;
|
|
21
22
|
}
|
|
22
23
|
export interface LsOptions extends AbortOptions {
|
|
23
24
|
path?: string;
|
|
@@ -29,8 +30,10 @@ export interface MkdirOptions extends AbortOptions {
|
|
|
29
30
|
force: boolean;
|
|
30
31
|
mode?: number;
|
|
31
32
|
mtime?: Mtime;
|
|
33
|
+
shardSplitThresholdBytes: number;
|
|
32
34
|
}
|
|
33
35
|
export interface RmOptions extends AbortOptions {
|
|
36
|
+
shardSplitThresholdBytes: number;
|
|
34
37
|
}
|
|
35
38
|
export interface StatOptions extends AbortOptions {
|
|
36
39
|
path?: string;
|
|
@@ -51,19 +54,19 @@ export interface UnixFSStats {
|
|
|
51
54
|
/**
|
|
52
55
|
* The size of the file in bytes
|
|
53
56
|
*/
|
|
54
|
-
fileSize:
|
|
57
|
+
fileSize: bigint;
|
|
55
58
|
/**
|
|
56
59
|
* The size of the DAG that holds the file in bytes
|
|
57
60
|
*/
|
|
58
|
-
dagSize:
|
|
61
|
+
dagSize: bigint;
|
|
59
62
|
/**
|
|
60
63
|
* How much of the file is in the local block store
|
|
61
64
|
*/
|
|
62
|
-
localFileSize:
|
|
65
|
+
localFileSize: bigint;
|
|
63
66
|
/**
|
|
64
67
|
* How much of the DAG that holds the file is in the local blockstore
|
|
65
68
|
*/
|
|
66
|
-
localDagSize:
|
|
69
|
+
localDagSize: bigint;
|
|
67
70
|
/**
|
|
68
71
|
* How many blocks make up the DAG - nb. this will only be accurate
|
|
69
72
|
* if all blocks are present in the local blockstore
|
|
@@ -73,15 +76,19 @@ export interface UnixFSStats {
|
|
|
73
76
|
* The type of file
|
|
74
77
|
*/
|
|
75
78
|
type: 'file' | 'directory' | 'raw';
|
|
79
|
+
/**
|
|
80
|
+
* UnixFS metadata about this file or directory. Will not be present
|
|
81
|
+
* if the node is a `raw` type.
|
|
82
|
+
*/
|
|
83
|
+
unixfs?: import('ipfs-unixfs').UnixFS;
|
|
76
84
|
}
|
|
77
85
|
export interface TouchOptions extends AbortOptions {
|
|
78
86
|
mtime?: Mtime;
|
|
79
87
|
path?: string;
|
|
80
88
|
recursive: boolean;
|
|
89
|
+
shardSplitThresholdBytes: number;
|
|
81
90
|
}
|
|
82
91
|
export interface UnixFS {
|
|
83
|
-
add: (source: Uint8Array | Iterator<Uint8Array> | AsyncIterator<Uint8Array> | ImportCandidate, options?: Partial<UserImporterOptions>) => Promise<CID>;
|
|
84
|
-
addStream: (source: Iterable<ImportCandidate> | AsyncIterable<ImportCandidate>, options?: Partial<UserImporterOptions>) => AsyncGenerator<ImportResult>;
|
|
85
92
|
cat: (cid: CID, options?: Partial<CatOptions>) => AsyncIterable<Uint8Array>;
|
|
86
93
|
chmod: (source: CID, mode: number, options?: Partial<ChmodOptions>) => Promise<CID>;
|
|
87
94
|
cp: (source: CID, target: CID, name: string, options?: Partial<CpOptions>) => Promise<CID>;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { add, addStream } from './commands/add.js';
|
|
2
1
|
import { cat } from './commands/cat.js';
|
|
3
2
|
import { mkdir } from './commands/mkdir.js';
|
|
4
3
|
import { cp } from './commands/cp.js';
|
|
@@ -11,12 +10,6 @@ class DefaultUnixFS {
|
|
|
11
10
|
constructor(components) {
|
|
12
11
|
this.components = components;
|
|
13
12
|
}
|
|
14
|
-
async add(source, options = {}) {
|
|
15
|
-
return await add(source, this.components.blockstore, options);
|
|
16
|
-
}
|
|
17
|
-
async *addStream(source, options = {}) {
|
|
18
|
-
yield* addStream(source, this.components.blockstore, options);
|
|
19
|
-
}
|
|
20
13
|
async *cat(cid, options = {}) {
|
|
21
14
|
yield* cat(cid, this.components.blockstore, options);
|
|
22
15
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAqHrC,MAAM,aAAa;IAGjB,YAAa,UAA4B;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,CAAE,GAAG,CAAE,GAAQ,EAAE,UAA+B,EAAE;QACtD,KAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,MAAW,EAAE,IAAY,EAAE,UAAiC,EAAE;QACzE,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,EAAE,CAAE,MAAW,EAAE,MAAW,EAAE,IAAY,EAAE,UAA8B,EAAE;QAChF,OAAO,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,CAAE,EAAE,CAAE,GAAQ,EAAE,UAA8B,EAAE;QACpD,KAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,GAAQ,EAAE,OAAe,EAAE,UAAiC,EAAE;QACzE,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,EAAE,CAAE,GAAQ,EAAE,IAAY,EAAE,UAA8B,EAAE;QAChE,OAAO,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,GAAQ,EAAE,UAAgC,EAAE;QACtD,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,GAAQ,EAAE,UAAiC,EAAE;QACxD,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,MAAM,UAAU,MAAM,CAAE,KAAiC;IACvD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"CatOptions": "https://ipfs.github.io/helia-unixfs/interfaces/CatOptions.html",
|
|
3
|
+
"ChmodOptions": "https://ipfs.github.io/helia-unixfs/interfaces/ChmodOptions.html",
|
|
4
|
+
"CpOptions": "https://ipfs.github.io/helia-unixfs/interfaces/CpOptions.html",
|
|
5
|
+
"LsOptions": "https://ipfs.github.io/helia-unixfs/interfaces/LsOptions.html",
|
|
6
|
+
"MkdirOptions": "https://ipfs.github.io/helia-unixfs/interfaces/MkdirOptions.html",
|
|
7
|
+
"RmOptions": "https://ipfs.github.io/helia-unixfs/interfaces/RmOptions.html",
|
|
8
|
+
"StatOptions": "https://ipfs.github.io/helia-unixfs/interfaces/StatOptions.html",
|
|
9
|
+
"TouchOptions": "https://ipfs.github.io/helia-unixfs/interfaces/TouchOptions.html",
|
|
10
|
+
"UnixFS": "https://ipfs.github.io/helia-unixfs/interfaces/UnixFS.html",
|
|
11
|
+
"UnixFSComponents": "https://ipfs.github.io/helia-unixfs/interfaces/UnixFSComponents.html",
|
|
12
|
+
"UnixFSStats": "https://ipfs.github.io/helia-unixfs/interfaces/UnixFSStats.html",
|
|
13
|
+
"unixfs": "https://ipfs.github.io/helia-unixfs/functions/unixfs-1.html"
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/unixfs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "A Helia-compatible wrapper for UnixFS",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
|
-
"homepage": "https://github.com/ipfs/helia
|
|
6
|
+
"homepage": "https://github.com/ipfs/helia-unixfs#readme",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/ipfs/helia.git"
|
|
9
|
+
"url": "git+https://github.com/ipfs/helia-unixfs.git"
|
|
10
10
|
},
|
|
11
11
|
"bugs": {
|
|
12
|
-
"url": "https://github.com/ipfs/helia/issues"
|
|
12
|
+
"url": "https://github.com/ipfs/helia-unixfs/issues"
|
|
13
13
|
},
|
|
14
14
|
"keywords": [
|
|
15
15
|
"IPFS"
|
|
@@ -146,9 +146,9 @@
|
|
|
146
146
|
"@multiformats/murmur3": "^2.1.2",
|
|
147
147
|
"hamt-sharding": "^3.0.2",
|
|
148
148
|
"interface-blockstore": "^4.0.1",
|
|
149
|
-
"ipfs-unixfs": "^
|
|
150
|
-
"ipfs-unixfs-exporter": "^
|
|
151
|
-
"ipfs-unixfs-importer": "^
|
|
149
|
+
"ipfs-unixfs": "^11.0.0",
|
|
150
|
+
"ipfs-unixfs-exporter": "^12.0.0",
|
|
151
|
+
"ipfs-unixfs-importer": "^14.0.1",
|
|
152
152
|
"it-last": "^2.0.0",
|
|
153
153
|
"it-pipe": "^2.0.5",
|
|
154
154
|
"merge-options": "^3.0.4",
|
|
@@ -160,6 +160,7 @@
|
|
|
160
160
|
"delay": "^5.0.0",
|
|
161
161
|
"it-all": "^2.0.0",
|
|
162
162
|
"it-drain": "^2.0.0",
|
|
163
|
+
"it-first": "^2.0.0",
|
|
163
164
|
"it-to-buffer": "^3.0.0",
|
|
164
165
|
"uint8arrays": "^4.0.3"
|
|
165
166
|
}
|
package/src/commands/cat.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Blockstore, exporter } from 'ipfs-unixfs-exporter'
|
|
1
|
+
import { exporter } from 'ipfs-unixfs-exporter'
|
|
3
2
|
import type { CID } from 'multiformats/cid'
|
|
4
3
|
import type { CatOptions } from '../index.js'
|
|
5
4
|
import { resolve } from './utils/resolve.js'
|
|
6
5
|
import mergeOpts from 'merge-options'
|
|
6
|
+
import type { Blockstore } from 'interface-blockstore'
|
|
7
|
+
import { NoContentError, NotAFileError } from './utils/errors.js'
|
|
7
8
|
|
|
8
9
|
const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
|
|
9
10
|
|
package/src/commands/chmod.ts
CHANGED
|
@@ -15,12 +15,14 @@ import last from 'it-last'
|
|
|
15
15
|
import { sha256 } from 'multiformats/hashes/sha2'
|
|
16
16
|
import { resolve, updatePathCids } from './utils/resolve.js'
|
|
17
17
|
import * as raw from 'multiformats/codecs/raw'
|
|
18
|
+
import { SHARD_SPLIT_THRESHOLD_BYTES } from './utils/constants.js'
|
|
18
19
|
|
|
19
20
|
const mergeOptions = mergeOpts.bind({ ignoreUndefined: true })
|
|
20
21
|
const log = logger('helia:unixfs:chmod')
|
|
21
22
|
|
|
22
23
|
const defaultOptions: ChmodOptions = {
|
|
23
|
-
recursive: false
|
|
24
|
+
recursive: false,
|
|
25
|
+
shardSplitThresholdBytes: SHARD_SPLIT_THRESHOLD_BYTES
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
export async function chmod (cid: CID, mode: number, blockstore: Blockstore, options: Partial<ChmodOptions> = {}): Promise<CID> {
|
|
@@ -61,28 +63,29 @@ export async function chmod (cid: CID, mode: number, blockstore: Blockstore, opt
|
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
},
|
|
64
|
-
// @ts-expect-error we account for the incompatible source type with our custom dag builder below
|
|
65
66
|
(source) => importer(source, blockstore, {
|
|
66
67
|
...opts,
|
|
67
|
-
|
|
68
|
-
dagBuilder: async function * (source, block, opts) {
|
|
68
|
+
dagBuilder: async function * (source, block) {
|
|
69
69
|
for await (const entry of source) {
|
|
70
70
|
yield async function () {
|
|
71
71
|
// @ts-expect-error cannot derive type
|
|
72
72
|
const node: PBNode = entry.content
|
|
73
73
|
|
|
74
74
|
const buf = dagPB.encode(node)
|
|
75
|
-
const
|
|
75
|
+
const updatedCid = await persist(buf, block, {
|
|
76
|
+
...opts,
|
|
77
|
+
cidVersion: cid.version
|
|
78
|
+
})
|
|
76
79
|
|
|
77
80
|
if (node.Data == null) {
|
|
78
|
-
throw new InvalidPBNodeError(`${
|
|
81
|
+
throw new InvalidPBNodeError(`${updatedCid} had no data`)
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
const unixfs = UnixFS.unmarshal(node.Data)
|
|
82
85
|
|
|
83
86
|
return {
|
|
84
|
-
cid,
|
|
85
|
-
size: buf.length,
|
|
87
|
+
cid: updatedCid,
|
|
88
|
+
size: BigInt(buf.length),
|
|
86
89
|
path: entry.path,
|
|
87
90
|
unixfs
|
|
88
91
|
}
|
|
@@ -97,7 +100,7 @@ export async function chmod (cid: CID, mode: number, blockstore: Blockstore, opt
|
|
|
97
100
|
throw new UnknownError(`Could not chmod ${resolved.cid.toString()}`)
|
|
98
101
|
}
|
|
99
102
|
|
|
100
|
-
return await updatePathCids(root.cid, resolved, blockstore,
|
|
103
|
+
return await updatePathCids(root.cid, resolved, blockstore, opts)
|
|
101
104
|
}
|
|
102
105
|
|
|
103
106
|
const block = await blockstore.get(resolved.cid)
|
|
@@ -129,5 +132,5 @@ export async function chmod (cid: CID, mode: number, blockstore: Blockstore, opt
|
|
|
129
132
|
|
|
130
133
|
await blockstore.put(updatedCid, updatedBlock)
|
|
131
134
|
|
|
132
|
-
return await updatePathCids(updatedCid, resolved, blockstore,
|
|
135
|
+
return await updatePathCids(updatedCid, resolved, blockstore, opts)
|
|
133
136
|
}
|