@helia/verified-fetch 3.2.3 → 4.0.1
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 +10 -52
- package/dist/index.min.js +86 -71
- package/dist/index.min.js.map +4 -4
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +2 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.d.ts +63 -61
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -54
- package/dist/src/index.js.map +1 -1
- package/dist/src/plugins/index.d.ts +0 -1
- package/dist/src/plugins/index.d.ts.map +1 -1
- package/dist/src/plugins/index.js +0 -1
- package/dist/src/plugins/index.js.map +1 -1
- package/dist/src/plugins/plugin-base.d.ts.map +1 -1
- package/dist/src/plugins/plugin-base.js +3 -2
- package/dist/src/plugins/plugin-base.js.map +1 -1
- package/dist/src/plugins/plugin-handle-car.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-car.js +37 -28
- package/dist/src/plugins/plugin-handle-car.js.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.d.ts +1 -1
- package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.js +1 -2
- package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.js.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-cbor.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-cbor.js +5 -6
- package/dist/src/plugins/plugin-handle-dag-cbor.js.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-pb.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-pb.js +24 -27
- package/dist/src/plugins/plugin-handle-dag-pb.js.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-walk.d.ts +8 -4
- package/dist/src/plugins/plugin-handle-dag-walk.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-dag-walk.js +13 -9
- package/dist/src/plugins/plugin-handle-dag-walk.js.map +1 -1
- package/dist/src/plugins/plugin-handle-ipns-record.d.ts +1 -1
- package/dist/src/plugins/plugin-handle-ipns-record.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-ipns-record.js +16 -24
- package/dist/src/plugins/plugin-handle-ipns-record.js.map +1 -1
- package/dist/src/plugins/plugin-handle-json.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-json.js +5 -5
- package/dist/src/plugins/plugin-handle-json.js.map +1 -1
- package/dist/src/plugins/plugin-handle-raw.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-raw.js +21 -12
- package/dist/src/plugins/plugin-handle-raw.js.map +1 -1
- package/dist/src/plugins/plugin-handle-tar.d.ts.map +1 -1
- package/dist/src/plugins/plugin-handle-tar.js +1 -2
- package/dist/src/plugins/plugin-handle-tar.js.map +1 -1
- package/dist/src/plugins/types.d.ts +15 -15
- package/dist/src/plugins/types.d.ts.map +1 -1
- package/dist/src/url-resolver.d.ts +21 -0
- package/dist/src/url-resolver.d.ts.map +1 -0
- package/dist/src/url-resolver.js +118 -0
- package/dist/src/url-resolver.js.map +1 -0
- package/dist/src/utils/byte-range-context.d.ts +3 -3
- package/dist/src/utils/byte-range-context.d.ts.map +1 -1
- package/dist/src/utils/byte-range-context.js +1 -1
- package/dist/src/utils/byte-range-context.js.map +1 -1
- package/dist/src/utils/content-type-parser.d.ts.map +1 -1
- package/dist/src/utils/content-type-parser.js +0 -10
- package/dist/src/utils/content-type-parser.js.map +1 -1
- package/dist/src/utils/error-to-object.d.ts +6 -0
- package/dist/src/utils/error-to-object.d.ts.map +1 -0
- package/dist/src/utils/error-to-object.js +20 -0
- package/dist/src/utils/error-to-object.js.map +1 -0
- package/dist/src/utils/get-content-type.d.ts +3 -3
- package/dist/src/utils/get-content-type.d.ts.map +1 -1
- package/dist/src/utils/get-content-type.js +1 -1
- package/dist/src/utils/get-content-type.js.map +1 -1
- package/dist/src/utils/get-e-tag.d.ts +1 -1
- package/dist/src/utils/get-offset-and-length.d.ts +6 -0
- package/dist/src/utils/get-offset-and-length.d.ts.map +1 -0
- package/dist/src/utils/get-offset-and-length.js +46 -0
- package/dist/src/utils/get-offset-and-length.js.map +1 -0
- package/dist/src/utils/get-resolved-accept-header.d.ts +2 -2
- package/dist/src/utils/get-resolved-accept-header.d.ts.map +1 -1
- package/dist/src/utils/get-stream-from-async-iterable.d.ts +2 -2
- package/dist/src/utils/get-stream-from-async-iterable.d.ts.map +1 -1
- package/dist/src/utils/get-stream-from-async-iterable.js +2 -2
- package/dist/src/utils/get-stream-from-async-iterable.js.map +1 -1
- package/dist/src/utils/handle-redirects.d.ts.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/ipfs-path-to-string.d.ts +6 -0
- package/dist/src/utils/ipfs-path-to-string.d.ts.map +1 -0
- package/dist/src/utils/ipfs-path-to-string.js +10 -0
- package/dist/src/utils/ipfs-path-to-string.js.map +1 -0
- package/dist/src/utils/is-accept-explicit.d.ts +6 -4
- package/dist/src/utils/is-accept-explicit.d.ts.map +1 -1
- package/dist/src/utils/is-accept-explicit.js +7 -4
- package/dist/src/utils/is-accept-explicit.js.map +1 -1
- package/dist/src/utils/parse-url-string.d.ts +1 -55
- package/dist/src/utils/parse-url-string.d.ts.map +1 -1
- package/dist/src/utils/parse-url-string.js +16 -217
- package/dist/src/utils/parse-url-string.js.map +1 -1
- package/dist/src/utils/response-headers.d.ts +1 -1
- package/dist/src/utils/response-headers.d.ts.map +1 -1
- package/dist/src/utils/responses.d.ts +3 -2
- package/dist/src/utils/responses.d.ts.map +1 -1
- package/dist/src/utils/responses.js +12 -1
- package/dist/src/utils/responses.js.map +1 -1
- package/dist/src/utils/select-output-type.d.ts +6 -2
- package/dist/src/utils/select-output-type.d.ts.map +1 -1
- package/dist/src/utils/select-output-type.js +28 -37
- package/dist/src/utils/select-output-type.js.map +1 -1
- package/dist/src/utils/server-timing.d.ts +5 -11
- package/dist/src/utils/server-timing.d.ts.map +1 -1
- package/dist/src/utils/server-timing.js +17 -15
- package/dist/src/utils/server-timing.js.map +1 -1
- package/dist/src/utils/walk-path.js +2 -2
- package/dist/src/utils/walk-path.js.map +1 -1
- package/dist/src/verified-fetch.d.ts +3 -10
- package/dist/src/verified-fetch.d.ts.map +1 -1
- package/dist/src/verified-fetch.js +99 -80
- package/dist/src/verified-fetch.js.map +1 -1
- package/dist/typedoc-urls.json +13 -4
- package/package.json +35 -36
- package/src/constants.ts +1 -0
- package/src/index.ts +79 -70
- package/src/plugins/index.ts +0 -1
- package/src/plugins/plugin-base.ts +3 -2
- package/src/plugins/plugin-handle-car.ts +53 -31
- package/src/plugins/plugin-handle-dag-cbor-html-preview.ts +4 -3
- package/src/plugins/plugin-handle-dag-cbor.ts +8 -6
- package/src/plugins/plugin-handle-dag-pb.ts +34 -26
- package/src/plugins/plugin-handle-dag-walk.ts +15 -9
- package/src/plugins/plugin-handle-ipns-record.ts +21 -24
- package/src/plugins/plugin-handle-json.ts +6 -5
- package/src/plugins/plugin-handle-raw.ts +27 -13
- package/src/plugins/plugin-handle-tar.ts +3 -2
- package/src/plugins/types.ts +18 -16
- package/src/url-resolver.ts +159 -0
- package/src/utils/byte-range-context.ts +4 -4
- package/src/utils/content-type-parser.ts +5 -11
- package/src/utils/error-to-object.ts +22 -0
- package/src/utils/get-content-type.ts +5 -4
- package/src/utils/get-e-tag.ts +1 -1
- package/src/utils/get-offset-and-length.ts +54 -0
- package/src/utils/get-resolved-accept-header.ts +2 -2
- package/src/utils/get-stream-from-async-iterable.ts +4 -4
- package/src/utils/handle-redirects.ts +10 -3
- package/src/utils/ipfs-path-to-string.ts +9 -0
- package/src/utils/is-accept-explicit.ts +14 -7
- package/src/utils/parse-url-string.ts +20 -286
- package/src/utils/response-headers.ts +1 -1
- package/src/utils/responses.ts +16 -2
- package/src/utils/select-output-type.ts +38 -44
- package/src/utils/server-timing.ts +17 -30
- package/src/utils/walk-path.ts +2 -2
- package/src/verified-fetch.ts +119 -92
- package/dist/src/plugins/errors.d.ts +0 -25
- package/dist/src/plugins/errors.d.ts.map +0 -1
- package/dist/src/plugins/errors.js +0 -33
- package/dist/src/plugins/errors.js.map +0 -1
- package/dist/src/types.d.ts +0 -16
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/parse-resource.d.ts +0 -18
- package/dist/src/utils/parse-resource.d.ts.map +0 -1
- package/dist/src/utils/parse-resource.js +0 -27
- package/dist/src/utils/parse-resource.js.map +0 -1
- package/src/plugins/errors.ts +0 -37
- package/src/types.ts +0 -17
- package/src/utils/parse-resource.ts +0 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-cbor-html-preview.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor-html-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C,SAAS,WAAW,CAAE,KAAc;IAClC,OAAO,KAAK,KAAK,IAAI;QACnB,KAAK,KAAK,SAAS;QACnB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CAAA;AAC7B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAE,UAA+B;IAC1D;;;;OAIG;IACH,MAAM,aAAa,GAAG,OAAO,CAAA;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC3E,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,CAAA;QAC/B,CAAC;QACD,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAA;IAC7C,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,CAAA;IAC7F,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,UAAU;IAC7C,EAAE,GAAG,8BAA8B,CAAA;IACnC,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAEnC,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAiB;QACpD,IAAI,
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-cbor-html-preview.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor-html-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-cbor.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,EAAE,qBAAoB;IAC/B,QAAQ,CAAC,KAAK,QAAqB;IAEnC,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-cbor.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,EAAE,qBAAoB;IAC/B,QAAQ,CAAC,KAAK,QAAqB;IAEnC,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO;IAyBrF,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC,GAAG;QAAE,WAAW,EAAE;YAAE,eAAe,EAAE,UAAU,CAAA;SAAE,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkDhL"}
|
|
@@ -12,7 +12,6 @@ export class DagCborPlugin extends BasePlugin {
|
|
|
12
12
|
id = 'dag-cbor-plugin';
|
|
13
13
|
codes = [ipldDagCbor.code];
|
|
14
14
|
canHandle({ cid, accept, pathDetails, byteRangeContext, plugins }) {
|
|
15
|
-
this.log('checking if we can handle %c with accept %s', cid, accept);
|
|
16
15
|
if (pathDetails == null) {
|
|
17
16
|
return false;
|
|
18
17
|
}
|
|
@@ -25,7 +24,7 @@ export class DagCborPlugin extends BasePlugin {
|
|
|
25
24
|
if (byteRangeContext == null) {
|
|
26
25
|
return false;
|
|
27
26
|
}
|
|
28
|
-
if (accept != null && accept.
|
|
27
|
+
if (accept != null && accept.mimeType === 'text/html' && plugins.includes('dag-cbor-plugin-html-preview')) {
|
|
29
28
|
// let the dag-cbor-html-preview plugin handle it
|
|
30
29
|
return false;
|
|
31
30
|
}
|
|
@@ -36,11 +35,11 @@ export class DagCborPlugin extends BasePlugin {
|
|
|
36
35
|
this.log.trace('fetching %c/%s', cid, path);
|
|
37
36
|
const block = terminalElement.node;
|
|
38
37
|
let body;
|
|
39
|
-
if (accept === 'application/octet-stream' || accept === 'application/vnd.ipld.dag-cbor' || accept === 'application/cbor') {
|
|
38
|
+
if (accept?.mimeType === 'application/octet-stream' || accept?.mimeType === 'application/vnd.ipld.dag-cbor' || accept?.mimeType === 'application/cbor') {
|
|
40
39
|
// skip decoding
|
|
41
40
|
body = block;
|
|
42
41
|
}
|
|
43
|
-
else if (accept === 'application/vnd.ipld.dag-json') {
|
|
42
|
+
else if (accept?.mimeType === 'application/vnd.ipld.dag-json') {
|
|
44
43
|
try {
|
|
45
44
|
// if vnd.ipld.dag-json has been specified, convert to the format - note
|
|
46
45
|
// that this supports more data types than regular JSON, the content-type
|
|
@@ -58,7 +57,7 @@ export class DagCborPlugin extends BasePlugin {
|
|
|
58
57
|
body = dagCborToSafeJSON(block);
|
|
59
58
|
}
|
|
60
59
|
catch (err) {
|
|
61
|
-
if (accept === 'application/json') {
|
|
60
|
+
if (accept?.mimeType === 'application/json') {
|
|
62
61
|
this.log('could not decode DAG-CBOR as JSON-safe, but the client sent "Accept: application/json"', err);
|
|
63
62
|
return notAcceptableResponse(resource);
|
|
64
63
|
}
|
|
@@ -67,7 +66,7 @@ export class DagCborPlugin extends BasePlugin {
|
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
context.byteRangeContext.setBody(body);
|
|
70
|
-
const responseContentType = accept ?? (body instanceof Uint8Array ? 'application/octet-stream' : 'application/json');
|
|
69
|
+
const responseContentType = accept?.mimeType ?? (body instanceof Uint8Array ? 'application/octet-stream' : 'application/json');
|
|
71
70
|
const response = okRangeResponse(resource, context.byteRangeContext.getBody(responseContentType), { byteRangeContext: context.byteRangeContext, log: this.log });
|
|
72
71
|
response.headers.set('content-type', context.byteRangeContext.getContentType() ?? responseContentType);
|
|
73
72
|
this.log.trace('setting content type to "%s"', context.byteRangeContext.getContentType() ?? responseContentType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-cbor.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAClC,EAAE,GAAG,iBAAiB,CAAA;IACtB,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAEnC,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAiB;QAC/E,IAAI,
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-cbor.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-cbor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-pb.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-pb.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,EAAE,mBAAkB;IAC7B,QAAQ,CAAC,KAAK,QAAc;
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-pb.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-pb.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,EAAE,mBAAkB;IAC7B,QAAQ,CAAC,KAAK,QAAc;IAE5B,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAAG,OAAO;IAiBlF;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;IAqBhD,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAqIrH,kBAAkB;CAkCjC"}
|
|
@@ -6,7 +6,7 @@ import { CustomProgressEvent } from 'progress-events';
|
|
|
6
6
|
import { getContentType } from '../utils/get-content-type.js';
|
|
7
7
|
import { getStreamFromAsyncIterable } from '../utils/get-stream-from-async-iterable.js';
|
|
8
8
|
import { setIpfsRoots } from '../utils/response-headers.js';
|
|
9
|
-
import { badGatewayResponse, badRangeResponse, movedPermanentlyResponse,
|
|
9
|
+
import { badGatewayResponse, badRangeResponse, movedPermanentlyResponse, okRangeResponse } from '../utils/responses.js';
|
|
10
10
|
import { BasePlugin } from './plugin-base.js';
|
|
11
11
|
/**
|
|
12
12
|
* Handles UnixFS and dag-pb content.
|
|
@@ -15,13 +15,16 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
15
15
|
id = 'dag-pb-plugin';
|
|
16
16
|
codes = [dagPbCode];
|
|
17
17
|
canHandle({ cid, accept, pathDetails, byteRangeContext }) {
|
|
18
|
-
this.log('checking if we can handle %c with accept %s', cid, accept);
|
|
19
18
|
if (pathDetails == null) {
|
|
20
19
|
return false;
|
|
21
20
|
}
|
|
22
21
|
if (byteRangeContext == null) {
|
|
23
22
|
return false;
|
|
24
23
|
}
|
|
24
|
+
// TODO: this may be too restrictive?
|
|
25
|
+
if (accept != null && accept.mimeType !== 'application/octet-stream') {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
25
28
|
return cid.code === dagPbCode;
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
@@ -49,8 +52,8 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
49
52
|
return null;
|
|
50
53
|
}
|
|
51
54
|
async handle(context) {
|
|
52
|
-
const { cid, options,
|
|
53
|
-
const {
|
|
55
|
+
const { cid, options, pathDetails, query } = context;
|
|
56
|
+
const { contentTypeParser, helia, getBlockstore } = this.pluginOptions;
|
|
54
57
|
const log = this.log;
|
|
55
58
|
let resource = context.resource;
|
|
56
59
|
let path = context.path;
|
|
@@ -81,10 +84,10 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
81
84
|
const rootFilePath = 'index.html';
|
|
82
85
|
try {
|
|
83
86
|
log.trace('found directory at %c/%s, looking for index.html', cid, path);
|
|
84
|
-
const entry = await
|
|
87
|
+
const entry = await context.serverTiming.time('exporter-dir', '', exporter(`/ipfs/${dirCid}/${rootFilePath}`, helia.blockstore, {
|
|
85
88
|
signal: options?.signal,
|
|
86
89
|
onProgress: options?.onProgress
|
|
87
|
-
})
|
|
90
|
+
}));
|
|
88
91
|
log.trace('found root file at %c/%s with cid %c', dirCid, rootFilePath, entry.cid);
|
|
89
92
|
path = rootFilePath;
|
|
90
93
|
resolvedCID = entry.cid;
|
|
@@ -93,22 +96,16 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
93
96
|
if (options?.signal?.aborted) {
|
|
94
97
|
throw new AbortError(options?.signal?.reason);
|
|
95
98
|
}
|
|
96
|
-
this.log.error('error loading path %c/%s', dirCid, rootFilePath, err);
|
|
99
|
+
this.log.error('error loading path %c/%s - %e', dirCid, rootFilePath, err);
|
|
97
100
|
context.isDirectory = true;
|
|
98
101
|
context.directoryEntries = [];
|
|
99
102
|
context.modified++;
|
|
100
103
|
this.log.trace('attempting to get directory entries because index.html was not found');
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
context.directoryEntries.push(dirItem);
|
|
104
|
-
}
|
|
105
|
-
// dir-index-html plugin or dir-index-json (future idea?) plugin should handle this
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
catch (e) {
|
|
109
|
-
log.error('error listing directory %c', dirCid, e);
|
|
110
|
-
return notSupportedResponse('Unable to get directory contents');
|
|
104
|
+
for await (const dirItem of fs.ls(dirCid, { signal: options?.signal, onProgress: options?.onProgress, extended: false })) {
|
|
105
|
+
context.directoryEntries.push(dirItem);
|
|
111
106
|
}
|
|
107
|
+
// dir-index-html plugin or dir-index-json (future idea?) plugin should handle this
|
|
108
|
+
return null;
|
|
112
109
|
}
|
|
113
110
|
finally {
|
|
114
111
|
options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid: dirCid, path: rootFilePath }));
|
|
@@ -125,10 +122,10 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
125
122
|
log.trace('using terminal element size of %d for %c/%s', pathDetails.terminalElement.size, cid, path);
|
|
126
123
|
}
|
|
127
124
|
try {
|
|
128
|
-
const entry = await
|
|
125
|
+
const entry = await context.serverTiming.time('exporter-file', '', exporter(resolvedCID, helia.blockstore, {
|
|
129
126
|
signal: options?.signal,
|
|
130
127
|
onProgress: options?.onProgress
|
|
131
|
-
})
|
|
128
|
+
}));
|
|
132
129
|
let firstChunk;
|
|
133
130
|
let contentType;
|
|
134
131
|
if (byteRangeContext.isValidRangeRequest) {
|
|
@@ -140,13 +137,13 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
140
137
|
onProgress: options?.onProgress
|
|
141
138
|
});
|
|
142
139
|
log('got async iterator for %c/%s', cid, path);
|
|
143
|
-
const streamAndFirstChunk = await
|
|
140
|
+
const streamAndFirstChunk = await context.serverTiming.time('stream-and-chunk', '', getStreamFromAsyncIterable(asyncIter, path, this.pluginOptions.logger, {
|
|
144
141
|
onProgress: options?.onProgress,
|
|
145
142
|
signal: options?.signal
|
|
146
|
-
})
|
|
143
|
+
}));
|
|
147
144
|
const stream = streamAndFirstChunk.stream;
|
|
148
145
|
firstChunk = streamAndFirstChunk.firstChunk;
|
|
149
|
-
contentType = await
|
|
146
|
+
contentType = await context.serverTiming.time('get-content-type', '', getContentType({ filename: query.filename, bytes: firstChunk, path, contentTypeParser, log }));
|
|
150
147
|
byteRangeContext.setBody(stream);
|
|
151
148
|
}
|
|
152
149
|
// if not a valid range request, okRangeRequest will call okResponse
|
|
@@ -161,16 +158,16 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
161
158
|
if (options?.signal?.aborted) {
|
|
162
159
|
throw new AbortError(options?.signal?.reason);
|
|
163
160
|
}
|
|
164
|
-
log.error('error streaming %c/%s', cid, path, err);
|
|
161
|
+
log.error('error streaming %c/%s - %e', cid, path, err);
|
|
165
162
|
if (byteRangeContext.isRangeRequest && err.code === 'ERR_INVALID_PARAMS') {
|
|
166
163
|
return badRangeResponse(resource);
|
|
167
164
|
}
|
|
168
|
-
return badGatewayResponse(resource
|
|
165
|
+
return badGatewayResponse(resource, 'Unable to stream content');
|
|
169
166
|
}
|
|
170
167
|
}
|
|
171
168
|
async handleRangeRequest(context, entry) {
|
|
172
|
-
const { path, byteRangeContext, options
|
|
173
|
-
const {
|
|
169
|
+
const { path, byteRangeContext, options } = context;
|
|
170
|
+
const { contentTypeParser } = this.pluginOptions;
|
|
174
171
|
const log = this.log;
|
|
175
172
|
// get the first chunk in order to determine the content type
|
|
176
173
|
const asyncIter = entry.content({
|
|
@@ -184,7 +181,7 @@ export class DagPbPlugin extends BasePlugin {
|
|
|
184
181
|
onProgress: options?.onProgress,
|
|
185
182
|
signal: options?.signal
|
|
186
183
|
});
|
|
187
|
-
const contentType = await
|
|
184
|
+
const contentType = await context.serverTiming.time('get-content-type', '', getContentType({ bytes: firstChunk, path, contentTypeParser, log }));
|
|
188
185
|
byteRangeContext?.setBody((range) => {
|
|
189
186
|
if (options?.signal?.aborted) {
|
|
190
187
|
throw new AbortError(options?.signal?.reason ?? 'aborted while streaming');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-pb.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-pb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-pb.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-pb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAK7C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,UAAU;IAChC,EAAE,GAAG,eAAe,CAAA;IACpB,KAAK,GAAG,CAAC,SAAS,CAAC,CAAA;IAE5B,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAiB;QACtE,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,qCAAqC;QACrC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,0BAA0B,EAAE,CAAC;YACrE,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,cAAc,CAAE,OAAsB;QACpC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAClC,MAAM,mBAAmB,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAClG,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,mCAAmC;oBACnC,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,+CAA+C;gBAC/C,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAA;gBACjC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;YACvB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,2BAA2B;gBAC3B,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;YAClC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,OAA0F;QACtG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACpD,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAC/B,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QAEvB,IAAI,UAAU,GAAG,KAAK,CAAA;QAEtB,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QACjD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAA;QACvC,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAA;QACnD,IAAI,WAAW,GAAG,eAAe,CAAC,GAAG,CAAA;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAE5H,IAAI,eAAe,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAA;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAEhD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;gBACxB,GAAG,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAA;gBAClE,IAAI,OAAO,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAClC,GAAG,CAAC,gEAAgE,EAAE,WAAW,CAAC,CAAA;oBAClF,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;gBACxC,CAAC;qBAAM,IAAI,OAAO,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1C,GAAG,CAAC,wCAAwC,EAAE,WAAW,CAAC,CAAA;oBAC1D,OAAO,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBACxD,CAAC;gBACD,GAAG,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAA;gBAE5C,iDAAiD;gBACjD,QAAQ,GAAG,WAAW,CAAA;gBACtB,UAAU,GAAG,IAAI,CAAA;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,YAAY,CAAA;YACjC,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAExE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,CAAC,SAAS,MAAM,IAAI,YAAY,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE;oBAC9H,MAAM,EAAE,OAAO,EAAE,MAAM;oBACvB,UAAU,EAAE,OAAO,EAAE,UAAU;iBAChC,CAAC,CAAC,CAAA;gBAEH,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAClF,IAAI,GAAG,YAAY,CAAA;gBACnB,WAAW,GAAG,KAAK,CAAC,GAAG,CAAA;YACzB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC7B,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC/C,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;gBAE1E,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;gBAC1B,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAA;gBAC7B,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAElB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAA;gBACtF,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBACzH,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxC,CAAC;gBAED,mFAAmF;gBACnF,OAAO,IAAI,CAAA;YACb,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAY,4BAA4B,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;YAC9H,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,2DAA2D;YAC3D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC7F,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YACzE,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YAC9D,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACvG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE;gBACzG,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,UAAU,EAAE,OAAO,EAAE,UAAU;aAChC,CAAC,CAAC,CAAA;YAEH,IAAI,UAAsB,CAAA;YAC1B,IAAI,WAAmB,CAAA;YACvB,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;gBACzC,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC9B,MAAM,EAAE,OAAO,EAAE,MAAM;oBACvB,UAAU,EAAE,OAAO,EAAE,UAAU;iBAChC,CAAC,CAAA;gBACF,GAAG,CAAC,8BAA8B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAE9C,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,0BAA0B,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oBACzJ,UAAU,EAAE,OAAO,EAAE,UAAU;oBAC/B,MAAM,EAAE,OAAO,EAAE,MAAM;iBACxB,CAAC,CAAC,CAAA;gBACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAA;gBACzC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAA;gBAC3C,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAEpK,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAClC,CAAC;YAED,oEAAoE;YACpE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE;gBAC3G,UAAU;aACX,CAAC,CAAA;YAEF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC,CAAA;YAEtF,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAEjC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;YAC/C,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAEvD,IAAI,gBAAgB,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACzE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAA;YACnC,CAAC;YAED,OAAO,kBAAkB,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAE,OAA0F,EAAE,KAAkB;QAC9I,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QACnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAEpB,6DAA6D;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,MAAM,EAAE,CAAC;YACT,6CAA6C;YAC7C,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,0BAA0B,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACxG,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAA;QACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAEhJ,gBAAgB,EAAE,OAAO,CAAC,CAAC,KAAK,EAA6C,EAAE;YAC7E,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,yBAAyB,CAAC,CAAA;YAC5E,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC;gBACnB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,UAAU,EAAE,OAAO,EAAE,UAAU;gBAC/B,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;gBACxB,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC;aAC1C,CAAC,CAAA;QACJ,CAAC,EAAE,WAAW,CAAC,CAAA;QAEf,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { BasePlugin } from './plugin-base.js';
|
|
2
2
|
import type { PluginContext } from './types.js';
|
|
3
3
|
/**
|
|
4
|
-
* This plugin should almost always run first because it's going to handle path
|
|
5
|
-
*
|
|
4
|
+
* This plugin should almost always run first because it's going to handle path
|
|
5
|
+
* walking if needed, and will only say it can handle the request if path
|
|
6
|
+
* walking is possible (path is not empty, terminalCid is unknown, and the path
|
|
7
|
+
* has not been walked yet).
|
|
6
8
|
*
|
|
7
|
-
* Once this plugin has run, the PluginContext will be updated and then this
|
|
9
|
+
* Once this plugin has run, the PluginContext will be updated and then this
|
|
10
|
+
* plugin will return false for canHandle, so it won't run again.
|
|
8
11
|
*/
|
|
9
12
|
export declare class DagWalkPlugin extends BasePlugin {
|
|
10
13
|
readonly id = "dag-walk-plugin";
|
|
11
14
|
/**
|
|
12
|
-
* Return false if the path has already been walked, otherwise return true if
|
|
15
|
+
* Return false if the path has already been walked, otherwise return true if
|
|
16
|
+
* the CID is encoded with a codec that supports pathing.
|
|
13
17
|
*/
|
|
14
18
|
canHandle(context: PluginContext): boolean;
|
|
15
19
|
handle(context: PluginContext): Promise<Response | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-walk.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-walk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-walk.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-walk.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,EAAE,qBAAoB;IAE/B;;;OAGG;IACH,SAAS,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO;IAWrC,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CA0BhE"}
|
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
import { code as dagCborCode } from '@ipld/dag-cbor';
|
|
2
2
|
import { code as dagPbCode } from '@ipld/dag-pb';
|
|
3
|
+
import { CODEC_IDENTITY } from "../constants.js";
|
|
3
4
|
import { handlePathWalking } from '../utils/walk-path.js';
|
|
4
5
|
import { BasePlugin } from './plugin-base.js';
|
|
5
6
|
/**
|
|
6
|
-
* This plugin should almost always run first because it's going to handle path
|
|
7
|
-
*
|
|
7
|
+
* This plugin should almost always run first because it's going to handle path
|
|
8
|
+
* walking if needed, and will only say it can handle the request if path
|
|
9
|
+
* walking is possible (path is not empty, terminalCid is unknown, and the path
|
|
10
|
+
* has not been walked yet).
|
|
8
11
|
*
|
|
9
|
-
* Once this plugin has run, the PluginContext will be updated and then this
|
|
12
|
+
* Once this plugin has run, the PluginContext will be updated and then this
|
|
13
|
+
* plugin will return false for canHandle, so it won't run again.
|
|
10
14
|
*/
|
|
11
15
|
export class DagWalkPlugin extends BasePlugin {
|
|
12
16
|
id = 'dag-walk-plugin';
|
|
13
17
|
/**
|
|
14
|
-
* Return false if the path has already been walked, otherwise return true if
|
|
18
|
+
* Return false if the path has already been walked, otherwise return true if
|
|
19
|
+
* the CID is encoded with a codec that supports pathing.
|
|
15
20
|
*/
|
|
16
21
|
canHandle(context) {
|
|
17
|
-
this.log('checking if we can handle %c with accept %s', context.cid, context.accept);
|
|
18
22
|
const { pathDetails, cid } = context;
|
|
19
23
|
if (pathDetails != null) {
|
|
20
24
|
// path has already been walked
|
|
21
25
|
return false;
|
|
22
26
|
}
|
|
23
|
-
return (cid.code === dagPbCode || cid.code === dagCborCode);
|
|
27
|
+
return (cid.code === dagPbCode || cid.code === dagCborCode || cid.multihash.code === CODEC_IDENTITY);
|
|
24
28
|
}
|
|
25
29
|
async handle(context) {
|
|
26
|
-
const { cid, resource, options
|
|
27
|
-
const { getBlockstore
|
|
30
|
+
const { cid, resource, options } = context;
|
|
31
|
+
const { getBlockstore } = this.pluginOptions;
|
|
28
32
|
const blockstore = getBlockstore(cid, resource, options?.session ?? true, options);
|
|
29
33
|
// TODO: migrate handlePathWalking into this plugin
|
|
30
|
-
const pathDetails = await
|
|
34
|
+
const pathDetails = await context.serverTiming.time('path-walking', '', handlePathWalking({ ...context, blockstore, log: this.log }));
|
|
31
35
|
if (pathDetails instanceof Response) {
|
|
32
36
|
this.log.trace('path walking failed');
|
|
33
37
|
if (pathDetails.status === 404) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-dag-walk.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C
|
|
1
|
+
{"version":3,"file":"plugin-handle-dag-walk.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-dag-walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAClC,EAAE,GAAG,iBAAiB,CAAA;IAE/B;;;OAGG;IACH,SAAS,CAAE,OAAsB;QAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QAEpC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,+BAA+B;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;IACtG,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,OAAsB;QAClC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;QAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,CAAC,CAAA;QAElF,mDAAmD;QACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAErI,IAAI,WAAW,YAAY,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;YAErC,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC/B,sEAAsE;gBACtE,wBAAwB;gBACxB,OAAO,WAAW,CAAA;YACpB,CAAC;YAED,iHAAiH;YACjH,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,CAAC,QAAQ,EAAE,CAAA;QAClB,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA;QAEjC,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -7,7 +7,7 @@ import type { PluginContext } from './types.js';
|
|
|
7
7
|
export declare class IpnsRecordPlugin extends BasePlugin {
|
|
8
8
|
readonly id = "ipns-record-plugin";
|
|
9
9
|
readonly codes: never[];
|
|
10
|
-
canHandle({
|
|
10
|
+
canHandle({ resource, accept, query, path, byteRangeContext }: PluginContext): boolean;
|
|
11
11
|
handle(context: PluginContext & Required<Pick<PluginContext, 'byteRangeContext'>>): Promise<Response>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=plugin-handle-ipns-record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-ipns-record.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-ipns-record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-handle-ipns-record.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-ipns-record.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,QAAQ,CAAC,EAAE,wBAAuB;IAClC,QAAQ,CAAC,KAAK,UAAK;IAEnB,SAAS,CAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAAG,OAAO;IAQjF,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgD7G"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Key } from 'interface-datastore';
|
|
3
|
-
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
4
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
5
|
-
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
1
|
+
import { marshalIPNSRecord } from 'ipns';
|
|
6
2
|
import { getPeerIdFromString } from '../utils/get-peer-id-from-string.js';
|
|
7
3
|
import { badRequestResponse, okRangeResponse } from '../utils/responses.js';
|
|
8
|
-
import { PluginFatalError } from './errors.js';
|
|
9
4
|
import { BasePlugin } from './plugin-base.js';
|
|
10
5
|
/**
|
|
11
6
|
* Accepts an `ipns://...`, `https?://<ipnsname>.ipns.<domain>`, or `https?://<domain>/ipns/...` URL as a string and
|
|
@@ -14,20 +9,19 @@ import { BasePlugin } from './plugin-base.js';
|
|
|
14
9
|
export class IpnsRecordPlugin extends BasePlugin {
|
|
15
10
|
id = 'ipns-record-plugin';
|
|
16
11
|
codes = [];
|
|
17
|
-
canHandle({
|
|
18
|
-
this.log('checking if we can handle %c with accept %s', cid, accept);
|
|
12
|
+
canHandle({ resource, accept, query, path, byteRangeContext }) {
|
|
19
13
|
if (byteRangeContext == null) {
|
|
20
14
|
return false;
|
|
21
15
|
}
|
|
22
|
-
return accept === 'application/vnd.ipfs.ipns-record' || query.format === 'ipns-record';
|
|
16
|
+
return accept?.mimeType === 'application/vnd.ipfs.ipns-record' || query.format === 'ipns-record';
|
|
23
17
|
}
|
|
24
18
|
async handle(context) {
|
|
25
|
-
const { resource, path, options } = context;
|
|
26
|
-
const {
|
|
19
|
+
const { resource, path, query, options } = context;
|
|
20
|
+
const { ipnsResolver } = this.pluginOptions;
|
|
27
21
|
context.reqFormat = 'ipns-record';
|
|
28
22
|
if (path !== '' || !(resource.startsWith('ipns://') || resource.includes('.ipns.') || resource.includes('/ipns/'))) {
|
|
29
23
|
this.log.error('invalid request for IPNS name "%s" and path "%s"', resource, path);
|
|
30
|
-
|
|
24
|
+
return badRequestResponse(resource, new Error('Invalid IPNS name'));
|
|
31
25
|
}
|
|
32
26
|
let peerId;
|
|
33
27
|
try {
|
|
@@ -46,21 +40,19 @@ export class IpnsRecordPlugin extends BasePlugin {
|
|
|
46
40
|
}
|
|
47
41
|
catch (err) {
|
|
48
42
|
this.log.error('could not parse peer id from IPNS url %s', resource, err);
|
|
49
|
-
|
|
43
|
+
return badRequestResponse(resource, err);
|
|
50
44
|
}
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const datastoreKey = new Key('/dht/record/' + uint8ArrayToString(routingKey, 'base32'), false);
|
|
59
|
-
const buf = await helia.datastore.get(datastoreKey, options);
|
|
60
|
-
const record = DHTRecord.deserialize(buf);
|
|
61
|
-
context.byteRangeContext.setBody(record.value);
|
|
45
|
+
// force download in handleFinalResponse
|
|
46
|
+
query.filename = query.filename ?? `${peerId}.bin`;
|
|
47
|
+
query.download = true;
|
|
48
|
+
// @ts-expect-error progress handler types are incompatible
|
|
49
|
+
const result = await ipnsResolver.resolve(peerId, options);
|
|
50
|
+
const buf = marshalIPNSRecord(result.record);
|
|
51
|
+
context.byteRangeContext.setBody(buf);
|
|
62
52
|
const response = okRangeResponse(resource, context.byteRangeContext.getBody('application/vnd.ipfs.ipns-record'), { byteRangeContext: context.byteRangeContext, log: this.log });
|
|
63
53
|
response.headers.set('content-type', context.byteRangeContext.getContentType() ?? 'application/vnd.ipfs.ipns-record');
|
|
54
|
+
response.headers.set('content-length', buf.byteLength.toString());
|
|
55
|
+
response.headers.set('x-ipfs-roots', result.cid.toV1().toString());
|
|
64
56
|
return response;
|
|
65
57
|
}
|
|
66
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-ipns-record.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-ipns-record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin-handle-ipns-record.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-ipns-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-json.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-handle-json.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-json.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,QAAQ,CAAC,EAAE,iBAAgB;IAC3B,QAAQ,CAAC,KAAK,WAA+B;IAE7C,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAAG,OAAO;IAc/D,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgD7G"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as ipldDagCbor from '@ipld/dag-cbor';
|
|
2
2
|
import * as ipldDagJson from '@ipld/dag-json';
|
|
3
|
+
import toBuffer from 'it-to-buffer';
|
|
3
4
|
import { code as jsonCode } from 'multiformats/codecs/json';
|
|
4
5
|
import { notAcceptableResponse, okRangeResponse } from '../utils/responses.js';
|
|
5
6
|
import { BasePlugin } from './plugin-base.js';
|
|
@@ -10,11 +11,10 @@ export class JsonPlugin extends BasePlugin {
|
|
|
10
11
|
id = 'json-plugin';
|
|
11
12
|
codes = [ipldDagJson.code, jsonCode];
|
|
12
13
|
canHandle({ cid, accept, byteRangeContext }) {
|
|
13
|
-
this.log('checking if we can handle %c with accept %s', cid, accept);
|
|
14
14
|
if (byteRangeContext == null) {
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
-
if (accept === 'application/vnd.ipld.dag-json' && cid.code !== ipldDagCbor.code) {
|
|
17
|
+
if (accept?.mimeType === 'application/vnd.ipld.dag-json' && cid.code !== ipldDagCbor.code) {
|
|
18
18
|
// we can handle application/vnd.ipld.dag-json, but if the CID codec is ipldDagCbor, DagCborPlugin should handle it
|
|
19
19
|
// TODO: remove the need for deny-listing cases in plugins
|
|
20
20
|
return true;
|
|
@@ -28,9 +28,9 @@ export class JsonPlugin extends BasePlugin {
|
|
|
28
28
|
this.log.trace('fetching %c/%s', cid, path);
|
|
29
29
|
const terminalCid = context.pathDetails?.terminalElement.cid ?? context.cid;
|
|
30
30
|
const blockstore = getBlockstore(terminalCid, resource, session, options);
|
|
31
|
-
const block = await blockstore.get(terminalCid, options);
|
|
31
|
+
const block = await toBuffer(blockstore.get(terminalCid, options));
|
|
32
32
|
let body;
|
|
33
|
-
if (accept === 'application/vnd.ipld.dag-cbor' || accept === 'application/cbor') {
|
|
33
|
+
if (accept?.mimeType === 'application/vnd.ipld.dag-cbor' || accept?.mimeType === 'application/cbor') {
|
|
34
34
|
try {
|
|
35
35
|
// if vnd.ipld.dag-cbor has been specified, convert to the format - note
|
|
36
36
|
// that this supports more data types than regular JSON, the content-type
|
|
@@ -57,7 +57,7 @@ export class JsonPlugin extends BasePlugin {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
|
-
contentType = accept.split(';')[0];
|
|
60
|
+
contentType = accept?.mimeType.split(';')[0];
|
|
61
61
|
}
|
|
62
62
|
context.byteRangeContext.setBody(body);
|
|
63
63
|
const response = okRangeResponse(resource, context.byteRangeContext.getBody(contentType), { byteRangeContext: context.byteRangeContext, log: this.log });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-json.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IAC/B,EAAE,GAAG,aAAa,CAAA;IAClB,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin-handle-json.js","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-handle-raw.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-raw.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin-handle-raw.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin-handle-raw.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAuC/C,qBAAa,SAAU,SAAQ,UAAU;IACvC,QAAQ,CAAC,EAAE,gBAAe;IAC1B,KAAK,EAAE,MAAM,EAAE,CAA2B;IAE1C,SAAS,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAAG,OAAO;IAQtE,MAAM,CAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;CAoD7G"}
|