yt-dlp-bridge 0.2.0 → 0.5.0

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 (55) hide show
  1. package/README.md +42 -7
  2. package/dist/config.d.ts +0 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +4 -5
  5. package/dist/config.js.map +1 -1
  6. package/dist/environment.d.ts.map +1 -1
  7. package/dist/environment.js +2 -2
  8. package/dist/environment.js.map +1 -1
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/errors.js +3 -5
  11. package/dist/errors.js.map +1 -1
  12. package/dist/extractorArgs.d.ts +22 -0
  13. package/dist/extractorArgs.d.ts.map +1 -0
  14. package/dist/extractorArgs.js +115 -0
  15. package/dist/extractorArgs.js.map +1 -0
  16. package/dist/filesystem.d.ts.map +1 -1
  17. package/dist/filesystem.js +4 -2
  18. package/dist/filesystem.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/info.d.ts +166 -0
  24. package/dist/info.d.ts.map +1 -0
  25. package/dist/info.js +131 -0
  26. package/dist/info.js.map +1 -0
  27. package/dist/option-catalog.js +23 -21
  28. package/dist/option-catalog.js.map +1 -1
  29. package/dist/output-events.d.ts +11 -0
  30. package/dist/output-events.d.ts.map +1 -1
  31. package/dist/output-events.js +31 -4
  32. package/dist/output-events.js.map +1 -1
  33. package/dist/parsers.d.ts +1 -2
  34. package/dist/parsers.d.ts.map +1 -1
  35. package/dist/parsers.js +86 -114
  36. package/dist/parsers.js.map +1 -1
  37. package/dist/redaction.d.ts +5 -3
  38. package/dist/redaction.d.ts.map +1 -1
  39. package/dist/redaction.js +17 -4
  40. package/dist/redaction.js.map +1 -1
  41. package/dist/runner.d.ts +27 -0
  42. package/dist/runner.d.ts.map +1 -1
  43. package/dist/runner.js +169 -20
  44. package/dist/runner.js.map +1 -1
  45. package/dist/schemas.d.ts +8 -13
  46. package/dist/schemas.d.ts.map +1 -1
  47. package/dist/schemas.js +2 -4
  48. package/dist/schemas.js.map +1 -1
  49. package/dist/types.d.ts +1 -9
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/workflow.d.ts +8 -0
  52. package/dist/workflow.d.ts.map +1 -1
  53. package/dist/workflow.js +79 -21
  54. package/dist/workflow.js.map +1 -1
  55. package/package.json +108 -82
