Skip to content

Commit 500d739

Browse files
refactor: use async
1 parent fcaf04d commit 500d739

File tree

2 files changed

+44
-11
lines changed

2 files changed

+44
-11
lines changed

src/middleware.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const mime = require("mime-types");
55
const onFinishedStream = require("on-finished");
66

77
const {
8-
createReadStreamOrReadFileSync,
8+
createReadStreamOrReadFile,
99
escapeHtml,
1010
etag,
1111
finish,
@@ -210,7 +210,16 @@ async function getFilenameFromUrl(context, url) {
210210
let stats;
211211

212212
try {
213-
stats = outputFileSystem.statSync(filename);
213+
stats = await new Promise((resolve, reject) => {
214+
outputFileSystem.stat(filename, (err, res) => {
215+
if (err) {
216+
reject(err);
217+
return;
218+
}
219+
220+
resolve(res);
221+
});
222+
});
214223
} catch (err) {
215224
if (isNotFoundError(err)) return;
216225
throw err;
@@ -240,7 +249,16 @@ async function getFilenameFromUrl(context, url) {
240249
let stats;
241250

242251
try {
243-
stats = outputFileSystem.statSync(filename);
252+
stats = await new Promise((resolve, reject) => {
253+
outputFileSystem.stat(filename, (err, res) => {
254+
if (err) {
255+
reject(err);
256+
return;
257+
}
258+
259+
resolve(res);
260+
});
261+
});
244262
} catch (err) {
245263
if (isNotFoundError(err)) return;
246264
throw err;
@@ -925,7 +943,7 @@ function wrapper(context) {
925943
[start, end] = calcStartAndEnd(offset, len);
926944

927945
try {
928-
const result = createReadStreamOrReadFileSync(
946+
const result = await createReadStreamOrReadFile(
929947
filename,
930948
extra.outputFileSystem,
931949
start,
@@ -1070,7 +1088,7 @@ function wrapper(context) {
10701088
[start, end] = calcStartAndEnd(offset, len);
10711089

10721090
try {
1073-
({ bufferOrStream, byteLength } = createReadStreamOrReadFileSync(
1091+
({ bufferOrStream, byteLength } = await createReadStreamOrReadFile(
10741092
filename,
10751093
extra.outputFileSystem,
10761094
start,

src/utils.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -447,9 +447,9 @@ function finish(res, data) {
447447
* @param {OutputFileSystem} outputFileSystem output file system
448448
* @param {number} start start
449449
* @param {number} end end
450-
* @returns {{ bufferOrStream: (Buffer | import("fs").ReadStream), byteLength: number }} result with buffer or stream and byte length
450+
* @returns {Promise<{ bufferOrStream: (Buffer | import("fs").ReadStream), byteLength: number }>} result with buffer or stream and byte length
451451
*/
452-
function createReadStreamOrReadFileSync(
452+
async function createReadStreamOrReadFile(
453453
filename,
454454
outputFileSystem,
455455
start,
@@ -472,11 +472,26 @@ function createReadStreamOrReadFileSync(
472472
end,
473473
});
474474

475-
// Handle files with zero bytes
476475
byteLength = end === 0 ? 0 : end - start + 1;
477476
} else {
478-
bufferOrStream = outputFileSystem.readFileSync(filename);
479-
({ byteLength } = bufferOrStream);
477+
bufferOrStream = await new Promise(
478+
/**
479+
* @param {(value: Buffer) => void} resolve resolve
480+
* @param {(reason: Error) => void} reject reject
481+
*/
482+
(resolve, reject) => {
483+
outputFileSystem.readFile(filename, (err, data) => {
484+
if (err) {
485+
reject(err);
486+
return;
487+
}
488+
489+
resolve(/** @type {Buffer} */ (data));
490+
});
491+
},
492+
);
493+
494+
byteLength = bufferOrStream.byteLength;
480495
}
481496

482497
return { bufferOrStream, byteLength };
@@ -528,7 +543,7 @@ function setState(res, name, value) {
528543
}
529544

530545
module.exports = {
531-
createReadStreamOrReadFileSync,
546+
createReadStreamOrReadFile,
532547
escapeHtml,
533548
etag,
534549
finish,

0 commit comments

Comments
 (0)