yt-dlp-bridge 0.1.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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/argv.d.ts +18 -0
  4. package/dist/argv.d.ts.map +1 -0
  5. package/dist/argv.js +276 -0
  6. package/dist/argv.js.map +1 -0
  7. package/dist/config.d.ts +20 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +36 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/environment.d.ts +27 -0
  12. package/dist/environment.d.ts.map +1 -0
  13. package/dist/environment.js +80 -0
  14. package/dist/environment.js.map +1 -0
  15. package/dist/errors.d.ts +3 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +73 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/filesystem.d.ts +23 -0
  20. package/dist/filesystem.d.ts.map +1 -0
  21. package/dist/filesystem.js +57 -0
  22. package/dist/filesystem.js.map +1 -0
  23. package/dist/generated/ytdlp-options.json +5513 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +13 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/option-catalog.d.ts +34 -0
  29. package/dist/option-catalog.d.ts.map +1 -0
  30. package/dist/option-catalog.js +89 -0
  31. package/dist/option-catalog.js.map +1 -0
  32. package/dist/parsers.d.ts +11 -0
  33. package/dist/parsers.d.ts.map +1 -0
  34. package/dist/parsers.js +268 -0
  35. package/dist/parsers.js.map +1 -0
  36. package/dist/planner.d.ts +10 -0
  37. package/dist/planner.d.ts.map +1 -0
  38. package/dist/planner.js +233 -0
  39. package/dist/planner.js.map +1 -0
  40. package/dist/redaction.d.ts +4 -0
  41. package/dist/redaction.d.ts.map +1 -0
  42. package/dist/redaction.js +52 -0
  43. package/dist/redaction.js.map +1 -0
  44. package/dist/runner.d.ts +14 -0
  45. package/dist/runner.d.ts.map +1 -0
  46. package/dist/runner.js +78 -0
  47. package/dist/runner.js.map +1 -0
  48. package/dist/schemas.d.ts +818 -0
  49. package/dist/schemas.d.ts.map +1 -0
  50. package/dist/schemas.js +179 -0
  51. package/dist/schemas.js.map +1 -0
  52. package/dist/types.d.ts +163 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +2 -0
  55. package/dist/types.js.map +1 -0
  56. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type pathType from "node:path";
2
+ import type { ServerConfig } from "./config.js";
3
+ export interface OutputPolicyInput {
4
+ outputRoot?: string | undefined;
5
+ outputTemplate?: string | undefined;
6
+ tempRoot?: string | undefined;
7
+ allowOverwrite?: boolean;
8
+ }
9
+ export interface ResolvedOutputPolicy {
10
+ outputRoot: string;
11
+ tempRoot: string;
12
+ outputTemplate: string;
13
+ allowOverwrite: boolean;
14
+ }
15
+ export declare function isPathInside(parent: string, child: string): boolean;
16
+ export declare function isPathInsideWith(pathImpl: typeof pathType.posix | typeof pathType.win32, parent: string, child: string): boolean;
17
+ export declare function hasParentTraversal(input: string): boolean;
18
+ export declare function ensureWithinRoot(root: string, candidate: string, label: string): string;
19
+ export declare function resolveManagedPath(root: string, candidate: string, label: string, allowArbitraryPath: boolean): string;
20
+ export declare function resolveOutputPolicy(config: ServerConfig, input?: OutputPolicyInput): ResolvedOutputPolicy;
21
+ export declare function ensureDirectory(pathname: string): Promise<void>;
22
+ export declare function readArchive(pathname: string): string[];
23
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGhI;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,CAqB7G;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGtD"}
@@ -0,0 +1,57 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export function isPathInside(parent, child) {
4
+ return isPathInsideWith(path, parent, child);
5
+ }
6
+ export function isPathInsideWith(pathImpl, parent, child) {
7
+ const relative = pathImpl.relative(parent, child);
8
+ return relative === "" || (!relative.startsWith("..") && !pathImpl.isAbsolute(relative));
9
+ }
10
+ export function hasParentTraversal(input) {
11
+ return input.split(/[\\/]+/).some((part) => part === "..");
12
+ }
13
+ export function ensureWithinRoot(root, candidate, label) {
14
+ const resolvedRoot = path.resolve(root);
15
+ const resolvedCandidate = path.resolve(candidate);
16
+ if (!isPathInside(resolvedRoot, resolvedCandidate)) {
17
+ throw new Error(`${label} must stay inside output root: ${resolvedRoot}`);
18
+ }
19
+ return resolvedCandidate;
20
+ }
21
+ export function resolveManagedPath(root, candidate, label, allowArbitraryPath) {
22
+ const resolvedRoot = path.resolve(root);
23
+ const resolvedCandidate = path.isAbsolute(candidate) ? path.resolve(candidate) : path.resolve(resolvedRoot, candidate);
24
+ if (!allowArbitraryPath)
25
+ ensureWithinRoot(resolvedRoot, resolvedCandidate, label);
26
+ return resolvedCandidate;
27
+ }
28
+ export function resolveOutputPolicy(config, input = {}) {
29
+ const outputRoot = input.outputRoot ? resolveManagedPath(config.outputRoot, input.outputRoot, "outputRoot", config.allowArbitraryOutputPaths) : config.outputRoot;
30
+ const tempRoot = input.tempRoot ? resolveManagedPath(config.tempRoot, input.tempRoot, "tempRoot", config.allowArbitraryOutputPaths) : config.tempRoot;
31
+ if (!config.allowArbitraryOutputPaths)
32
+ ensureWithinRoot(config.outputRoot, outputRoot, "outputRoot");
33
+ if (!config.allowArbitraryOutputPaths)
34
+ ensureWithinRoot(config.tempRoot, tempRoot, "tempRoot");
35
+ const outputTemplate = input.outputTemplate ?? "%(title).180B [%(id)s].%(ext)s";
36
+ if (path.isAbsolute(outputTemplate) && !config.allowArbitraryOutputPaths) {
37
+ ensureWithinRoot(outputRoot, outputTemplate, "outputTemplate");
38
+ }
39
+ if (!path.isAbsolute(outputTemplate) && hasParentTraversal(path.normalize(outputTemplate))) {
40
+ throw new Error("outputTemplate must not contain parent-directory traversal");
41
+ }
42
+ return {
43
+ outputRoot,
44
+ tempRoot,
45
+ outputTemplate,
46
+ allowOverwrite: input.allowOverwrite ?? false
47
+ };
48
+ }
49
+ export async function ensureDirectory(pathname) {
50
+ await fs.promises.mkdir(pathname, { recursive: true });
51
+ }
52
+ export function readArchive(pathname) {
53
+ if (!fs.existsSync(pathname))
54
+ return [];
55
+ return fs.readFileSync(pathname, "utf8").split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
56
+ }
57
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}