expediate 1.0.4 → 1.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 (69) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/CONTRIBUTING.md +150 -0
  3. package/LICENSE +16 -16
  4. package/README.md +330 -444
  5. package/dist/apis.d.ts +504 -27
  6. package/dist/apis.d.ts.map +1 -1
  7. package/dist/apis.js +618 -107
  8. package/dist/apis.js.map +1 -1
  9. package/dist/cjs/index.js +4066 -0
  10. package/dist/cjs/package.json +1 -0
  11. package/dist/git.d.ts +72 -9
  12. package/dist/git.d.ts.map +1 -1
  13. package/dist/git.js +129 -74
  14. package/dist/git.js.map +1 -1
  15. package/dist/http-objects.d.ts +26 -0
  16. package/dist/http-objects.d.ts.map +1 -0
  17. package/dist/http-objects.js +588 -0
  18. package/dist/http-objects.js.map +1 -0
  19. package/dist/index.d.ts +18 -13
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +15 -24
  22. package/dist/index.js.map +1 -1
  23. package/dist/jwt-auth.d.ts +158 -57
  24. package/dist/jwt-auth.d.ts.map +1 -1
  25. package/dist/jwt-auth.js +447 -207
  26. package/dist/jwt-auth.js.map +1 -1
  27. package/dist/middleware.d.ts +476 -0
  28. package/dist/middleware.d.ts.map +1 -0
  29. package/dist/middleware.js +647 -0
  30. package/dist/middleware.js.map +1 -0
  31. package/dist/mimetypes.json +882 -1
  32. package/dist/misc.d.ts +268 -25
  33. package/dist/misc.d.ts.map +1 -1
  34. package/dist/misc.js +449 -168
  35. package/dist/misc.js.map +1 -1
  36. package/dist/openapi.d.ts +433 -0
  37. package/dist/openapi.d.ts.map +1 -0
  38. package/dist/openapi.js +624 -0
  39. package/dist/openapi.js.map +1 -0
  40. package/dist/router-types.d.ts +760 -0
  41. package/dist/router-types.d.ts.map +1 -0
  42. package/dist/router-types.js +23 -0
  43. package/dist/router-types.js.map +1 -0
  44. package/dist/router.d.ts +37 -201
  45. package/dist/router.d.ts.map +1 -1
  46. package/dist/router.js +502 -244
  47. package/dist/router.js.map +1 -1
  48. package/dist/static.d.ts +3 -3
  49. package/dist/static.d.ts.map +1 -1
  50. package/dist/static.js +164 -105
  51. package/dist/static.js.map +1 -1
  52. package/docs/THREAT_MODEL.md +52 -0
  53. package/docs/api-builder-v2-design.md +644 -0
  54. package/docs/api-builder-v3-design.md +397 -0
  55. package/docs/api-builder.md +454 -0
  56. package/docs/benchmark.md +27 -0
  57. package/docs/body-parsing.md +223 -0
  58. package/docs/errors.md +359 -0
  59. package/docs/expediate.png +0 -0
  60. package/docs/git.md +139 -0
  61. package/docs/jwt-auth.md +251 -0
  62. package/docs/logo.svg +12 -0
  63. package/docs/middleware.md +264 -0
  64. package/docs/openapi.md +180 -0
  65. package/docs/router.md +356 -0
  66. package/docs/static.md +128 -0
  67. package/docs/wiki.json +123 -0
  68. package/package.json +47 -8
  69. package/.npmignore +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/dist/static.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { RouterRequest, RouterResponse, Middleware } from './router';
2
- export type Mime = {
1
+ import type { RouterRequest, RouterResponse, Middleware } from './router.js';
2
+ export interface Mime {
3
3
  lookup: (path: string, fallback: string | null) => string;
4
4
  charsets: (mimeType: string) => string | null;
5
- };
5
+ }
6
6
  export declare const mime: Mime;
7
7
  /** HTTP header map used both in options and as argument to res.status(). */
