Skip to content
This repository was archived by the owner on Sep 28, 2021. It is now read-only.

Commit 0bff82d

Browse files
authored
fix: firefox using readable stream (#3)
1 parent 1f3db7d commit 0bff82d

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"mime-types": "^2.1.18",
4040
"multihashes": "^0.4.13",
4141
"promisify-es6": "^1.0.3",
42-
"readable-stream-node-to-web": "^1.0.1"
42+
"stream-to-blob": "^1.0.1"
4343
},
4444
"devDependencies": {
4545
"aegir": "^13.1.0",

src/index.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
const fileType = require('file-type')
66
const mimeTypes = require('mime-types')
77
const stream = require('stream')
8-
const nodeToWebStream = require('readable-stream-node-to-web')
8+
const toBlob = require('stream-to-blob')
99

1010
const resolver = require('./resolver')
1111
const pathUtils = require('./utils/path')
@@ -68,7 +68,7 @@ const response = (ipfsNode, ipfsPath) => {
6868

6969
readableStream.once('error', (error) => {
7070
if (error) {
71-
resolve(new Response(error.toString(), header(500, 'Service Worker Error')))
71+
resolve(new Response(error.toString(), header(500, 'Error fetching the file')))
7272
}
7373
})
7474

@@ -79,19 +79,30 @@ const response = (ipfsNode, ipfsPath) => {
7979
if (filetypeChecked) {
8080
return
8181
}
82+
8283
filetypeChecked = true
8384
// return Response with mime type
8485
const fileSignature = fileType(chunk)
8586
const mimeType = mimeTypes.lookup(fileSignature ? fileSignature.ext : null)
8687

87-
if (mimeType) {
88-
resolve(
89-
new Response(typeof ReadableStream === 'function' ? nodeToWebStream(responseStream) : responseStream,
90-
header(200, 'OK', { 'Content-Type': mimeTypes.contentType(mimeType) }))
91-
)
88+
if (typeof Blob === 'undefined') {
89+
if (mimeType) {
90+
resolve(new Response(responseStream, header(200, 'OK', { 'Content-Type': mimeTypes.contentType(mimeType) })))
91+
} else {
92+
resolve(new Response(responseStream, header()))
93+
}
9294
} else {
93-
resolve(new Response(typeof ReadableStream === 'function' ? nodeToWebStream(responseStream) : responseStream,
94-
header()))
95+
toBlob(responseStream, (err, blob) => {
96+
if (err) {
97+
resolve(new Response(err.toString(), header(500, 'Error fetching the file')))
98+
}
99+
100+
if (mimeType) {
101+
resolve(new Response(blob, header(200, 'OK', { 'Content-Type': mimeTypes.contentType(mimeType) })))
102+
} else {
103+
resolve(new Response(blob, header()))
104+
}
105+
})
95106
}
96107
})
97108
})

0 commit comments

Comments
 (0)