@helia/verified-fetch 7.2.10 → 7.2.11
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/dist/index.min.js +35 -35
- package/dist/index.min.js.map +3 -3
- package/dist/src/plugins/plugin-handle-unixfs.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-unixfs.js +25 -6
- package/dist/src/plugins/plugin-handle-unixfs.js.map +1 -1
- package/package.json +1 -1
- package/src/plugins/plugin-handle-unixfs.ts +28 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-unixfs.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-unixfs.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAA;AA6B1D;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,EAAE,mBAAkB;IAC7B,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin-handle-unixfs.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-unixfs.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,aAAa,CAAA;AA6B1D;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,EAAE,mBAAkB;IAC7B,QAAQ,CAAC,KAAK,WAAyB;IAEvC,SAAS,CAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,OAAO;IASzD,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;YAwH1C,UAAU;YA+CV,iBAAiB;CAqChC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as dagPb from '@ipld/dag-pb';
|
|
2
2
|
import { isPromise } from '@libp2p/utils';
|
|
3
3
|
import { exporter, walkPath } from 'ipfs-unixfs-exporter';
|
|
4
4
|
import first from 'it-first';
|
|
@@ -35,7 +35,7 @@ function getDirectoryRedirectUrl(resource, url) {
|
|
|
35
35
|
*/
|
|
36
36
|
export class UnixFSPlugin extends BasePlugin {
|
|
37
37
|
id = 'unixfs-plugin';
|
|
38
|
-
codes = [
|
|
38
|
+
codes = [dagPb.code, raw.code];
|
|
39
39
|
canHandle({ terminalElement, accept }) {
|
|
40
40
|
const supportsCid = this.codes.includes(terminalElement.cid.code);
|
|
41
41
|
const supportsAccept = accept.length === 0 || accept.some(header => header.contentType.mediaType === MEDIA_TYPE_OCTET_STREAM ||
|
|
@@ -103,14 +103,31 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
// no index file found, return the directory listing
|
|
106
|
-
|
|
106
|
+
let block = await toBuffer(context.blockstore.get(dirCid, context));
|
|
107
|
+
// if it's a shard, load all entries
|
|
108
|
+
// TODO: partial shard responses
|
|
109
|
+
if (entry.unixfs.type === 'hamt-sharded-directory') {
|
|
110
|
+
const links = [];
|
|
111
|
+
const data = dagPb.decode(block);
|
|
112
|
+
for await (const dirEntry of entry.entries()) {
|
|
113
|
+
links.push({
|
|
114
|
+
Name: dirEntry.name,
|
|
115
|
+
Hash: dirEntry.cid
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
block = dagPb.encode({
|
|
119
|
+
Data: data.Data,
|
|
120
|
+
Links: links.sort((a, b) => a.Name?.localeCompare(b.Name ?? '') ?? 0)
|
|
121
|
+
});
|
|
122
|
+
}
|
|
107
123
|
return okResponse(resource, block, {
|
|
108
124
|
headers: {
|
|
109
125
|
'content-type': MEDIA_TYPE_DAG_PB,
|
|
110
126
|
'content-length': `${block.byteLength}`,
|
|
111
127
|
'content-disposition': `${url.searchParams.get('download') === 'true' ? 'attachment' : 'inline'}; ${getContentDispositionFilename(`${dirCid}.dir`)}`,
|
|
112
128
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
113
|
-
'accept-ranges': 'bytes'
|
|
129
|
+
'accept-ranges': 'bytes',
|
|
130
|
+
'x-unixfs-type': entry.unixfs.type
|
|
114
131
|
},
|
|
115
132
|
redirected
|
|
116
133
|
});
|
|
@@ -143,7 +160,8 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
143
160
|
'content-type': contentType,
|
|
144
161
|
'content-disposition': `inline; ${getContentDispositionFilename(filename)}`,
|
|
145
162
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
146
|
-
'accept-ranges': 'bytes'
|
|
163
|
+
'accept-ranges': 'bytes',
|
|
164
|
+
'x-unixfs-type': entry.type
|
|
147
165
|
},
|
|
148
166
|
redirected
|
|
149
167
|
});
|
|
@@ -156,7 +174,8 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
156
174
|
'content-length': `${entry.size}`,
|
|
157
175
|
'content-disposition': `inline; ${getContentDispositionFilename(filename)}`,
|
|
158
176
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
159
|
-
'accept-ranges': 'bytes'
|
|
177
|
+
'accept-ranges': 'bytes',
|
|
178
|
+
'x-unixfs-type': entry.type
|
|
160
179
|
},
|
|
161
180
|
redirected
|
|
162
181
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-unixfs.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-unixfs.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin-handle-unixfs.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-unixfs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/verified-fetch",
|
|
3
|
-
"version": "7.2.
|
|
3
|
+
"version": "7.2.11",
|
|
4
4
|
"description": "A fetch-like API for obtaining verified & trustless IPFS content on the web",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia-verified-fetch/tree/main/packages/verified-fetch#readme",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as dagPb from '@ipld/dag-pb'
|
|
2
2
|
import { isPromise } from '@libp2p/utils'
|
|
3
3
|
import { exporter, walkPath } from 'ipfs-unixfs-exporter'
|
|
4
4
|
import first from 'it-first'
|
|
@@ -44,7 +44,7 @@ function getDirectoryRedirectUrl (resource: Resource, url: URL): string | undefi
|
|
|
44
44
|
*/
|
|
45
45
|
export class UnixFSPlugin extends BasePlugin {
|
|
46
46
|
readonly id = 'unixfs-plugin'
|
|
47
|
-
readonly codes = [
|
|
47
|
+
readonly codes = [dagPb.code, raw.code]
|
|
48
48
|
|
|
49
49
|
canHandle ({ terminalElement, accept }: PluginContext): boolean {
|
|
50
50
|
const supportsCid = this.codes.includes(terminalElement.cid.code)
|
|
@@ -132,7 +132,26 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
// no index file found, return the directory listing
|
|
135
|
-
|
|
135
|
+
let block = await toBuffer(context.blockstore.get(dirCid, context))
|
|
136
|
+
|
|
137
|
+
// if it's a shard, load all entries
|
|
138
|
+
// TODO: partial shard responses
|
|
139
|
+
if (entry.unixfs.type === 'hamt-sharded-directory') {
|
|
140
|
+
const links: dagPb.PBLink[] = []
|
|
141
|
+
const data = dagPb.decode(block)
|
|
142
|
+
|
|
143
|
+
for await (const dirEntry of entry.entries()) {
|
|
144
|
+
links.push({
|
|
145
|
+
Name: dirEntry.name,
|
|
146
|
+
Hash: dirEntry.cid
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
block = dagPb.encode({
|
|
151
|
+
Data: data.Data,
|
|
152
|
+
Links: links.sort((a, b) => a.Name?.localeCompare(b.Name ?? '') ?? 0)
|
|
153
|
+
})
|
|
154
|
+
}
|
|
136
155
|
|
|
137
156
|
return okResponse(resource, block, {
|
|
138
157
|
headers: {
|
|
@@ -142,7 +161,8 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
142
161
|
getContentDispositionFilename(`${dirCid}.dir`)
|
|
143
162
|
}`,
|
|
144
163
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
145
|
-
'accept-ranges': 'bytes'
|
|
164
|
+
'accept-ranges': 'bytes',
|
|
165
|
+
'x-unixfs-type': entry.unixfs.type
|
|
146
166
|
},
|
|
147
167
|
redirected
|
|
148
168
|
})
|
|
@@ -178,7 +198,8 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
178
198
|
getContentDispositionFilename(filename)
|
|
179
199
|
}`,
|
|
180
200
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
181
|
-
'accept-ranges': 'bytes'
|
|
201
|
+
'accept-ranges': 'bytes',
|
|
202
|
+
'x-unixfs-type': entry.type
|
|
182
203
|
},
|
|
183
204
|
redirected
|
|
184
205
|
})
|
|
@@ -194,7 +215,8 @@ export class UnixFSPlugin extends BasePlugin {
|
|
|
194
215
|
getContentDispositionFilename(filename)
|
|
195
216
|
}`,
|
|
196
217
|
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
197
|
-
'accept-ranges': 'bytes'
|
|
218
|
+
'accept-ranges': 'bytes',
|
|
219
|
+
'x-unixfs-type': entry.type
|
|
198
220
|
},
|
|
199
221
|
redirected
|
|
200
222
|
})
|