8
8
  type HeaderMap = Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK1E,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC1D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/C,CAAA;AAcD,eAAO,MAAM,IAAI,EAAE,IAGlB,CAAC;AAQF,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,UAAU,eAAgB,SAAQ,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvE,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd;AAkjBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAO,aAAa,EACvB,GAAG,EAAO,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAM,eAAe,GACxB,IAAI,CA6BN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAmE7E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CA8B/E;;;;;;AAED,wBAAoD"}
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM7E,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC1D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/C;AAcD,eAAO,MAAM,IAAI,EAAE,IAGlB,CAAC;AAQF,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,UAAU,eAAgB,SAAQ,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvE,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd;AAwnBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAO,aAAa,EACvB,GAAG,EAAO,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAM,eAAe,GACxB,IAAI,CA2BN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAmF7E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAqB/E;;;;;;AAED,wBAAoD"}
package/dist/static.js CHANGED
@@ -19,33 +19,26 @@
19
19
  * DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  'use strict';
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.mime = void 0;
27
- exports.sendFile = sendFile;
28
- exports.serveStatic = serveStatic;
29
- exports.serveFile = serveFile;
30
- const fs_1 = __importDefault(require("fs"));
31
- const path_1 = __importDefault(require("path"));
22
+ import fs from 'fs';
23
+ import nodePath from 'path';
24
+ import mimetypesJson from './mimetypes.json' with { type: 'json' };
32
25
  const mime_types = new Map();
33
26
  const mime_extensions = new Map();
