@helia/verified-fetch 0.0.0-8db7792 → 0.0.0-a04e041
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 +33 -0
- package/dist/index.min.js +4 -4
- package/dist/src/index.d.ts +36 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/get-content-disposition-filename.d.ts +6 -0
- package/dist/src/utils/get-content-disposition-filename.d.ts.map +1 -0
- package/dist/src/utils/get-content-disposition-filename.js +16 -0
- package/dist/src/utils/get-content-disposition-filename.js.map +1 -0
- package/dist/src/utils/parse-url-string.d.ts +2 -0
- package/dist/src/utils/parse-url-string.d.ts.map +1 -1
- package/dist/src/utils/parse-url-string.js +6 -0
- package/dist/src/utils/parse-url-string.js.map +1 -1
- package/dist/src/utils/responses.d.ts +4 -0
- package/dist/src/utils/responses.d.ts.map +1 -0
- package/dist/src/utils/responses.js +21 -0
- package/dist/src/utils/responses.js.map +1 -0
- package/dist/src/utils/select-output-type.d.ts +12 -0
- package/dist/src/utils/select-output-type.d.ts.map +1 -0
- package/dist/src/utils/select-output-type.js +147 -0
- package/dist/src/utils/select-output-type.js.map +1 -0
- package/dist/src/verified-fetch.d.ts +17 -15
- package/dist/src/verified-fetch.d.ts.map +1 -1
- package/dist/src/verified-fetch.js +211 -129
- package/dist/src/verified-fetch.js.map +1 -1
- package/package.json +18 -12
- package/src/index.ts +37 -0
- package/src/utils/get-content-disposition-filename.ts +18 -0
- package/src/utils/parse-url-string.ts +11 -1
- package/src/utils/responses.ts +22 -0
- package/src/utils/select-output-type.ts +166 -0
- package/src/verified-fetch.ts +237 -134
package/dist/src/index.d.ts
CHANGED
|
@@ -320,6 +320,39 @@
|
|
|
320
320
|
* console.info(obj) // ...
|
|
321
321
|
* ```
|
|
322
322
|
*
|
|
323
|
+
* ## The `Accept` header
|
|
324
|
+
*
|
|
325
|
+
* The `Accept` header can be passed to override certain response processing, or to ensure that the final `Content-Type` of the response is the one that is expected.
|
|
326
|
+
*
|
|
327
|
+
* If the final `Content-Type` does not match the `Accept` header, or if the content cannot be represented in the format dictated by the `Accept` header, or you have configured a custom content type parser, and that parser returns a value that isn't in the accept header, a [406: Not Acceptable](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406) response will be returned:
|
|
328
|
+
*
|
|
329
|
+
* ```typescript
|
|
330
|
+
* import { verifiedFetch } from '@helia/verified-fetch'
|
|
331
|
+
*
|
|
332
|
+
* const res = await verifiedFetch('ipfs://bafyJPEGImageCID', {
|
|
333
|
+
* headers: {
|
|
334
|
+
* accept: 'image/png'
|
|
335
|
+
* }
|
|
336
|
+
* })
|
|
337
|
+
*
|
|
338
|
+
* console.info(res.status) // 406 - the image was a JPEG but we specified PNG as the accept header
|
|
339
|
+
* ```
|
|
340
|
+
*
|
|
341
|
+
* It can also be used to skip processing the data from some formats such as `DAG-CBOR` if you wish to handle decoding it yourself:
|
|
342
|
+
*
|
|
343
|
+
* ```typescript
|
|
344
|
+
* import { verifiedFetch } from '@helia/verified-fetch'
|
|
345
|
+
*
|
|
346
|
+
* const res = await verifiedFetch('ipfs://bafyDAGCBORCID', {
|
|
347
|
+
* headers: {
|
|
348
|
+
* accept: 'application/octet-stream'
|
|
349
|
+
* }
|
|
350
|
+
* })
|
|
351
|
+
*
|
|
352
|
+
* console.info(res.headers.get('accept')) // application/octet-stream
|
|
353
|
+
* const buf = await res.arrayBuffer() // raw bytes, not processed as JSON
|
|
354
|
+
* ```
|
|
355
|
+
*
|
|
323
356
|
* ## Comparison to fetch
|
|
324
357
|
*
|
|
325
358
|
* This module attempts to act as similarly to the `fetch()` API as possible.
|
|
@@ -442,6 +475,9 @@ import type { ProgressEvent, ProgressOptions } from 'progress-events';
|
|
|
442
475
|
* The types for the first argument of the `verifiedFetch` function.
|
|
443
476
|
*/
|
|
444
477
|
export type Resource = string | CID;
|
|
478
|
+
export interface ResourceDetail {
|
|
479
|
+
resource: Resource;
|
|
480
|
+
}
|
|
445
481
|
export interface CIDDetail {
|
|
446
482
|
cid: CID;
|
|
447
483
|
path: string;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -320,6 +320,39 @@
|
|
|
320
320
|
* console.info(obj) // ...
|
|
321
321
|
* ```
|
|
322
322
|
*
|
|
323
|
+
* ## The `Accept` header
|
|
324
|
+
*
|
|
325
|
+
* The `Accept` header can be passed to override certain response processing, or to ensure that the final `Content-Type` of the response is the one that is expected.
|
|
326
|
+
*
|
|
327
|
+
* If the final `Content-Type` does not match the `Accept` header, or if the content cannot be represented in the format dictated by the `Accept` header, or you have configured a custom content type parser, and that parser returns a value that isn't in the accept header, a [406: Not Acceptable](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406) response will be returned:
|
|
328
|
+
*
|
|
329
|
+
* ```typescript
|
|
330
|
+
* import { verifiedFetch } from '@helia/verified-fetch'
|
|
331
|
+
*
|
|
332
|
+
* const res = await verifiedFetch('ipfs://bafyJPEGImageCID', {
|
|
333
|
+
* headers: {
|
|
334
|
+
* accept: 'image/png'
|
|
335
|
+
* }
|
|
336
|
+
* })
|
|
337
|
+
*
|
|
338
|
+
* console.info(res.status) // 406 - the image was a JPEG but we specified PNG as the accept header
|
|
339
|
+
* ```
|
|
340
|
+
*
|
|
341
|
+
* It can also be used to skip processing the data from some formats such as `DAG-CBOR` if you wish to handle decoding it yourself:
|
|
342
|
+
*
|
|
343
|
+
* ```typescript
|
|
344
|
+
* import { verifiedFetch } from '@helia/verified-fetch'
|
|
345
|
+
*
|
|
346
|
+
* const res = await verifiedFetch('ipfs://bafyDAGCBORCID', {
|
|
347
|
+
* headers: {
|
|
348
|
+
* accept: 'application/octet-stream'
|
|
349
|
+
* }
|
|
350
|
+
* })
|
|
351
|
+
*
|
|
352
|
+
* console.info(res.headers.get('accept')) // application/octet-stream
|
|
353
|
+
* const buf = await res.arrayBuffer() // raw bytes, not processed as JSON
|
|
354
|
+
* ```
|
|
355
|
+
*
|
|
323
356
|
* ## Comparison to fetch
|
|
324
357
|
*
|
|
325
358
|
* This module attempts to act as similarly to the `fetch()` API as possible.
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmdG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAuFzE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAE,IAAsC,EAAE,OAAoC;IACrH,MAAM,iBAAiB,GAAkC,OAAO,EAAE,iBAAiB,CAAA;IAEnF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,MAAM,eAAe,CAAC;YAC3B,YAAY,EAAE;gBACZ,gBAAgB,CAAC;oBACf,QAAQ,EAAE,IAAI,EAAE,QAAQ;iBACzB,CAAC;aACH;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SAC/G,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC5F,KAAK,UAAU,aAAa,CAAE,QAAkB,EAAE,OAA2B;QAC3E,OAAO,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IACD,aAAa,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC3E,aAAa,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAE7E,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,SAAS,OAAO,CAAE,GAAQ;IACxB,0EAA0E;IAC1E,OAAO,GAAG,EAAE,UAAU,IAAI,IAAI;QAC5B,GAAG,EAAE,SAAS,IAAI,IAAI;QACtB,GAAG,EAAE,EAAE,IAAI,IAAI;QACf,GAAG,EAAE,IAAI,IAAI,IAAI;QACjB,GAAG,EAAE,KAAK,IAAI,IAAI,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-content-disposition-filename.d.ts","sourceRoot":"","sources":["../../../src/utils/get-content-disposition-filename.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQvE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Takes a filename URL param and returns a string for use in a
|
|
3
|
+
* `Content-Disposition` header
|
|
4
|
+
*/
|
|
5
|
+
export function getContentDispositionFilename(filename) {
|
|
6
|
+
const asciiOnly = replaceNonAsciiCharacters(filename);
|
|
7
|
+
if (asciiOnly === filename) {
|
|
8
|
+
return `filename="${filename}"`;
|
|
9
|
+
}
|
|
10
|
+
return `filename="${asciiOnly}"; filename*=UTF-8''${encodeURIComponent(filename)}`;
|
|
11
|
+
}
|
|
12
|
+
function replaceNonAsciiCharacters(filename) {
|
|
13
|
+
// eslint-disable-next-line no-control-regex
|
|
14
|
+
return filename.replace(/[^\x00-\x7F]/g, '_');
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=get-content-disposition-filename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-content-disposition-filename.js","sourceRoot":"","sources":["../../../src/utils/get-content-disposition-filename.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAE,QAAgB;IAC7D,MAAM,SAAS,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAErD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,aAAa,QAAQ,GAAG,CAAA;IACjC,CAAC;IAED,OAAO,aAAa,SAAS,uBAAuB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAA;AACpF,CAAC;AAED,SAAS,yBAAyB,CAAE,QAAgB;IAClD,4CAA4C;IAC5C,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -12,6 +12,8 @@ export interface ParseUrlStringOptions extends ProgressOptions<ResolveProgressEv
|
|
|
12
12
|
}
|
|
13
13
|
export interface ParsedUrlQuery extends Record<string, string | unknown> {
|
|
14
14
|
format?: RequestFormatShorthand;
|
|
15
|
+
download?: boolean;
|
|
16
|
+
filename?: string;
|
|
15
17
|
}
|
|
16
18
|
export interface ParsedUrlStringResults {
|
|
17
19
|
protocol: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-url-string.d.ts","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,qBAAqB,EAAiB,MAAM,aAAa,CAAA;AAC9H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,eAAe,CAAA;CACxB;AACD,MAAM,WAAW,qBAAsB,SAAQ,eAAe,CAAC,qBAAqB,GAAG,iBAAiB,GAAG,4BAA4B,CAAC;CAEvI;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,MAAM,CAAC,EAAE,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"parse-url-string.d.ts","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,qBAAqB,EAAiB,MAAM,aAAa,CAAA;AAC9H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,eAAe,CAAA;CACxB;AACD,MAAM,WAAW,qBAAsB,SAAQ,eAAe,CAAC,qBAAqB,GAAG,iBAAiB,GAAG,4BAA4B,CAAC;CAEvI;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,MAAM,CAAC,EAAE,sBAAsB,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,cAAc,CAAA;CACtB;AAID;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgHxJ"}
|
|
@@ -85,6 +85,12 @@ export async function parseUrlString({ urlString, ipns, logger }, options) {
|
|
|
85
85
|
const [key, value] = part.split('=');
|
|
86
86
|
query[key] = decodeURIComponent(value);
|
|
87
87
|
}
|
|
88
|
+
if (query.download != null) {
|
|
89
|
+
query.download = query.download === 'true';
|
|
90
|
+
}
|
|
91
|
+
if (query.filename != null) {
|
|
92
|
+
query.filename = query.filename.toString();
|
|
93
|
+
}
|
|
88
94
|
}
|
|
89
95
|
/**
|
|
90
96
|
* join the path from resolve result & given path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAMhC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAgB,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function okResponse(body?: BodyInit | null): Response;
|
|
2
|
+
export declare function notSupportedResponse(body?: BodyInit | null): Response;
|
|
3
|
+
export declare function notAcceptableResponse(body?: BodyInit | null): Response;
|
|
4
|
+
//# sourceMappingURL=responses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/utils/responses.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAK5D;AAED,wBAAgB,oBAAoB,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAOtE;AAED,wBAAgB,qBAAqB,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAKvE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function okResponse(body) {
|
|
2
|
+
return new Response(body, {
|
|
3
|
+
status: 200,
|
|
4
|
+
statusText: 'OK'
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export function notSupportedResponse(body) {
|
|
8
|
+
const response = new Response(body, {
|
|
9
|
+
status: 501,
|
|
10
|
+
statusText: 'Not Implemented'
|
|
11
|
+
});
|
|
12
|
+
response.headers.set('X-Content-Type-Options', 'nosniff'); // see https://specs.ipfs.tech/http-gateways/path-gateway/#x-content-type-options-response-header
|
|
13
|
+
return response;
|
|
14
|
+
}
|
|
15
|
+
export function notAcceptableResponse(body) {
|
|
16
|
+
return new Response(body, {
|
|
17
|
+
status: 406,
|
|
18
|
+
statusText: 'Not Acceptable'
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=responses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../src/utils/responses.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAE,IAAsB;IAChD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAE,IAAsB;IAC1D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;QAClC,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAA;IACF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA,CAAC,iGAAiG;IAC3J,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAE,IAAsB;IAC3D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RequestFormatShorthand } from '../types.js';
|
|
2
|
+
import type { CID } from 'multiformats/cid';
|
|
3
|
+
/**
|
|
4
|
+
* Selects an output mime-type based on the CID and a passed `Accept` header
|
|
5
|
+
*/
|
|
6
|
+
export declare function selectOutputType(cid: CID, accept?: string): string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Converts a `format=...` query param to a mime type as would be found in the
|
|
9
|
+
* `Accept` header, if a valid mapping is available
|
|
10
|
+
*/
|
|
11
|
+
export declare function queryFormatToAcceptHeader(format?: RequestFormatShorthand): string | undefined;
|
|
12
|
+
//# sourceMappingURL=select-output-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-output-type.d.ts","sourceRoot":"","sources":["../../../src/utils/select-output-type.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAuD3C;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM/E;AAuFD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAI9F"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { code as dagCborCode } from '@ipld/dag-cbor';
|
|
2
|
+
import { code as dagJsonCode } from '@ipld/dag-json';
|
|
3
|
+
import { code as dagPbCode } from '@ipld/dag-pb';
|
|
4
|
+
import { code as jsonCode } from 'multiformats/codecs/json';
|
|
5
|
+
import { code as rawCode } from 'multiformats/codecs/raw';
|
|
6
|
+
/**
|
|
7
|
+
* This maps supported response types for each codec supported by verified-fetch
|
|
8
|
+
*/
|
|
9
|
+
const CID_TYPE_MAP = {
|
|
10
|
+
[dagCborCode]: [
|
|
11
|
+
'application/json',
|
|
12
|
+
'application/vnd.ipld.dag-cbor',
|
|
13
|
+
'application/cbor',
|
|
14
|
+
'application/vnd.ipld.dag-json',
|
|
15
|
+
'application/octet-stream',
|
|
16
|
+
'application/vnd.ipld.raw',
|
|
17
|
+
'application/vnd.ipfs.ipns-record',
|
|
18
|
+
'application/vnd.ipld.car'
|
|
19
|
+
],
|
|
20
|
+
[dagJsonCode]: [
|
|
21
|
+
'application/json',
|
|
22
|
+
'application/vnd.ipld.dag-cbor',
|
|
23
|
+
'application/cbor',
|
|
24
|
+
'application/vnd.ipld.dag-json',
|
|
25
|
+
'application/octet-stream',
|
|
26
|
+
'application/vnd.ipld.raw',
|
|
27
|
+
'application/vnd.ipfs.ipns-record',
|
|
28
|
+
'application/vnd.ipld.car'
|
|
29
|
+
],
|
|
30
|
+
[jsonCode]: [
|
|
31
|
+
'application/json',
|
|
32
|
+
'application/vnd.ipld.dag-cbor',
|
|
33
|
+
'application/cbor',
|
|
34
|
+
'application/vnd.ipld.dag-json',
|
|
35
|
+
'application/octet-stream',
|
|
36
|
+
'application/vnd.ipld.raw',
|
|
37
|
+
'application/vnd.ipfs.ipns-record',
|
|
38
|
+
'application/vnd.ipld.car'
|
|
39
|
+
],
|
|
40
|
+
[dagPbCode]: [
|
|
41
|
+
'application/octet-stream',
|
|
42
|
+
'application/json',
|
|
43
|
+
'application/vnd.ipld.dag-cbor',
|
|
44
|
+
'application/cbor',
|
|
45
|
+
'application/vnd.ipld.dag-json',
|
|
46
|
+
'application/vnd.ipld.raw',
|
|
47
|
+
'application/vnd.ipfs.ipns-record',
|
|
48
|
+
'application/vnd.ipld.car',
|
|
49
|
+
'application/x-tar'
|
|
50
|
+
],
|
|
51
|
+
[rawCode]: [
|
|
52
|
+
'application/octet-stream',
|
|
53
|
+
'application/vnd.ipld.raw',
|
|
54
|
+
'application/vnd.ipfs.ipns-record',
|
|
55
|
+
'application/vnd.ipld.car'
|
|
56
|
+
]
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Selects an output mime-type based on the CID and a passed `Accept` header
|
|
60
|
+
*/
|
|
61
|
+
export function selectOutputType(cid, accept) {
|
|
62
|
+
const cidMimeTypes = CID_TYPE_MAP[cid.code];
|
|
63
|
+
if (accept != null) {
|
|
64
|
+
return chooseMimeType(accept, cidMimeTypes);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function chooseMimeType(accept, validMimeTypes) {
|
|
68
|
+
const requestedMimeTypes = accept
|
|
69
|
+
.split(',')
|
|
70
|
+
.map(s => {
|
|
71
|
+
const parts = s.trim().split(';');
|
|
72
|
+
return {
|
|
73
|
+
mimeType: `${parts[0]}`.trim(),
|
|
74
|
+
weight: parseQFactor(parts[1])
|
|
75
|
+
};
|
|
76
|
+
})
|
|
77
|
+
.sort((a, b) => {
|
|
78
|
+
if (a.weight === b.weight) {
|
|
79
|
+
return 0;
|
|
80
|
+
}
|
|
81
|
+
if (a.weight > b.weight) {
|
|
82
|
+
return -1;
|
|
83
|
+
}
|
|
84
|
+
return 1;
|
|
85
|
+
})
|
|
86
|
+
.map(s => s.mimeType);
|
|
87
|
+
for (const headerFormat of requestedMimeTypes) {
|
|
88
|
+
for (const mimeType of validMimeTypes) {
|
|
89
|
+
if (headerFormat.includes(mimeType)) {
|
|
90
|
+
return mimeType;
|
|
91
|
+
}
|
|
92
|
+
if (headerFormat === '*/*') {
|
|
93
|
+
return mimeType;
|
|
94
|
+
}
|
|
95
|
+
if (headerFormat.startsWith('*/') && mimeType.split('/')[1] === headerFormat.split('/')[1]) {
|
|
96
|
+
return mimeType;
|
|
97
|
+
}
|
|
98
|
+
if (headerFormat.endsWith('/*') && mimeType.split('/')[0] === headerFormat.split('/')[0]) {
|
|
99
|
+
return mimeType;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parses q-factor weighting from the accept header to allow letting some mime
|
|
106
|
+
* types take precedence over others.
|
|
107
|
+
*
|
|
108
|
+
* If the q-factor for an acceptable mime representation is omitted it defaults
|
|
109
|
+
* to `1`.
|
|
110
|
+
*
|
|
111
|
+
* All specified values should be in the range 0-1.
|
|
112
|
+
*
|
|
113
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept#q
|
|
114
|
+
*/
|
|
115
|
+
function parseQFactor(str) {
|
|
116
|
+
if (str != null) {
|
|
117
|
+
str = str.trim();
|
|
118
|
+
}
|
|
119
|
+
if (str == null || !str.startsWith('q=')) {
|
|
120
|
+
return 1;
|
|
121
|
+
}
|
|
122
|
+
const factor = parseFloat(str.replace('q=', ''));
|
|
123
|
+
if (isNaN(factor)) {
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
return factor;
|
|
127
|
+
}
|
|
128
|
+
const FORMAT_TO_MIME_TYPE = {
|
|
129
|
+
raw: 'application/vnd.ipld.raw',
|
|
130
|
+
car: 'application/vnd.ipld.car',
|
|
131
|
+
'dag-json': 'application/vnd.ipld.dag-json',
|
|
132
|
+
'dag-cbor': 'application/vnd.ipld.dag-cbor',
|
|
133
|
+
json: 'application/json',
|
|
134
|
+
cbor: 'application/cbor',
|
|
135
|
+
'ipns-record': 'application/vnd.ipfs.ipns-record',
|
|
136
|
+
tar: 'application/x-tar'
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Converts a `format=...` query param to a mime type as would be found in the
|
|
140
|
+
* `Accept` header, if a valid mapping is available
|
|
141
|
+
*/
|
|
142
|
+
export function queryFormatToAcceptHeader(format) {
|
|
143
|
+
if (format != null) {
|
|
144
|
+
return FORMAT_TO_MIME_TYPE[format];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=select-output-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-output-type.js","sourceRoot":"","sources":["../../../src/utils/select-output-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { type IPNS } from '@helia/ipns';
|
|
2
2
|
import { type UnixFS as HeliaUnixFs } from '@helia/unixfs';
|
|
3
|
-
import { type PathWalkerFn } from './utils/walk-path.js';
|
|
4
3
|
import type { ContentTypeParser, Resource, VerifiedFetchInit as VerifiedFetchOptions } from './index.js';
|
|
5
4
|
import type { Helia } from '@helia/interface';
|
|
6
5
|
interface VerifiedFetchComponents {
|
|
7
6
|
helia: Helia;
|
|
8
7
|
ipns?: IPNS;
|
|
9
8
|
unixfs?: HeliaUnixFs;
|
|
10
|
-
pathWalker?: PathWalkerFn;
|
|
11
9
|
}
|
|
12
10
|
/**
|
|
13
11
|
* Potential future options for the VerifiedFetch constructor.
|
|
@@ -19,29 +17,33 @@ export declare class VerifiedFetch {
|
|
|
19
17
|
private readonly helia;
|
|
20
18
|
private readonly ipns;
|
|
21
19
|
private readonly unixfs;
|
|
22
|
-
private readonly pathWalker;
|
|
23
20
|
private readonly log;
|
|
24
21
|
private readonly contentTypeParser;
|
|
25
|
-
constructor({ helia, ipns, unixfs
|
|
22
|
+
constructor({ helia, ipns, unixfs }: VerifiedFetchComponents, init?: VerifiedFetchInit);
|
|
23
|
+
/**
|
|
24
|
+
* Accepts an `ipns://...` URL as a string and returns a `Response` containing
|
|
25
|
+
* a raw IPNS record.
|
|
26
|
+
*/
|
|
26
27
|
private handleIPNSRecord;
|
|
27
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Accepts a `CID` and returns a `Response` with a body stream that is a CAR
|
|
30
|
+
* of the `DAG` referenced by the `CID`.
|
|
31
|
+
*/
|
|
32
|
+
private handleCar;
|
|
33
|
+
/**
|
|
34
|
+
* Accepts a UnixFS `CID` and returns a `.tar` file containing the file or
|
|
35
|
+
* directory structure referenced by the `CID`.
|
|
36
|
+
*/
|
|
37
|
+
private handleTar;
|
|
28
38
|
private handleJson;
|
|
29
39
|
private handleDagCbor;
|
|
30
40
|
private handleDagPb;
|
|
31
41
|
private handleRaw;
|
|
32
42
|
private setContentType;
|
|
33
43
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* @see https://specs.ipfs.tech/http-gateways/path-gateway/#format-request-query-parameter
|
|
37
|
-
* @default 'raw'
|
|
38
|
-
*/
|
|
39
|
-
private getFormat;
|
|
40
|
-
/**
|
|
41
|
-
* Map of format to specific handlers for that format.
|
|
42
|
-
* These format handlers should adjust the response headers as specified in https://specs.ipfs.tech/http-gateways/path-gateway/#response-headers
|
|
44
|
+
* If the user has not specified an Accept header or format query string arg,
|
|
45
|
+
* use the CID codec to choose an appropriate handler for the block data.
|
|
43
46
|
*/
|
|
44
|
-
private readonly formatHandlers;
|
|
45
47
|
private readonly codecHandlers;
|
|
46
48
|
fetch(resource: Resource, opts?: VerifiedFetchOptions): Promise<Response>;
|
|
47
49
|
/**
|
|
@@ -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":"AACA,OAAO,EAAqB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,EAAyB,KAAK,MAAM,IAAI,WAAW,EAAoB,MAAM,eAAe,CAAA;AAiBnG,OAAO,KAAK,EAAa,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEnH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAK7C,UAAU,uBAAuB;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AAmED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;gBAEpD,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAcvF;;;OAGG;YACW,gBAAgB;IAI9B;;;OAGG;YACW,SAAS;IAUvB;;;OAGG;YACW,SAAS;YAQT,UAAU;YA0BV,aAAa;YA8Cb,WAAW;YAwDX,SAAS;YAiBT,cAAc;IA0B5B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAO7B;IAEK,KAAK,CAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkGhF;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|