@helia/verified-fetch 2.6.15 → 2.6.17
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 +3 -3
- package/dist/index.min.js.map +3 -3
- package/dist/src/index.d.ts +7 -7
- package/dist/src/index.js +3 -3
- package/dist/src/plugins/plugin-handle-raw.js +2 -2
- package/dist/src/plugins/plugin-handle-raw.js.map +1 -1
- package/dist/src/utils/handle-redirects.js +3 -3
- package/dist/src/utils/handle-redirects.js.map +1 -1
- package/dist/src/utils/parse-url-string.js +2 -2
- package/dist/src/utils/parse-url-string.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +7 -7
- package/src/plugins/plugin-handle-raw.ts +2 -2
- package/src/utils/handle-redirects.ts +3 -3
- package/src/utils/parse-url-string.ts +2 -2
package/dist/src/index.d.ts
CHANGED
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
*
|
|
369
369
|
* [DAG-CBOR](https://ipld.io/docs/codecs/known/dag-cbor/) uses the [Concise Binary Object Representation](https://cbor.io/) format for serialization instead of JSON.
|
|
370
370
|
*
|
|
371
|
-
* This supports more
|
|
371
|
+
* This supports more data types in a safer way than JSON and is smaller on the wire to boot so is usually preferable to JSON or DAG-JSON.
|
|
372
372
|
*
|
|
373
373
|
* ##### Content-Type
|
|
374
374
|
*
|
|
@@ -448,7 +448,7 @@
|
|
|
448
448
|
* console.info(res.url) // ipfs://bafyfoo/path/to/dir/
|
|
449
449
|
* ```
|
|
450
450
|
*
|
|
451
|
-
* It's possible to prevent this
|
|
451
|
+
* It's possible to prevent this behavior and/or handle a redirect manually
|
|
452
452
|
* through use of the [redirect](https://developer.mozilla.org/en-US/docs/Web/API/fetch#redirect)
|
|
453
453
|
* option.
|
|
454
454
|
*
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
* 3. `TypeError` - If the options argument is passed and is malformed.
|
|
628
628
|
* 4. `AbortError` - If the content request is aborted due to user aborting provided AbortSignal. Note that this is a `AbortError` from `@libp2p/interface` and not the standard `AbortError` from the Fetch API.
|
|
629
629
|
*
|
|
630
|
-
* ##
|
|
630
|
+
* ## Extensibility
|
|
631
631
|
*
|
|
632
632
|
* Verified‑fetch can now be extended to alter how it handles requests by using plugins.
|
|
633
633
|
* Plugins are classes that extend the `BasePlugin` class and implement the `VerifiedFetchPlugin`
|
|
@@ -876,7 +876,7 @@ export interface CreateVerifiedFetchInit {
|
|
|
876
876
|
/**
|
|
877
877
|
* By default we will not connect to any HTTP Gateways providers over local or
|
|
878
878
|
* loopback addresses, this is because they are typically running on remote
|
|
879
|
-
* peers that have published private addresses by
|
|
879
|
+
* peers that have published private addresses by mistake.
|
|
880
880
|
*
|
|
881
881
|
* Pass `true` here to connect to local Gateways as well, this may be useful
|
|
882
882
|
* in testing environments.
|
|
@@ -886,7 +886,7 @@ export interface CreateVerifiedFetchInit {
|
|
|
886
886
|
allowLocal?: boolean;
|
|
887
887
|
/**
|
|
888
888
|
* By default we will not connect to any gateways over HTTP addresses,
|
|
889
|
-
*
|
|
889
|
+
* requiring HTTPS connections instead. This is because it will cause
|
|
890
890
|
* "mixed-content" errors to appear in the console when running in secure
|
|
891
891
|
* browser contexts.
|
|
892
892
|
*
|
|
@@ -972,7 +972,7 @@ export interface VerifiedFetchInit extends RequestInit, ProgressOptions<BubbledP
|
|
|
972
972
|
/**
|
|
973
973
|
* By default we will not connect to any HTTP Gateways providers over local or
|
|
974
974
|
* loopback addresses, this is because they are typically running on remote
|
|
975
|
-
* peers that have published private addresses by
|
|
975
|
+
* peers that have published private addresses by mistake.
|
|
976
976
|
*
|
|
977
977
|
* Pass `true` here to connect to local Gateways as well, this may be useful
|
|
978
978
|
* in testing environments.
|
|
@@ -982,7 +982,7 @@ export interface VerifiedFetchInit extends RequestInit, ProgressOptions<BubbledP
|
|
|
982
982
|
allowLocal?: boolean;
|
|
983
983
|
/**
|
|
984
984
|
* By default we will not connect to any gateways over HTTP addresses,
|
|
985
|
-
*
|
|
985
|
+
* requiring HTTPS connections instead. This is because it will cause
|
|
986
986
|
* "mixed-content" errors to appear in the console when running in secure
|
|
987
987
|
* browser contexts.
|
|
988
988
|
*
|
package/dist/src/index.js
CHANGED
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
*
|
|
369
369
|
* [DAG-CBOR](https://ipld.io/docs/codecs/known/dag-cbor/) uses the [Concise Binary Object Representation](https://cbor.io/) format for serialization instead of JSON.
|
|
370
370
|
*
|
|
371
|
-
* This supports more
|
|
371
|
+
* This supports more data types in a safer way than JSON and is smaller on the wire to boot so is usually preferable to JSON or DAG-JSON.
|
|
372
372
|
*
|
|
373
373
|
* ##### Content-Type
|
|
374
374
|
*
|
|
@@ -448,7 +448,7 @@
|
|
|
448
448
|
* console.info(res.url) // ipfs://bafyfoo/path/to/dir/
|
|
449
449
|
* ```
|
|
450
450
|
*
|
|
451
|
-
* It's possible to prevent this
|
|
451
|
+
* It's possible to prevent this behavior and/or handle a redirect manually
|
|
452
452
|
* through use of the [redirect](https://developer.mozilla.org/en-US/docs/Web/API/fetch#redirect)
|
|
453
453
|
* option.
|
|
454
454
|
*
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
* 3. `TypeError` - If the options argument is passed and is malformed.
|
|
628
628
|
* 4. `AbortError` - If the content request is aborted due to user aborting provided AbortSignal. Note that this is a `AbortError` from `@libp2p/interface` and not the standard `AbortError` from the Fetch API.
|
|
629
629
|
*
|
|
630
|
-
* ##
|
|
630
|
+
* ## Extensibility
|
|
631
631
|
*
|
|
632
632
|
* Verified‑fetch can now be extended to alter how it handles requests by using plugins.
|
|
633
633
|
* Plugins are classes that extend the `BasePlugin` class and implement the `VerifiedFetchPlugin`
|
|
@@ -19,7 +19,7 @@ const RAW_HEADERS = [
|
|
|
19
19
|
* type. This avoids the user from receiving something different when they
|
|
20
20
|
* signal that they want to `Accept` a specific mime type.
|
|
21
21
|
*/
|
|
22
|
-
function
|
|
22
|
+
function getOverriddenRawContentType({ headers, accept }) {
|
|
23
23
|
// accept has already been resolved by getResolvedAcceptHeader, if we have it, use it.
|
|
24
24
|
const acceptHeader = accept ?? new Headers(headers).get('accept') ?? '';
|
|
25
25
|
// e.g. "Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8"
|
|
@@ -74,7 +74,7 @@ export class RawPlugin extends BasePlugin {
|
|
|
74
74
|
// if the user has specified an `Accept` header that corresponds to a raw
|
|
75
75
|
// type, honour that header, so for example they don't request
|
|
76
76
|
// `application/vnd.ipld.raw` but get `application/octet-stream`
|
|
77
|
-
await setContentType({ filename: query.filename, bytes: result, path, response, defaultContentType:
|
|
77
|
+
await setContentType({ filename: query.filename, bytes: result, path, response, defaultContentType: getOverriddenRawContentType({ headers: options?.headers, accept }), contentTypeParser, log });
|
|
78
78
|
return response;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-raw.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,+BAA+B;IAC/B,0BAA0B;IAC1B,0BAA0B;CAC3B,CAAA;AAED;;;;;GAKG;AACH,SAAS,
|
|
1
|
+
{"version":3,"file":"plugin-handle-raw.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-raw.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SubdomainNotSupportedError } from '../errors.js';
|
|
2
2
|
import { matchURLString } from './parse-url-string.js';
|
|
3
3
|
import { movedPermanentlyResponse } from './responses.js';
|
|
4
|
-
function
|
|
4
|
+
function maybeAddTrailingSlash(path) {
|
|
5
5
|
// if it has an extension-like ending, don't add a trailing slash
|
|
6
6
|
if (path.match(/\.[a-zA-Z0-9]{1,4}$/) != null) {
|
|
7
7
|
return path;
|
|
@@ -48,10 +48,10 @@ export async function getRedirectResponse({ resource, options, logger, cid, fetc
|
|
|
48
48
|
log.trace('req url is the same as the subdomain url, not setting location header');
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
51
|
-
subdomainUrl.pathname =
|
|
51
|
+
subdomainUrl.pathname = maybeAddTrailingSlash(reqUrl.pathname.replace(`/${urlParts.cidOrPeerIdOrDnsLink}`, '').replace(`/${urlParts.protocol}`, ''));
|
|
52
52
|
log.trace('subdomain url %s', subdomainUrl.href);
|
|
53
53
|
const pathUrl = new URL(reqUrl, `${reqUrl.protocol}//${actualHost}`);
|
|
54
|
-
pathUrl.pathname =
|
|
54
|
+
pathUrl.pathname = maybeAddTrailingSlash(reqUrl.pathname);
|
|
55
55
|
log.trace('path url %s', pathUrl.href);
|
|
56
56
|
// try to query subdomain with HEAD request to see if it's supported
|
|
57
57
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-redirects.js","sourceRoot":"","sources":["../../../src/utils/handle-redirects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAiBzD,SAAS,
|
|
1
|
+
{"version":3,"file":"handle-redirects.js","sourceRoot":"","sources":["../../../src/utils/handle-redirects.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ function calculateTtl(resolveResult) {
|
|
|
54
54
|
return dnsLinkTtl ?? ipnsTtl;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
|
-
* For
|
|
57
|
+
* For DNSLink see https://specs.ipfs.tech/http-gateways/subdomain-gateway/#host-request-header
|
|
58
58
|
* DNSLink names include . which means they must be inlined into a single DNS label to provide unique origin and work with wildcard TLS certificates.
|
|
59
59
|
*/
|
|
60
60
|
// DNS label can have up to 63 characters, consisting of alphanumeric
|
|
@@ -201,7 +201,7 @@ export async function parseUrlString({ urlString, ipns, logger, withServerTiming
|
|
|
201
201
|
}
|
|
202
202
|
let ttl = calculateTtl(resolveResult);
|
|
203
203
|
if (resolveResult != null) {
|
|
204
|
-
// use the ttl for the resolved
|
|
204
|
+
// use the ttl for the resolved resource for the cache, but fallback to 2 minutes if not available
|
|
205
205
|
ttl = ttl ?? 60 * 2;
|
|
206
206
|
log.trace('caching %s resolved to %s with TTL: %s', cidOrPeerIdOrDnsLink, cid, ttl);
|
|
207
207
|
// convert ttl from seconds to ms for the cache
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAOhC,MAAM,SAAS,GAAG,IAAI,IAAI,CAA2C,IAAI,CAAC,CAAA;AA2C1E,MAAM,SAAS,GAAG,kGAAkG,CAAA;AACpH,MAAM,UAAU,GAAG,iGAAiG,CAAA;AACpH,MAAM,kBAAkB,GAAG,oHAAoH,CAAA;AAC/I,MAAM,uBAAuB,GAAG,oHAAoH,CAAA;AASpJ,SAAS,mBAAmB,CAAE,MAA6D;IACzF,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAA;IACjC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAClC,MAAM,oBAAoB,GAAG,MAAM,EAAE,oBAAoB,CAAA;IACzD,IAAI,oBAAoB,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC9C,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;IACzB,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,CAAA;IAEvC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,OAAO,oBAAoB,KAAK,QAAQ;QACxC,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;QAC1C,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,SAAiB;IAC/C,KAAK,MAAM,OAAO,IAAI,CAAC,uBAAuB,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,CAAC;QAC3F,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEtC,IAAI,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,MAA+B,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,gBAAgB,SAAS,qDAAqD,CAAC,CAAA;AACrG,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,YAAY,CAAE,aAAwD;IAC7E,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,UAAU,GAAI,aAAsC,CAAC,MAAM,EAAE,GAAG,CAAA;IACtE,MAAM,SAAS,GAAI,aAAmC,CAAC,MAAM,EAAE,GAAG,CAAA;IAClE,MAAM,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,OAAO,UAAU,IAAI,OAAO,CAAA;AAC9B,CAAC;AAED;;;GAGG;AAEH,qEAAqE;AACrE,uEAAuE;AACvE,MAAM,aAAa,GAAG,+CAA+C,CAAA;AAErE;;;GAGG;AACH,SAAS,gBAAgB,CAAE,KAAa;IACtC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAE,SAAiB;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;;;GAUG;AACH,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAuB,EAAE,OAA+B;IAC/I,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAA;IACxE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAEhG,IAAI,GAAoB,CAAA;IACxB,IAAI,YAAgC,CAAA;IACpC,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,IAAI,aAAmE,CAAA;IACvE,MAAM,aAAa,GAAmC,EAAE,CAAA;IAExD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YACrC;;eAEG;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAEnD,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,GAAG,GAAG,aAAa,CAAC,GAAG,CAAA;YACvB,YAAY,GAAG,aAAa,CAAC,IAAI,CAAA;YACjC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,CAAA;YACtE,IAAI,MAA0B,CAAA;YAC9B,IAAI,CAAC;gBACH,gCAAgC;gBAEhC,MAAM,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAA;gBAClD,MAAM,MAAM,GAAG,MAAM,EAAE,SAAS,CAAA;gBAChC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAA;gBACpE,CAAC;gBAED,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,WAAW,GAAG,KAAK,IAAgC,EAAE;wBACzD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACtC,CAAC,CAAA;oBACD,MAAM,6BAA6B,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,qBAAqB,oBAAoB,EAAE,EAAE,WAAW,CAAC,CAAA;oBAClI,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;oBAEjD,qCAAqC;oBACrC,IAAI,6BAA6B,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;wBAChD,MAAM,6BAA6B,CAAC,KAAK,CAAA;oBAC3C,CAAC;oBACD,aAAa,GAAG,6BAA6B,CAAC,MAAM,CAAA;gBACtD,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBACrD,CAAC;gBACD,GAAG,GAAG,aAAa,EAAE,GAAG,CAAA;gBACxB,YAAY,GAAG,aAAa,EAAE,IAAI,CAAA;gBAClC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;gBACjC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;oBAC1E,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,uCAAuC,oBAAoB,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACvH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;oBACrD,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,6BAA6B,oBAAoB,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC7G,CAAC;YACH,CAAC;YAED,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,gDAAgD;gBAChD,IAAI,mBAAmB,GAAG,oBAAoB,CAAA;gBAC9C,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBAC3C,mBAAmB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAA;oBAC/D,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAA;gBAC3F,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,mBAAmB,CAAC,CAAA;gBAEtE,IAAI,CAAC;oBACH,qCAAqC;oBACrC,IAAI,gBAAgB,EAAE,CAAC;wBACrB,MAAM,6BAA6B,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,mBAAmB,mBAAmB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAA;wBACvL,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;wBACjD,qCAAqC;wBACrC,IAAI,6BAA6B,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;4BAChD,MAAM,6BAA6B,CAAC,KAAK,CAAA;wBAC3C,CAAC;wBACD,aAAa,GAAG,6BAA6B,CAAC,MAAM,CAAA;oBACtD,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;oBACzE,CAAC;oBAED,GAAG,GAAG,aAAa,EAAE,GAAG,CAAA;oBACxB,YAAY,GAAG,aAAa,EAAE,IAAI,CAAA;oBAClC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAA;gBAC1D,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;oBACjC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;oBAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oDAAoD,SAAS,IAAI,CAAC,CAAC,CAAA;QAEzF,+DAA+D;QAC/D,MAAM,MAAM,CAAA;IACd,CAAC;IAED,IAAI,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IAErC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC1B,kGAAkG;QAClG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QACnF,+CAA+C;QAC/C,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;IAChE,CAAC;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAwB,EAAE,CAAA;IAErC,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACpC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAA;QAC5C,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,GAAG;QACH,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;QAC5C,KAAK;QACL,GAAG;QACH,QAAQ,EAAE,IAAI,QAAQ,IAAI,oBAAoB,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACzG,aAAa;KACmB,CAAA;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAE,YAAgC,EAAE,OAAe;IACnE,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,YAAY,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAAA;IAC3D,CAAC;IAED,oCAAoC;IACpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAEpC,0CAA0C;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/verified-fetch",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.17",
|
|
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",
|
package/src/index.ts
CHANGED
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
*
|
|
369
369
|
* [DAG-CBOR](https://ipld.io/docs/codecs/known/dag-cbor/) uses the [Concise Binary Object Representation](https://cbor.io/) format for serialization instead of JSON.
|
|
370
370
|
*
|
|
371
|
-
* This supports more
|
|
371
|
+
* This supports more data types in a safer way than JSON and is smaller on the wire to boot so is usually preferable to JSON or DAG-JSON.
|
|
372
372
|
*
|
|
373
373
|
* ##### Content-Type
|
|
374
374
|
*
|
|
@@ -448,7 +448,7 @@
|
|
|
448
448
|
* console.info(res.url) // ipfs://bafyfoo/path/to/dir/
|
|
449
449
|
* ```
|
|
450
450
|
*
|
|
451
|
-
* It's possible to prevent this
|
|
451
|
+
* It's possible to prevent this behavior and/or handle a redirect manually
|
|
452
452
|
* through use of the [redirect](https://developer.mozilla.org/en-US/docs/Web/API/fetch#redirect)
|
|
453
453
|
* option.
|
|
454
454
|
*
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
* 3. `TypeError` - If the options argument is passed and is malformed.
|
|
628
628
|
* 4. `AbortError` - If the content request is aborted due to user aborting provided AbortSignal. Note that this is a `AbortError` from `@libp2p/interface` and not the standard `AbortError` from the Fetch API.
|
|
629
629
|
*
|
|
630
|
-
* ##
|
|
630
|
+
* ## Extensibility
|
|
631
631
|
*
|
|
632
632
|
* Verified‑fetch can now be extended to alter how it handles requests by using plugins.
|
|
633
633
|
* Plugins are classes that extend the `BasePlugin` class and implement the `VerifiedFetchPlugin`
|
|
@@ -893,7 +893,7 @@ export interface CreateVerifiedFetchInit {
|
|
|
893
893
|
/**
|
|
894
894
|
* By default we will not connect to any HTTP Gateways providers over local or
|
|
895
895
|
* loopback addresses, this is because they are typically running on remote
|
|
896
|
-
* peers that have published private addresses by
|
|
896
|
+
* peers that have published private addresses by mistake.
|
|
897
897
|
*
|
|
898
898
|
* Pass `true` here to connect to local Gateways as well, this may be useful
|
|
899
899
|
* in testing environments.
|
|
@@ -904,7 +904,7 @@ export interface CreateVerifiedFetchInit {
|
|
|
904
904
|
|
|
905
905
|
/**
|
|
906
906
|
* By default we will not connect to any gateways over HTTP addresses,
|
|
907
|
-
*
|
|
907
|
+
* requiring HTTPS connections instead. This is because it will cause
|
|
908
908
|
* "mixed-content" errors to appear in the console when running in secure
|
|
909
909
|
* browser contexts.
|
|
910
910
|
*
|
|
@@ -1012,7 +1012,7 @@ export interface VerifiedFetchInit extends RequestInit, ProgressOptions<BubbledP
|
|
|
1012
1012
|
/**
|
|
1013
1013
|
* By default we will not connect to any HTTP Gateways providers over local or
|
|
1014
1014
|
* loopback addresses, this is because they are typically running on remote
|
|
1015
|
-
* peers that have published private addresses by
|
|
1015
|
+
* peers that have published private addresses by mistake.
|
|
1016
1016
|
*
|
|
1017
1017
|
* Pass `true` here to connect to local Gateways as well, this may be useful
|
|
1018
1018
|
* in testing environments.
|
|
@@ -1023,7 +1023,7 @@ export interface VerifiedFetchInit extends RequestInit, ProgressOptions<BubbledP
|
|
|
1023
1023
|
|
|
1024
1024
|
/**
|
|
1025
1025
|
* By default we will not connect to any gateways over HTTP addresses,
|
|
1026
|
-
*
|
|
1026
|
+
* requiring HTTPS connections instead. This is because it will cause
|
|
1027
1027
|
* "mixed-content" errors to appear in the console when running in secure
|
|
1028
1028
|
* browser contexts.
|
|
1029
1029
|
*
|
|
@@ -22,7 +22,7 @@ const RAW_HEADERS = [
|
|
|
22
22
|
* type. This avoids the user from receiving something different when they
|
|
23
23
|
* signal that they want to `Accept` a specific mime type.
|
|
24
24
|
*/
|
|
25
|
-
function
|
|
25
|
+
function getOverriddenRawContentType ({ headers, accept }: { headers?: HeadersInit, accept?: string }): string | undefined {
|
|
26
26
|
// accept has already been resolved by getResolvedAcceptHeader, if we have it, use it.
|
|
27
27
|
const acceptHeader = accept ?? new Headers(headers).get('accept') ?? ''
|
|
28
28
|
|
|
@@ -86,7 +86,7 @@ export class RawPlugin extends BasePlugin {
|
|
|
86
86
|
// if the user has specified an `Accept` header that corresponds to a raw
|
|
87
87
|
// type, honour that header, so for example they don't request
|
|
88
88
|
// `application/vnd.ipld.raw` but get `application/octet-stream`
|
|
89
|
-
await setContentType({ filename: query.filename, bytes: result, path, response, defaultContentType:
|
|
89
|
+
await setContentType({ filename: query.filename, bytes: result, path, response, defaultContentType: getOverriddenRawContentType({ headers: options?.headers, accept }), contentTypeParser, log })
|
|
90
90
|
|
|
91
91
|
return response
|
|
92
92
|
}
|
|
@@ -17,7 +17,7 @@ interface GetRedirectResponse {
|
|
|
17
17
|
fetch?: typeof globalThis.fetch
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function
|
|
20
|
+
function maybeAddTrailingSlash (path: string): string {
|
|
21
21
|
// if it has an extension-like ending, don't add a trailing slash
|
|
22
22
|
if (path.match(/\.[a-zA-Z0-9]{1,4}$/) != null) {
|
|
23
23
|
return path
|
|
@@ -70,10 +70,10 @@ export async function getRedirectResponse ({ resource, options, logger, cid, fet
|
|
|
70
70
|
return null
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
subdomainUrl.pathname =
|
|
73
|
+
subdomainUrl.pathname = maybeAddTrailingSlash(reqUrl.pathname.replace(`/${urlParts.cidOrPeerIdOrDnsLink}`, '').replace(`/${urlParts.protocol}`, ''))
|
|
74
74
|
log.trace('subdomain url %s', subdomainUrl.href)
|
|
75
75
|
const pathUrl = new URL(reqUrl, `${reqUrl.protocol}//${actualHost}`)
|
|
76
|
-
pathUrl.pathname =
|
|
76
|
+
pathUrl.pathname = maybeAddTrailingSlash(reqUrl.pathname)
|
|
77
77
|
log.trace('path url %s', pathUrl.href)
|
|
78
78
|
// try to query subdomain with HEAD request to see if it's supported
|
|
79
79
|
try {
|
|
@@ -114,7 +114,7 @@ function calculateTtl (resolveResult?: IPNSResolveResult | DNSLinkResolveResult)
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
|
-
* For
|
|
117
|
+
* For DNSLink see https://specs.ipfs.tech/http-gateways/subdomain-gateway/#host-request-header
|
|
118
118
|
* DNSLink names include . which means they must be inlined into a single DNS label to provide unique origin and work with wildcard TLS certificates.
|
|
119
119
|
*/
|
|
120
120
|
|
|
@@ -271,7 +271,7 @@ export async function parseUrlString ({ urlString, ipns, logger, withServerTimin
|
|
|
271
271
|
let ttl = calculateTtl(resolveResult)
|
|
272
272
|
|
|
273
273
|
if (resolveResult != null) {
|
|
274
|
-
// use the ttl for the resolved
|
|
274
|
+
// use the ttl for the resolved resource for the cache, but fallback to 2 minutes if not available
|
|
275
275
|
ttl = ttl ?? 60 * 2
|
|
276
276
|
log.trace('caching %s resolved to %s with TTL: %s', cidOrPeerIdOrDnsLink, cid, ttl)
|
|
277
277
|
// convert ttl from seconds to ms for the cache
|