34
27
  function mime_define(map) {
35
- for (var type in map) {
36
- var exts = map[type];
37
- for (var i = 0; i < exts.length; i++)
38
- mime_types.set(exts[i], type);
28
+ for (const type in map) {
29
+ const exts = map[type];
30
+ for (const ext of exts)
31
+ mime_types.set(ext, type);
39
32
  if (!mime_extensions.has(type))
40
33
  mime_extensions.set(type, exts[0]);
41
34
  }
42
35
  }
43
36
  ;
44
- exports.mime = {
45
- lookup: (path, fallback = null) => mime_types.get(path.replace(/^.*[\.\/\\]/, '').toLowerCase()) ?? fallback ?? 'application/octet-stream',
37
+ export const mime = {
38
+ lookup: (path, fallback = null) => mime_types.get(path.replace(/^.*[./\\]/, '').toLowerCase()) ?? fallback ?? 'application/octet-stream',
46
39
  charsets: (mimeType) => (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : null,
47
40
  };
48
- mime_define(require('./mimetypes.json'));
41
+ mime_define(mimetypesJson);
49
42
  // ---------------------------------------------------------------------------
50
43
  // Constants
51
44
  // ---------------------------------------------------------------------------
@@ -54,6 +47,13 @@ mime_define(require('./mimetypes.json'));
54
47
  * any position of a URL path, including encoded forms using back-slashes.
55
48
  */
56
49
  const UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
50
+ /**
51
+ * Regular expression that detects any ASCII control character (code point
52
+ * below 32, including the NUL byte). These characters cannot appear in a valid
53
+ * file name and would make fs.stat() throw, so paths containing them are
54
+ * treated as not found.
55
+ */
56
+ const CONTROL_CHAR_REGEXP = /[\x00-\x1f]/;
57
57
  /** Default security and caching options applied to every response. */
58
58
  const DEFAULT_OPTIONS = {
59
59
  headers: {
@@ -81,6 +81,8 @@ const DEFAULT_OPTIONS = {
81
81
  const HTTP = {
82
82
  /** 304 Not Modified — sent for conditional GET cache hits. */
83
83
  NOT_MODIFIED: (res, opts) => { res.status(304, opts.headers).end(); },
84
+ /** 400 Bad Request — sent when the URL path contains malformed percent-encoding. */
85
+ BAD_REQUEST: (res, opts) => res.status(400, opts.headers).send('Bad Request'),
84
86
  /** 403 Forbidden — sent for denied dot-files or path traversal attempts. */
85
87
  FORBIDDEN: (res, opts) => res.status(403, opts.headers).send('Forbidden'),
86
88
  /** 404 Not Found — sent when the requested file does not exist. */
@@ -193,17 +195,35 @@ function parseHttpDate(date) {
193
195
  return typeof timestamp === 'number' ? timestamp : NaN;
194
196
  }
195
197
  /**
196
- * Return `true` when the request carries at least one conditional header
197
- * (`If-Match`, `If-Unmodified-Since`, `If-None-Match`, or
198
- * `If-Modified-Since`).
198
+ * Escape HTML special characters so that a raw string can be safely embedded
199
+ * in HTML text content or attribute values.
200
+ *
201
+ * Handles `&`, `<`, `>`, and `"`. Single quotes are not escaped because all
202
+ * generated attributes use double-quote delimiters.
203
+ *
204
+ * @param str - The raw string to escape.
205
+ * @returns A string safe for insertion into HTML.
206
+ */
207
+ function htmlEscape(str) {
208
+ return str
209
+ .replace(/&/g, '&amp;')
210
+ .replace(/</g, '&lt;')
211
+ .replace(/>/g, '&gt;')
212
+ .replace(/"/g, '&quot;');
213
+ }
214
+ /**
215
+ * Percent-encode each segment of a URL path while preserving the `/`
216
+ * separators, so that the result is safe to use as an `href` attribute value.
217
+ *
218
+ * Each segment is passed through {@link encodeURIComponent}, which encodes
219
+ * all characters except `A-Z a-z 0-9 - _ . ! ~ * ' ( )`. The `/` delimiters
220
+ * between segments are kept as literal slashes.
199
221
  *
200
- * @param headers - The incoming request's header map.
222
+ * @param urlPath - A decoded URL path, e.g. `'/dir with spaces/readme.txt'`.
223
+ * @returns A percent-encoded path, e.g. `'/dir%20with%20spaces/readme.txt'`.
201
224
  */
202
- function hasCondition(headers) {
203
- return !!(headers['if-match'] ||
204
- headers['if-unmodified-since'] ||
205
- headers['if-none-match'] ||
206
- headers['if-modified-since']);
225
+ function encodePath(urlPath) {
226
+ return urlPath.split('/').map(s => encodeURIComponent(s)).join('/');
207
227
  }
208
228
  /**
209
229
  * Evaluate precondition headers (`If-Match` / `If-Unmodified-Since`) against
@@ -228,7 +248,7 @@ function conditionMatch(reqHeaders, resHeaders) {
228
248
  // --- If-Match ---
229
249
  const match = reqHeaders['if-match'];
230
250
  if (match) {
231
- const etag = resHeaders['etag'];
251
+ const etag = resHeaders.etag;
232
252
  if (match === '*' || match === etag)
233
253
  return true;
234
254
  for (const tag of parseTokenList(match)) {
@@ -239,9 +259,6 @@ function conditionMatch(reqHeaders, resHeaders) {
239
259
  return false;
240
260
  }
241
261
  // --- If-Unmodified-Since ---
242
- // BUG FIX: the original code read req['if-modified-since'] here, which is
243
- // the wrong header. The correct header for this precondition is
244
- // 'if-unmodified-since'.
245
262
  const lastModified = parseHttpDate(resHeaders['last-modified']);
246
263
  const unmodifiedSince = parseHttpDate(reqHeaders['if-unmodified-since']);
247
264
  if (!isNaN(unmodifiedSince) && !isNaN(lastModified))
@@ -277,7 +294,7 @@ function isCacheFresh(reqHeaders, resHeaders) {
277
294
  return false;
278
295
  // --- If-None-Match ---
279
296
  if (noneMatch && noneMatch !== '*') {
280
- const etag = resHeaders['etag'];
297
+ const etag = resHeaders.etag;
281
298
  if (!etag)
282
299
  return false;
283
300
  let etagStale = true;
@@ -330,7 +347,7 @@ function resolveOptions(root, options) {
330
347
  opts.fallthrough = options?.fallthrough !== false;
331
348
  opts.redirect = options?.redirect !== false;
332
349
  opts.maxage = options?.maxage ?? options?.maxAge ?? 0;
333
- opts.root = path_1.default.resolve(root);
350
+ opts.root = nodePath.resolve(root);
334
351
  return opts;
335
352
  }
336
353
  /**
@@ -341,68 +358,108 @@ function resolveOptions(root, options) {
341
358
  * last-modification timestamps, and file sizes. An optional parent-directory
342
359
  * link is shown when `parentUrlPath` is provided.
343
360
  *
344
- * > **TODO** Implement column sorting via `?C=N`, `?C=M`, `?C=S`, `?C=D`
345
- * > (name / modified / size / description) combined with `?O=A` / `?O=D`
346
- * > (ascending / descending). The current implementation always sorts by name
347
- * > ascending.
361
+ * **Default order:** directories before files; within each group, entries are
362
+ * sorted alphabetically by name (ascending).
363
+ *
364
+ * **Query-parameter sorting** (`?C=<col>;O=<ord>` — `;` or `&` separator):
365
+ * - `C=N` — sort by name (default)
366
+ * - `C=M` — sort by last-modification time
367
+ * - `C=S` — sort by size (directories always count as 0)
368
+ * - Any other value for `C` → falls back to name order
369
+ * - `O=A` — ascending (default)
370
+ * - `O=D` — descending
371
+ *
372
+ * Column header links are generated dynamically: clicking the **active** column
373
+ * toggles the order; clicking any **other** column resets to ascending.
348
374
  *
349
375
  * @param urlPath - The URL path displayed in the page title and heading.
350
376
  * @param directoryPath - Absolute filesystem path of the directory to list.
351
377
  * @param parentUrlPath - URL of the parent directory, or `null` when at root.
378
+ * @param queryString - Raw query string from the request URL (without `?`).
352
379
  * @param callback - Called with `(html, null)` on success or
353
380
  * `(null, err)` on failure.
354
381
  */
355
- function writeIndexOf(urlPath, directoryPath, parentUrlPath, callback) {
356
- // BUG FIX: the original signature had a `queries` parameter as first arg and
357
- // a `path` parameter (shadowing the `path` module) as second. Both were
358
- // unused or misused. The signature is corrected here: `urlPath` is the
359
- // display path, `directoryPath` is the fs path, `parentUrlPath` is optional.
360
- fs_1.default.readdir(directoryPath, (err, files) => {
382
+ function writeIndexOf(urlPath, directoryPath, parentUrlPath, queryString, callback) {
383
+ fs.readdir(directoryPath, (err, files) => {
361
384
  if (err)
362
385
  return callback(null, err);
386
+ // ── Parse sort parameters ────────────────────────────────────────────────
387
+ // Support both ';' and '&' as separators (Apache style uses ';').
388
+ const params = new URLSearchParams(queryString.replace(/;/g, '&'));
389
+ const rawCol = params.get('C') ?? 'N';
390
+ const rawOrd = params.get('O') ?? 'A';
391
+ const col = ['N', 'M', 'S'].includes(rawCol) ? rawCol : 'N';
392
+ const ord = rawOrd === 'D' ? 'D' : 'A';
393
+ const entries = [];
394
+ for (const file of files) {
395
+ const fullPath = nodePath.join(directoryPath, file);
396
+ let stat;
397
+ try {
398
+ stat = fs.statSync(fullPath);
399
+ }
400
+ catch {
401
+ continue; // skip entries that disappeared between readdir and stat
402
+ }
403
+ entries.push({ file, stat, isDir: stat.isDirectory() });
404
+ }
405
+ // ── Sort ─────────────────────────────────────────────────────────────────
406
+ // Directories always come before files. Within each group apply col/ord.
407
+ const sign = ord === 'A' ? 1 : -1;
408
+ entries.sort((a, b) => {
409
+ if (a.isDir !== b.isDir)
410
+ return a.isDir ? -1 : 1;
411
+ let cmp = 0;
412
+ if (col === 'N')
413
+ cmp = a.file.localeCompare(b.file);
414
+ else if (col === 'M')
415
+ cmp = a.stat.mtime.getTime() - b.stat.mtime.getTime();
416
+ else if (col === 'S')
417
+ cmp = (a.isDir ? 0 : a.stat.size) - (b.isDir ? 0 : b.stat.size);
418
+ return cmp * sign;
419
+ });
420
+ // ── Dynamic column header link ───────────────────────────────────────────
421
+ // Active column: toggles order. Inactive column: always links to ascending.
422
+ function thLink(c, label) {
423
+ const nextOrd = (c === col && ord === 'A') ? 'D' : 'A';
424
+ return `<a href="?C=${c};O=${nextOrd}">${label}</a>`;
425
+ }
426
+ // ── Build HTML ───────────────────────────────────────────────────────────
427
+ // urlPath comes from req.path (user-controlled) and file names come from
428
+ // the filesystem — both must be escaped before insertion into HTML.
363
429
  let html = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\n';
364
430
  html += '<html>\n';
365
- html += `<head><title>Index of ${urlPath}</title></head>\n`;
366
- html += `<body><h1>Index of ${urlPath}</h1><table>\n`;
431
+ html += `<head><title>Index of ${htmlEscape(urlPath)}</title></head>\n`;
432
+ html += `<body><h1>Index of ${htmlEscape(urlPath)}</h1><table>\n`;
367
433
  html += '<tr>'
368
434
  + '<th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th>'
369
- + '<th><a href="?C=N;O=D">Name</a></th>'
370
- + '<th><a href="?C=M;O=A">Last modified</a></th>'
371
- + '<th><a href="?C=S;O=A">Size</a></th>'
435
+ + `<th>${thLink('N', 'Name')}</th>`
436
+ + `<th>${thLink('M', 'Last modified')}</th>`
437
+ + `<th>${thLink('S', 'Size')}</th>`
372
438
  + '<th><a href="?C=D;O=A">Description</a></th>'
373
439
  + '</tr>\n';
374
440
  html += '<tr><th colspan="5"><hr></th></tr>\n';
375
441
  if (parentUrlPath)
376
442
  html += `<tr>`
377
443
  + `<td valign="top"><img src="/icons/back.gif" alt="[PARENTDIR]"></td>`
378
- + `<td><a href="${parentUrlPath}">Parent Directory</a></td>`
444
+ + `<td><a href="${encodePath(parentUrlPath)}">Parent Directory</a></td>`
379
445
  + `<td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td>`
380
446
  + `</tr>\n`;
381
- for (const file of files) {
382
- // BUG FIX: the original code passed `pathname` (undefined in this scope)
383
- // to mime.lookup(). The correct argument is the full path of the entry.
384
- // BUG FIX: the original code used `path.join(...)` where `path` was
385
- // shadowed by the parameter name. Use `nodePath` (the imported module).
386
- const fullPath = path_1.default.join(directoryPath, file);
387
- let stat;
388
- try {
389
- stat = fs_1.default.statSync(fullPath);
390
- }
391
- catch {
392
- continue; // skip entries that disappeared between readdir and stat
393
- }
394
- const mimeType = exports.mime.lookup(fullPath, '');
447
+ for (const { file, stat, isDir } of entries) {
448
+ const fullPath = nodePath.join(directoryPath, file);
449
+ const mimeType = mime.lookup(fullPath, '');
395
450
  const mediaType = mimeType.includes('/') ? mimeType.split('/')[0] : '';
396
- const alt = stat.isDirectory() ? 'folder' : (mediaType || 'unknown');
451
+ const alt = isDir ? 'folder' : (mediaType || 'unknown');
397
452
  const icon = `/icons/${alt}.gif`;
398
- const name = file + (stat.isDirectory() ? '/' : '');
399
- // BUG FIX: `stat.modified` does not exist on `fs.Stats`.
400
- // The correct property is `stat.mtime`.
453
+ const name = file + (isDir ? '/' : '');
454
+ // href uses percent-encoding (safe for URL context); display text uses
455
+ // HTML-escaping (safe for HTML text content).
456
+ const hrefName = encodeURIComponent(file) + (isDir ? '/' : '');
457
+ const displayName = htmlEscape(name);
401
458
  const modified = stat.mtime.toUTCString();
402
- const size = stat.isDirectory() ? '-' : String(stat.size);
459
+ const size = isDir ? '-' : String(stat.size);
403
460
  html += `<tr>`
404
461
  + `<td valign="top"><img src="${icon}" alt="[${alt.toUpperCase()}]"></td>`
405
- + `<td><a href="${name}">${name}</a></td>` // BUG FIX: link text was empty in original
462
+ + `<td><a href="${hrefName}">${displayName}</a></td>`
406
463
  + `<td align="right">${modified}</td>`
407
464
  + `<td align="right">${size}</td>`
408
465
  + `<td>&nbsp;</td>`
@@ -410,9 +467,6 @@ function writeIndexOf(urlPath, directoryPath, parentUrlPath, callback) {
410
467
  }
411
468
  html += '<tr><th colspan="5"><hr></th></tr>\n';
412
469
  html += '</table><address>Expediate/1.0.0</address></body></html>\n';
413
- // BUG FIX: the original code called go(html) without `return`, so execution
414
- // continued to HTTP.NOT_FOUND immediately after — the callback was invoked
415
- // and then the caller would also receive NOT_FOUND.
416
470
  return callback(html, null);
417
471
  });
418
472
  }
@@ -466,9 +520,9 @@ function sendIt(req, res, pathname, stat, opts) {
466
520
  res.setHeader('Content-Type', opts.contentType);
467
521
  }
468
522
  else {
469
- const type = exports.mime.lookup(pathname, '');
523
+ const type = mime.lookup(pathname, '');
470
524
  if (type) {
471
- const charset = exports.mime.charsets(type);
525
+ const charset = mime.charsets(type);
472
526
  res.setHeader('Content-Type', charset ? `${type}; charset=${charset}` : type);
473
527
  }
474
528
  }
@@ -488,7 +542,7 @@ function sendIt(req, res, pathname, stat, opts) {
488
542
  // If-Modified-Since are handled above by isCacheFresh and must NOT trigger
489
543
  // a 412 when conditionMatch returns false (they are cache-validation headers,
490
544
  // not write-precondition headers per RFC 7232).
491
- const hasPrecondition = !!(req.headers['if-match'] ||
545
+ const hasPrecondition = !!(req.headers['if-match'] ??
492
546
  req.headers['if-unmodified-since']);
493
547
  if (hasPrecondition && !conditionMatch(req.headers, res.getHeaders())) {
494
548
  HTTP.PRECONDITION_FAILS(res, opts);
@@ -502,7 +556,7 @@ function sendIt(req, res, pathname, stat, opts) {
502
556
  return;
503
557
  }
504
558
  let finished = false;
505
- const stream = fs_1.default.createReadStream(pathname);
559
+ const stream = fs.createReadStream(pathname);
506
560
  res.on('finish', () => {
507
561
  finished = true;
508
562
  destroyReadStream(stream);
@@ -542,8 +596,8 @@ function sendIt(req, res, pathname, stat, opts) {
542
596
  * @param pathname - Absolute filesystem path of the file to send.
543
597
  * @param opts - Fully resolved static-serving options.
544
598
  */
545
- function sendFile(req, res, pathname, opts) {
546
- fs_1.default.stat(pathname, (err, stat) => {
599
+ export function sendFile(req, res, pathname, opts) {
600
+ fs.stat(pathname, (err, stat) => {
547
601
  if (err) {
548
602
  if (err.code === 'ENOENT' ||
549
603
  err.code === 'ENAMETOOLONG' ||
@@ -553,13 +607,11 @@ function sendFile(req, res, pathname, opts) {
553
607
  }
554
608
  if (stat.isDirectory()) {
555
609
  if (opts.indexOf) {
556
- const parentUrl = req.path !== '/' ? path_1.default.dirname(req.path) : null;
557
- return writeIndexOf(req.path, pathname, parentUrl, (html, indexErr) => {
610
+ const parentUrl = req.path !== '/' ? nodePath.dirname(req.path) : null;
611
+ const queryString = (req.url ?? '').split('?')[1] ?? '';
612
+ return writeIndexOf(req.path, pathname, parentUrl, queryString, (html, indexErr) => {
558
613
  if (indexErr)
559
614
  return HTTP.INTERNAL_ERROR(res, opts, indexErr.code ?? 'UNKNOWN');
560
- // BUG FIX: the original code called `res.send(200, {...}).send(html)`.
561
- // `res.send()` does not accept a status code as first argument; the
562
- // correct call is `res.status(200, headers).send(html)`.
563
615
  return res.status(200, opts.headers).send(html);
564
616
  });
565
617
  }
@@ -598,9 +650,7 @@ function sendFile(req, res, pathname, opts) {
598
650
  * @returns An Express-compatible middleware function.
599
651
  * @throws {TypeError} When `root` is missing or not a string.
600
652
  */
601
- function serveStatic(root, options) {
602
- // BUG FIX: `static` is a reserved word in strict mode (`'use strict'`).
603
- // The function has been renamed to `serveStatic`.
653
+ export function serveStatic(root, options) {
604
654
  const opts = resolveOptions(root, options);
605
655
  return function (req, res, next) {
606
656
  if (req.method !== 'GET' && req.method !== 'HEAD') {
@@ -609,28 +659,46 @@ function serveStatic(root, options) {
609
659
  return HTTP.NOT_ALLOWED(res, opts);
610
660
  }
611
661
  // Decode the current path (after any prefix stripping by parent routers).
612
- const originalUrl = decodeURIComponent(req.path ?? req.url ?? '/');
662
+ // Malformed percent-sequences (e.g. %zz, trailing %) are rejected immediately
663
+ // because they cannot represent a valid file path and may indicate an attack.
664
+ let originalUrl;
665
+ try {
666
+ originalUrl = decodeURIComponent(req.path ?? req.url ?? '/');
667
+ }
668
+ catch {
669
+ return HTTP.BAD_REQUEST(res, opts);
670
+ }
613
671
  let pathname = originalUrl;
614
672
  // When the URL ends without a trailing slash but the bare mount point was
615
673
  // requested, clear the pathname so the root directory is considered.
616
674
  if (pathname === '/' && !originalUrl.endsWith('/'))
617
675
  pathname = '';
676
+ // Reject any path containing a control character (code point < 32), most
677
+ // notably the NUL byte. Such characters can never appear in a legitimate
678
+ // file name and would otherwise cause fs.stat() to throw synchronously
679
+ // (TypeError: path must be a string without null bytes), surfacing as a 500.
680
+ if (CONTROL_CHAR_REGEXP.test(pathname)) {
681
+ if (opts.fallthrough)
682
+ return next();
683
+ return HTTP.NOT_FOUND(res, opts);
684
+ }
618
685
  // Reject any path containing a directory-traversal component.
619
686
  if (UP_PATH_REGEXP.test(pathname))
620
687
  return HTTP.FORBIDDEN(res, opts);
621
688
  // Resolve to an absolute filesystem path.
622
- pathname = path_1.default.resolve(path_1.default.normalize(`${opts.root}/${pathname}`));
689
+ pathname = nodePath.resolve(nodePath.normalize(`${opts.root}/${pathname}`));
690
+ // Defense-in-depth: verify the resolved path remains inside opts.root.
691
+ // This catches edge cases that bypass UP_PATH_REGEXP — e.g. OS-level
692
+ // symlinks, or unusual Unicode normalisation on certain file systems.
693
+ if (pathname !== opts.root && !pathname.startsWith(opts.root + nodePath.sep))
694
+ return HTTP.FORBIDDEN(res, opts);
623
695
  // Dot-file handling.
624
- // BUG FIX: the original condition was `!opts.dotfiles != 'allow'` which
625
- // always evaluates to `true` because `!opts.dotfiles` is a boolean and a
626
- // boolean is never strictly/loosely equal to a string. The correct
627
- // condition is `opts.dotfiles !== 'allow'`.
628
696
  if (opts.dotfiles !== 'allow' && pathname.includes('/.')) {
629
697
  if (opts.dotfiles === 'deny')
630
698
  return HTTP.FORBIDDEN(res, opts);
631
699
  return HTTP.NOT_FOUND(res, opts);
632
700
  }
633
- fs_1.default.stat(pathname, (err, stat) => {
701
+ fs.stat(pathname, (err, stat) => {
634
702
  if (err) {
635
703
  if (err.code === 'ENOENT' ||
636
704
  err.code === 'ENAMETOOLONG' ||
@@ -648,7 +716,7 @@ function serveStatic(root, options) {
648
716
  return next();
649
717
  return HTTP.NOT_FOUND(res, opts);
650
718
  }
651
- return sendFile(req, res, path_1.default.join(pathname, 'index.html'), opts);
719
+ return sendFile(req, res, nodePath.join(pathname, 'index.html'), opts);
652
720
  }
653
721
  sendIt(req, res, pathname, stat, opts);
654
722
  });
@@ -675,32 +743,23 @@ function serveStatic(root, options) {
675
743
  * @returns An Express-compatible middleware function.
676
744
  * @throws {TypeError} When `filePath` is missing or not a string.
677
745
  */
678
- function serveFile(filePath, options) {
746
+ export function serveFile(filePath, options) {
679
747
  const opts = resolveOptions(filePath, options);
680
748
  return function (req, res, next) {
681
- // BUG FIX: the original `file()` function had the method-check logic
682
- // inverted. `methOk` was set to `true` when the method was NOT GET/HEAD
683
- // (i.e. the invalid case), and then `if (!methOk)` blocked valid methods.
684
- // The corrected logic: reject when the method is NOT GET or HEAD.
685
749
  if (req.method !== 'GET' && req.method !== 'HEAD') {
686
750
  if (opts.fallthrough)
687
751
  return next();
688
752
  return HTTP.NOT_ALLOWED(res, opts);
689
753
  }
690
754
  const pathname = opts.root;
691
- fs_1.default.stat(pathname, (err, stat) => {
755
+ fs.stat(pathname, (err, stat) => {
692
756
  if (err)
693
757
  return HTTP.INTERNAL_ERROR(res, opts, err.code ?? 'UNKNOWN');
694
- // BUG FIX: the original code referenced `err.code` inside the
695
- // `stat.isDirectory()` branch, where `err` is guaranteed to be `null`
696
- // (we only reach this branch when `fs.stat` succeeded). The correct
697
- // response for a misconfigured directory path is a plain 500 with a
698
- // descriptive message.
699
758
  if (stat.isDirectory())
700
759
  return HTTP.INTERNAL_ERROR(res, opts, 'EISDIR');
701
760
  sendIt(req, res, pathname, stat, opts);
702
761
  });
703
762
  };
704
763
  }
705
- exports.default = { serveStatic, serveFile, sendFile };
764
+ export default { serveStatic, serveFile, sendFile };
706
765
  //# sourceMappingURL=static.js.map