package/README.md CHANGED
@@ -13,6 +13,9 @@ Source and contributions live in the Arroxy monorepo at [`packages/yt-dlp-bridge
13
13
 
14
14
  - [Install](#install)
15
15
  - [Features](#features)
16
+ - [What changed in 0.5.0](#what-changed-in-050)
17
+ - [What changed in 0.4.0](#what-changed-in-040)
18
+ - [What changed in 0.3.0](#what-changed-in-030)
16
19
  - [What changed in 0.2.0](#what-changed-in-020)
17
20
  - [Usage](#usage)
18
21
  - [API](#api)
@@ -42,10 +45,37 @@ Requires Node.js >= 22.13 and ESM.
42
45
  - Managed output policy for output roots, temp roots, archive files, overwrite behavior, and parent-directory traversal checks.
43
46
  - Secret redaction for auth flags, cookies, PO tokens, visitor data, proxies, signed URLs, and command previews.
44
47
  - Parsers for JSON lines, format lists, subtitle lists, thumbnail lists, progress output, final output paths, and live yt-dlp output events.
45
- - Low-level process runner using `spawn` with `shell: false`, bounded output capture, timeouts, and structured failures.
48
+ - Low-level process runner using `spawn` with `shell: false`: streams whole output lines (yt-dlp's `\r` progress redraws included), keeps a bounded tail of output, and on timeout or cancel kills the whole process tree, never a reaped pid.
49
+ - A Zod schema for yt-dlp's `info_dict` (`--dump-json` / `--dump-single-json` output).
46
50
  - Source-derived option catalog generated from `yt_dlp.options.create_parser`.
47
51
  - ESM and TypeScript declarations.
48
52
 
53
+ ## What changed in 0.5.0
54
+
55
+ 0.5.0 contains breaking changes and requires `ytdlp-errors` 1.3.0. 0.4.0 was never published; its change is listed under 0.4.0 below and ships in 0.5.0.
56
+
57
+ - **Breaking:** `CONFIG` is gone from `yt-dlp-bridge/config`. The package no longer reads `YTDLP_MCP_*` or the home directory at import: `planWorkflow` and `checkEnvironment` call `loadConfig()` when no `config` is passed, so they see the environment as it is at call time.
58
+ - **Breaking:** `parseProgress`, `ProgressEvent`, `ProgressEventPhaseSchema`/`ProgressEventPhase` and `PROGRESS_EVENT_PHASES` are removed. `parseYtDlpOutputLine` is the one progress parser: its `progress` event now also carries `total`, `speed` and `eta` from a `[download]` line.
59
+ - **Breaking:** `sanitizeMetadataItem` reads its input through the new `infoDictSchema`. A dict the schema rejects (a field of the wrong type, say) now sanitizes to `{}` instead of keeping the fields that happened to be valid. A playlist dict keeps only `id`, `title`, `webpageUrl`, `extractor`, `extractorKey` and `thumbnailCount`.
60
+ - **Breaking:** `SUBTITLE_MODES` is now ordered `sidecar`, `embed`, `subfolder`.
61
+ - New `yt-dlp-bridge/info` subpath: `infoDictSchema`, `ytDlpFormatSchema`, `ytDlpSubtitleTrackSchema`, the `InfoDict` / `VideoInfo` / `PlaylistInfo` / `MultiVideoInfo` / `UrlRedirectInfo` / `YtDlpFormat` / `YtDlpSubtitleTrack` types, and `isPlaylistLike` / `isUrlRedirect`.
62
+ - `runCommand` spawns the child as its own process group on Unix and kills the whole tree on timeout or cancel (`taskkill /T /F` on Windows), so an ffmpeg that yt-dlp forked no longer survives. It never signals a child that has already exited. New options: `onStdoutLine` / `onStderrLine` stream each whole, trimmed line as it arrives (if one throws, the child is killed and the run rejects with that error), and `logger` receives the warnings the runner absorbs. Output capture no longer copies the whole buffer on every chunk.
63
+ - New runner exports: `killProcessTree`, `splitOutputLines`, `createStreamTextReader`, `SPAWN_AS_PROCESS_GROUP`, and the `RunnerLogger`, `KillableProcess`, `StreamTextReader`, `StreamTextChunk` types.
64
+ - `toStructuredError` takes `unsupportedUrl` from the `ytdlp-errors` classifier instead of a regex of its own. A line such as `... is not a valid URL` still classifies; text that merely mentions an unsupported URL no longer does.
65
+ - `CallerMediaWorkflowInput` gains `downloadSections` (yt-dlp `--download-sections` values such as `*220-435`) and `forceKeyframesAtCuts`. A plan with sections lists ffmpeg as required and reports the cut as a side effect; an exact cut also reports the re-encode as a risk.
66
+ - `embed.chapters: false` now passes `--no-embed-chapters` (unless SponsorBlock marks segments as chapters). yt-dlp otherwise embeds chapters whenever `--add-metadata` is on.
67
+
68
+ ## What changed in 0.4.0
69
+
70
+ - Requires `ytdlp-errors` 1.2.0. `toStructuredError` can now return `kind: 'outputNotWritable'` when the output folder refuses writes (permission denied, read-only drive, or a privacy-protected folder), with a suggested fix to grant write access or choose another output root.
71
+
72
+ ## What changed in 0.3.0
73
+
74
+ - `parseYtDlpOutputLine` emits two new event kinds: `artifact` (a written description, info JSON, or thumbnail sidecar, with its `path`) and `transfer-retry` (yt-dlp's in-process `Got error: ... Retrying (n/m)` line, with `attempt` and `total`). `postprocess` events now carry the output `path` when yt-dlp prints one. Exhaustive `switch` statements over `YtDlpOutputEvent` need the two new cases.
75
+ - Media plans always pass `--socket-timeout`. `DownloadRetryPolicy` gains an optional `socketTimeout` (seconds), defaulting to yt-dlp's own 20s via `DEFAULT_SOCKET_TIMEOUT_SECONDS`.
76
+ - A media plan that replays `resume.loadInfoJsonPath` without an explicit `downloadRetryPolicy` now uses `INFO_JSON_DOWNLOAD_RETRY_POLICY`: 3 retries and a 15s socket timeout, so a pinned, unreachable CDN host fails in about a minute instead of about seven. Fragment retries keep the default budget. Pass `downloadRetryPolicy` to keep the previous behavior.
77
+ - `redactText`, `redactArgs`, and `excerpt` accept an optional `env` argument (default `process.env`). Setting `YTDLP_MCP_UNREDACTED=true` disables redaction and excerpt truncation for local debugging. `NODE_ENV` has no effect on redaction.
78
+
49
79
  ## What changed in 0.2.0
50
80
 
51
81
  `0.2.0` keeps `planWorkflow` as the single planner, but separates the public input surface into two paths:
@@ -208,10 +238,11 @@ if (event?.kind === "merge") {
208
238
 
209
239
  ### Run a planned command
210
240
 
211
- The bridge runner is low-level. It executes a command path plus argv; it does not resolve binaries or decide retries.
241
+ The bridge runner is low-level. It executes a command path plus argv; it does not resolve binaries or decide retries. The child runs as its own process group on Unix, so it does not receive the terminal's Ctrl+C: stop it with `signal`.
212
242
 
213
243
  ```ts
214
244
  import { planWorkflow } from "yt-dlp-bridge";
245
+ import { parseYtDlpOutputLine } from "yt-dlp-bridge/parsers";
215
246
  import { runCommand } from "yt-dlp-bridge/runner";
216
247
  import { toStructuredError } from "yt-dlp-bridge/errors";
217
248
 
@@ -223,7 +254,8 @@ const plan = planWorkflow({
223
254
  try {
224
255
  const result = await runCommand("yt-dlp", plan.args, {
225
256
  timeoutMs: 900_000,
226
- maxOutputBytes: 4 * 1024 * 1024
257
+ maxOutputBytes: 4 * 1024 * 1024,
258
+ onStderrLine: line => console.log(parseYtDlpOutputLine(line))
227
259
  });
228
260
  console.log(result.stdout);
229
261
  } catch (error) {
@@ -252,12 +284,13 @@ Prefer the root export for workflow planning and subpaths for lower-level utilit
252
284
  | --- | --- |
253
285
  | Workflow planning | `planWorkflow`, workflow input/plan/fact types |
254
286
  | Schemas | `WorkflowInspectInputSchema`, `WorkflowDownloadInputSchema`, `WorkflowExecutionInputSchema`, `WorkflowPostprocessInputSchema`, `WorkflowExpertInputSchema`, `WorkflowInputSchema`, `ValidateWorkflowInputSchema` |
255
- | Config | `loadConfig`, `CONFIG` from `yt-dlp-bridge/config` |
287
+ | Config | `loadConfig` from `yt-dlp-bridge/config` |
256
288
  | Environment | `checkEnvironment` from `yt-dlp-bridge/environment` |
257
289
  | Filesystem policy | `resolveOutputPolicy`, `resolveManagedPath`, `ensureWithinRoot`, `isPathInside`, `isPathInsideWith`, `hasParentTraversal`, `ensureDirectory`, `readArchive` from `yt-dlp-bridge/filesystem` |
258
290
  | Option catalog | `UPSTREAM_OPTION_CATALOG`, `listLongFlags`, `findOptionByFlag`, `optionMetadata` from `yt-dlp-bridge/option-catalog` |
259
- | Parsers | `parseYtDlpOutputLine`, `parseJsonLines`, `sanitizeMetadataItem`, `sanitizeMetadataItems`, `paginate`, `parseFormats`, `parseSubtitles`, `parseThumbnails`, `parseProgress`, `parseFinalPaths` from `yt-dlp-bridge/parsers` |
260
- | Runner | `runCommand`, `CommandExecutionError` from `yt-dlp-bridge/runner` |
291
+ | info_dict | `infoDictSchema`, `ytDlpFormatSchema`, `ytDlpSubtitleTrackSchema`, `isPlaylistLike`, `isUrlRedirect` and the `InfoDict` family of types from `yt-dlp-bridge/info` |
292
+ | Parsers | `parseYtDlpOutputLine`, `parseJsonLines`, `sanitizeMetadataItem`, `sanitizeMetadataItems`, `paginate`, `parseFormats`, `parseSubtitles`, `parseThumbnails`, `parseFinalPaths` from `yt-dlp-bridge/parsers` |
293
+ | Runner | `runCommand`, `CommandExecutionError`, `killProcessTree`, `splitOutputLines`, `createStreamTextReader`, `SPAWN_AS_PROCESS_GROUP` from `yt-dlp-bridge/runner` |
261
294
  | Redaction | `redactArgs`, `redactText`, `excerpt` from `yt-dlp-bridge/redaction` |
262
295
  | Structured errors | `toStructuredError` from `yt-dlp-bridge/errors` |
263
296
 
@@ -290,6 +323,7 @@ import { redactArgs } from "yt-dlp-bridge/redaction";
290
323
  | `YTDLP_MCP_TIMEOUT_MS` | `900000` | Default command timeout (ms). |
291
324
  | `YTDLP_MCP_MAX_OUTPUT_BYTES` | `4194304` | Maximum retained stdout/stderr bytes. |
292
325
  | `YTDLP_MCP_JS_RUNTIMES` | `deno,node,bun,quickjs` | JavaScript runtimes considered for extractor challenges. |
326
+ | `YTDLP_MCP_UNREDACTED` | `false` | Disable secret redaction and excerpt truncation. Local debugging only: logs will contain tokens, cookies, and credentials. |
293
327
 
294
328
  ## Requirements
295
329
 
@@ -303,7 +337,8 @@ import { redactArgs } from "yt-dlp-bridge/redaction";
303
337
  ```bash
304
338
  git clone https://github.com/antonio-orionus/Arroxy.git
305
339
  cd Arroxy
306
- bun install
340
+ mise install # recommended; skip if you manually activated the pinned tools
341
+ bun run bootstrap
307
342
  ```
308
343
 
309
344
  | Command | Description |
package/dist/config.d.ts CHANGED
@@ -16,5 +16,4 @@ export interface ServerConfig {
16
16
  }
17
17
  export declare function expandHome(input: string): string;
18
18
  export declare function loadConfig(env?: NodeJS.ProcessEnv): ServerConfig;
19
- export declare const CONFIG: ServerConfig;
20
19
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,yBAAyB,EAAE,OAAO,CAAA;IAClC,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,UAAU,EAAE,MAAM,EAAE,CAAA;CACpB;AA2BD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAoB7E;AAED,eAAO,MAAM,MAAM,cAAe,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,yBAAyB,EAAE,OAAO,CAAA;IAClC,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,UAAU,EAAE,MAAM,EAAE,CAAA;CACpB;AA2BD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAoB7E"}
package/dist/config.js CHANGED
@@ -45,11 +45,10 @@ export function loadConfig(env = process.env) {
45
45
  maxOutputBytes: int(env.YTDLP_MCP_MAX_OUTPUT_BYTES, 4 * 1024 * 1024),
46
46
  cookiesFile: firstNonBlank(env.YTDLP_MCP_COOKIES_FILE),
47
47
  cookiesFromBrowser: firstNonBlank(env.YTDLP_MCP_COOKIES_FROM_BROWSER),
48
- jsRuntimes: (firstNonBlank(env.YTDLP_MCP_JS_RUNTIMES) ?? 'deno,node,bun,quickjs')
49
- .split(',')
50
- .map(v => v.trim())
51
- .filter(Boolean)
48
+ jsRuntimes: (firstNonBlank(env.YTDLP_MCP_JS_RUNTIMES) ?? 'deno,node,bun,quickjs').split(',').flatMap(v => {
49
+ const runtime = v.trim();
50
+ return runtime ? [runtime] : [];
51
+ })
52
52
  };
53
53
  }
54
- export const CONFIG = loadConfig();
55
54
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,YAAY,EAAC,MAAM,aAAa,CAAA;AAErD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAA;IACzC,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,OAAO,EAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IACtG,MAAM,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,yBAAyB,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAA;KAAC,CAAA;CAClK;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,YAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuBhG"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,YAAY,EAAC,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAA;IACzC,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,OAAO,EAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IACtG,MAAM,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,yBAAyB,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAA;KAAC,CAAA;CAClK;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,YAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuBtG"}
@@ -1,8 +1,8 @@
1
1
  import fs from 'node:fs';
2
2
  import os from 'node:os';
3
- import { CONFIG } from './config.js';
3
+ import { loadConfig } from './config.js';
4
4
  import { runCommand } from './runner.js';
5
- export async function checkEnvironment(config = CONFIG) {
5
+ export async function checkEnvironment(config = loadConfig()) {
6
6
  const dependencies = await Promise.all([
7
7
  detectBinary('yt-dlp', config.ytdlpPath, ['--version'], ['all yt-dlp operations'], true, config),
8
8
  detectBinary('ffmpeg', config.ffmpegPath ?? 'ffmpeg', ['-version'], ['merge', 'remux', 'recode', 'extract audio', 'embed assets'], false, config),
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAA;AAE/C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiBjE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAA;AAE/C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAgBjE"}
package/dist/errors.js CHANGED
@@ -4,8 +4,7 @@ import { CommandExecutionError } from './runner.js';
4
4
  export function toStructuredError(error) {
5
5
  if (error instanceof CommandExecutionError) {
6
6
  const stderr = [error.result.stderr, error.result.stdout, error.message].find(value => value.length > 0) ?? error.message;
7
- const classified = classifyYtDlpStderr(stderr);
8
- const kind = inferUnsupportedUrl(stderr) ? 'unsupportedUrl' : classified.kind;
7
+ const { kind } = classifyYtDlpStderr(stderr);
9
8
  const metadata = errorKindMetadata(kind);
10
9
  const structured = { kind, message: extractLastError(stderr) ?? error.message, retryable: metadata.recoverable, exitCode: error.result.exitCode, stderrExcerpt: excerpt(stderr), suggestedFixes: suggestedFixes(kind, metadata.suggestedFlags) };
11
10
  const dependency = inferDependency(stderr);
@@ -33,9 +32,6 @@ function inferDependency(text) {
33
32
  return 'js-runtime';
34
33
  return undefined;
35
34
  }
36
- function inferUnsupportedUrl(text) {
37
- return /unsupported url|no suitable extractor|not a valid URL/i.test(text);
38
- }
39
35
  function suggestedFixes(kind, flags) {
40
36
  const fixes = new Set();
41
37
  for (const flag of flags ?? [])
@@ -50,6 +46,8 @@ function suggestedFixes(kind, flags) {
50
46
  fixes.add('Use an allowed region, proxy, or yt-dlp geo-bypass option where legal.');
51
47
  if (kind === 'outOfDiskSpace')
52
48
  fixes.add('Free disk space or choose a different output root.');
49
+ if (kind === 'outputNotWritable')
50
+ fixes.add('Grant write access to the output root or choose a different one.');
53
51
  return [...fixes];
54
52
  }
55
53
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** One extractor's arguments: each key's values, as `_configuration_arg` reads them. */
2
+ export type ExtractorArgValues = Readonly<Record<string, readonly string[]>>;
3
+ /** Extractor arguments by lower-cased extractor name (`youtube`, `youtubetab`, …). */
4
+ export type ExtractorArgs = Readonly<Record<string, ExtractorArgValues>>;
5
+ /** Parses one `--extractor-args` value (`IE:key=v1,v2;key2=v`) with yt-dlp's rules. */
6
+ export declare function parseExtractorArgsBlock(value: string): ExtractorArgs;
7
+ /** Renders one extractor's arguments as a single `--extractor-args` value. */
8
+ export declare function renderExtractorArgsBlock(extractor: string, values: ExtractorArgValues): string;
9
+ /** Merges extractor arguments key by key; a later layer's key replaces an earlier one's. */
10
+ export declare function mergeExtractorArgs(...layers: readonly ExtractorArgs[]): ExtractorArgs;
11
+ /** The extractor arguments yt-dlp would act on for this argv: the last block per extractor wins whole. */
12
+ export declare function effectiveExtractorArgs(argv: readonly string[]): ExtractorArgs;
13
+ /** Extractors that this argv names in more than one block, where all but the last are silently lost. */
14
+ export declare function duplicateExtractorArgsBlocks(argv: readonly string[]): string[];
15
+ /**
16
+ * Folds every extractor-args block in `argv`, then `overrides`, into one block
17
+ * per extractor, merged key by key, so everything a caller meant to pass
18
+ * reaches yt-dlp. The blocks take the place of the first one in the argv, or
19
+ * lead it when it had none.
20
+ */
21
+ export declare function withExtractorArgs(argv: readonly string[], overrides: ExtractorArgs): string[];
22
+ //# sourceMappingURL=extractorArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractorArgs.d.ts","sourceRoot":"","sources":["../src/extractorArgs.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;AAE5E,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAUxE,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAcpE;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAa9F;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,GAAG,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,CAQrF;AA4BD,0GAA0G;AAC1G,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAI7E;AAED,wGAAwG;AACxG,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAU9E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,EAAE,CAS7F"}
@@ -0,0 +1,115 @@
1
+ // yt-dlp keeps one argument dict per extractor and *replaces* it when the same
2
+ // extractor is given again: `--extractor-args youtube:a=1 --extractor-args
3
+ // youtube:b=2` leaves only `b` (options.py `_dict_from_options_callback`,
4
+ // append=False). Callers that add their own options to a planned argv must
5
+ // therefore merge into the extractor's single block, never append another.
6
+ const EXTRACTOR_ARGS_FLAG = '--extractor-args';
7
+ const EXTRACTOR_NAME = /^([\w-]+):(.*)$/s;
8
+ const KEY = /^[\w-]+$/;
9
+ function normalizeKey(key) {
10
+ return key.trim().toLowerCase().replace(/-/g, '_');
11
+ }
12
+ /** Parses one `--extractor-args` value (`IE:key=v1,v2;key2=v`) with yt-dlp's rules. */
13
+ export function parseExtractorArgsBlock(value) {
14
+ const match = EXTRACTOR_NAME.exec(value);
15
+ const extractor = match?.[1];
16
+ const body = match?.[2];
17
+ if (extractor === undefined || body === undefined)
18
+ throw new Error(`--extractor-args value must start with an extractor name: ${value}`);
19
+ const values = {};
20
+ for (const part of body.split(';')) {
21
+ const separator = part.indexOf('=');
22
+ const key = normalizeKey(separator === -1 ? part : part.slice(0, separator));
23
+ if (key === '')
24
+ continue;
25
+ const raw = separator === -1 ? '' : part.slice(separator + 1);
26
+ values[key] = raw.split(/(?<!\\),/).map(item => item.replace(/\\,/g, ',').trim());
27
+ }
28
+ return { [extractor.toLowerCase()]: values };
29
+ }
30
+ /** Renders one extractor's arguments as a single `--extractor-args` value. */
31
+ export function renderExtractorArgsBlock(extractor, values) {
32
+ if (!KEY.test(extractor))
33
+ throw new Error(`Invalid extractor name for --extractor-args: ${extractor}`);
34
+ const parts = [];
35
+ for (const [key, list] of Object.entries(values)) {
36
+ if (!KEY.test(key))
37
+ throw new Error(`Invalid --extractor-args key: ${key}`);
38
+ if (list.length === 0)
39
+ continue;
40
+ for (const item of list) {
41
+ // yt-dlp splits keys on ';' with no escape, so such a value cannot be passed at all.
42
+ if (item.includes(';'))
43
+ throw new Error(`--extractor-args value for ${extractor}:${key} cannot contain ';'`);
44
+ }
45
+ parts.push(`${key}=${list.map(item => item.replace(/,/g, '\\,')).join(',')}`);
46
+ }
47
+ return `${extractor.toLowerCase()}:${parts.join(';')}`;
48
+ }
49
+ /** Merges extractor arguments key by key; a later layer's key replaces an earlier one's. */
50
+ export function mergeExtractorArgs(...layers) {
51
+ const merged = {};
52
+ for (const layer of layers) {
53
+ for (const [extractor, values] of Object.entries(layer)) {
54
+ merged[extractor] = { ...merged[extractor], ...values };
55
+ }
56
+ }
57
+ return merged;
58
+ }
59
+ function occurrences(argv) {
60
+ const found = [];
61
+ for (let index = 0; index < argv.length; index += 1) {
62
+ const arg = argv[index] ?? '';
63
+ const next = argv[index + 1];
64
+ if (arg === EXTRACTOR_ARGS_FLAG && next !== undefined) {
65
+ found.push({ index, width: 2, value: next });
66
+ index += 1;
67
+ }
68
+ else if (arg.startsWith(`${EXTRACTOR_ARGS_FLAG}=`)) {
69
+ found.push({ index, width: 1, value: arg.slice(EXTRACTOR_ARGS_FLAG.length + 1) });
70
+ }
71
+ }
72
+ return found;
73
+ }
74
+ // The blocks yt-dlp would accept; one it rejects (no extractor name) carries nothing.
75
+ function acceptedBlocks(argv) {
76
+ return occurrences(argv).flatMap(({ value }) => (EXTRACTOR_NAME.test(value) ? [parseExtractorArgsBlock(value)] : []));
77
+ }
78
+ /** The extractor arguments yt-dlp would act on for this argv: the last block per extractor wins whole. */
79
+ export function effectiveExtractorArgs(argv) {
80
+ const effective = {};
81
+ for (const block of acceptedBlocks(argv))
82
+ Object.assign(effective, block);
83
+ return effective;
84
+ }
85
+ /** Extractors that this argv names in more than one block, where all but the last are silently lost. */
86
+ export function duplicateExtractorArgsBlocks(argv) {
87
+ const seen = new Set();
88
+ const duplicates = new Set();
89
+ for (const block of acceptedBlocks(argv)) {
90
+ for (const extractor of Object.keys(block)) {
91
+ if (seen.has(extractor))
92
+ duplicates.add(extractor);
93
+ seen.add(extractor);
94
+ }
95
+ }
96
+ return [...duplicates];
97
+ }
98
+ /**
99
+ * Folds every extractor-args block in `argv`, then `overrides`, into one block
100
+ * per extractor, merged key by key, so everything a caller meant to pass
101
+ * reaches yt-dlp. The blocks take the place of the first one in the argv, or
102
+ * lead it when it had none.
103
+ */
104
+ export function withExtractorArgs(argv, overrides) {
105
+ const found = occurrences(argv);
106
+ if (found.length === 0 && Object.keys(overrides).length === 0)
107
+ return [...argv];
108
+ const merged = mergeExtractorArgs(...found.map(({ value }) => parseExtractorArgsBlock(value)), overrides);
109
+ const rendered = Object.entries(merged).flatMap(([extractor, values]) => [EXTRACTOR_ARGS_FLAG, renderExtractorArgsBlock(extractor, values)]);
110
+ const skipped = new Set(found.flatMap(({ index, width }) => (width === 2 ? [index, index + 1] : [index])));
111
+ const rest = argv.filter((_, index) => !skipped.has(index));
112
+ const at = found[0]?.index ?? 0;
113
+ return [...rest.slice(0, at), ...rendered, ...rest.slice(at)];
114
+ }
115
+ //# sourceMappingURL=extractorArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractorArgs.js","sourceRoot":"","sources":["../src/extractorArgs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAE7C,UAAU,kBAAkB;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGrG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAKtH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,GAAE,iBAAsB,GAAG,oBAAoB,CAgB7G;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtD"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAE7C,UAAU,kBAAkB;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGrG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAKtH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,GAAE,iBAAsB,GAAG,oBAAoB,CAgB7G;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAStD"}
@@ -50,7 +50,9 @@ export function readArchive(pathname) {
50
50
  return fs
51
51
  .readFileSync(pathname, 'utf8')
52
52
  .split(/\r?\n/)
53
- .map(line => line.trim())
54
- .filter(Boolean);
53
+ .flatMap(line => {
54
+ const archiveLine = line.trim();
55
+ return archiveLine ? [archiveLine] : [];
56
+ });
55
57
  }
56
58
  //# sourceMappingURL=filesystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './workflow.js';
2
2
  export * from './schemas.js';
3
3
  export * from './types.js';
4
+ export * from './extractorArgs.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './workflow.js';
2
2
  export * from './schemas.js';
3
3
  export * from './types.js';
4
+ export * from './extractorArgs.js';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}