minimalistic-server 0.0.4 → 0.0.6

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 (2) hide show
  1. package/index.mjs +15 -10
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -1159,7 +1159,7 @@ export class FileResponse extends Response {
1159
1159
 
1160
1160
  #dataPromise = null;
1161
1161
 
1162
- #maxChunkSize = 16 * 1024 * 1024;
1162
+ #maxChunkSize = 4 * 1024 * 1024;
1163
1163
  #fragmentRequestMap = new WeakMap();
1164
1164
 
1165
1165
  constructor(filePath, code = 200, contentType = null, cookies = null) {
@@ -1187,8 +1187,10 @@ export class FileResponse extends Response {
1187
1187
 
1188
1188
  if (requestedFragment) {
1189
1189
  return {
1190
- 'Content-Range': `bytes ${requestedFragment.offset}-${requestedFragment.offset + requestedFragment.size - 1}/${data.size}`,
1191
1190
  ...data.headers,
1191
+ 'Content-Range': `bytes ${requestedFragment.offset}-${requestedFragment.offset + requestedFragment.size - 1}/${data.size}`,
1192
+ 'Content-Length': `${requestedFragment.size}`,
1193
+
1192
1194
  };
1193
1195
  }
1194
1196
 
@@ -1231,7 +1233,7 @@ export class FileResponse extends Response {
1231
1233
  .map(x => {
1232
1234
  x = +x;
1233
1235
 
1234
- if (isNaN(x) || x < Number.MIN_SAFE_INTEGER || x > Number.MAX_SAFE_INTEGER) {
1236
+ if (!x || isNaN(x) || x < Number.MIN_SAFE_INTEGER || x > Number.MAX_SAFE_INTEGER) {
1235
1237
  return null;
1236
1238
  }
1237
1239
 
@@ -1255,7 +1257,7 @@ export class FileResponse extends Response {
1255
1257
  offset = data.size - 1;
1256
1258
  }
1257
1259
 
1258
- let size = (numbers[1] ?? (data.size - 1)) - offset + 1;
1260
+ let size = (numbers[1] ?? (this.#maxChunkSize - 1 + offset)) - offset + 1;
1259
1261
 
1260
1262
  if (size < 0) {
1261
1263
  size = 0;
@@ -1290,15 +1292,10 @@ export class FileResponse extends Response {
1290
1292
 
1291
1293
  filehandle = await fs.open(this.#filePath, 'r');
1292
1294
 
1293
- if (requestedPosition > 0) {
1294
- await filehandle.read(Buffer.alloc(0), 0, 0, requestedPosition);
1295
- }
1296
-
1297
1295
  for (let offset = 0; offset < requestedSize; offset += this.#maxChunkSize) {
1298
1296
  const size = Math.min(this.#maxChunkSize, requestedSize - offset);
1299
- const chunk = await filehandle.read(Buffer.alloc(size), 0, size);
1297
+ const chunk = await filehandle.read(Buffer.alloc(size), 0, size, offset + requestedPosition);
1300
1298
  yield chunk.buffer;
1301
- await new Promise(resolve => setTimeout(resolve, 100));
1302
1299
  }
1303
1300
  } finally {
1304
1301
  filehandle?.close();
@@ -1459,7 +1456,15 @@ export function serve(routes, port = 80, staticFileDirectory = null) {
1459
1456
 
1460
1457
  if (typeof body === 'function') {
1461
1458
  for await (const chunk of body()) {
1459
+ if (res.closed) {
1460
+ break;
1461
+ }
1462
+
1462
1463
  res.write(chunk);
1464
+
1465
+ while (res.writableNeedDrain && !res.closed) {
1466
+ await new Promise(resolve => setTimeout(resolve, 50));
1467
+ }
1463
1468
  }
1464
1469
  } else {
1465
1470
  res.write(body);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "minimalistic-server",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "engines" : {
5
5
  "npm" : ">=8.6.0",
6
6
  "node" : ">=22.0.0"