@chrischall/mcp-utils 3.0.1 → 3.0.3
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 +86 -13
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +6 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/fs/index.d.ts +1 -1
- package/dist/fs/index.d.ts.map +1 -1
- package/dist/fs/index.js +1 -1
- package/dist/fs/index.js.map +1 -1
- package/dist/fs/output.d.ts +26 -3
- package/dist/fs/output.d.ts.map +1 -1
- package/dist/fs/output.js +70 -5
- package/dist/fs/output.js.map +1 -1
- package/dist/fs/write.d.ts +19 -1
- package/dist/fs/write.d.ts.map +1 -1
- package/dist/fs/write.js +23 -0
- package/dist/fs/write.js.map +1 -1
- package/dist/graphql/client.d.ts +19 -1
- package/dist/graphql/client.d.ts.map +1 -1
- package/dist/graphql/client.js +49 -3
- package/dist/graphql/client.js.map +1 -1
- package/dist/html/index.d.ts +16 -4
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +118 -29
- package/dist/html/index.js.map +1 -1
- package/dist/http/body-limit.d.ts.map +1 -1
- package/dist/http/body-limit.js +2 -1
- package/dist/http/body-limit.js.map +1 -1
- package/dist/http/index.d.ts +10 -3
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +87 -21
- package/dist/http/index.js.map +1 -1
- package/dist/internal/tags.d.ts +16 -0
- package/dist/internal/tags.d.ts.map +1 -0
- package/dist/internal/tags.js +37 -0
- package/dist/internal/tags.js.map +1 -0
- package/dist/netguard/index.d.ts +2 -1
- package/dist/netguard/index.d.ts.map +1 -1
- package/dist/netguard/index.js +9 -3
- package/dist/netguard/index.js.map +1 -1
- package/dist/scrape/index.d.ts +4 -3
- package/dist/scrape/index.d.ts.map +1 -1
- package/dist/scrape/index.js +69 -38
- package/dist/scrape/index.js.map +1 -1
- package/dist/session/index.d.ts +5 -7
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +44 -26
- package/dist/session/index.js.map +1 -1
- package/docs/CONFIRM-TOKEN.md +9 -4
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -696,7 +696,8 @@ without re-reading). Pass `readFile` to inject a reader in tests.
|
|
|
696
696
|
|
|
697
697
|
`fileBlob`, `readFileHead`, `resolveOutputDir`, `uniquePath`,
|
|
698
698
|
`writeBinaryOutput`, `writeFileSafe`, `writeUniqueFile`, `vetUploadFile`,
|
|
699
|
-
`sniffMimeBytes`, `bytesMatchMime`, `assertPathWithinRoots
|
|
699
|
+
`sniffMimeBytes`, `bytesMatchMime`, `assertPathWithinRoots`,
|
|
700
|
+
`extensionForMime`, `isSafeExtension`.
|
|
700
701
|
|
|
701
702
|
The binary-output kit (hoisted from gemini + flightaware) is the fleet
|
|
702
703
|
convention for tools that generate bytes: `resolveOutputDir(perCall,
|
|
@@ -711,6 +712,16 @@ Each name is claimed with an exclusive, no-follow create
|
|
|
711
712
|
(`O_CREAT | O_EXCL | O_NOFOLLOW`), so two writers can't pick the same name and
|
|
712
713
|
a symlink planted at the name is skipped, never written through.
|
|
713
714
|
|
|
715
|
+
**Extensions.** `extensionForMime(mime, { url?, fallback? })` is the one
|
|
716
|
+
MIME → extension table (`image/jpeg` → `jpg`, `video/quicktime` → `mov`,
|
|
717
|
+
`audio/mpeg` → `mp3`, …; parameters and case ignored), falling back to a plain
|
|
718
|
+
1–5 character subtype, then the URL path's extension, then `'bin'` — so gemini,
|
|
719
|
+
concur and splitwise need not each hand-roll one. Its result always passes
|
|
720
|
+
`isSafeExtension` (1–16 of `A-Z a-z 0-9 . _ -`, starting alphanumeric), which
|
|
721
|
+
`writeUniqueFile`, `writeBinaryOutput` and `uniquePath` now enforce with a
|
|
722
|
+
`TypeError`: the stem was always sanitised, but an extension such as
|
|
723
|
+
`/../../x` was joined verbatim and wrote outside `dir` (fleet-audit#1303).
|
|
724
|
+
|
|
714
725
|
**Safe writes** (from accessoticketing's `wx` writer and infinitecampus's
|
|
715
726
|
`writeConfined`): `writeFileSafe(path, bytes, { overwrite?, mode?, allowedRoots? })`
|
|
716
727
|
is one `open(O_NOFOLLOW | O_EXCL)` — it refuses an existing file (unless
|
|
@@ -786,8 +797,15 @@ The fleet CI enforces the opt-in: `scripts/audit-fs-confinement.mjs` (run by
|
|
|
786
797
|
chrischall/workflows' `reusable-mcp-ci.yml`) fails a server whose source calls
|
|
787
798
|
one of these three helpers, imported from this package, without `allowedRoots`
|
|
788
799
|
in the call's own arguments. `resolveOutputDir(undefined, …)` is exempt (no
|
|
789
|
-
per-call path).
|
|
790
|
-
|
|
800
|
+
per-call path). It also **warns** — without failing, unless `--strict` is
|
|
801
|
+
passed — on two shapes the rule cannot prove safe: an `allowedRoots` that
|
|
802
|
+
appears only inside a conditional spread (`...(roots ? { allowedRoots: roots }
|
|
803
|
+
: {})`, unconfined whenever the condition is falsy), and a raw `node:fs` write
|
|
804
|
+
/ append / mkdir / `createWriteStream` whose path is not a literal (use
|
|
805
|
+
`writeFileSafe` / `writeUniqueFile` with `allowedRoots` when any part of it can
|
|
806
|
+
come from a tool argument). The scripts are not in the npm package, so run it
|
|
807
|
+
from a clone of this repo: `node scripts/audit-fs-confinement.mjs ../your-mcp
|
|
808
|
+
[--strict]`.
|
|
791
809
|
|
|
792
810
|
### `http` — bearer API-client kit
|
|
793
811
|
|
|
@@ -940,8 +958,14 @@ const api = createApiClient({ baseUrl, getToken, maxResponseBytes: 5 * 1024 * 10
|
|
|
940
958
|
const receipt = await api.fetchRaw('GET', apiPath`/receipts/${id}`, { maxBytes: 25 * 1024 * 1024 });
|
|
941
959
|
```
|
|
942
960
|
|
|
943
|
-
Redirects: by default `createApiClient` leaves `fetch` to follow them
|
|
944
|
-
|
|
961
|
+
Redirects: by default `createApiClient` leaves `fetch` to follow them. `fetch`
|
|
962
|
+
strips `Authorization` on a cross-origin hop, but re-sends every other header —
|
|
963
|
+
so a credential in a custom `tokenHeader` (`x-api-key`, `x-goog-api-key`, …)
|
|
964
|
+
would follow the `Location` to any host. A client with `tokenHeader` and no
|
|
965
|
+
`redirect` option therefore follows redirects itself (like `fetch`, up to 20
|
|
966
|
+
hops, 303 / POST-after-301/302 becoming a GET) and drops the `tokenHeader`,
|
|
967
|
+
`Authorization`, `Cookie` and `Proxy-Authorization` headers from the first hop
|
|
968
|
+
that leaves the base origin onward. Pass `redirect: 'same-origin'` to have
|
|
945
969
|
the client follow them itself: each `Location` is checked against the base
|
|
946
970
|
origin before anything is re-sent, and a hop to another origin, a scheme
|
|
947
971
|
downgrade or a hop that adds userinfo throws `RedirectRefusedError`.
|
|
@@ -1401,7 +1425,11 @@ const data = JSON.parse(stripJsonGuard(body)); // )]}' while(1); for(;;);
|
|
|
1401
1425
|
|
|
1402
1426
|
`isCloudflareChallenge` matches the DEFINITIVE interstitial markers only
|
|
1403
1427
|
(`_cf_chl_opt`, `<title>Just a moment`) — never `cdn-cgi/challenge-platform`,
|
|
1404
|
-
which Cloudflare inlines on cleared pages too. `
|
|
1428
|
+
which Cloudflare inlines on cleared pages too. It, `stripHtml`, and the deep
|
|
1429
|
+
walkers are linear on hostile input and safe to run on a whole upstream body:
|
|
1430
|
+
the tag scans are single forward passes (fleet-audit#1197) and
|
|
1431
|
+
`deepFindObject` / `deepCollectArrays` use an explicit stack, so a blob nested
|
|
1432
|
+
50 000 deep does not overflow the call stack (fleet-audit#1296). `decodeHtmlEntities` decodes
|
|
1405
1433
|
`&` LAST so attribute-escaped JSON survives one level, and leaves a numeric
|
|
1406
1434
|
reference that is not a character — out of range, or a lone surrogate
|
|
1407
1435
|
(U+D800–U+DFFF) — verbatim, so it neither throws nor emits an unpaired UTF-16
|
|
@@ -1705,6 +1733,9 @@ turned up behaviour the first cut did not have:
|
|
|
1705
1733
|
and for anything serving several users from one process, where a
|
|
1706
1734
|
single-record file would hand one user's token to the next. Keys normalize
|
|
1707
1735
|
trim+lowercase by default, because they are account identities, not origins.
|
|
1736
|
+
A file that does not parse to an object is moved to `<file>.corrupt` (warned
|
|
1737
|
+
on stderr) before the store starts empty, as `SessionStore` does — so one
|
|
1738
|
+
account's next save cannot erase every other account's record.
|
|
1708
1739
|
Writes are whole-file read-modify-write, so two processes saving different
|
|
1709
1740
|
keys at the same instant can drop one update — the loser re-authenticates
|
|
1710
1741
|
rather than reading anything wrong, which is the right trade for a credential
|
|
@@ -2185,6 +2216,8 @@ maps every outcome onto the package's existing error types:
|
|
|
2185
2216
|
| non-JSON 4xx/5xx | `UpstreamHttpError` (redacted `formatApiError` excerpt) |
|
|
2186
2217
|
| non-JSON or empty 2xx, or no `data` | `GraphqlResponseError` ("usually a challenge or error page") |
|
|
2187
2218
|
| timeout (default 30 s, body read included) / dropped connection | `GraphqlTransportError` — `.timedOut`, `.outcomeUnknown` |
|
|
2219
|
+
| body over `maxResponseBytes` (default 16 MiB, `GRAPHQL_DEFAULT_MAX_RESPONSE_BYTES`; `Infinity` = off) | `ResponseTooLargeError` (`kind: 'too_large'`) — refused on `Content-Length` or cancelled mid-stream |
|
|
2220
|
+
| the `headers()` hook throws (a token refresh fails) | that error, untouched — nothing was sent, so it is never a transport error or outcome-unknown |
|
|
2188
2221
|
|
|
2189
2222
|
`mapError` claims a failure first (e.g. "FORBIDDEN is a permission denial");
|
|
2190
2223
|
`execute()` returns the envelope instead of throwing on `errors[]`, for raw
|
|
@@ -2229,9 +2262,20 @@ walks the DOM: block boundaries (`<p>`, `<li>`, `<td>`, `<br>`, …) become word
|
|
|
2229
2262
|
breaks, inline markup stays joined (`<b>F</b>ree` → `Free`), `<script>` /
|
|
2230
2263
|
`<style>` / JSON-LD / `<noscript>` / `<template>` / `<iframe>` / `<svg>` content
|
|
2231
2264
|
is dropped, and every named entity decodes — use it for article, post and
|
|
2232
|
-
message bodies. `extractPlainTextFromHtml` is the older dependency-free
|
|
2233
|
-
|
|
2234
|
-
|
|
2265
|
+
message bodies. `extractPlainTextFromHtml` is the older dependency-free pass
|
|
2266
|
+
(every tag becomes a space, so `<b>F</b>ree` → `F ree`; entities through
|
|
2267
|
+
`decodeHtmlEntities`, the same table as `scrape`); its output is unchanged for
|
|
2268
|
+
existing callers.
|
|
2269
|
+
|
|
2270
|
+
Both are linear on hostile input. `extractPlainTextFromHtml` strips tags with a
|
|
2271
|
+
forward scan, not `/<[^>]+>/g` (quadratic on a withheld `>`: 14 s on 200 KB).
|
|
2272
|
+
The DOM helpers (`htmlToReadableText`, `parsePropertyTable`,
|
|
2273
|
+
`findLinksUnderHeading`) bound node-html-parser's unclosed-tag repair, which is
|
|
2274
|
+
superlinear (8000 unclosed `<div>` took 23 s): past
|
|
2275
|
+
`HTML_UNCLOSED_REPAIR_MAX` (500) never-closed elements, those opening tags are
|
|
2276
|
+
cut from the source first — the same tree the parser's repair would build, in
|
|
2277
|
+
one linear pass (fleet-audit#1197). There is no size cap; a 2 MB well-formed
|
|
2278
|
+
page parses in well under 100 ms.
|
|
2235
2279
|
|
|
2236
2280
|
### `netguard` — SSRF guard for third-party URLs *(subpath, optional peer)*
|
|
2237
2281
|
|
|
@@ -2345,10 +2389,39 @@ exit code unless you pass `--strict`**:
|
|
|
2345
2389
|
(`server.mcp_config.env` + `user_config`), `server.json`
|
|
2346
2390
|
(`packages[].environmentVariables`) and `.mcp.json`: undeclared reads, dead
|
|
2347
2391
|
declarations, a var marked required that the code only reads optionally, a
|
|
2348
|
-
`user_config` entry nothing passes to the server, and
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2392
|
+
`user_config` entry nothing passes to the server, and the
|
|
2393
|
+
`${CLAUDE_PLUGIN_ROOT}` rule below. `MCP_*` keys (this library's own knobs)
|
|
2394
|
+
and runtime vars (`NODE_ENV`, `HOME`, …) are ignored. A key built at runtime
|
|
2395
|
+
(`` readEnvVar(`${P}_TOKEN`) ``) is invisible.
|
|
2396
|
+
|
|
2397
|
+
The `${CLAUDE_PLUGIN_ROOT}` rule follows the MCP config the **plugin actually
|
|
2398
|
+
uses**, because Claude Code defines `CLAUDE_PLUGIN_ROOT` only for a plugin
|
|
2399
|
+
install: a project-scoped `.mcp.json` that uses it launches `node /dist/…`
|
|
2400
|
+
and the server dies at startup (office-outlook-mcp; tempo-api-mcp regressed by
|
|
2401
|
+
following an earlier version of this lint). `.claude-plugin/plugin.json`
|
|
2402
|
+
`mcpServers` is resolved against the plugin root (the directory holding
|
|
2403
|
+
`.claude-plugin/`):
|
|
2404
|
+
|
|
2405
|
+
| `mcpServers` | Plugin config | Root `.mcp.json` | Warns on |
|
|
2406
|
+
| --- | --- | --- | --- |
|
|
2407
|
+
| `"./.mcp.json"` | the root `.mcp.json` | plugin config | a cwd-relative path in it |
|
|
2408
|
+
| absent | the root `.mcp.json` (Claude Code's default) | plugin config | a cwd-relative path in it |
|
|
2409
|
+
| another path, e.g. `"./.claude-plugin/mcp.json"` | that file | project-scoped | a cwd-relative path in that file; `${CLAUDE_PLUGIN_ROOT}` in the root file; a path that does not exist |
|
|
2410
|
+
| inline object (or an array mixing shapes) | the inline servers (and any named files) | project-scoped unless the array names it | a cwd-relative path inline; `${CLAUDE_PLUGIN_ROOT}` in the root file |
|
|
2411
|
+
| `mcp` instead (any value) | ignored by Claude Code, so the root `.mcp.json` | resolved as if `mcpServers` held the same value | always `plugin-json-mcp-ignored`: softer for `"./.mcp.json"`, stronger for any other path |
|
|
2412
|
+
|
|
2413
|
+
`mcp` is not a key Claude Code reads (`claude plugin validate`: "Unknown field
|
|
2414
|
+
'mcp'"), so every `mcp` key is reported as `plugin-json-mcp-ignored` (a
|
|
2415
|
+
warning; an error only under `--strict`). `"mcp": "./.mcp.json"` names the
|
|
2416
|
+
default anyway, so its message says it is harmless today but should be
|
|
2417
|
+
renamed to `mcpServers` — copies of the key with other paths broke plugin
|
|
2418
|
+
installs. Any other `mcp` value is resolved as the author meant (so the root
|
|
2419
|
+
file is not told to use the variable) and reported more strongly, because a
|
|
2420
|
+
plugin install really loads the root `.mcp.json`. `.mcpb`/`.dxt` bundles and URLs are skipped. One
|
|
2421
|
+
case is not checked: Claude Code loads the root `.mcp.json` first and merges
|
|
2422
|
+
the declared config over it, so a project-scoped root server whose name the
|
|
2423
|
+
plugin config does not replace also starts in a plugin install whose source
|
|
2424
|
+
ships that file.
|
|
2352
2425
|
|
|
2353
2426
|
The env check reads every `.js`/`.mjs`/`.cjs` under the entry's directory,
|
|
2354
2427
|
skipping `node_modules`, dot-directories, `test`/`tests`/`__tests__`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.js
CHANGED
|
@@ -321,7 +321,11 @@ const GOOGLE_OAUTH_TOKEN_RE = /(?<![A-Za-z0-9+/])(?:ya29\.|1\/\/)[A-Za-z0-9._-]{
|
|
|
321
321
|
// A PKCE `code_verifier` (and Canvas's bare `?verifier=` file capability) is a
|
|
322
322
|
// bearer secret: whoever holds it can complete the exchange or fetch the file
|
|
323
323
|
// (fleet audit library-candidates §16 — canvas-parent #380 quoted one in a 404).
|
|
324
|
-
|
|
324
|
+
// The anchor also takes `#` and `;`: an OAuth implicit-grant redirect carries
|
|
325
|
+
// its token in the FRAGMENT (`…/cb#access_token=…`), and `;name=value` path
|
|
326
|
+
// params carry them too; `api_token` (Pipedrive/Todoist-style), bare `secret`
|
|
327
|
+
// and bare `auth` are credential params as well (fleet-audit#1297).
|
|
328
|
+
const QUERY_SECRET_RE = new RegExp(`([?&#;](?:(?:access|refresh|id|auth|session|csrf|xsrf|api)[_-]?token|client[_-]?secret|api[_-]?secret|api[_-]?key|password|passwd|signature|secret|token|auth|key|sig|(?:code[_-]?)?verifier|(?:php|j)?sess(?:ion)?[_-]?id|sid|x[-_]${HEADER_NAME_RUN}?(?:api[-_]?key|token|secret|auth)${HEADER_NAME_RUN})=)[^&#\\s"'<>\`]+`, 'gi');
|
|
325
329
|
// An OAuth authorization code (`?code=…` on a redirect). Only values of 16+
|
|
326
330
|
// characters: real authorization codes are long opaque strings, while a short
|
|
327
331
|
// `code=E123` is an error/status code worth keeping for diagnosis.
|
|
@@ -373,6 +377,7 @@ const JSON_SECRET_KEYS = [
|
|
|
373
377
|
'api[_-]?secret',
|
|
374
378
|
'(?:x[_-])?api[_-]?key',
|
|
375
379
|
'private[_-]?key',
|
|
380
|
+
'aws[_-]?secret[_-]?access[_-]?key', // fleet-audit#1297
|
|
376
381
|
'code[_-]?verifier', // PKCE; a bare `verifier` key is too generic for JSON
|
|
377
382
|
`x[_-]${HEADER_NAME_RUN}?(?:api[_-]?key|token|secret|auth)${HEADER_NAME_RUN}`, // bounded like HEADER_SECRET_RE
|
|
378
383
|
'(?:proxy-)?authorization',
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/index.d.ts
CHANGED
|
@@ -41,6 +41,6 @@ export declare function readFileHead(path: string, bytes: number, opts?: ReadFil
|
|
|
41
41
|
export * from './output.js';
|
|
42
42
|
export { assertPathWithinRoots } from './confine.js';
|
|
43
43
|
export { bytesMatchMime, sniffMimeBytes } from './magic.js';
|
|
44
|
-
export { FileWriteRefusedError, writeFileSafe, writeUniqueFile, type FileWriteRefusal, type WriteFileSafeOptions, type WriteUniqueFileOptions, } from './write.js';
|
|
44
|
+
export { FileWriteRefusedError, isSafeExtension, writeFileSafe, writeUniqueFile, type FileWriteRefusal, type WriteFileSafeOptions, type WriteUniqueFileOptions, } from './write.js';
|
|
45
45
|
export { UploadRefusedError, vetUploadFile, type UploadRefusal, type VetUploadOptions, type VettedUpload, } from './upload-guard.js';
|
|
46
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/fs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fs/index.ts"],"names":[],"mappings":"AAgBA,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CActF;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB/G;AAED,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fs/index.ts"],"names":[],"mappings":"AAgBA,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CActF;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB/G;AAED,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC"}
|
package/dist/fs/index.js
CHANGED
|
@@ -68,6 +68,6 @@ export async function readFileHead(path, bytes, opts = {}) {
|
|
|
68
68
|
export * from './output.js';
|
|
69
69
|
export { assertPathWithinRoots } from './confine.js';
|
|
70
70
|
export { bytesMatchMime, sniffMimeBytes } from './magic.js';
|
|
71
|
-
export { FileWriteRefusedError, writeFileSafe, writeUniqueFile, } from './write.js';
|
|
71
|
+
export { FileWriteRefusedError, isSafeExtension, writeFileSafe, writeUniqueFile, } from './write.js';
|
|
72
72
|
export { UploadRefusedError, vetUploadFile, } from './upload-guard.js';
|
|
73
73
|
//# sourceMappingURL=index.js.map
|
package/dist/fs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fs/index.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/output.d.ts
CHANGED
|
@@ -45,7 +45,8 @@ export declare function resolveOutputDir(perCall: string | undefined, envVar: st
|
|
|
45
45
|
/**
|
|
46
46
|
* A non-overwriting path for `base.ext` in `dir`: the bare name when free,
|
|
47
47
|
* else `base-2.ext`, `base-3.ext`, … (gemini's numbering). `ext` is passed
|
|
48
|
-
* without the dot
|
|
48
|
+
* without the dot and must pass {@link isSafeExtension} (a `TypeError`
|
|
49
|
+
* otherwise). `base` is sanitized to a single path component so a `../…`
|
|
49
50
|
* stem can't write outside `dir`.
|
|
50
51
|
*
|
|
51
52
|
* Check-then-use: the name can be taken (or a symlink planted there) between
|
|
@@ -53,6 +54,26 @@ export declare function resolveOutputDir(perCall: string | undefined, envVar: st
|
|
|
53
54
|
* {@link writeBinaryOutput}, which claim the name with an exclusive create.
|
|
54
55
|
*/
|
|
55
56
|
export declare function uniquePath(dir: string, base: string, ext: string): string;
|
|
57
|
+
/** Options for {@link extensionForMime}. */
|
|
58
|
+
export interface ExtensionForMimeOptions {
|
|
59
|
+
/** The URL the bytes came from; its path's extension is the second fallback. */
|
|
60
|
+
url?: string;
|
|
61
|
+
/** What to return when nothing else fits. Default `'bin'`. Must pass {@link isSafeExtension}. */
|
|
62
|
+
fallback?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The file extension (no dot) for a MIME type: the known-type table (`image/
|
|
66
|
+
* jpeg` → `jpg`, `video/quicktime` → `mov`, …; parameters and case ignored),
|
|
67
|
+
* else the subtype when it is a plain 1–5 character `[a-z0-9]` word (an `x-`
|
|
68
|
+
* prefix dropped: `image/x-icon` → `icon`), else the extension of `opts.url`'s
|
|
69
|
+
* path when it has a plain one, else `opts.fallback` (`'bin'`). The result
|
|
70
|
+
* always passes {@link isSafeExtension}, so it can go straight to
|
|
71
|
+
* `writeUniqueFile` / `writeBinaryOutput` — whatever the upstream's
|
|
72
|
+
* Content-Type said (fleet-audit#1301, #1303).
|
|
73
|
+
*
|
|
74
|
+
* @throws {TypeError} when `opts.fallback` is not a safe extension.
|
|
75
|
+
*/
|
|
76
|
+
export declare function extensionForMime(mime: string | null | undefined, opts?: ExtensionForMimeOptions): string;
|
|
56
77
|
/** Options for {@link writeBinaryOutput}. */
|
|
57
78
|
export interface WriteBinaryOutputOptions {
|
|
58
79
|
/** Directory to write into (already resolved — see {@link resolveOutputDir}). */
|
|
@@ -63,14 +84,16 @@ export interface WriteBinaryOutputOptions {
|
|
|
63
84
|
base64: string;
|
|
64
85
|
/** MIME type used to derive the extension when `extension` is not given. */
|
|
65
86
|
mimeType?: string;
|
|
66
|
-
/** Explicit extension (no dot); overrides the MIME lookup. */
|
|
87
|
+
/** Explicit extension (no dot); overrides the MIME lookup. Must pass {@link isSafeExtension}. */
|
|
67
88
|
extension?: string;
|
|
68
89
|
/** File mode for the new file (before umask), e.g. `0o600`. Default `0o666`. */
|
|
69
90
|
mode?: number;
|
|
70
91
|
}
|
|
71
92
|
/**
|
|
72
93
|
* Decode `base64` and write it to a **non-overwriting** file in `dir`, deriving
|
|
73
|
-
* the extension from `extension`
|
|
94
|
+
* the extension from `extension` (which must pass {@link isSafeExtension}; a
|
|
95
|
+
* `TypeError` otherwise) → {@link extensionForMime} of the MIME type (→
|
|
96
|
+
* `'bin'`). Returns the
|
|
74
97
|
* absolute path written. The caller returns that path from the tool result
|
|
75
98
|
* (with an `inline` flag for base64 via `imageResult` when the user asks).
|
|
76
99
|
*
|
package/dist/fs/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/fs/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK5E,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,uBAA4B,GACjC,MAAM,CAaR;AAiBD
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/fs/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK5E,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,uBAA4B,GACjC,MAAM,CAaR;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CASzE;AA6CD,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,GAAE,uBAA4B,GAAG,MAAM,CAkB5G;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAGxE"}
|
package/dist/fs/output.js
CHANGED
|
@@ -17,7 +17,7 @@ import { join } from 'node:path';
|
|
|
17
17
|
import { expandPath, readEnvVar } from '../config/index.js';
|
|
18
18
|
import { McpToolError } from '../errors/index.js';
|
|
19
19
|
import { assertPathWithinRoots } from './confine.js';
|
|
20
|
-
import { sanitizeBaseName, writeUniqueFileSync } from './write.js';
|
|
20
|
+
import { assertSafeExtension, isSafeExtension, sanitizeBaseName, writeUniqueFileSync } from './write.js';
|
|
21
21
|
/**
|
|
22
22
|
* Resolve the directory a binary-output tool should write into:
|
|
23
23
|
* the per-call argument → the named env var → `~/Downloads/<name>` (when
|
|
@@ -65,7 +65,8 @@ function defaultOutputDir(envVar, name) {
|
|
|
65
65
|
/**
|
|
66
66
|
* A non-overwriting path for `base.ext` in `dir`: the bare name when free,
|
|
67
67
|
* else `base-2.ext`, `base-3.ext`, … (gemini's numbering). `ext` is passed
|
|
68
|
-
* without the dot
|
|
68
|
+
* without the dot and must pass {@link isSafeExtension} (a `TypeError`
|
|
69
|
+
* otherwise). `base` is sanitized to a single path component so a `../…`
|
|
69
70
|
* stem can't write outside `dir`.
|
|
70
71
|
*
|
|
71
72
|
* Check-then-use: the name can be taken (or a symlink planted there) between
|
|
@@ -73,6 +74,7 @@ function defaultOutputDir(envVar, name) {
|
|
|
73
74
|
* {@link writeBinaryOutput}, which claim the name with an exclusive create.
|
|
74
75
|
*/
|
|
75
76
|
export function uniquePath(dir, base, ext) {
|
|
77
|
+
assertSafeExtension(ext, 'uniquePath');
|
|
76
78
|
const safe = sanitizeBaseName(base);
|
|
77
79
|
const first = join(dir, `${safe}.${ext}`);
|
|
78
80
|
if (!existsSync(first))
|
|
@@ -83,24 +85,87 @@ export function uniquePath(dir, base, ext) {
|
|
|
83
85
|
return candidate;
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Extensions for the MIME types the fleet's binary tools emit — the union of
|
|
90
|
+
* mcp-utils' own table and the ones gemini-mcp (`mediaExt`), concur-mcp
|
|
91
|
+
* (`extensionForMime`) and splitwise-mcp (`extensionFor`) hand-rolled.
|
|
92
|
+
*/
|
|
87
93
|
const MIME_EXT = {
|
|
88
94
|
'image/png': 'png',
|
|
89
95
|
'image/jpeg': 'jpg',
|
|
96
|
+
'image/jpg': 'jpg',
|
|
97
|
+
'image/pjpeg': 'jpg',
|
|
90
98
|
'image/webp': 'webp',
|
|
91
99
|
'image/gif': 'gif',
|
|
92
100
|
'image/heic': 'heic',
|
|
101
|
+
'image/heif': 'heif',
|
|
93
102
|
'image/avif': 'avif',
|
|
103
|
+
'image/tiff': 'tif',
|
|
104
|
+
'image/bmp': 'bmp',
|
|
105
|
+
'image/svg+xml': 'svg',
|
|
94
106
|
'application/pdf': 'pdf',
|
|
95
107
|
'application/json': 'json',
|
|
96
108
|
'application/zip': 'zip',
|
|
109
|
+
'application/gzip': 'gz',
|
|
110
|
+
'text/plain': 'txt',
|
|
111
|
+
'text/csv': 'csv',
|
|
112
|
+
'text/html': 'html',
|
|
113
|
+
'text/calendar': 'ics',
|
|
97
114
|
'audio/midi': 'mid',
|
|
115
|
+
'audio/mpeg': 'mp3',
|
|
116
|
+
'audio/mp3': 'mp3',
|
|
117
|
+
'audio/wav': 'wav',
|
|
118
|
+
'audio/wave': 'wav',
|
|
119
|
+
'audio/x-wav': 'wav',
|
|
120
|
+
'audio/ogg': 'ogg',
|
|
121
|
+
'audio/webm': 'webm',
|
|
122
|
+
'audio/mp4': 'm4a',
|
|
98
123
|
'video/mp4': 'mp4',
|
|
99
124
|
'video/quicktime': 'mov',
|
|
125
|
+
'video/webm': 'webm',
|
|
100
126
|
};
|
|
127
|
+
/** A MIME subtype or URL extension short and plain enough to use as-is. */
|
|
128
|
+
const PLAIN_EXT = /^[a-z0-9]{1,5}$/;
|
|
129
|
+
/**
|
|
130
|
+
* The file extension (no dot) for a MIME type: the known-type table (`image/
|
|
131
|
+
* jpeg` → `jpg`, `video/quicktime` → `mov`, …; parameters and case ignored),
|
|
132
|
+
* else the subtype when it is a plain 1–5 character `[a-z0-9]` word (an `x-`
|
|
133
|
+
* prefix dropped: `image/x-icon` → `icon`), else the extension of `opts.url`'s
|
|
134
|
+
* path when it has a plain one, else `opts.fallback` (`'bin'`). The result
|
|
135
|
+
* always passes {@link isSafeExtension}, so it can go straight to
|
|
136
|
+
* `writeUniqueFile` / `writeBinaryOutput` — whatever the upstream's
|
|
137
|
+
* Content-Type said (fleet-audit#1301, #1303).
|
|
138
|
+
*
|
|
139
|
+
* @throws {TypeError} when `opts.fallback` is not a safe extension.
|
|
140
|
+
*/
|
|
141
|
+
export function extensionForMime(mime, opts = {}) {
|
|
142
|
+
const fallback = opts.fallback ?? 'bin';
|
|
143
|
+
assertSafeExtension(fallback, 'extensionForMime');
|
|
144
|
+
const type = (mime ?? '').split(';', 1)[0].trim().toLowerCase();
|
|
145
|
+
const known = MIME_EXT[type];
|
|
146
|
+
if (known !== undefined)
|
|
147
|
+
return known;
|
|
148
|
+
const slash = type.indexOf('/');
|
|
149
|
+
const subtype = slash > 0 && type.indexOf('/', slash + 1) < 0 ? type.slice(slash + 1).replace(/^x-/, '') : '';
|
|
150
|
+
if (PLAIN_EXT.test(subtype))
|
|
151
|
+
return subtype;
|
|
152
|
+
if (opts.url !== undefined) {
|
|
153
|
+
try {
|
|
154
|
+
const fromUrl = /\.([a-z0-9]{1,5})$/i.exec(new URL(opts.url).pathname)?.[1]?.toLowerCase();
|
|
155
|
+
if (fromUrl !== undefined && isSafeExtension(fromUrl))
|
|
156
|
+
return fromUrl;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Not a URL: no extension to read from it.
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return fallback;
|
|
163
|
+
}
|
|
101
164
|
/**
|
|
102
165
|
* Decode `base64` and write it to a **non-overwriting** file in `dir`, deriving
|
|
103
|
-
* the extension from `extension`
|
|
166
|
+
* the extension from `extension` (which must pass {@link isSafeExtension}; a
|
|
167
|
+
* `TypeError` otherwise) → {@link extensionForMime} of the MIME type (→
|
|
168
|
+
* `'bin'`). Returns the
|
|
104
169
|
* absolute path written. The caller returns that path from the tool result
|
|
105
170
|
* (with an `inline` flag for base64 via `imageResult` when the user asks).
|
|
106
171
|
*
|
|
@@ -111,7 +176,7 @@ const MIME_EXT = {
|
|
|
111
176
|
* write created its target outside `dir`.
|
|
112
177
|
*/
|
|
113
178
|
export function writeBinaryOutput(opts) {
|
|
114
|
-
const ext = opts.extension ?? (opts.mimeType
|
|
179
|
+
const ext = opts.extension ?? extensionForMime(opts.mimeType);
|
|
115
180
|
return writeUniqueFileSync(opts.dir, opts.baseName, ext, Buffer.from(opts.base64, 'base64'), opts.mode);
|
|
116
181
|
}
|
|
117
182
|
//# sourceMappingURL=output.js.map
|
package/dist/fs/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/fs/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/fs/output.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/write.d.ts
CHANGED
|
@@ -65,13 +65,31 @@ export declare function writeFileSafe(path: string, bytes: Uint8Array, opts?: Wr
|
|
|
65
65
|
* output directory. A stem that sanitizes away entirely falls back to `'file'`.
|
|
66
66
|
*/
|
|
67
67
|
export declare function sanitizeBaseName(base: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Whether `ext` (no leading dot) is safe to append to a filename: 1–16
|
|
70
|
+
* characters of `A-Z a-z 0-9 . _ -`, starting with a letter or digit — so no
|
|
71
|
+
* path separator, no leading dot, no `..` component, no control or reserved
|
|
72
|
+
* character. Multi-part extensions (`tar.gz`) pass.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isSafeExtension(ext: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Throw a `TypeError` unless {@link isSafeExtension}. The stem is sanitised,
|
|
77
|
+
* but an extension such as `/../../elsewhere/x` would otherwise be joined
|
|
78
|
+
* verbatim and write outside `dir` — past `allowedRoots` too, which confines
|
|
79
|
+
* only `dir` (fleet-audit#1303).
|
|
80
|
+
*/
|
|
81
|
+
export declare function assertSafeExtension(ext: string, caller: string): void;
|
|
68
82
|
/** Options for {@link writeUniqueFile}. */
|
|
69
83
|
export interface WriteUniqueFileOptions {
|
|
70
84
|
/** Directory to write into; created (recursively) if missing. */
|
|
71
85
|
dir: string;
|
|
72
86
|
/** Filename stem (no extension); sanitized to one path component. */
|
|
73
87
|
baseName: string;
|
|
74
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Extension, without the dot. Must pass {@link isSafeExtension} (a
|
|
90
|
+
* `TypeError` otherwise); derive one from a MIME type with
|
|
91
|
+
* `extensionForMime`.
|
|
92
|
+
*/
|
|
75
93
|
extension: string;
|
|
76
94
|
bytes: Uint8Array;
|
|
77
95
|
/** As {@link WriteFileSafeOptions.mode}. */
|
package/dist/fs/write.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/fs/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;AAEtE;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAWjD;CACF;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAkDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBrH;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAUD,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/fs/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;AAEtE;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAWjD;CACF;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAkDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBrH;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrE;AAUD,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBnF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBxH"}
|
package/dist/fs/write.js
CHANGED
|
@@ -139,6 +139,27 @@ export function sanitizeBaseName(base) {
|
|
|
139
139
|
.trim();
|
|
140
140
|
return safe.length > 0 ? safe : 'file';
|
|
141
141
|
}
|
|
142
|
+
const SAFE_EXTENSION = /^[A-Za-z0-9][A-Za-z0-9._-]{0,15}$/;
|
|
143
|
+
/**
|
|
144
|
+
* Whether `ext` (no leading dot) is safe to append to a filename: 1–16
|
|
145
|
+
* characters of `A-Z a-z 0-9 . _ -`, starting with a letter or digit — so no
|
|
146
|
+
* path separator, no leading dot, no `..` component, no control or reserved
|
|
147
|
+
* character. Multi-part extensions (`tar.gz`) pass.
|
|
148
|
+
*/
|
|
149
|
+
export function isSafeExtension(ext) {
|
|
150
|
+
return SAFE_EXTENSION.test(ext);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Throw a `TypeError` unless {@link isSafeExtension}. The stem is sanitised,
|
|
154
|
+
* but an extension such as `/../../elsewhere/x` would otherwise be joined
|
|
155
|
+
* verbatim and write outside `dir` — past `allowedRoots` too, which confines
|
|
156
|
+
* only `dir` (fleet-audit#1303).
|
|
157
|
+
*/
|
|
158
|
+
export function assertSafeExtension(ext, caller) {
|
|
159
|
+
if (!isSafeExtension(ext)) {
|
|
160
|
+
throw new TypeError(`${caller}: extension must be 1-16 characters of A-Z a-z 0-9 . _ - starting with a letter or digit, got ${JSON.stringify(ext)}.`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
142
163
|
/** The n-th candidate name: `base.ext`, then `base-2.ext`, `base-3.ext`, … */
|
|
143
164
|
function candidate(dir, safeBase, ext, n) {
|
|
144
165
|
return join(dir, n === 1 ? `${safeBase}.${ext}` : `${safeBase}-${n}.${ext}`);
|
|
@@ -156,6 +177,7 @@ const DEFAULT_MAX_ATTEMPTS = 1000;
|
|
|
156
177
|
* `allowedRoots`; `exists` after `maxAttempts` taken names.
|
|
157
178
|
*/
|
|
158
179
|
export async function writeUniqueFile(opts) {
|
|
180
|
+
assertSafeExtension(opts.extension, 'writeUniqueFile');
|
|
159
181
|
const dir = confine(opts.dir, opts.allowedRoots);
|
|
160
182
|
await mkdir(dir, { recursive: true });
|
|
161
183
|
// Re-check now it exists, in case a component was swapped for a symlink.
|
|
@@ -180,6 +202,7 @@ export async function writeUniqueFile(opts) {
|
|
|
180
202
|
* `writeBinaryOutput`. Not exported from the package.
|
|
181
203
|
*/
|
|
182
204
|
export function writeUniqueFileSync(dir, baseName, ext, bytes, mode) {
|
|
205
|
+
assertSafeExtension(ext, 'writeBinaryOutput');
|
|
183
206
|
mkdirSync(dir, { recursive: true });
|
|
184
207
|
const safe = sanitizeBaseName(baseName);
|
|
185
208
|
for (let n = 1;; n++) {
|