@helia/verified-fetch 5.1.1 → 6.1.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.
- package/dist/index.min.js +61 -61
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +29 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/plugins/plugin-handle-car.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-car.js +7 -3
- package/dist/src/plugins/plugin-handle-car.js.map +1 -1
- package/dist/src/plugins/plugin-handle-ipld.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-ipld.js +4 -15
- package/dist/src/plugins/plugin-handle-ipld.js.map +1 -1
- package/dist/src/plugins/plugin-handle-raw.d.ts +11 -0
- package/dist/src/plugins/plugin-handle-raw.d.ts.map +1 -0
- package/dist/src/plugins/plugin-handle-raw.js +41 -0
- package/dist/src/plugins/plugin-handle-raw.js.map +1 -0
- package/dist/src/plugins/plugin-handle-unixfs.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-unixfs.js +36 -18
- package/dist/src/plugins/plugin-handle-unixfs.js.map +1 -1
- package/dist/src/url-resolver.d.ts +2 -3
- package/dist/src/url-resolver.d.ts.map +1 -1
- package/dist/src/url-resolver.js +20 -57
- package/dist/src/url-resolver.js.map +1 -1
- package/dist/src/utils/error-to-response.d.ts +1 -1
- package/dist/src/utils/error-to-response.d.ts.map +1 -1
- package/dist/src/utils/error-to-response.js +14 -12
- package/dist/src/utils/error-to-response.js.map +1 -1
- package/dist/src/utils/get-range-header.d.ts +2 -1
- package/dist/src/utils/get-range-header.d.ts.map +1 -1
- package/dist/src/utils/get-range-header.js.map +1 -1
- package/dist/src/utils/get-tar-stream.d.ts.map +1 -1
- package/dist/src/utils/get-tar-stream.js +22 -9
- package/dist/src/utils/get-tar-stream.js.map +1 -1
- package/dist/src/utils/parse-resource.d.ts +10 -0
- package/dist/src/utils/parse-resource.d.ts.map +1 -0
- package/dist/src/utils/parse-resource.js +52 -0
- package/dist/src/utils/parse-resource.js.map +1 -0
- package/dist/src/utils/responses.d.ts +14 -14
- package/dist/src/utils/responses.d.ts.map +1 -1
- package/dist/src/utils/responses.js +8 -3
- package/dist/src/utils/responses.js.map +1 -1
- package/dist/src/verified-fetch.d.ts +1 -0
- package/dist/src/verified-fetch.d.ts.map +1 -1
- package/dist/src/verified-fetch.js +117 -119
- package/dist/src/verified-fetch.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +30 -6
- package/src/plugins/plugin-handle-car.ts +8 -3
- package/src/plugins/plugin-handle-ipld.ts +4 -14
- package/src/plugins/plugin-handle-raw.ts +52 -0
- package/src/plugins/plugin-handle-unixfs.ts +42 -19
- package/src/url-resolver.ts +22 -65
- package/src/utils/error-to-response.ts +15 -12
- package/src/utils/get-range-header.ts +2 -1
- package/src/utils/get-tar-stream.ts +26 -10
- package/src/utils/parse-resource.ts +62 -0
- package/src/utils/responses.ts +24 -19
- package/src/verified-fetch.ts +123 -122
- package/dist/src/utils/ipfs-path-to-url.d.ts +0 -16
- package/dist/src/utils/ipfs-path-to-url.d.ts.map +0 -1
- package/dist/src/utils/ipfs-path-to-url.js +0 -45
- package/dist/src/utils/ipfs-path-to-url.js.map +0 -1
- package/dist/src/utils/parse-url-string.d.ts +0 -23
- package/dist/src/utils/parse-url-string.d.ts.map +0 -1
- package/dist/src/utils/parse-url-string.js +0 -120
- package/dist/src/utils/parse-url-string.js.map +0 -1
- package/dist/src/utils/resource-to-cache-key.d.ts +0 -15
- package/dist/src/utils/resource-to-cache-key.d.ts.map +0 -1
- package/dist/src/utils/resource-to-cache-key.js +0 -27
- package/dist/src/utils/resource-to-cache-key.js.map +0 -1
- package/src/utils/ipfs-path-to-url.ts +0 -54
- package/src/utils/parse-url-string.ts +0 -165
- package/src/utils/resource-to-cache-key.ts +0 -30
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { dnsLink } from '@helia/dnslink';
|
|
2
2
|
import { ipnsResolver } from '@helia/ipns';
|
|
3
|
-
import {
|
|
3
|
+
import { isPeerId, isPublicKey } from '@libp2p/interface';
|
|
4
4
|
import { CID } from 'multiformats/cid';
|
|
5
5
|
import { CustomProgressEvent } from 'progress-events';
|
|
6
6
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
@@ -8,6 +8,7 @@ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
|
8
8
|
import { CarPlugin } from './plugins/plugin-handle-car.js';
|
|
9
9
|
import { IpldPlugin } from './plugins/plugin-handle-ipld.js';
|
|
10
10
|
import { IpnsRecordPlugin } from './plugins/plugin-handle-ipns-record.js';
|
|
11
|
+
import { RawPlugin } from "./plugins/plugin-handle-raw.js";
|
|
11
12
|
import { TarPlugin } from './plugins/plugin-handle-tar.js';
|
|
12
13
|
import { UnixFSPlugin } from './plugins/plugin-handle-unixfs.js';
|
|
13
14
|
import { URLResolver } from "./url-resolver.js";
|
|
@@ -17,9 +18,9 @@ import { errorToObject } from "./utils/error-to-object.js";
|
|
|
17
18
|
import { errorToResponse } from "./utils/error-to-response.js";
|
|
18
19
|
import { getETag, ifNoneMatches } from './utils/get-e-tag.js';
|
|
19
20
|
import { getRangeHeader } from "./utils/get-range-header.js";
|
|
20
|
-
import {
|
|
21
|
+
import { stringToIpfsUrl } from "./utils/parse-resource.js";
|
|
21
22
|
import { setCacheControlHeader } from './utils/response-headers.js';
|
|
22
|
-
import {
|
|
23
|
+
import { notAcceptableResponse, notImplementedResponse, notModifiedResponse } from './utils/responses.js';
|
|
23
24
|
import { ServerTiming } from './utils/server-timing.js';
|
|
24
25
|
/**
|
|
25
26
|
* Retypes the `.signal` property of the options from
|
|
@@ -89,7 +90,8 @@ export class VerifiedFetch {
|
|
|
89
90
|
new IpldPlugin(pluginOptions),
|
|
90
91
|
new CarPlugin(pluginOptions),
|
|
91
92
|
new TarPlugin(pluginOptions),
|
|
92
|
-
new IpnsRecordPlugin(pluginOptions)
|
|
93
|
+
new IpnsRecordPlugin(pluginOptions),
|
|
94
|
+
new RawPlugin(pluginOptions)
|
|
93
95
|
];
|
|
94
96
|
const customPlugins = init.plugins?.map((pluginFactory) => pluginFactory(pluginOptions)) ?? [];
|
|
95
97
|
if (customPlugins.length > 0) {
|
|
@@ -114,106 +116,98 @@ export class VerifiedFetch {
|
|
|
114
116
|
*/
|
|
115
117
|
async fetch(resource, opts) {
|
|
116
118
|
this.log('fetch %s %s', opts?.method ?? 'GET', resource);
|
|
117
|
-
if (opts?.method === 'OPTIONS') {
|
|
118
|
-
return this.handleFinalResponse(new Response(null, {
|
|
119
|
-
status: 200
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
const options = convertOptions(opts);
|
|
123
|
-
const headers = new Headers(options?.headers);
|
|
124
|
-
const serverTiming = new ServerTiming();
|
|
125
|
-
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { resource }));
|
|
126
|
-
const range = getRangeHeader(resource.toString(), headers);
|
|
127
|
-
if (range instanceof Response) {
|
|
128
|
-
// invalid range request
|
|
129
|
-
return this.handleFinalResponse(range);
|
|
130
|
-
}
|
|
131
|
-
let url;
|
|
132
119
|
try {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return this.handleFinalResponse(badRequestResponse(resource.toString(), err));
|
|
137
|
-
}
|
|
138
|
-
if (url.protocol === 'ipfs:' && url.pathname === '') {
|
|
139
|
-
// if we don't need to resolve an IPNS names or traverse a DAG, we can
|
|
140
|
-
// check the if-none-match header and maybe return a 304 without needing
|
|
141
|
-
// to load any blocks
|
|
142
|
-
if (ifNoneMatches(`"${url.hostname}"`, headers)) {
|
|
143
|
-
return notModifiedResponse(resource.toString(), new Headers({
|
|
144
|
-
etag: `"${url.hostname}"`,
|
|
145
|
-
'cache-control': 'public, max-age=29030400, immutable'
|
|
120
|
+
if (opts?.method === 'OPTIONS') {
|
|
121
|
+
return this.handleFinalResponse(new Response(null, {
|
|
122
|
+
status: 200
|
|
146
123
|
}));
|
|
147
124
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (isIPNSRecordRequest(headers)) {
|
|
154
|
-
if (url.protocol !== 'ipns:') {
|
|
155
|
-
return notAcceptableResponse(url, requestedMimeTypes, [
|
|
156
|
-
CONTENT_TYPE_IPNS
|
|
157
|
-
]);
|
|
125
|
+
const options = convertOptions(opts);
|
|
126
|
+
const headers = new Headers(options?.headers);
|
|
127
|
+
const serverTiming = new ServerTiming();
|
|
128
|
+
if (options != null) {
|
|
129
|
+
options.offline ??= headers.get('cache-control') === 'only-if-cached';
|
|
158
130
|
}
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
//
|
|
163
|
-
return
|
|
131
|
+
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { resource }));
|
|
132
|
+
const range = getRangeHeader(resource, headers);
|
|
133
|
+
if (range instanceof Response) {
|
|
134
|
+
// invalid range request
|
|
135
|
+
return this.handleFinalResponse(range);
|
|
164
136
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
137
|
+
const url = this.parseResource(resource);
|
|
138
|
+
if (url.protocol === 'ipfs:' && url.pathname === '') {
|
|
139
|
+
// if we don't need to resolve an IPNS names or traverse a DAG, we can
|
|
140
|
+
// check the if-none-match header and maybe return a 304 without needing
|
|
141
|
+
// to load any blocks
|
|
142
|
+
if (ifNoneMatches(`"${url.hostname}"`, headers)) {
|
|
143
|
+
return notModifiedResponse(resource, new Headers({
|
|
144
|
+
etag: `"${url.hostname}"`,
|
|
145
|
+
'cache-control': 'public, max-age=29030400, immutable'
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const requestedMimeTypes = getRequestedMimeTypes(url, headers.get('accept'));
|
|
150
|
+
// if a raw IPNS record has been requested, don't try to load the block
|
|
151
|
+
// the record points to or do any recursive IPNS resolving
|
|
152
|
+
if (isIPNSRecordRequest(headers)) {
|
|
153
|
+
if (url.protocol !== 'ipns:') {
|
|
154
|
+
return notAcceptableResponse(url, requestedMimeTypes, [
|
|
155
|
+
CONTENT_TYPE_IPNS
|
|
156
|
+
]);
|
|
157
|
+
}
|
|
158
|
+
// @ts-expect-error ipnsRecordPlugin may not be of type IpnsRecordPlugin
|
|
159
|
+
const ipnsRecordPlugin = this.plugins.find(plugin => plugin.id === 'ipns-record-plugin');
|
|
160
|
+
if (ipnsRecordPlugin == null) {
|
|
161
|
+
// IPNS record was requested but no IPNS Record plugin is configured?!
|
|
162
|
+
return notAcceptableResponse(resource, requestedMimeTypes, []);
|
|
163
|
+
}
|
|
164
|
+
return this.handleFinalResponse(await ipnsRecordPlugin.handle({
|
|
165
|
+
range,
|
|
166
|
+
url,
|
|
167
|
+
resource,
|
|
168
|
+
options
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
const resolveResult = await this.urlResolver.resolve(url, serverTiming, {
|
|
172
|
+
...options,
|
|
173
|
+
isRawBlockRequest: isRawBlockRequest(headers)
|
|
174
|
+
});
|
|
175
|
+
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:resolve', {
|
|
176
|
+
cid: resolveResult.terminalElement.cid,
|
|
177
|
+
path: resolveResult.url.pathname
|
|
170
178
|
}));
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
isRawBlockRequest: isRawBlockRequest(headers),
|
|
177
|
-
onlyIfCached: headers.get('cache-control') === 'only-if-cached'
|
|
178
|
-
});
|
|
179
|
+
const accept = this.getAcceptHeader(resolveResult.url, requestedMimeTypes, resolveResult.terminalElement.cid);
|
|
180
|
+
if (accept instanceof Response) {
|
|
181
|
+
this.log('allowed media types for requested CID did not contain anything the client can understand');
|
|
182
|
+
// invalid accept header
|
|
183
|
+
return this.handleFinalResponse(accept);
|
|
179
184
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
185
|
+
const context = {
|
|
186
|
+
...resolveResult,
|
|
187
|
+
resource,
|
|
188
|
+
accept,
|
|
189
|
+
range,
|
|
190
|
+
options,
|
|
191
|
+
onProgress: options?.onProgress,
|
|
192
|
+
serverTiming,
|
|
193
|
+
headers,
|
|
194
|
+
requestedMimeTypes
|
|
195
|
+
};
|
|
196
|
+
this.log.trace('finding handler for cid code "0x%s" and response content types %s', resolveResult.terminalElement.cid.code.toString(16), accept.map(header => header.contentType.mediaType).join(', '));
|
|
197
|
+
const response = await this.runPluginPipeline(context);
|
|
198
|
+
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', {
|
|
199
|
+
cid: resolveResult.terminalElement.cid,
|
|
200
|
+
path: resolveResult.url.pathname
|
|
201
|
+
}));
|
|
202
|
+
if (response == null) {
|
|
203
|
+
this.log.error('no plugin could handle request for %s', resource);
|
|
184
204
|
}
|
|
205
|
+
return this.handleFinalResponse(response, Boolean(options?.withServerTiming) || Boolean(this.withServerTiming), context);
|
|
185
206
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}));
|
|
190
|
-
const accept = this.getAcceptHeader(parsedResult.url, requestedMimeTypes, parsedResult.terminalElement.cid);
|
|
191
|
-
if (accept instanceof Response) {
|
|
192
|
-
this.log('allowed media types for requested CID did not contain anything the client can understand');
|
|
193
|
-
// invalid accept header
|
|
194
|
-
return this.handleFinalResponse(accept);
|
|
195
|
-
}
|
|
196
|
-
const context = {
|
|
197
|
-
...parsedResult,
|
|
198
|
-
resource: resource.toString(),
|
|
199
|
-
accept,
|
|
200
|
-
range,
|
|
201
|
-
options,
|
|
202
|
-
onProgress: options?.onProgress,
|
|
203
|
-
serverTiming,
|
|
204
|
-
headers,
|
|
205
|
-
requestedMimeTypes
|
|
206
|
-
};
|
|
207
|
-
this.log.trace('finding handler for cid code "0x%s" and response content types %s', parsedResult.terminalElement.cid.code.toString(16), accept.map(header => header.contentType.mediaType).join(', '));
|
|
208
|
-
const response = await this.runPluginPipeline(context);
|
|
209
|
-
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', {
|
|
210
|
-
cid: parsedResult.terminalElement.cid,
|
|
211
|
-
path: parsedResult.url.pathname
|
|
212
|
-
}));
|
|
213
|
-
if (response == null) {
|
|
214
|
-
this.log.error('no plugin could handle request for %s', resource);
|
|
207
|
+
catch (err) {
|
|
208
|
+
this.log.error('error fetching resource %s - %e', resource, err);
|
|
209
|
+
return this.handleFinalResponse(errorToResponse(resource, err, opts));
|
|
215
210
|
}
|
|
216
|
-
return this.handleFinalResponse(response, Boolean(options?.withServerTiming) || Boolean(this.withServerTiming), context);
|
|
217
211
|
}
|
|
218
212
|
/**
|
|
219
213
|
* Returns a prioritized list of acceptable content types for the response
|
|
@@ -259,6 +253,15 @@ export class VerifiedFetch {
|
|
|
259
253
|
}
|
|
260
254
|
return acceptable;
|
|
261
255
|
}
|
|
256
|
+
parseResource(resource) {
|
|
257
|
+
if (isPeerId(resource) || isPublicKey(resource)) {
|
|
258
|
+
resource = `/ipns/${resource}`;
|
|
259
|
+
}
|
|
260
|
+
if (CID.asCID(resource) === resource || resource instanceof CID) {
|
|
261
|
+
resource = `/ipfs/${resource}`;
|
|
262
|
+
}
|
|
263
|
+
return new URL(stringToIpfsUrl(resource.toString()));
|
|
264
|
+
}
|
|
262
265
|
/**
|
|
263
266
|
* The last place a Response touches in verified-fetch before being returned
|
|
264
267
|
* to the user. This is where we add the Server-Timing header to the response
|
|
@@ -284,7 +287,7 @@ export class VerifiedFetch {
|
|
|
284
287
|
// headers can ony contain extended ASCII but IPFS paths can be unicode
|
|
285
288
|
const decodedPath = decodeURI(context?.url.pathname);
|
|
286
289
|
const path = uint8ArrayToString(uint8ArrayFromString(decodedPath), 'ascii');
|
|
287
|
-
response.headers.set('x-ipfs-path', `/${context.url.protocol === 'ipfs:' ? 'ipfs' : 'ipns'}/${context?.url.hostname}${path}`);
|
|
290
|
+
response.headers.set('x-ipfs-path', `/${context.url.protocol === 'ipfs:' ? 'ipfs' : 'ipns'}/${context?.url.hostname}${path === '/' ? '' : path}`);
|
|
288
291
|
}
|
|
289
292
|
// set CORS headers. If hosting your own gateway with verified-fetch behind
|
|
290
293
|
// the scenes, you can alter these before you send the response to the
|
|
@@ -331,31 +334,26 @@ export class VerifiedFetch {
|
|
|
331
334
|
const contextChanged = false;
|
|
332
335
|
let pluginHandled = false;
|
|
333
336
|
for (const plugin of plugins) {
|
|
334
|
-
try {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
catch (err) {
|
|
347
|
-
if (context.options?.signal?.aborted) {
|
|
348
|
-
throw new AbortError(context.options?.signal?.reason);
|
|
349
|
-
}
|
|
350
|
-
this.log.error('error in plugin %s - %e', plugin.id, err);
|
|
351
|
-
return internalServerErrorResponse(context.resource, JSON.stringify({
|
|
352
|
-
error: errorToObject(err)
|
|
353
|
-
}), {
|
|
354
|
-
headers: {
|
|
355
|
-
'content-type': 'application/json'
|
|
356
|
-
}
|
|
357
|
-
});
|
|
337
|
+
// try {
|
|
338
|
+
this.log('invoking plugin: %s', plugin.id);
|
|
339
|
+
pluginsUsed.add(plugin.id);
|
|
340
|
+
const maybeResponse = await plugin.handle(context);
|
|
341
|
+
this.log('plugin response %s %o', plugin.id, maybeResponse);
|
|
342
|
+
if (maybeResponse != null) {
|
|
343
|
+
// if a plugin returns a final Response, short-circuit
|
|
344
|
+
finalResponse = maybeResponse;
|
|
345
|
+
pluginHandled = true;
|
|
346
|
+
break;
|
|
358
347
|
}
|
|
348
|
+
/* } catch (err: any) {
|
|
349
|
+
if (context.options?.signal?.aborted) {
|
|
350
|
+
throw new AbortError(context.options?.signal?.reason)
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
this.log.error('error in plugin %s - %e', plugin.id, err)
|
|
354
|
+
|
|
355
|
+
return internalServerErrorResponse(context.resource, err)
|
|
356
|
+
} */
|
|
359
357
|
if (finalResponse != null) {
|
|
360
358
|
this.log.trace('plugin %s produced final response', plugin.id);
|
|
361
359
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verified-fetch.js","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verified-fetch.js","sourceRoot":"","sources":["../../src/verified-fetch.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": "
|
|
3
|
+
"version": "6.1.0",
|
|
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",
|
|
@@ -185,9 +185,10 @@
|
|
|
185
185
|
"file-type": "^21.1.1",
|
|
186
186
|
"helia": "^6.0.11",
|
|
187
187
|
"interface-blockstore": "^6.0.1",
|
|
188
|
-
"ipfs-unixfs-exporter": "^
|
|
188
|
+
"ipfs-unixfs-exporter": "^15.0.0",
|
|
189
189
|
"ipns": "^10.1.3",
|
|
190
190
|
"it-first": "^3.0.9",
|
|
191
|
+
"it-last": "^3.0.9",
|
|
191
192
|
"it-map": "^3.1.3",
|
|
192
193
|
"it-pipe": "^3.0.1",
|
|
193
194
|
"it-tar": "^6.0.5",
|
|
@@ -214,7 +215,6 @@
|
|
|
214
215
|
"cborg": "^4.2.11",
|
|
215
216
|
"ipfs-unixfs-importer": "^16.0.1",
|
|
216
217
|
"it-all": "^3.0.8",
|
|
217
|
-
"it-last": "^3.0.8",
|
|
218
218
|
"magic-bytes.js": "^1.12.1",
|
|
219
219
|
"race-signal": "^2.0.0",
|
|
220
220
|
"sinon": "^21.0.0",
|
package/src/index.ts
CHANGED
|
@@ -786,12 +786,12 @@ import type { RequestedMimeType } from './verified-fetch.js'
|
|
|
786
786
|
import type { DNSLink, ResolveProgressEvents as ResolveDNSLinkProgressEvents } from '@helia/dnslink'
|
|
787
787
|
import type { GetBlockProgressEvents, Helia, Routing } from '@helia/interface'
|
|
788
788
|
import type { ResolveProgressEvents as ResolveIPNSNameProgressEvents, IPNSRoutingProgressEvents, IPNSResolver } from '@helia/ipns'
|
|
789
|
-
import type { AbortOptions, Libp2p, ServiceMap, Logger } from '@libp2p/interface'
|
|
789
|
+
import type { AbortOptions, Libp2p, ServiceMap, Logger, PeerId, PublicKey } from '@libp2p/interface'
|
|
790
790
|
import type { DNSResolvers, DNS } from '@multiformats/dns'
|
|
791
791
|
import type { DNSResolver } from '@multiformats/dns/resolvers'
|
|
792
792
|
import type { HeliaInit } from 'helia'
|
|
793
793
|
import type { Blockstore } from 'interface-blockstore'
|
|
794
|
-
import type { ExporterProgressEvents,
|
|
794
|
+
import type { ExporterProgressEvents, PathEntry } from 'ipfs-unixfs-exporter'
|
|
795
795
|
import type { Libp2pOptions } from 'libp2p'
|
|
796
796
|
import type { CID } from 'multiformats/cid'
|
|
797
797
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
@@ -874,7 +874,7 @@ export interface PluginContext extends ResolveURLResult {
|
|
|
874
874
|
/**
|
|
875
875
|
* The resource that was requested by the user
|
|
876
876
|
*/
|
|
877
|
-
readonly resource:
|
|
877
|
+
readonly resource: Resource
|
|
878
878
|
|
|
879
879
|
/**
|
|
880
880
|
* These are the response representations that the user requested and we
|
|
@@ -963,9 +963,25 @@ export interface ContentTypeParser {
|
|
|
963
963
|
}
|
|
964
964
|
|
|
965
965
|
/**
|
|
966
|
-
* The
|
|
966
|
+
* The resource that `verifiedFetch` will resolve
|
|
967
|
+
*
|
|
968
|
+
* Strings
|
|
969
|
+
* - '/ipfs/bafyfoo' (IPFS/IPNS path)
|
|
970
|
+
* - 'ipfs://bafyfoo' (IPFS/IPNS URL)
|
|
971
|
+
*
|
|
972
|
+
* CID object
|
|
973
|
+
* - CID('bafyfoo')
|
|
974
|
+
*
|
|
975
|
+
* URL object
|
|
976
|
+
* - URL('ipfs://bafyfoo') (IPFS/IPNS URL)
|
|
977
|
+
*
|
|
978
|
+
* PeerId object (will be resolved as an IPNS name)
|
|
979
|
+
* - PeerId('123koo')
|
|
980
|
+
*
|
|
981
|
+
* PublicKey object (will be resolved as an IPNS name)
|
|
982
|
+
* - PublicKey('Qmfoo')
|
|
967
983
|
*/
|
|
968
|
-
export type Resource = string | CID
|
|
984
|
+
export type Resource = string | CID | URL | PublicKey | PeerId
|
|
969
985
|
|
|
970
986
|
export interface ResourceDetail {
|
|
971
987
|
resource: Resource
|
|
@@ -1199,6 +1215,14 @@ export interface VerifiedFetchInit extends RequestInit, ProgressOptions<Verified
|
|
|
1199
1215
|
* @default true
|
|
1200
1216
|
*/
|
|
1201
1217
|
supportWebRedirects?: boolean
|
|
1218
|
+
|
|
1219
|
+
/**
|
|
1220
|
+
* If true, only operate on the local blockstore, do not perform any network
|
|
1221
|
+
* operations.
|
|
1222
|
+
*
|
|
1223
|
+
* @default false
|
|
1224
|
+
*/
|
|
1225
|
+
offline?: boolean
|
|
1202
1226
|
}
|
|
1203
1227
|
|
|
1204
1228
|
export type URLProtocols = 'ipfs' | 'ipns' | 'dnslink'
|
|
@@ -1212,7 +1236,7 @@ export interface ResolveURLResult {
|
|
|
1212
1236
|
ttl: number
|
|
1213
1237
|
blockstore: Blockstore
|
|
1214
1238
|
ipfsRoots: CID[]
|
|
1215
|
-
terminalElement:
|
|
1239
|
+
terminalElement: PathEntry
|
|
1216
1240
|
}
|
|
1217
1241
|
|
|
1218
1242
|
export interface URLResolver {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BlockExporter, car, CIDPath, depthFirstWalker, naturalOrderWalker, SubgraphExporter, UnixFSExporter } from '@helia/car'
|
|
2
2
|
import { code as dagPbCode } from '@ipld/dag-pb'
|
|
3
3
|
import { createScalableCuckooFilter } from '@libp2p/utils'
|
|
4
|
+
import { exporter } from 'ipfs-unixfs-exporter'
|
|
4
5
|
import toBrowserReadableStream from 'it-to-browser-readablestream'
|
|
5
6
|
import { CONTENT_TYPE_CAR, MEDIA_TYPE_CAR } from '../utils/content-types.ts'
|
|
6
7
|
import { getContentDispositionFilename } from '../utils/get-content-disposition-filename.ts'
|
|
@@ -111,9 +112,13 @@ export class CarPlugin extends BasePlugin {
|
|
|
111
112
|
listingOnly: true
|
|
112
113
|
}
|
|
113
114
|
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const entry = await exporter(terminalElement.cid, blockstore, context.options)
|
|
116
|
+
|
|
117
|
+
if (entry.type === 'file') {
|
|
118
|
+
const slice = entityBytesToOffsetAndLength(entry.size, url.searchParams.get('entity-bytes'))
|
|
119
|
+
options.offset = slice.offset
|
|
120
|
+
options.length = slice.length
|
|
121
|
+
}
|
|
117
122
|
|
|
118
123
|
carExportOptions.exporter = new UnixFSExporter(options)
|
|
119
124
|
} else {
|
|
@@ -6,7 +6,7 @@ import * as json from 'multiformats/codecs/json'
|
|
|
6
6
|
import * as raw from 'multiformats/codecs/raw'
|
|
7
7
|
import { identity } from 'multiformats/hashes/identity'
|
|
8
8
|
import { CODEC_CBOR } from '../constants.ts'
|
|
9
|
-
import { getContentTypesForCid, MEDIA_TYPE_CBOR, MEDIA_TYPE_DAG_CBOR, MEDIA_TYPE_DAG_JSON, MEDIA_TYPE_JSON
|
|
9
|
+
import { getContentTypesForCid, MEDIA_TYPE_CBOR, MEDIA_TYPE_DAG_CBOR, MEDIA_TYPE_DAG_JSON, MEDIA_TYPE_JSON } from '../utils/content-types.ts'
|
|
10
10
|
import { convertOutput } from '../utils/convert-output.ts'
|
|
11
11
|
import { getContentDispositionFilename } from '../utils/get-content-disposition-filename.ts'
|
|
12
12
|
import { notAcceptableResponse, okResponse, partialContentResponse } from '../utils/responses.js'
|
|
@@ -34,9 +34,7 @@ export class IpldPlugin extends BasePlugin {
|
|
|
34
34
|
accept.some(header => header.contentType.mediaType === MEDIA_TYPE_CBOR ||
|
|
35
35
|
header.contentType.mediaType === MEDIA_TYPE_DAG_CBOR ||
|
|
36
36
|
header.contentType.mediaType === MEDIA_TYPE_JSON ||
|
|
37
|
-
header.contentType.mediaType === MEDIA_TYPE_DAG_JSON
|
|
38
|
-
header.contentType.mediaType === MEDIA_TYPE_RAW ||
|
|
39
|
-
header.contentType.mediaType === MEDIA_TYPE_OCTET_STREAM
|
|
37
|
+
header.contentType.mediaType === MEDIA_TYPE_DAG_JSON
|
|
40
38
|
)
|
|
41
39
|
|
|
42
40
|
return supportsCid && supportsAccept
|
|
@@ -45,16 +43,8 @@ export class IpldPlugin extends BasePlugin {
|
|
|
45
43
|
async handle (context: PluginContext): Promise<Response> {
|
|
46
44
|
const { url, resource, accept, ipfsRoots, terminalElement, blockstore, options, requestedMimeTypes } = context
|
|
47
45
|
|
|
48
|
-
this.log.trace('fetching %c
|
|
49
|
-
let block
|
|
50
|
-
if (terminalElement.node == null) {
|
|
51
|
-
block = await toBuffer(blockstore.get(terminalElement.cid, options))
|
|
52
|
-
} else if (terminalElement.type === 'object' || terminalElement.type === 'raw' || terminalElement.type === 'identity') {
|
|
53
|
-
block = terminalElement.node
|
|
54
|
-
} else {
|
|
55
|
-
block = dagPb.encode(terminalElement.node)
|
|
56
|
-
}
|
|
57
|
-
|
|
46
|
+
this.log.trace('fetching %c%s', terminalElement.cid, url.pathname)
|
|
47
|
+
let block = await toBuffer(blockstore.get(terminalElement.cid, options))
|
|
58
48
|
let contentType: ContentType
|
|
59
49
|
|
|
60
50
|
try {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import toBuffer from 'it-to-buffer'
|
|
2
|
+
import { MEDIA_TYPE_OCTET_STREAM, MEDIA_TYPE_RAW } from '../utils/content-types.ts'
|
|
3
|
+
import { getContentDispositionFilename } from '../utils/get-content-disposition-filename.ts'
|
|
4
|
+
import { okResponse, partialContentResponse } from '../utils/responses.js'
|
|
5
|
+
import { BasePlugin } from './plugin-base.js'
|
|
6
|
+
import type { PluginContext } from '../index.ts'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Handles loading raw blocks from unsupported codecs
|
|
10
|
+
*/
|
|
11
|
+
export class RawPlugin extends BasePlugin {
|
|
12
|
+
readonly id = 'raw-plugin'
|
|
13
|
+
|
|
14
|
+
canHandle ({ accept }: PluginContext): boolean {
|
|
15
|
+
const supportsAccept = accept.length === 0 ||
|
|
16
|
+
accept.some(header => header.contentType.mediaType === MEDIA_TYPE_RAW ||
|
|
17
|
+
header.contentType.mediaType === MEDIA_TYPE_OCTET_STREAM
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
return supportsAccept
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async handle (context: PluginContext): Promise<Response> {
|
|
24
|
+
const { url, resource, accept, ipfsRoots, terminalElement, blockstore, options } = context
|
|
25
|
+
|
|
26
|
+
this.log.trace('fetching %c%s', terminalElement.cid, url.pathname)
|
|
27
|
+
const block = await toBuffer(blockstore.get(terminalElement.cid, options))
|
|
28
|
+
|
|
29
|
+
const headers = {
|
|
30
|
+
'content-length': `${block.byteLength}`,
|
|
31
|
+
'content-type': accept.some(value => value.contentType.mediaType === MEDIA_TYPE_RAW) ? MEDIA_TYPE_RAW : MEDIA_TYPE_OCTET_STREAM,
|
|
32
|
+
'content-disposition': `${url.searchParams.get('download') === 'false' ? 'inline' : 'attachment'}; ${
|
|
33
|
+
getContentDispositionFilename(url.searchParams.get('filename') ?? `${terminalElement.cid}.raw`)
|
|
34
|
+
}`,
|
|
35
|
+
'x-ipfs-roots': ipfsRoots.map(cid => cid.toV1()).join(','),
|
|
36
|
+
'x-content-type-options': 'nosniff',
|
|
37
|
+
'accept-ranges': 'bytes'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (context.range != null) {
|
|
41
|
+
return partialContentResponse(resource, async function * (offset, length) {
|
|
42
|
+
yield block.subarray(offset, offset + length)
|
|
43
|
+
}, context.range, block.byteLength, {
|
|
44
|
+
headers
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return okResponse(resource, block, {
|
|
49
|
+
headers
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
}
|