@helia/verified-fetch 8.0.3 → 8.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 +53 -53
- package/dist/index.min.js.map +4 -4
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +1 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/url-resolver.d.ts.map +1 -1
- package/dist/src/url-resolver.js +1 -13
- package/dist/src/url-resolver.js.map +1 -1
- package/dist/src/utils/canonical-uri.d.ts +9 -0
- package/dist/src/utils/canonical-uri.d.ts.map +1 -0
- package/dist/src/utils/canonical-uri.js +157 -0
- package/dist/src/utils/canonical-uri.js.map +1 -0
- package/dist/src/utils/ipfs-uri.d.ts +8 -0
- package/dist/src/utils/ipfs-uri.d.ts.map +1 -0
- package/dist/src/utils/ipfs-uri.js +10 -0
- package/dist/src/utils/ipfs-uri.js.map +1 -0
- package/dist/src/utils/ipfs-url-to-ipfs-path.d.ts +5 -0
- package/dist/src/utils/ipfs-url-to-ipfs-path.d.ts.map +1 -0
- package/dist/src/utils/ipfs-url-to-ipfs-path.js +16 -0
- package/dist/src/utils/ipfs-url-to-ipfs-path.js.map +1 -0
- package/dist/src/utils/libp2p-defaults.browser.d.ts +2 -1
- package/dist/src/utils/libp2p-defaults.browser.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.browser.js +13 -8
- package/dist/src/utils/libp2p-defaults.browser.js.map +1 -1
- package/dist/src/utils/libp2p-defaults.d.ts +2 -1
- package/dist/src/utils/libp2p-defaults.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.js +3 -7
- package/dist/src/utils/libp2p-defaults.js.map +1 -1
- package/dist/src/utils/parse-resource.d.ts.map +1 -1
- package/dist/src/utils/parse-resource.js +2 -1
- package/dist/src/utils/parse-resource.js.map +1 -1
- package/dist/src/utils/x-ipfs-path.d.ts +11 -0
- package/dist/src/utils/x-ipfs-path.d.ts.map +1 -0
- package/dist/src/utils/x-ipfs-path.js +30 -0
- package/dist/src/utils/x-ipfs-path.js.map +1 -0
- package/dist/src/verified-fetch.d.ts.map +1 -1
- package/dist/src/verified-fetch.js +37 -11
- package/dist/src/verified-fetch.js.map +1 -1
- package/package.json +1 -2
- package/src/constants.ts +1 -0
- package/src/index.ts +4 -4
- package/src/url-resolver.ts +1 -17
- package/src/utils/canonical-uri.ts +184 -0
- package/src/utils/ipfs-uri.ts +9 -0
- package/src/utils/ipfs-url-to-ipfs-path.ts +18 -0
- package/src/utils/libp2p-defaults.browser.ts +14 -10
- package/src/utils/libp2p-defaults.ts +5 -9
- package/src/utils/parse-resource.ts +2 -1
- package/src/utils/x-ipfs-path.ts +34 -0
- package/src/verified-fetch.ts +37 -12
- package/dist/src/utils/ipfs-path-to-string.d.ts +0 -6
- package/dist/src/utils/ipfs-path-to-string.d.ts.map +0 -1
- package/dist/src/utils/ipfs-path-to-string.js +0 -10
- package/dist/src/utils/ipfs-path-to-string.js.map +0 -1
- package/src/utils/ipfs-path-to-string.ts +0 -9
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { toIPFSPath } from "./ipfs-url-to-ipfs-path.js";
|
|
2
|
+
/**
|
|
3
|
+
* True when every byte of the UTF-8 encoding of `value` is HTAB (0x09), SP
|
|
4
|
+
* (0x20) or visible ASCII (0x21-0x7E), the only bytes an HTTP field value can
|
|
5
|
+
* carry. Any code point above 0x7E encodes to bytes that are all above 0x7F,
|
|
6
|
+
* so testing code points is equivalent to testing the encoded bytes.
|
|
7
|
+
*/
|
|
8
|
+
function isFieldValue(value) {
|
|
9
|
+
for (let i = 0; i < value.length; i++) {
|
|
10
|
+
const code = value.charCodeAt(i);
|
|
11
|
+
if (code !== 0x09 && (code < 0x20 || code > 0x7e)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build the value of the deprecated `x-ipfs-path` response header: the content
|
|
19
|
+
* path for the requested URL, with the percent-encoding of the request target
|
|
20
|
+
* removed. Returns `undefined` when that path contains a byte that cannot be
|
|
21
|
+
* carried by an HTTP field value, in which case the header must be omitted
|
|
22
|
+
* rather than sent with the offending bytes mangled or dropped.
|
|
23
|
+
*
|
|
24
|
+
* @see https://github.com/ipfs/specs/pull/548
|
|
25
|
+
*/
|
|
26
|
+
export function toXIpfsPath(url) {
|
|
27
|
+
const ipfsPath = toIPFSPath(url);
|
|
28
|
+
return isFieldValue(ipfsPath) ? ipfsPath : undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=x-ipfs-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-ipfs-path.js","sourceRoot":"","sources":["../../../src/utils/x-ipfs-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD;;;;;GAKG;AACH,SAAS,YAAY,CAAE,KAAa;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAEhC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAE,GAAQ;IACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAEhC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verified-fetch.d.ts","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verified-fetch.d.ts","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAA8C,0BAA0B,EAAE,QAAQ,EAAkB,iBAAiB,IAAI,oBAAoB,EAAqD,MAAM,YAAY,CAAA;AAEhO,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAsC7C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAE5B,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,0BAA+B;IA+ChE;;;;;;OAMG;IACG,KAAK,CAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyNhF;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;YAyFb,iBAAiB;IA2D/B;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC"}
|
|
@@ -3,8 +3,7 @@ import { ipnsResolver } from '@helia/ipns';
|
|
|
3
3
|
import { isPeerId, isPublicKey } from '@libp2p/interface';
|
|
4
4
|
import { CID } from 'multiformats/cid';
|
|
5
5
|
import { CustomProgressEvent } from 'progress-events';
|
|
6
|
-
import {
|
|
7
|
-
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
6
|
+
import { MAX_HEADER_VALUE_LENGTH } from "./constants.js";
|
|
8
7
|
import { CarPlugin } from "./plugins/plugin-handle-car.js";
|
|
9
8
|
import { IpldPlugin } from "./plugins/plugin-handle-ipld.js";
|
|
10
9
|
import { IpnsRecordPlugin } from "./plugins/plugin-handle-ipns-record.js";
|
|
@@ -19,10 +18,12 @@ import { errorToObject } from "./utils/error-to-object.js";
|
|
|
19
18
|
import { errorToResponse } from "./utils/error-to-response.js";
|
|
20
19
|
import { getETag, ifNoneMatches } from "./utils/get-e-tag.js";
|
|
21
20
|
import { getRangeHeader } from "./utils/get-range-header.js";
|
|
21
|
+
import { toIpfsUri } from "./utils/ipfs-uri.js";
|
|
22
22
|
import { stringToIpfsUrl } from "./utils/parse-resource.js";
|
|
23
23
|
import { setCacheControlHeader } from "./utils/response-headers.js";
|
|
24
24
|
import { notAcceptableResponse, notImplementedResponse, notModifiedResponse } from "./utils/responses.js";
|
|
25
25
|
import { ServerTiming } from "./utils/server-timing.js";
|
|
26
|
+
import { toXIpfsPath } from "./utils/x-ipfs-path.js";
|
|
26
27
|
/**
|
|
27
28
|
* Retypes the `.signal` property of the options from
|
|
28
29
|
* `AbortSignal | null | undefined` to `AbortSignal | undefined`.
|
|
@@ -134,7 +135,15 @@ export class VerifiedFetch {
|
|
|
134
135
|
serverTiming
|
|
135
136
|
});
|
|
136
137
|
}
|
|
137
|
-
|
|
138
|
+
let url;
|
|
139
|
+
try {
|
|
140
|
+
url = this.parseResource(resource);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
return this.handleFinalResponse(errorToResponse(resource, err, opts), withServerTiming, {
|
|
144
|
+
serverTiming
|
|
145
|
+
});
|
|
146
|
+
}
|
|
138
147
|
if (url.protocol === 'ipfs:' && url.pathname === '') {
|
|
139
148
|
// if we don't need to resolve an IPNS names or traverse a DAG, we can
|
|
140
149
|
// check the if-none-match header and maybe return a 304 without needing
|
|
@@ -359,13 +368,30 @@ export class VerifiedFetch {
|
|
|
359
368
|
});
|
|
360
369
|
}
|
|
361
370
|
if (context?.terminalElement?.cid != null && context?.url != null) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
371
|
+
const ipfsUri = toIpfsUri(context.url);
|
|
372
|
+
// the value is ASCII-only so string length equals byte length; a value
|
|
373
|
+
// of exactly MAX_HEADER_VALUE_LENGTH bytes is still sent
|
|
374
|
+
if (ipfsUri != null && ipfsUri.length <= MAX_HEADER_VALUE_LENGTH) {
|
|
375
|
+
try {
|
|
376
|
+
response.headers.set('ipfs-uri', ipfsUri);
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
this.log.error('could not set ipfs-uri to "%s"', ipfsUri);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// x-ipfs-path is deprecated by IPIP-0548 in favour of ipfs-uri, and is
|
|
383
|
+
// kept for clients that still read it. It is omitted for content paths
|
|
384
|
+
// that an HTTP field value cannot carry, e.g. a file name with
|
|
385
|
+
// non-ASCII bytes
|
|
386
|
+
const ipfsPath = toXIpfsPath(context.url);
|
|
387
|
+
if (ipfsPath != null && ipfsPath.length <= MAX_HEADER_VALUE_LENGTH) {
|
|
388
|
+
try {
|
|
389
|
+
response.headers.set('x-ipfs-path', ipfsPath);
|
|
390
|
+
}
|
|
391
|
+
catch (err) {
|
|
392
|
+
this.log.error('could not set x-ipfs-path to "%s"', ipfsPath);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
369
395
|
}
|
|
370
396
|
// set CORS headers. If hosting your own gateway with verified-fetch behind
|
|
371
397
|
// the scenes, you can alter these before you send the response to the
|
|
@@ -376,7 +402,7 @@ export class VerifiedFetch {
|
|
|
376
402
|
response.headers.set('access-control-allow-origin', '*');
|
|
377
403
|
response.headers.set('access-control-allow-methods', 'GET, HEAD, OPTIONS');
|
|
378
404
|
response.headers.set('access-control-allow-headers', 'Content-Type, Range, User-Agent, X-Requested-With');
|
|
379
|
-
response.headers.set('access-control-expose-headers', 'Content-Range, Content-Length, X-Ipfs-Path, X-Ipfs-Roots, X-Chunked-Output, X-Stream-Output');
|
|
405
|
+
response.headers.set('access-control-expose-headers', 'Content-Range, Content-Length, Ipfs-Uri, X-Ipfs-Path, X-Ipfs-Roots, X-Chunked-Output, X-Stream-Output');
|
|
380
406
|
if (context?.terminalElement?.cid != null && response.headers.get('etag') == null) {
|
|
381
407
|
const etag = getETag({
|
|
382
408
|
cid: context.terminalElement.cid,
|
|
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACzJ,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD;;;GAGG;AACH,SAAS,cAAc,CAAE,OAA8B;IACrD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAM;IACR,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM;KAC9D,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAE,OAAgB;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAE7D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhD,OAAO,SAAS,KAAK,sBAAsB,CAAA;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAE,GAAS;IAC1B,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,OAAO,aAAa;IACP,KAAK,CAAO;IACZ,YAAY,CAAc;IAC1B,OAAO,CAAS;IAChB,GAAG,CAAQ;IACX,iBAAiB,CAA+B;IAChD,gBAAgB,CAAS;IACzB,OAAO,GAA0B,EAAE,CAAA;IACnC,WAAW,CAAa;IAEzC,YAAa,KAAY,EAAE,OAAmC,EAAE;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAA;QACpE,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,gBAAgB,IAAI,KAAK,CAAA;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,EAAE,IAAI,CAAC,CAAA;QAER,MAAM,aAAa,GAAkB;YACnC,GAAG,IAAI;YACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC;YACnD,KAAK;YACL,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAA;QAED,MAAM,cAAc,GAAG;YACrB,IAAI,YAAY,CAAC,aAAa,CAAC;YAC/B,IAAI,UAAU,CAAC,aAAa,CAAC;YAC7B,IAAI,SAAS,CAAC,aAAa,CAAC;YAC5B,IAAI,SAAS,CAAC,aAAa,CAAC;YAC5B,IAAI,gBAAgB,CAAC,aAAa,CAAC;YACnC,IAAI,SAAS,CAAC,aAAa,CAAC;SAC7B,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;QAE9F,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,kDAAkD;YAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;YACnF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;YAEjF,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAA;YAErF,uEAAuE;YACvE,kCAAkC;YAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3F,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,cAAc,CAAA;QAC/B,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAE,QAAkB,EAAE,IAA2B;QAC1D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAA;QAExD,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAE1F,IAAI,CAAC;YACH,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;YAE9B,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjD,MAAM,EAAE,GAAG;iBACZ,CAAC,EAAE,gBAAgB,EAAE;oBACpB,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;YACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAE7C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,gBAAgB,CAAA;YACvE,CAAC;YAED,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAiB,8BAA8B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YAE5G,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAE/C,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,wBAAwB;gBACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE;oBACvD,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,GAAQ,CAAA;YAEZ,IAAI,CAAC;gBACH,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,gBAAgB,EAAE;oBACtF,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;gBACpD,sEAAsE;gBACtE,wEAAwE;gBACxE,qBAAqB;gBACrB,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;oBAChD,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC;wBACxE,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,GAAG;wBACzB,eAAe,EAAE,qCAAqC;qBACvD,CAAC,CAAC,EAAE,gBAAgB,EAAE;wBACrB,YAAY;qBACb,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;YAE5E,uEAAuE;YACvE,0DAA0D;YAC1D,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAC7B,OAAO,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE;wBACpD,iBAAiB;qBAClB,CAAC,CAAA;gBACJ,CAAC;gBAED,wEAAwE;gBACxE,MAAM,gBAAgB,GAAiC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,oBAAoB,CAAC,CAAA;gBAEtH,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;oBAC7B,sEAAsE;oBACtE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBAChE,CAAC;gBAED,MAAM,OAAO,GAAG;oBACd,GAAG,OAAO;oBACV,KAAK;oBACL,GAAG;oBACH,QAAQ;oBACR,UAAU,EAAE,KAAK;oBACjB,YAAY;iBACb,CAAA;gBAED,yCAAyC;gBACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;YACpG,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YAEhF,IAAI,aAAa,YAAY,QAAQ,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,EAAE;oBAC/D,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAY,gCAAgC,EAAE;gBACzF,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG;gBACtC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ;aACjC,CAAC,CAAC,CAAA;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;YAE7G,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAA;gBAEpG,wBAAwB;gBACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE;oBACxD,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,aAAa,GAAqD,EAAE,CAAA;YAC1E,MAAM,aAAa,GAAyD,EAAE,CAAA;YAC9E,MAAM,WAAW,GAA2B,EAAE,CAAA;YAE9C,MAAM,OAAO,GAAkB;gBAC7B,GAAG,OAAO;gBACV,GAAG,aAAa;gBAChB,QAAQ;gBACR,MAAM;gBACN,KAAK;gBACL,YAAY;gBACZ,OAAO;gBACP,kBAAkB;gBAClB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;oBAClB,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;oBAE1B,IAAI,GAAG,CAAC,IAAI,KAAK,oCAAoC,EAAE,CAAC;wBACtD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;4BACjC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE;4BACxB,KAAK,EAAE,CAAC;yBACT,CAAA;oBACH,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,uCAAuC,EAAE,CAAC;wBAChE,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;4BAC7C,OAAM;wBACR,CAAC;wBAED,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;wBAExC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;oBACpL,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;wBAC3D,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAEhD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;4BACpB,OAAM;wBACR,CAAC;wBAED,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;oBACxI,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,4BAA4B,EAAE,CAAC;wBACrD,aAAa,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG;4BACrE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE;4BACxB,SAAS,EAAE,EAAE;yBACd,CAAA;oBACH,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,8BAA8B,EAAE,CAAC;wBACvD,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;wBAElF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;4BAClB,OAAM;wBACR,CAAC;wBAED,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;oBACxL,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;wBAC3D,WAAW,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;oBACxG,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;wBAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;wBAEhG,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;4BAClB,OAAM;wBACR,CAAC;wBAED,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;oBACnK,CAAC;gBACH,CAAC;aACF,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAEvM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAEtD,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAY,4BAA4B,EAAE;gBACrF,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG;gBACtC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ;aACjC,CAAC,CAAC,CAAA;YAEH,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAA;YACnE,CAAC;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;YAC7C,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;YAEhE,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,gBAAgB,EAAE;oBACtF,YAAY;iBACb,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,UAAe,EAAE,CAAC;gBACzB,6DAA6D;gBAC7D,sEAAsE;gBACtE,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;gBAC7C,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;oBACxB,UAAU,CAAC,YAAY,GAAG,YAAY,CAAA;gBACxC,CAAC;gBACD,MAAM,UAAU,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,eAAe,CAAE,GAAQ,EAAE,kBAAuC,EAAE,GAAS;QACnF,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QACzE,MAAM,UAAU,GAAmB,EAAE,CAAA;QAErC,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE,CAAC;YAC9C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEjF,KAAK,MAAM,WAAW,IAAI,qBAAqB,EAAE,CAAC;gBAChD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAE9E,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3D,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW;wBACX,OAAO,EAAE,YAAY,CAAC,OAAO;qBAC9B,CAAC,CAAA;gBACJ,CAAC;gBAED,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;oBACrC,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW;wBACX,OAAO,EAAE,YAAY,CAAC,OAAO;qBAC9B,CAAC,CAAA;gBACJ,CAAC;gBAED,IAAI,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,kBAAkB,KAAK,mBAAmB,EAAE,CAAC;oBAC1F,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW;wBACX,OAAO,EAAE,YAAY,CAAC,OAAO;qBAC9B,CAAC,CAAA;gBACJ,CAAC;gBAED,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;oBAClF,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW;wBACX,OAAO,EAAE,YAAY,CAAC,OAAO;qBAC9B,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9E,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;YAEjF,OAAO,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAA;QAC9E,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,aAAa,CAAE,QAAkB;QACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAA;QAChC,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,YAAY,GAAG,EAAE,CAAC;YAChE,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAA;QAChC,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAE,QAAkB,EAAE,gBAAyB,EAAE,OAA+B;QACzG,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,yBAAyB,CAAA;QAErG,IAAI,gBAAgB,KAAK,IAAI,IAAI,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,CAAA;YAEtD,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;gBACxB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1D,qBAAqB,CAAC;gBACpB,QAAQ;gBACR,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;aAC/B,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,IAAI,IAAI,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAEtC,uEAAuE;YACvE,yDAAyD;YACzD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,uEAAuE;YACvE,+DAA+D;YAC/D,kBAAkB;YAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAEzC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAC;gBACnE,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,sEAAsE;QACtE,UAAU;QACV,EAAE;QACF,sEAAsE;QACtE,yIAAyI;QACzI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;QACxD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAA;QAC1E,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,mDAAmD,CAAC,CAAA;QACzG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,uGAAuG,CAAC,CAAA;QAE9J,IAAI,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAClF,MAAM,IAAI,GAAG,OAAO,CAAC;gBACnB,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;gBAChC,WAAW;gBACX,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAC/B,CAAC,CAAA;YAEF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAElC,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,wCAAwC;YACxC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAA;QACJ,CAAC;QAED,iEAAiE;QACjE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAE,OAAsB;QACrD,IAAI,aAAmC,CAAA;QACvC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QAErC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uDAAuD,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE3M,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAElG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC5E,OAAO,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAExF,iEAAiE;QACjE,MAAM,cAAc,GAAG,KAAK,CAAA;QAC5B,IAAI,aAAa,GAAG,KAAK,CAAA;QAEzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YAC1C,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAElD,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;YAE3D,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,sDAAsD;gBACtD,aAAa,GAAG,aAAa,CAAA;gBAC7B,aAAa,GAAG,IAAI,CAAA;gBACpB,MAAK;YACP,CAAC;YAED,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC9D,MAAK;YACP,CAAC;YAED,IAAI,aAAa,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC3C,MAAK;YACP,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAA;gBAC7E,MAAK;YACP,CAAC;QACH,CAAC;QAED,OAAO,aAAa,IAAI,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;YAC9E,KAAK,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACrF,CAAC,EAAE;YACF,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;CACF;AAOD,SAAS,qBAAqB,CAAE,GAAQ,EAAE,MAAsB;IAC9D,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QACpC,oBAAoB;QACpB,MAAM,GAAG,KAAK,CAAA;IAChB,CAAC;IAED,OAAO,MAAM;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEjC,MAAM,OAAO,GAA2B;YACtC,CAAC,EAAE,GAAG;SACP,CAAA;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAE3D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC;QAED,OAAO;YACL,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YAC/B,OAAO;SACR,CAAA;IACH,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,CAAA;QACV,CAAC;QAED,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/verified-fetch",
|
|
3
|
-
"version": "8.0
|
|
3
|
+
"version": "8.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",
|
|
@@ -179,7 +179,6 @@
|
|
|
179
179
|
"@ipld/dag-json": "^11.0.0",
|
|
180
180
|
"@ipld/dag-pb": "^4.1.5",
|
|
181
181
|
"@libp2p/interface": "^3.2.0",
|
|
182
|
-
"@libp2p/kad-dht": "^16.2.0",
|
|
183
182
|
"@libp2p/peer-id": "^6.0.6",
|
|
184
183
|
"@libp2p/utils": "^7.0.15",
|
|
185
184
|
"@libp2p/webrtc": "^6.0.16",
|
package/src/constants.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -869,13 +869,13 @@ import type { RequestedMimeType } from './verified-fetch.ts'
|
|
|
869
869
|
import type { DNSLink, ResolveProgressEvents as ResolveDNSLinkProgressEvents } from '@helia/dnslink'
|
|
870
870
|
import type { GetBlockProgressEvents, Helia, ProviderOptions } from '@helia/interface'
|
|
871
871
|
import type { ResolveProgressEvents as ResolveIPNSNameProgressEvents, IPNSRoutingProgressEvents, IPNSResolver } from '@helia/ipns'
|
|
872
|
-
import type {
|
|
872
|
+
import type { CreateLibp2pOptions } from '@helia/libp2p'
|
|
873
|
+
import type { AbortOptions, Logger, PeerId, PublicKey } from '@libp2p/interface'
|
|
873
874
|
import type { DNSResolvers, DNS } from '@multiformats/dns'
|
|
874
875
|
import type { DNSResolver } from '@multiformats/dns/resolvers'
|
|
875
876
|
import type { HeliaInit } from 'helia'
|
|
876
877
|
import type { Blockstore } from 'interface-blockstore'
|
|
877
878
|
import type { ExporterProgressEvents, PathEntry } from 'ipfs-unixfs-exporter'
|
|
878
|
-
import type { Libp2pOptions } from 'libp2p'
|
|
879
879
|
import type { CID } from 'multiformats/cid'
|
|
880
880
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
881
881
|
|
|
@@ -1157,7 +1157,7 @@ export interface CreateVerifiedFetchInit {
|
|
|
1157
1157
|
* If you need a deep merge, you should do it yourself before passing the
|
|
1158
1158
|
* configuration here.
|
|
1159
1159
|
*/
|
|
1160
|
-
libp2pConfig?:
|
|
1160
|
+
libp2pConfig?: CreateLibp2pOptions
|
|
1161
1161
|
}
|
|
1162
1162
|
|
|
1163
1163
|
export interface CreateVerifiedFetchOptions {
|
|
@@ -1393,7 +1393,7 @@ export async function createVerifiedFetch (init?: Helia | CreateVerifiedFetchIni
|
|
|
1393
1393
|
if (!isHelia(init)) {
|
|
1394
1394
|
const dns = createDns(init?.dnsResolvers)
|
|
1395
1395
|
|
|
1396
|
-
const libp2pConfig = getLibp2pConfig()
|
|
1396
|
+
const libp2pConfig = getLibp2pConfig(init?.libp2pConfig)
|
|
1397
1397
|
libp2pConfig.dns = dns
|
|
1398
1398
|
|
|
1399
1399
|
const delegatedRouters = init?.routers ?? ['https://delegated-ipfs.dev']
|
package/src/url-resolver.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { CODEC_LIBP2P_KEY, SESSION_CACHE_MAX_SIZE, SESSION_CACHE_TTL_MS } from '
|
|
|
12
12
|
import { abbreviate } from './utils/abbreviate.ts'
|
|
13
13
|
import { applyRedirects } from './utils/apply-redirect.ts'
|
|
14
14
|
import { splitIPNSName } from './utils/ipfs-path-to-cid.ts'
|
|
15
|
+
import { toIPFSPath } from './utils/ipfs-url-to-ipfs-path.ts'
|
|
15
16
|
import { ServerTiming } from './utils/server-timing.ts'
|
|
16
17
|
import type { ResolveURLOptions, ResolveURLResult, URLResolver as URLResolverInterface } from './index.ts'
|
|
17
18
|
import type { DNSLink } from '@helia/dnslink'
|
|
@@ -318,23 +319,6 @@ export class URLResolver implements URLResolverInterface {
|
|
|
318
319
|
}
|
|
319
320
|
}
|
|
320
321
|
|
|
321
|
-
function toIPFSPath (url: URL): string {
|
|
322
|
-
let pathname = url.pathname.split('/')
|
|
323
|
-
.map(component => decodeURIComponent(component))
|
|
324
|
-
.join('/')
|
|
325
|
-
.trim()
|
|
326
|
-
|
|
327
|
-
if (pathname.length > 0 && !pathname.startsWith('/')) {
|
|
328
|
-
pathname = `/${pathname}`
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
if (url.protocol === 'ipns:' && pathname === '/') {
|
|
332
|
-
pathname = ''
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
return `/${url.protocol === 'ipfs:' ? 'ipfs' : 'ipns'}/${url.hostname}${pathname}`
|
|
336
|
-
}
|
|
337
|
-
|
|
338
322
|
/**
|
|
339
323
|
* E.g.
|
|
340
324
|
*
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { InvalidParametersError } from '@libp2p/interface'
|
|
2
|
+
import { base36 } from 'multiformats/bases/base36'
|
|
3
|
+
import { base58btc } from 'multiformats/bases/base58'
|
|
4
|
+
import { CID } from 'multiformats/cid'
|
|
5
|
+
import * as Digest from 'multiformats/hashes/digest'
|
|
6
|
+
import { CODEC_LIBP2P_KEY } from '../constants.ts'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Percent-encode a single path segment for the `Ipfs-Uri` header value.
|
|
10
|
+
*
|
|
11
|
+
* Every byte of the segment's UTF-8 encoding that is outside the RFC 3986
|
|
12
|
+
* unreserved set (ALPHA / DIGIT / "-" / "." / "_" / "~") is encoded as %XX
|
|
13
|
+
* with uppercase hex, so the output is ASCII-only and byte-identical across
|
|
14
|
+
* implementations. `encodeURIComponent` covers everything except the
|
|
15
|
+
* sub-delims `!'()*` which are handled separately.
|
|
16
|
+
*/
|
|
17
|
+
function encodeSegment (segment: string): string {
|
|
18
|
+
return encodeURIComponent(segment)
|
|
19
|
+
.replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Percent-decode a raw URL path segment. Segments that are not valid
|
|
24
|
+
* percent-encoding (e.g. a lone `%`) are used as-is.
|
|
25
|
+
*/
|
|
26
|
+
function decodeSegment (segment: string): string {
|
|
27
|
+
try {
|
|
28
|
+
return decodeURIComponent(segment)
|
|
29
|
+
} catch {
|
|
30
|
+
return segment
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the dot segments of a decoded path: "." drops out and ".." removes
|
|
36
|
+
* the segment before it. A ".." with nothing left to remove is discarded, so
|
|
37
|
+
* the result can never climb above the content root.
|
|
38
|
+
*/
|
|
39
|
+
function resolveDotSegments (segments: string[]): string[] {
|
|
40
|
+
const resolved: string[] = []
|
|
41
|
+
|
|
42
|
+
for (const segment of segments) {
|
|
43
|
+
if (segment === '.') {
|
|
44
|
+
continue
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (segment === '..') {
|
|
48
|
+
resolved.pop()
|
|
49
|
+
|
|
50
|
+
continue
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
resolved.push(segment)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return resolved
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Convert a WHATWG URL pathname into the path part of an `Ipfs-Uri` value.
|
|
61
|
+
* The URI path mirrors the content path the gateway resolved and served, so
|
|
62
|
+
* it follows the same order of operations: each raw pathname segment is
|
|
63
|
+
* percent-decoded once, which turns an encoded slash (%2F) into a path
|
|
64
|
+
* separator, and only then are dot segments resolved. A "." or ".." can
|
|
65
|
+
* therefore never reach the value. Every remaining segment is strictly
|
|
66
|
+
* re-encoded and joined with "/": interior empty segments are dropped, a
|
|
67
|
+
* trailing slash is kept, and an empty remainder produces no path at all.
|
|
68
|
+
*/
|
|
69
|
+
function toUriPath (pathname: string): string {
|
|
70
|
+
if (pathname === '') {
|
|
71
|
+
return ''
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const decoded = pathname.split('/').map(decodeSegment).join('/')
|
|
75
|
+
const segments = resolveDotSegments(decoded.split('/').filter(segment => segment !== ''))
|
|
76
|
+
const trailingSlash = decoded.endsWith('/') ? '/' : ''
|
|
77
|
+
|
|
78
|
+
if (segments.length === 0) {
|
|
79
|
+
return trailingSlash
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return `/${segments.map(encodeSegment).join('/')}${trailingSlash}`
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Canonical authority for an `ipfs://` URI: the CID re-encoded as a CIDv1 in
|
|
87
|
+
* lowercase base32 (multibase prefix `b`). CIDv0 and other encodings of the
|
|
88
|
+
* same CID normalize to the same string.
|
|
89
|
+
*/
|
|
90
|
+
function ipfsAuthority (host: string): string {
|
|
91
|
+
return CID.parse(host).toV1().toString()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Canonical authority for an `ipns://` URI naming a cryptographic IPNS name:
|
|
96
|
+
* the root re-encoded as a CIDv1 in lowercase base36 (multibase prefix `k`).
|
|
97
|
+
* Legacy base58btc peer id strings (`Qm...`, `12D3Koo...`) normalize to a
|
|
98
|
+
* libp2p-key CIDv1 in base36. A root carrying any other multicodec is not an
|
|
99
|
+
* IPNS Name, so there is no `ipns://` URI to report and the header is omitted.
|
|
100
|
+
*/
|
|
101
|
+
function ipnsAuthority (host: string): string | undefined {
|
|
102
|
+
if (host.startsWith('Q') || host.startsWith('1')) {
|
|
103
|
+
const digest = Digest.decode(base58btc.baseDecode(host))
|
|
104
|
+
|
|
105
|
+
return CID.createV1(CODEC_LIBP2P_KEY, digest).toString(base36)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const cid = CID.parse(host)
|
|
109
|
+
|
|
110
|
+
if (cid.code !== CODEC_LIBP2P_KEY) {
|
|
111
|
+
return undefined
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return cid.toV1().toString(base36)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* The `dnslink-name` form of the `ipns://` URI spec: two or more labels
|
|
119
|
+
* separated by dots, each label 1 to 63 lowercase letters, digits and interior
|
|
120
|
+
* hyphens, with no leading or trailing hyphen.
|
|
121
|
+
*
|
|
122
|
+
* @see https://specs.ipfs.tech/ipns-uri/#syntax
|
|
123
|
+
*/
|
|
124
|
+
const DNSLINK_NAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+$/
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Canonical authority for an `ipns://` URI naming a DNSLink: the dotted DNS
|
|
128
|
+
* name as lowercase ASCII (A-labels for IDN), with a single trailing dot
|
|
129
|
+
* stripped first. WHATWG URLs treat `dnslink:` as a non-special scheme so
|
|
130
|
+
* the hostname keeps the case of the input; round-tripping through an
|
|
131
|
+
* `http:` URL applies domain parsing which lowercases and converts IDN
|
|
132
|
+
* labels to A-labels, but leaves malformed names such as `en..example.net`
|
|
133
|
+
* alone. A result outside the `dnslink-name` form cannot be a DNSLink name so
|
|
134
|
+
* the header is omitted.
|
|
135
|
+
*/
|
|
136
|
+
function dnsLinkAuthority (host: string): string | undefined {
|
|
137
|
+
const name = decodeSegment(host).replace(/\.$/, '')
|
|
138
|
+
const authority = new URL(`http://${name}`).hostname
|
|
139
|
+
|
|
140
|
+
if (!DNSLINK_NAME.test(authority)) {
|
|
141
|
+
return undefined
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return authority
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Build the value of the `Ipfs-Uri` response header defined by IPIP-0548: a
|
|
149
|
+
* single canonical `ipfs://` or `ipns://` URI equivalent to the requested
|
|
150
|
+
* content path, before path traversal. The value never contains a query or a
|
|
151
|
+
* fragment. Returns `undefined` when the content root cannot be normalized,
|
|
152
|
+
* in which case the header is omitted.
|
|
153
|
+
*/
|
|
154
|
+
export function toCanonicalUri (url: URL): URL {
|
|
155
|
+
try {
|
|
156
|
+
if (url.protocol === 'ipfs:') {
|
|
157
|
+
return new URL(`ipfs://${ipfsAuthority(url.hostname)}${toUriPath(url.pathname)}${url.search}${url.hash}`)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (url.protocol === 'ipns:') {
|
|
161
|
+
const authority = ipnsAuthority(url.hostname)
|
|
162
|
+
|
|
163
|
+
if (authority == null) {
|
|
164
|
+
throw new InvalidParametersError(`Could not derive IPNS authority from ${url}`)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return new URL(`ipns://${authority}${toUriPath(url.pathname)}${url.search}${url.hash}`)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (url.protocol === 'dnslink:') {
|
|
171
|
+
const authority = dnsLinkAuthority(url.hostname)
|
|
172
|
+
|
|
173
|
+
if (authority == null) {
|
|
174
|
+
throw new InvalidParametersError(`Could not derive IPNS authority from ${url}`)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return new URL(`dnslink://${authority}${toUriPath(url.pathname)}${url.search}${url.hash}`)
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
180
|
+
// the content root could not be normalized, omit the header
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
throw new InvalidParametersError(`Could not derive canonical URI from ${url}`)
|
|
184
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the value of the `Ipfs-Uri` response header defined by IPIP-0548: a
|
|
3
|
+
* single canonical `ipfs://` or `ipns://` URI equivalent to the requested
|
|
4
|
+
* content path, before path traversal. The value never contains a query or a
|
|
5
|
+
* fragment.
|
|
6
|
+
*/
|
|
7
|
+
export function toIpfsUri (url: URL): string | undefined {
|
|
8
|
+
return `${url.protocol === 'dnslink:' ? 'ipns:' : url.protocol}//${url.hostname}${url.pathname}`
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns an IPFS URL to an IPFS Path
|
|
3
|
+
*/
|
|
4
|
+
export function toIPFSPath (url: URL): string {
|
|
5
|
+
let pathname = url.pathname.split('/')
|
|
6
|
+
.map(component => decodeURIComponent(component))
|
|
7
|
+
.join('/')
|
|
8
|
+
|
|
9
|
+
if (pathname.length > 0 && !pathname.startsWith('/')) {
|
|
10
|
+
pathname = `/${pathname}`
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (pathname === '/') {
|
|
14
|
+
pathname = ''
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return `/${url.protocol === 'ipfs:' ? 'ipfs' : 'ipns'}/${url.hostname}${pathname}`
|
|
18
|
+
}
|
|
@@ -2,18 +2,14 @@ import { libp2pDefaults } from '@helia/libp2p'
|
|
|
2
2
|
import { webRTCDirect } from '@libp2p/webrtc'
|
|
3
3
|
import { webSockets } from '@libp2p/websockets'
|
|
4
4
|
import type { ServiceFactoryMap } from './libp2p-types.ts'
|
|
5
|
-
import type { DefaultLibp2pServices } from '@helia/libp2p'
|
|
5
|
+
import type { CreateLibp2pOptions, DefaultLibp2pServices } from '@helia/libp2p'
|
|
6
6
|
import type { Libp2pOptions } from 'libp2p'
|
|
7
7
|
|
|
8
8
|
type ServiceMap = Pick<DefaultLibp2pServices, 'dcutr' | 'identify' | 'identifyPush' | 'keychain' | 'ping'>
|
|
9
9
|
|
|
10
|
-
export function getLibp2pConfig (): Libp2pOptions & Required<Pick<Libp2pOptions, 'services'>> {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
libp2pDefaultOptions.start = false
|
|
14
|
-
libp2pDefaultOptions.addresses = { listen: [] }
|
|
15
|
-
libp2pDefaultOptions.transports = [webRTCDirect(), webSockets()]
|
|
16
|
-
libp2pDefaultOptions.peerDiscovery = [] // Avoid connecting to bootstrap nodes
|
|
10
|
+
export function getLibp2pConfig (options?: CreateLibp2pOptions): Libp2pOptions & Required<Pick<Libp2pOptions, 'services'>> {
|
|
11
|
+
// @ts-expect-error cannot derive correct type
|
|
12
|
+
const libp2pDefaultOptions = libp2pDefaults(options)
|
|
17
13
|
|
|
18
14
|
const services: ServiceFactoryMap<ServiceMap> = {
|
|
19
15
|
dcutr: libp2pDefaultOptions.services.dcutr,
|
|
@@ -24,8 +20,16 @@ export function getLibp2pConfig (): Libp2pOptions & Required<Pick<Libp2pOptions,
|
|
|
24
20
|
}
|
|
25
21
|
|
|
26
22
|
return {
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
addresses: {
|
|
24
|
+
listen: []
|
|
25
|
+
},
|
|
26
|
+
transports: [
|
|
27
|
+
webRTCDirect(),
|
|
28
|
+
webSockets()
|
|
29
|
+
],
|
|
30
|
+
peerDiscovery: [
|
|
31
|
+
// Avoid connecting to bootstrap nodes
|
|
32
|
+
],
|
|
29
33
|
services
|
|
30
34
|
}
|
|
31
35
|
}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import { libp2pDefaults } from '@helia/libp2p'
|
|
2
|
-
import { kadDHT } from '@libp2p/kad-dht'
|
|
3
2
|
import type { ServiceFactoryMap } from './libp2p-types.ts'
|
|
4
|
-
import type { DefaultLibp2pServices } from '@helia/libp2p'
|
|
3
|
+
import type { CreateLibp2pOptions, DefaultLibp2pServices } from '@helia/libp2p'
|
|
5
4
|
import type { Libp2pOptions } from 'libp2p'
|
|
6
5
|
|
|
7
|
-
type ServiceMap = Pick<DefaultLibp2pServices, 'autoNAT' | 'dcutr' | '
|
|
6
|
+
type ServiceMap = Pick<DefaultLibp2pServices, 'autoNAT' | 'dcutr' | 'identify' | 'identifyPush' | 'keychain' | 'ping' | 'upnp'>
|
|
8
7
|
|
|
9
|
-
export function getLibp2pConfig (): Libp2pOptions & Required<Pick<Libp2pOptions, 'services'>> {
|
|
10
|
-
|
|
8
|
+
export function getLibp2pConfig (options?: CreateLibp2pOptions): Libp2pOptions & Required<Pick<Libp2pOptions, 'services'>> {
|
|
9
|
+
// @ts-expect-error cannot derive correct type
|
|
10
|
+
const libp2pDefaultOptions = libp2pDefaults(options)
|
|
11
11
|
|
|
12
12
|
const services: ServiceFactoryMap<ServiceMap> = {
|
|
13
13
|
autoNAT: libp2pDefaultOptions.services.autoNAT,
|
|
14
14
|
dcutr: libp2pDefaultOptions.services.dcutr,
|
|
15
|
-
dht: kadDHT({
|
|
16
|
-
clientMode: true
|
|
17
|
-
}),
|
|
18
15
|
identify: libp2pDefaultOptions.services.identify,
|
|
19
16
|
identifyPush: libp2pDefaultOptions.services.identifyPush,
|
|
20
17
|
keychain: libp2pDefaultOptions.services.keychain,
|
|
@@ -23,7 +20,6 @@ export function getLibp2pConfig (): Libp2pOptions & Required<Pick<Libp2pOptions,
|
|
|
23
20
|
}
|
|
24
21
|
|
|
25
22
|
return {
|
|
26
|
-
...libp2pDefaultOptions,
|
|
27
23
|
services
|
|
28
24
|
}
|
|
29
25
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InvalidParametersError } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
3
3
|
import { CID } from 'multiformats/cid'
|
|
4
|
+
import { toCanonicalUri } from './canonical-uri.ts'
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Turns an IPFS or IPNS path into a URL
|
|
@@ -55,7 +56,7 @@ export function stringToIpfsUrl (urlString: string): URL {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
return url
|
|
59
|
+
return toCanonicalUri(url)
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
throw new InvalidParametersError(`URL did not start with ipfs:// or ipns:// - ${urlString}`)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { toIPFSPath } from './ipfs-url-to-ipfs-path.ts'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* True when every byte of the UTF-8 encoding of `value` is HTAB (0x09), SP
|
|
5
|
+
* (0x20) or visible ASCII (0x21-0x7E), the only bytes an HTTP field value can
|
|
6
|
+
* carry. Any code point above 0x7E encodes to bytes that are all above 0x7F,
|
|
7
|
+
* so testing code points is equivalent to testing the encoded bytes.
|
|
8
|
+
*/
|
|
9
|
+
function isFieldValue (value: string): boolean {
|
|
10
|
+
for (let i = 0; i < value.length; i++) {
|
|
11
|
+
const code = value.charCodeAt(i)
|
|
12
|
+
|
|
13
|
+
if (code !== 0x09 && (code < 0x20 || code > 0x7e)) {
|
|
14
|
+
return false
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return true
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Build the value of the deprecated `x-ipfs-path` response header: the content
|
|
23
|
+
* path for the requested URL, with the percent-encoding of the request target
|
|
24
|
+
* removed. Returns `undefined` when that path contains a byte that cannot be
|
|
25
|
+
* carried by an HTTP field value, in which case the header must be omitted
|
|
26
|
+
* rather than sent with the offending bytes mangled or dropped.
|
|
27
|
+
*
|
|
28
|
+
* @see https://github.com/ipfs/specs/pull/548
|
|
29
|
+
*/
|
|
30
|
+
export function toXIpfsPath (url: URL): string | undefined {
|
|
31
|
+
const ipfsPath = toIPFSPath(url)
|
|
32
|
+
|
|
33
|
+
return isFieldValue(ipfsPath) ? ipfsPath : undefined
|
|
34
|
+
}
|