koa-files 3.1.5 → 3.1.7
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 +1 -1
- package/cjs/Service.cjs +1 -1
- package/cjs/index.cjs +1 -1
- package/cjs/utils/fs.cjs +1 -1
- package/cjs/utils/hash.cjs +1 -1
- package/cjs/utils/http.cjs +1 -1
- package/cjs/utils/path.cjs +1 -1
- package/cjs/utils/stream.cjs +12 -4
- package/esm/Service.js +1 -1
- package/esm/index.js +1 -1
- package/esm/utils/fs.js +1 -1
- package/esm/utils/hash.js +1 -1
- package/esm/utils/http.js +1 -1
- package/esm/utils/path.js +1 -1
- package/esm/utils/stream.js +11 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ export default function server(root: string, options?: Options): Middleware;
|
|
|
91
91
|
|
|
92
92
|
##### `highWaterMark`
|
|
93
93
|
|
|
94
|
-
- Defaults to `
|
|
94
|
+
- Defaults to `65536` (64 KiB).
|
|
95
95
|
- Set the high water mark for the read stream.
|
|
96
96
|
|
|
97
97
|
##### `ignore`
|
package/cjs/Service.cjs
CHANGED
package/cjs/index.cjs
CHANGED
package/cjs/utils/fs.cjs
CHANGED
package/cjs/utils/hash.cjs
CHANGED
package/cjs/utils/http.cjs
CHANGED
package/cjs/utils/path.cjs
CHANGED
package/cjs/utils/stream.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package koa-files
|
|
3
3
|
* @license MIT
|
|
4
|
-
* @version 3.1.
|
|
4
|
+
* @version 3.1.7
|
|
5
5
|
* @author nuintun <nuintun@qq.com>
|
|
6
6
|
* @description A static files serving middleware for koa.
|
|
7
7
|
* @see https://github.com/nuintun/koa-files#readme
|
|
@@ -24,7 +24,7 @@ class FileReadStream extends stream.Readable {
|
|
|
24
24
|
* @param options The stream options.
|
|
25
25
|
*/
|
|
26
26
|
constructor(path, ranges, options) {
|
|
27
|
-
const { fs, encoding, highWaterMark } = options;
|
|
27
|
+
const { fs, encoding, highWaterMark = 65536 } = options;
|
|
28
28
|
super({ encoding, highWaterMark });
|
|
29
29
|
this.bytesRead = 0;
|
|
30
30
|
this.fd = null;
|
|
@@ -126,7 +126,7 @@ class FileReadStream extends stream.Readable {
|
|
|
126
126
|
const position = range.offset + bytesRead;
|
|
127
127
|
const buffer$1 = buffer.Buffer.allocUnsafeSlow(Math.min(size, range.length - bytesRead));
|
|
128
128
|
// Read file range.
|
|
129
|
-
this.fs.read(fd, buffer$1, 0, buffer$1.length, position, (readError, bytesRead, buffer) => {
|
|
129
|
+
this.fs.read(fd, buffer$1, 0, buffer$1.length, position, (readError, bytesRead, buffer$1) => {
|
|
130
130
|
this.reading = false;
|
|
131
131
|
// Tell ._destroy() that it's safe to close the fd now.
|
|
132
132
|
if (this.destroyed) {
|
|
@@ -136,7 +136,15 @@ class FileReadStream extends stream.Readable {
|
|
|
136
136
|
this.destroy(readError);
|
|
137
137
|
} else {
|
|
138
138
|
if (bytesRead > 0) {
|
|
139
|
-
|
|
139
|
+
if (bytesRead !== buffer$1.length) {
|
|
140
|
+
// Slow path. Shrink to fit.
|
|
141
|
+
// Copy instead of slice so that we don't retain
|
|
142
|
+
// large backing buffer for small reads.
|
|
143
|
+
const chunk = buffer.Buffer.allocUnsafeSlow(bytesRead);
|
|
144
|
+
buffer$1.copy(chunk, 0, 0, bytesRead);
|
|
145
|
+
buffer$1 = chunk;
|
|
146
|
+
}
|
|
147
|
+
this.push(buffer$1);
|
|
140
148
|
this.bytesRead += bytesRead;
|
|
141
149
|
} else {
|
|
142
150
|
this.bytesRead = 0;
|
package/esm/Service.js
CHANGED
package/esm/index.js
CHANGED
package/esm/utils/fs.js
CHANGED
package/esm/utils/hash.js
CHANGED
package/esm/utils/http.js
CHANGED
package/esm/utils/path.js
CHANGED
package/esm/utils/stream.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package koa-files
|
|
3
3
|
* @license MIT
|
|
4
|
-
* @version 3.1.
|
|
4
|
+
* @version 3.1.7
|
|
5
5
|
* @author nuintun <nuintun@qq.com>
|
|
6
6
|
* @description A static files serving middleware for koa.
|
|
7
7
|
* @see https://github.com/nuintun/koa-files#readme
|
|
@@ -22,7 +22,7 @@ class FileReadStream extends Readable {
|
|
|
22
22
|
* @param options The stream options.
|
|
23
23
|
*/
|
|
24
24
|
constructor(path, ranges, options) {
|
|
25
|
-
const { fs, encoding, highWaterMark } = options;
|
|
25
|
+
const { fs, encoding, highWaterMark = 65536 } = options;
|
|
26
26
|
super({ encoding, highWaterMark });
|
|
27
27
|
this.bytesRead = 0;
|
|
28
28
|
this.fd = null;
|
|
@@ -134,7 +134,15 @@ class FileReadStream extends Readable {
|
|
|
134
134
|
this.destroy(readError);
|
|
135
135
|
} else {
|
|
136
136
|
if (bytesRead > 0) {
|
|
137
|
-
|
|
137
|
+
if (bytesRead !== buffer.length) {
|
|
138
|
+
// Slow path. Shrink to fit.
|
|
139
|
+
// Copy instead of slice so that we don't retain
|
|
140
|
+
// large backing buffer for small reads.
|
|
141
|
+
const chunk = Buffer.allocUnsafeSlow(bytesRead);
|
|
142
|
+
buffer.copy(chunk, 0, 0, bytesRead);
|
|
143
|
+
buffer = chunk;
|
|
144
|
+
}
|
|
145
|
+
this.push(buffer);
|
|
138
146
|
this.bytesRead += bytesRead;
|
|
139
147
|
} else {
|
|
140
148
|
this.bytesRead = 0;
|