@helia/verified-fetch 3.0.2 → 3.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.
Files changed (55) hide show
  1. package/dist/index.min.js +57 -45
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/plugins/plugin-handle-byte-range-context.d.ts.map +1 -1
  4. package/dist/src/plugins/plugin-handle-byte-range-context.js +5 -0
  5. package/dist/src/plugins/plugin-handle-byte-range-context.js.map +1 -1
  6. package/dist/src/plugins/plugin-handle-car.js +2 -2
  7. package/dist/src/plugins/plugin-handle-car.js.map +1 -1
  8. package/dist/src/plugins/plugin-handle-dag-cbor.d.ts.map +1 -1
  9. package/dist/src/plugins/plugin-handle-dag-cbor.js +3 -2
  10. package/dist/src/plugins/plugin-handle-dag-cbor.js.map +1 -1
  11. package/dist/src/plugins/plugin-handle-dag-pb.d.ts +1 -0
  12. package/dist/src/plugins/plugin-handle-dag-pb.d.ts.map +1 -1
  13. package/dist/src/plugins/plugin-handle-dag-pb.js +63 -23
  14. package/dist/src/plugins/plugin-handle-dag-pb.js.map +1 -1
  15. package/dist/src/plugins/plugin-handle-dir-index-html.js +2 -2
  16. package/dist/src/plugins/plugin-handle-dir-index-html.js.map +1 -1
  17. package/dist/src/plugins/plugin-handle-ipns-record.js +2 -2
  18. package/dist/src/plugins/plugin-handle-ipns-record.js.map +1 -1
  19. package/dist/src/plugins/plugin-handle-json.d.ts.map +1 -1
  20. package/dist/src/plugins/plugin-handle-json.js +2 -3
  21. package/dist/src/plugins/plugin-handle-json.js.map +1 -1
  22. package/dist/src/plugins/plugin-handle-raw.d.ts.map +1 -1
  23. package/dist/src/plugins/plugin-handle-raw.js +6 -5
  24. package/dist/src/plugins/plugin-handle-raw.js.map +1 -1
  25. package/dist/src/plugins/plugin-handle-tar.js +2 -2
  26. package/dist/src/plugins/plugin-handle-tar.js.map +1 -1
  27. package/dist/src/utils/byte-range-context.d.ts +39 -16
  28. package/dist/src/utils/byte-range-context.d.ts.map +1 -1
  29. package/dist/src/utils/byte-range-context.js +305 -104
  30. package/dist/src/utils/byte-range-context.js.map +1 -1
  31. package/dist/src/utils/{set-content-type.d.ts → get-content-type.d.ts} +3 -4
  32. package/dist/src/utils/get-content-type.d.ts.map +1 -0
  33. package/dist/src/utils/{set-content-type.js → get-content-type.js} +3 -4
  34. package/dist/src/utils/get-content-type.js.map +1 -0
  35. package/dist/src/utils/responses.d.ts.map +1 -1
  36. package/dist/src/utils/responses.js +16 -4
  37. package/dist/src/utils/responses.js.map +1 -1
  38. package/dist/src/verified-fetch.js +1 -1
  39. package/dist/src/verified-fetch.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/plugins/plugin-handle-byte-range-context.ts +6 -0
  42. package/src/plugins/plugin-handle-car.ts +2 -2
  43. package/src/plugins/plugin-handle-dag-cbor.ts +4 -3
  44. package/src/plugins/plugin-handle-dag-pb.ts +68 -24
  45. package/src/plugins/plugin-handle-dir-index-html.ts +2 -2
  46. package/src/plugins/plugin-handle-ipns-record.ts +2 -2
  47. package/src/plugins/plugin-handle-json.ts +2 -3
  48. package/src/plugins/plugin-handle-raw.ts +7 -5
  49. package/src/plugins/plugin-handle-tar.ts +2 -2
  50. package/src/utils/byte-range-context.ts +373 -103
  51. package/src/utils/{set-content-type.ts → get-content-type.ts} +4 -5
  52. package/src/utils/responses.ts +17 -4
  53. package/src/verified-fetch.ts +1 -1
  54. package/dist/src/utils/set-content-type.d.ts.map +0 -1
  55. package/dist/src/utils/set-content-type.js.map +0 -1
@@ -167,14 +167,27 @@ export function okRangeResponse (url: string, body: SupportedBodyTypes, { byteRa
167
167
 
168
168
  let response: Response
169
169
  try {
170
+ // Create headers object with any initial headers from init
171
+ const headers = new Headers(init?.headers)
172
+
173
+ // For multipart responses, we should use the content-type header instead of content-range
174
+ const multipartContentType = byteRangeContext.getContentType()
175
+
176
+ if (multipartContentType != null) {
177
+ headers.set('content-type', multipartContentType)
178
+ } else {
179
+ if (byteRangeContext.isMultiRangeRequest) {
180
+ headers.set('content-type', 'multipart/byteranges')
181
+ } else {
182
+ headers.set('content-range', byteRangeContext.contentRangeHeaderValue)
183
+ }
184
+ }
185
+
170
186
  response = new Response(body, {
171
187
  ...(init ?? {}),
172
188
  status: 206,
173
189
  statusText: 'Partial Content',
174
- headers: {
175
- ...(init?.headers ?? {}),
176
- 'content-range': byteRangeContext.contentRangeHeaderValue
177
- }
190
+ headers
178
191
  })
179
192
  } catch (e: any) {
180
193
  log?.error('failed to create range response', e)
@@ -165,7 +165,7 @@ export class VerifiedFetch {
165
165
  // if there are multiple ranges, we should omit the content-length header. see https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Transfer-Encoding
166
166
  if (response.headers.get('Transfer-Encoding') !== 'chunked') {
167
167
  if (byteRangeContext != null) {
168
- const contentLength = byteRangeContext.length
168
+ const contentLength = byteRangeContext.getLength()
169
169
  if (contentLength != null) {
170
170
  this.log.trace('Setting Content-Length from byteRangeContext: %d', contentLength)
171
171
  response.headers.set('Content-Length', contentLength.toString())
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-content-type.d.ts","sourceRoot":"","sources":["../../../src/utils/set-content-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAChD,GAAG,EAAE,MAAM,CAAA;IAEX;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,cAAc,CAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAA+C,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCvM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-content-type.js","sourceRoot":"","sources":["../../../src/utils/set-content-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAoB5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,GAAG,0BAA0B,EAAE,QAAQ,EAAE,aAAa,EAAyB;IACtL,IAAI,WAA+B,CAAA;IAEnC,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,QAAQ,CAAA;YACZ,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAA;gBACxC,QAAQ,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC1F,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,aAAa,CAAA;YAC1B,CAAC;YACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAEjD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;gBAE3B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,WAAW,GAAG,MAAM,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1B,WAAW,GAAG,MAAM,CAAA;YACtB,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QACpC,wIAAwI;QACxI,WAAW,GAAG,kBAAkB,CAAA;IAClC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,WAAW,IAAI,kBAAkB,CAAC,CAAA;IAC5E,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,IAAI,kBAAkB,CAAC,CAAA;AACzE,CAAC"}