blitzreels 0.1.4 → 0.1.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 (214) hide show
  1. package/README.md +55 -25
  2. package/dist/agent-context.d.ts +68 -0
  3. package/dist/agent-context.d.ts.map +1 -0
  4. package/dist/agent-context.js +214 -0
  5. package/dist/agent-context.js.map +1 -0
  6. package/dist/cli-command-routing.d.ts +27 -0
  7. package/dist/cli-command-routing.d.ts.map +1 -0
  8. package/dist/cli-command-routing.js +236 -0
  9. package/dist/cli-command-routing.js.map +1 -0
  10. package/dist/cli-errors.d.ts +31 -0
  11. package/dist/cli-errors.d.ts.map +1 -0
  12. package/dist/cli-errors.js +27 -0
  13. package/dist/cli-errors.js.map +1 -0
  14. package/dist/cli-flag-reader.d.ts +61 -0
  15. package/dist/cli-flag-reader.d.ts.map +1 -0
  16. package/dist/cli-flag-reader.js +207 -0
  17. package/dist/cli-flag-reader.js.map +1 -0
  18. package/dist/cli-http.d.ts +6 -0
  19. package/dist/cli-http.d.ts.map +1 -0
  20. package/dist/cli-http.js +42 -0
  21. package/dist/cli-http.js.map +1 -0
  22. package/dist/cli-presenter.d.ts +24 -0
  23. package/dist/cli-presenter.d.ts.map +1 -0
  24. package/dist/cli-presenter.js +161 -0
  25. package/dist/cli-presenter.js.map +1 -0
  26. package/dist/cli-runtime.d.ts +1 -2
  27. package/dist/cli-runtime.d.ts.map +1 -1
  28. package/dist/cli-runtime.js +2 -2
  29. package/dist/cli-runtime.js.map +1 -1
  30. package/dist/cli-timing.d.ts +4 -0
  31. package/dist/cli-timing.d.ts.map +1 -0
  32. package/dist/cli-timing.js +6 -0
  33. package/dist/cli-timing.js.map +1 -0
  34. package/dist/cli-types.d.ts +52 -0
  35. package/dist/cli-types.d.ts.map +1 -1
  36. package/dist/cli-value-parsers.d.ts +76 -0
  37. package/dist/cli-value-parsers.d.ts.map +1 -0
  38. package/dist/cli-value-parsers.js +271 -0
  39. package/dist/cli-value-parsers.js.map +1 -0
  40. package/dist/command-metadata.d.ts +11 -5
  41. package/dist/command-metadata.d.ts.map +1 -1
  42. package/dist/command-metadata.js +64 -9
  43. package/dist/command-metadata.js.map +1 -1
  44. package/dist/command-registry.d.ts +1 -1
  45. package/dist/command-registry.d.ts.map +1 -1
  46. package/dist/command-registry.js +44 -853
  47. package/dist/command-registry.js.map +1 -1
  48. package/dist/commands/ai-edit.d.ts +45 -0
  49. package/dist/commands/ai-edit.d.ts.map +1 -0
  50. package/dist/commands/ai-edit.js +370 -0
  51. package/dist/commands/ai-edit.js.map +1 -0
  52. package/dist/commands/api.d.ts +20 -0
  53. package/dist/commands/api.d.ts.map +1 -0
  54. package/dist/commands/api.js +56 -0
  55. package/dist/commands/api.js.map +1 -0
  56. package/dist/commands/audio.d.ts +65 -0
  57. package/dist/commands/audio.d.ts.map +1 -0
  58. package/dist/commands/audio.js +264 -0
  59. package/dist/commands/audio.js.map +1 -0
  60. package/dist/commands/auth-runtime.d.ts +24 -0
  61. package/dist/commands/auth-runtime.d.ts.map +1 -0
  62. package/dist/commands/auth-runtime.js +169 -0
  63. package/dist/commands/auth-runtime.js.map +1 -0
  64. package/dist/commands/auth.d.ts +26 -0
  65. package/dist/commands/auth.d.ts.map +1 -0
  66. package/dist/commands/auth.js +59 -0
  67. package/dist/commands/auth.js.map +1 -0
  68. package/dist/commands/caption-command-types.d.ts +66 -0
  69. package/dist/commands/caption-command-types.d.ts.map +1 -0
  70. package/dist/commands/caption-command-types.js +2 -0
  71. package/dist/commands/caption-command-types.js.map +1 -0
  72. package/dist/commands/caption-dry-run.d.ts +66 -0
  73. package/dist/commands/caption-dry-run.d.ts.map +1 -0
  74. package/dist/commands/caption-dry-run.js +225 -0
  75. package/dist/commands/caption-dry-run.js.map +1 -0
  76. package/dist/commands/caption-overrides.d.ts +43 -0
  77. package/dist/commands/caption-overrides.d.ts.map +1 -0
  78. package/dist/commands/caption-overrides.js +245 -0
  79. package/dist/commands/caption-overrides.js.map +1 -0
  80. package/dist/commands/caption-selection.d.ts +72 -0
  81. package/dist/commands/caption-selection.d.ts.map +1 -0
  82. package/dist/commands/caption-selection.js +89 -0
  83. package/dist/commands/caption-selection.js.map +1 -0
  84. package/dist/commands/caption-style-commands.d.ts +3 -0
  85. package/dist/commands/caption-style-commands.d.ts.map +1 -0
  86. package/dist/commands/caption-style-commands.js +240 -0
  87. package/dist/commands/caption-style-commands.js.map +1 -0
  88. package/dist/commands/caption-style-flags.d.ts +30 -0
  89. package/dist/commands/caption-style-flags.d.ts.map +1 -0
  90. package/dist/commands/caption-style-flags.js +257 -0
  91. package/dist/commands/caption-style-flags.js.map +1 -0
  92. package/dist/commands/caption-text-updates.d.ts +21 -0
  93. package/dist/commands/caption-text-updates.d.ts.map +1 -0
  94. package/dist/commands/caption-text-updates.js +23 -0
  95. package/dist/commands/caption-text-updates.js.map +1 -0
  96. package/dist/commands/captions-specs.d.ts +3 -0
  97. package/dist/commands/captions-specs.d.ts.map +1 -0
  98. package/dist/commands/captions-specs.js +241 -0
  99. package/dist/commands/captions-specs.js.map +1 -0
  100. package/dist/commands/captions.d.ts +7 -0
  101. package/dist/commands/captions.d.ts.map +1 -0
  102. package/dist/commands/captions.js +203 -0
  103. package/dist/commands/captions.js.map +1 -0
  104. package/dist/commands/clip-runtime.d.ts +67 -0
  105. package/dist/commands/clip-runtime.d.ts.map +1 -0
  106. package/dist/commands/clip-runtime.js +194 -0
  107. package/dist/commands/clip-runtime.js.map +1 -0
  108. package/dist/commands/clips.d.ts +66 -0
  109. package/dist/commands/clips.d.ts.map +1 -0
  110. package/dist/commands/clips.js +625 -0
  111. package/dist/commands/clips.js.map +1 -0
  112. package/dist/commands/command-operation.d.ts +26 -0
  113. package/dist/commands/command-operation.d.ts.map +1 -0
  114. package/dist/commands/command-operation.js +18 -0
  115. package/dist/commands/command-operation.js.map +1 -0
  116. package/dist/commands/editing-workflow-runtime.d.ts +42 -0
  117. package/dist/commands/editing-workflow-runtime.d.ts.map +1 -0
  118. package/dist/commands/editing-workflow-runtime.js +128 -0
  119. package/dist/commands/editing-workflow-runtime.js.map +1 -0
  120. package/dist/commands/editing-workflows.d.ts +70 -0
  121. package/dist/commands/editing-workflows.d.ts.map +1 -0
  122. package/dist/commands/editing-workflows.js +252 -0
  123. package/dist/commands/editing-workflows.js.map +1 -0
  124. package/dist/commands/effects-runtime.d.ts +64 -0
  125. package/dist/commands/effects-runtime.d.ts.map +1 -0
  126. package/dist/commands/effects-runtime.js +100 -0
  127. package/dist/commands/effects-runtime.js.map +1 -0
  128. package/dist/commands/effects.d.ts +69 -0
  129. package/dist/commands/effects.d.ts.map +1 -0
  130. package/dist/commands/effects.js +281 -0
  131. package/dist/commands/effects.js.map +1 -0
  132. package/dist/commands/exports.d.ts +16 -5
  133. package/dist/commands/exports.d.ts.map +1 -1
  134. package/dist/commands/exports.js +119 -2
  135. package/dist/commands/exports.js.map +1 -1
  136. package/dist/commands/faceless.d.ts +44 -0
  137. package/dist/commands/faceless.d.ts.map +1 -0
  138. package/dist/commands/faceless.js +587 -0
  139. package/dist/commands/faceless.js.map +1 -0
  140. package/dist/commands/formats.d.ts +41 -0
  141. package/dist/commands/formats.d.ts.map +1 -0
  142. package/dist/commands/formats.js +140 -0
  143. package/dist/commands/formats.js.map +1 -0
  144. package/dist/commands/jobs.d.ts +20 -0
  145. package/dist/commands/jobs.d.ts.map +1 -0
  146. package/dist/commands/jobs.js +40 -0
  147. package/dist/commands/jobs.js.map +1 -0
  148. package/dist/commands/media-assets.d.ts +100 -0
  149. package/dist/commands/media-assets.d.ts.map +1 -0
  150. package/dist/commands/media-assets.js +644 -0
  151. package/dist/commands/media-assets.js.map +1 -0
  152. package/dist/commands/media-overlays.d.ts +52 -0
  153. package/dist/commands/media-overlays.d.ts.map +1 -0
  154. package/dist/commands/media-overlays.js +314 -0
  155. package/dist/commands/media-overlays.js.map +1 -0
  156. package/dist/commands/media-runtime.d.ts +61 -0
  157. package/dist/commands/media-runtime.d.ts.map +1 -0
  158. package/dist/commands/media-runtime.js +239 -0
  159. package/dist/commands/media-runtime.js.map +1 -0
  160. package/dist/commands/onboarding.d.ts +51 -0
  161. package/dist/commands/onboarding.d.ts.map +1 -0
  162. package/dist/commands/onboarding.js +452 -0
  163. package/dist/commands/onboarding.js.map +1 -0
  164. package/dist/commands/project-read.d.ts +40 -0
  165. package/dist/commands/project-read.d.ts.map +1 -0
  166. package/dist/commands/project-read.js +184 -0
  167. package/dist/commands/project-read.js.map +1 -0
  168. package/dist/commands/projects.d.ts +16 -5
  169. package/dist/commands/projects.d.ts.map +1 -1
  170. package/dist/commands/projects.js +139 -2
  171. package/dist/commands/projects.js.map +1 -1
  172. package/dist/commands/stock-library.d.ts +72 -0
  173. package/dist/commands/stock-library.d.ts.map +1 -0
  174. package/dist/commands/stock-library.js +175 -0
  175. package/dist/commands/stock-library.js.map +1 -0
  176. package/dist/commands/system.d.ts +16 -0
  177. package/dist/commands/system.d.ts.map +1 -0
  178. package/dist/commands/system.js +147 -0
  179. package/dist/commands/system.js.map +1 -0
  180. package/dist/commands/text-overlay-spec.d.ts +24 -0
  181. package/dist/commands/text-overlay-spec.d.ts.map +1 -0
  182. package/dist/commands/text-overlay-spec.js +228 -0
  183. package/dist/commands/text-overlay-spec.js.map +1 -0
  184. package/dist/commands/text-overlays.d.ts +67 -0
  185. package/dist/commands/text-overlays.d.ts.map +1 -0
  186. package/dist/commands/text-overlays.js +272 -0
  187. package/dist/commands/text-overlays.js.map +1 -0
  188. package/dist/commands/timeline-runtime.d.ts +105 -0
  189. package/dist/commands/timeline-runtime.d.ts.map +1 -0
  190. package/dist/commands/timeline-runtime.js +508 -0
  191. package/dist/commands/timeline-runtime.js.map +1 -0
  192. package/dist/commands/timeline.d.ts +120 -0
  193. package/dist/commands/timeline.d.ts.map +1 -0
  194. package/dist/commands/timeline.js +621 -0
  195. package/dist/commands/timeline.js.map +1 -0
  196. package/dist/commands/workspace-defaults.d.ts +12 -0
  197. package/dist/commands/workspace-defaults.d.ts.map +1 -0
  198. package/dist/commands/workspace-defaults.js +115 -0
  199. package/dist/commands/workspace-defaults.js.map +1 -0
  200. package/dist/commands/workspace.d.ts +50 -0
  201. package/dist/commands/workspace.d.ts.map +1 -0
  202. package/dist/commands/workspace.js +116 -0
  203. package/dist/commands/workspace.js.map +1 -0
  204. package/dist/index.js +485 -5035
  205. package/dist/index.js.map +1 -1
  206. package/dist/preview-first-edit.d.ts +9 -1
  207. package/dist/preview-first-edit.d.ts.map +1 -1
  208. package/dist/preview-first-edit.js +16 -4
  209. package/dist/preview-first-edit.js.map +1 -1
  210. package/dist/update-notifier.d.ts +43 -0
  211. package/dist/update-notifier.d.ts.map +1 -0
  212. package/dist/update-notifier.js +265 -0
  213. package/dist/update-notifier.js.map +1 -0
  214. package/package.json +2 -2
@@ -0,0 +1,236 @@
1
+ import { homedir } from "node:os";
2
+ import { join, resolve } from "node:path";
3
+ import { CliUsageError } from "./cli-errors.js";
4
+ import { commandLabel, commandsEqual, flagsForCommand, GLOBAL_FLAGS, suggestCommandSpecs, suggestValues, } from "./command-metadata.js";
5
+ import { COMMAND_SPECS } from "./command-registry.js";
6
+ export function parseArgs({ argv }) {
7
+ const command = [];
8
+ const flags = {};
9
+ for (let index = 0; index < argv.length; index++) {
10
+ const value = argv[index];
11
+ if (value === undefined) {
12
+ continue;
13
+ }
14
+ if (!value.startsWith("--")) {
15
+ command.push(value);
16
+ continue;
17
+ }
18
+ const [rawKey, inlineValue] = value.slice(2).split("=", 2);
19
+ const key = rawKey ?? "";
20
+ if (inlineValue !== undefined) {
21
+ flags[key] = inlineValue;
22
+ continue;
23
+ }
24
+ const next = argv[index + 1];
25
+ if (next !== undefined && !next.startsWith("--")) {
26
+ flags[key] = next;
27
+ index++;
28
+ continue;
29
+ }
30
+ flags[key] = true;
31
+ }
32
+ return { command, flags };
33
+ }
34
+ export function validateParsedArgs({ parsed }) {
35
+ const spec = findCommandSpec({ command: parsed.command });
36
+ if (!spec) {
37
+ throw buildUnknownCommandError({ command: parsed.command });
38
+ }
39
+ const allowedFlags = new Set([
40
+ ...GLOBAL_FLAGS,
41
+ ...spec.flags.map((flag) => flag.name),
42
+ ]);
43
+ for (const flag of Object.keys(parsed.flags)) {
44
+ if (!allowedFlags.has(flag)) {
45
+ throw buildUnknownFlagError({ spec, flag });
46
+ }
47
+ }
48
+ if (getBooleanFlag({ flags: parsed.flags, name: "dry-run" })) {
49
+ if (!spec.dryRunSupported) {
50
+ throw new CliUsageError({
51
+ code: "unsupported_dry_run",
52
+ message: "--dry-run is not supported for this command.",
53
+ usage: spec.usage,
54
+ });
55
+ }
56
+ }
57
+ }
58
+ export function validateSafeInputs({ parsed }) {
59
+ for (const [name, value] of Object.entries(parsed.flags)) {
60
+ if (typeof value !== "string") {
61
+ continue;
62
+ }
63
+ rejectControlChars({ name, value });
64
+ if (isIdLikeFlag({ name })) {
65
+ rejectUnsafeId({ name, value });
66
+ }
67
+ if (name === "url") {
68
+ rejectUnsafeUrl({ name, value });
69
+ }
70
+ if (name === "output") {
71
+ rejectUnsafeOutputPath({ value });
72
+ }
73
+ }
74
+ }
75
+ export function findCommandSpec({ command, }) {
76
+ return COMMAND_SPECS.find((spec) => commandsEqual(spec.command, command));
77
+ }
78
+ export function findGroupCommandSpecs({ command, }) {
79
+ if (command.length === 0) {
80
+ return [];
81
+ }
82
+ return COMMAND_SPECS.filter((spec) => commandsEqual(spec.command.slice(0, command.length), command));
83
+ }
84
+ export function printCommandOrGroupHelpOrThrow({ command, }) {
85
+ const spec = findCommandSpec({ command });
86
+ if (spec) {
87
+ printCommandHelp({ spec });
88
+ return;
89
+ }
90
+ const groupSpecs = findGroupCommandSpecs({ command });
91
+ if (groupSpecs.length > 0) {
92
+ printGroupHelp({ command, specs: groupSpecs });
93
+ return;
94
+ }
95
+ throw buildUnknownCommandError({ command });
96
+ }
97
+ export function printHelp() {
98
+ console.log(`blitzreels
99
+
100
+ Usage:
101
+ ${COMMAND_SPECS.map((spec) => ` ${spec.usage}`).join("\n")}
102
+
103
+ Global flags:
104
+ --api-key KEY
105
+ --base-url URL
106
+ --json
107
+ `);
108
+ }
109
+ export function buildUnknownCommandError({ command, }) {
110
+ const suggestions = suggestCommands({ command }).map((spec) => spec.usage);
111
+ return new CliUsageError({
112
+ code: "unknown_command",
113
+ message: `Unknown command: ${commandLabel({ command })}`,
114
+ suggestions,
115
+ usage: suggestions[0],
116
+ });
117
+ }
118
+ export function usageForCurrentCommand() {
119
+ const parsed = parseArgs({ argv: process.argv.slice(2) });
120
+ return findCommandSpec({ command: parsed.command })?.usage;
121
+ }
122
+ function printCommandHelp({ spec }) {
123
+ const flags = flagsForCommand({ spec, includeHidden: false });
124
+ console.log(`Usage:
125
+ ${spec.usage}
126
+
127
+ Description:
128
+ ${spec.description}
129
+
130
+ Flags:
131
+ ${flags
132
+ .map((flag) => {
133
+ const required = flag.required ? " required" : "";
134
+ const values = flag.enum ? ` (${flag.enum.join("|")})` : "";
135
+ const defaultValue = flag.default === undefined ? "" : ` default=${String(flag.default)}`;
136
+ return ` --${flag.name} ${flag.type}${required}${values}${defaultValue} ${flag.description}`;
137
+ })
138
+ .join("\n")}
139
+
140
+ Examples:
141
+ ${spec.examples.map((example) => ` ${example}`).join("\n")}
142
+ `);
143
+ }
144
+ function printGroupHelp({ command, specs, }) {
145
+ const label = commandLabel({ command });
146
+ console.log(`blitzreels ${label}
147
+
148
+ Available commands:
149
+ ${specs.map((spec) => ` ${spec.usage}`).join("\n")}
150
+
151
+ Examples:
152
+ ${specs
153
+ .slice(0, 4)
154
+ .flatMap((spec) => spec.examples.slice(0, 1))
155
+ .map((example) => ` ${example}`)
156
+ .join("\n")}
157
+ `);
158
+ }
159
+ function buildUnknownFlagError({ spec, flag, }) {
160
+ const flags = [
161
+ ...new Set([
162
+ ...spec.flags.map((candidate) => candidate.name),
163
+ ...GLOBAL_FLAGS,
164
+ ]),
165
+ ];
166
+ const suggestions = suggestValues({ value: flag, candidates: flags }).map((candidate) => `--${candidate}`);
167
+ return new CliUsageError({
168
+ code: "unknown_flag",
169
+ message: `Unknown flag --${flag} for \`${commandLabel({ command: spec.command })}\`.`,
170
+ suggestions,
171
+ usage: spec.usage,
172
+ });
173
+ }
174
+ function suggestCommands({ command }) {
175
+ return suggestCommandSpecs({ command, specs: COMMAND_SPECS });
176
+ }
177
+ function getBooleanFlag({ flags, name, }) {
178
+ return flags[name] === true || flags[name] === "true";
179
+ }
180
+ function rejectControlChars({ name, value, }) {
181
+ if (Array.from(value).some((character) => {
182
+ const code = character.charCodeAt(0);
183
+ return code < 32 || code === 127;
184
+ })) {
185
+ throw new CliUsageError({
186
+ code: "unsafe_input",
187
+ message: `--${name} contains control characters.`,
188
+ });
189
+ }
190
+ }
191
+ function isIdLikeFlag({ name }) {
192
+ return name === "id" || name.endsWith("-id") || name.endsWith("-ids");
193
+ }
194
+ function rejectUnsafeId({ name, value, }) {
195
+ if (/[?#%]/.test(value)) {
196
+ throw new CliUsageError({
197
+ code: "unsafe_input",
198
+ message: `--${name} must be an ID, not a URL or encoded path.`,
199
+ });
200
+ }
201
+ }
202
+ function rejectUnsafeUrl({ name, value, }) {
203
+ let url;
204
+ try {
205
+ url = new URL(value);
206
+ }
207
+ catch {
208
+ throw new CliUsageError({
209
+ code: "unsafe_input",
210
+ message: `--${name} must be a valid URL.`,
211
+ });
212
+ }
213
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
214
+ throw new CliUsageError({
215
+ code: "unsafe_input",
216
+ message: `--${name} must use http or https.`,
217
+ });
218
+ }
219
+ if (url.username || url.password) {
220
+ throw new CliUsageError({
221
+ code: "unsafe_input",
222
+ message: `--${name} must not include embedded credentials.`,
223
+ });
224
+ }
225
+ }
226
+ function rejectUnsafeOutputPath({ value }) {
227
+ const outputPath = resolve(value);
228
+ const sensitiveDirs = [join(homedir(), ".ssh"), join(homedir(), ".gnupg")];
229
+ if (sensitiveDirs.some((dir) => outputPath.startsWith(`${dir}/`) || outputPath === dir)) {
230
+ throw new CliUsageError({
231
+ code: "unsafe_input",
232
+ message: "--output cannot write into sensitive home directories.",
233
+ });
234
+ }
235
+ }
236
+ //# sourceMappingURL=cli-command-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-command-routing.js","sourceRoot":"","sources":["../src/cli-command-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type CliExitCode = 1 | 2 | 3 | 4 | 5 | 6 | 7;
2
+ export type CliErrorContract = {
3
+ code: string;
4
+ exitCode: CliExitCode;
5
+ retryable: boolean;
6
+ };
7
+ export declare class CliUsageError extends Error {
8
+ code: string;
9
+ suggestions: string[];
10
+ usage: string | undefined;
11
+ constructor({ code, message, suggestions, usage, }: {
12
+ code: string;
13
+ message: string;
14
+ suggestions?: string[];
15
+ usage?: string;
16
+ });
17
+ }
18
+ export declare class CliOperationError extends Error {
19
+ code: string;
20
+ exitCode: CliExitCode;
21
+ retryable: boolean;
22
+ suggestions: string[];
23
+ constructor({ code, exitCode, message, retryable, suggestions, }: {
24
+ code: string;
25
+ exitCode: CliExitCode;
26
+ message: string;
27
+ retryable: boolean;
28
+ suggestions?: string[];
29
+ });
30
+ }
31
+ //# sourceMappingURL=cli-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-errors.d.ts","sourceRoot":"","sources":["../src/cli-errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEd,EACV,IAAI,EACJ,OAAO,EACP,WAAgB,EAChB,KAAK,GACN,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CAOF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;gBAEV,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,WAAgB,GACjB,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,WAAW,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB;CAQF"}
@@ -0,0 +1,27 @@
1
+ export class CliUsageError extends Error {
2
+ code;
3
+ suggestions;
4
+ usage;
5
+ constructor({ code, message, suggestions = [], usage, }) {
6
+ super(message);
7
+ this.name = "CliUsageError";
8
+ this.code = code;
9
+ this.suggestions = suggestions;
10
+ this.usage = usage;
11
+ }
12
+ }
13
+ export class CliOperationError extends Error {
14
+ code;
15
+ exitCode;
16
+ retryable;
17
+ suggestions;
18
+ constructor({ code, exitCode, message, retryable, suggestions = [], }) {
19
+ super(message);
20
+ this.name = "CliOperationError";
21
+ this.code = code;
22
+ this.exitCode = exitCode;
23
+ this.retryable = retryable;
24
+ this.suggestions = suggestions;
25
+ }
26
+ }
27
+ //# sourceMappingURL=cli-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-errors.js","sourceRoot":"","sources":["../src/cli-errors.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,IAAI,CAAS;IACb,WAAW,CAAW;IACtB,KAAK,CAAqB;IAE1B,YAAY,EACV,IAAI,EACJ,OAAO,EACP,WAAW,GAAG,EAAE,EAChB,KAAK,GAMN;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,IAAI,CAAS;IACb,QAAQ,CAAc;IACtB,SAAS,CAAU;IACnB,WAAW,CAAW;IAEtB,YAAY,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,WAAW,GAAG,EAAE,GAOjB;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,61 @@
1
+ import type { CliFlagReader, Flags } from "./cli-types.js";
2
+ export declare function createFlagReader({ flags }: {
3
+ flags: Flags;
4
+ }): CliFlagReader;
5
+ export declare function getStringFlag({ flags, name, }: {
6
+ flags: Flags;
7
+ name: string;
8
+ }): string | undefined;
9
+ export declare function requireStringFlag({ flags, name, }: {
10
+ flags: Flags;
11
+ name: string;
12
+ }): string;
13
+ export declare function getBooleanFlag({ flags, name, }: {
14
+ flags: Flags;
15
+ name: string;
16
+ }): boolean;
17
+ export declare function getOptionalBooleanFlag({ flags, name, }: {
18
+ flags: Flags;
19
+ name: string;
20
+ }): boolean | undefined;
21
+ export declare function getNumberFlag({ flags, name, }: {
22
+ flags: Flags;
23
+ name: string;
24
+ }): number | undefined;
25
+ export declare function parseNullableNumberFlag({ flags, name, }: {
26
+ flags: Flags;
27
+ name: string;
28
+ }): number | null | undefined;
29
+ export declare function parseJsonObjectFlag({ flags, name, }: {
30
+ flags: Flags;
31
+ name: string;
32
+ }): Record<string, unknown> | undefined;
33
+ export declare function parseJsonArrayFlag({ flags, name, fileName, }: {
34
+ flags: Flags;
35
+ name: string;
36
+ fileName: string | undefined;
37
+ }): unknown[] | undefined;
38
+ export declare function parseNullableJsonObjectFlag({ flags, name, }: {
39
+ flags: Flags;
40
+ name: string;
41
+ }): Record<string, unknown> | null | undefined;
42
+ export declare function jsonFileFlagName({ name, }: {
43
+ name: string;
44
+ }): string | undefined;
45
+ export declare function parseCsvFlag({ flags, name, }: {
46
+ flags: Flags;
47
+ name: string;
48
+ }): string[] | undefined;
49
+ export declare function parseCsvRequiredFlag({ flags, name, }: {
50
+ flags: Flags;
51
+ name: string;
52
+ }): string[];
53
+ export declare function parseNullableStringFlag({ flags, name, }: {
54
+ flags: Flags;
55
+ name: string;
56
+ }): string | null | undefined;
57
+ export declare function parseStringRecordFlag({ flags, name, }: {
58
+ flags: Flags;
59
+ name: string;
60
+ }): Record<string, string> | undefined;
61
+ //# sourceMappingURL=cli-flag-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-flag-reader.d.ts","sourceRoot":"","sources":["../src/cli-flag-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { usageForCurrentCommand } from "./cli-command-routing.js";
4
+ import { CliUsageError } from "./cli-errors.js";
5
+ export function createFlagReader({ flags }) {
6
+ return {
7
+ raw: flags,
8
+ string: ({ name }) => getStringFlag({ flags, name }),
9
+ requiredString: ({ name }) => requireStringFlag({ flags, name }),
10
+ boolean: ({ name }) => getBooleanFlag({ flags, name }),
11
+ optionalBoolean: ({ name }) => getOptionalBooleanFlag({ flags, name }),
12
+ number: ({ name }) => getNumberFlag({ flags, name }),
13
+ nullableNumber: ({ name }) => parseNullableNumberFlag({ flags, name }),
14
+ jsonObject: ({ name }) => parseJsonObjectFlag({ flags, name }),
15
+ jsonArray: ({ name, fileName }) => parseJsonArrayFlag({ flags, name, fileName }),
16
+ nullableJsonObject: ({ name }) => parseNullableJsonObjectFlag({ flags, name }),
17
+ csv: ({ name }) => parseCsvFlag({ flags, name }),
18
+ requiredCsv: ({ name }) => parseCsvRequiredFlag({ flags, name }),
19
+ nullableString: ({ name }) => parseNullableStringFlag({ flags, name }),
20
+ stringRecord: ({ name }) => parseStringRecordFlag({ flags, name }),
21
+ };
22
+ }
23
+ export function getStringFlag({ flags, name, }) {
24
+ const value = flags[name];
25
+ return typeof value === "string" ? value : undefined;
26
+ }
27
+ export function requireStringFlag({ flags, name, }) {
28
+ const value = getStringFlag({ flags, name });
29
+ if (!value) {
30
+ throw new CliUsageError({
31
+ code: "missing_required_flag",
32
+ message: `Missing required --${name}.`,
33
+ usage: usageForCurrentCommand(),
34
+ });
35
+ }
36
+ return value;
37
+ }
38
+ export function getBooleanFlag({ flags, name, }) {
39
+ return flags[name] === true || flags[name] === "true";
40
+ }
41
+ export function getOptionalBooleanFlag({ flags, name, }) {
42
+ if (!(name in flags)) {
43
+ return undefined;
44
+ }
45
+ return getBooleanFlag({ flags, name });
46
+ }
47
+ export function getNumberFlag({ flags, name, }) {
48
+ const value = getStringFlag({ flags, name });
49
+ if (value === undefined) {
50
+ return undefined;
51
+ }
52
+ const parsed = Number(value);
53
+ if (!Number.isFinite(parsed)) {
54
+ throw new CliUsageError({
55
+ code: "invalid_flag_value",
56
+ message: `--${name} must be a number.`,
57
+ usage: usageForCurrentCommand(),
58
+ });
59
+ }
60
+ return parsed;
61
+ }
62
+ export function parseNullableNumberFlag({ flags, name, }) {
63
+ const value = getStringFlag({ flags, name });
64
+ if (value === undefined) {
65
+ return undefined;
66
+ }
67
+ if (value === "null") {
68
+ return null;
69
+ }
70
+ const parsed = Number(value);
71
+ if (!Number.isFinite(parsed)) {
72
+ throw new Error(`--${name} must be a number or null.`);
73
+ }
74
+ return parsed;
75
+ }
76
+ export function parseJsonObjectFlag({ flags, name, }) {
77
+ const value = readJsonFlagValue({
78
+ flags,
79
+ name,
80
+ fileName: jsonFileFlagName({ name }),
81
+ });
82
+ if (value === undefined) {
83
+ return undefined;
84
+ }
85
+ const parsed = parseJsonFlagValue({
86
+ value: value.raw,
87
+ sourceName: value.sourceName,
88
+ });
89
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
90
+ throw new Error(`${value.sourceName} must be a JSON object.`);
91
+ }
92
+ return parsed;
93
+ }
94
+ export function parseJsonArrayFlag({ flags, name, fileName, }) {
95
+ const value = readJsonFlagValue({ flags, name, fileName });
96
+ if (value === undefined) {
97
+ return undefined;
98
+ }
99
+ const parsed = parseJsonFlagValue({
100
+ value: value.raw,
101
+ sourceName: value.sourceName,
102
+ });
103
+ if (!Array.isArray(parsed)) {
104
+ throw new Error(`${value.sourceName} must be a JSON array.`);
105
+ }
106
+ return parsed;
107
+ }
108
+ export function parseNullableJsonObjectFlag({ flags, name, }) {
109
+ const value = readJsonFlagValue({
110
+ flags,
111
+ name,
112
+ fileName: jsonFileFlagName({ name }),
113
+ });
114
+ if (value === undefined) {
115
+ return undefined;
116
+ }
117
+ if (value.raw.trim() === "null") {
118
+ return null;
119
+ }
120
+ const parsed = parseJsonFlagValue({
121
+ value: value.raw,
122
+ sourceName: value.sourceName,
123
+ });
124
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
125
+ throw new Error(`${value.sourceName} must be a JSON object or null.`);
126
+ }
127
+ return parsed;
128
+ }
129
+ export function jsonFileFlagName({ name, }) {
130
+ return name.endsWith("-json")
131
+ ? `${name.slice(0, -"json".length)}file`
132
+ : undefined;
133
+ }
134
+ export function parseCsvFlag({ flags, name, }) {
135
+ const value = getStringFlag({ flags, name });
136
+ if (value === undefined) {
137
+ return undefined;
138
+ }
139
+ return value
140
+ .split(",")
141
+ .map((item) => item.trim())
142
+ .filter((item) => item.length > 0);
143
+ }
144
+ export function parseCsvRequiredFlag({ flags, name, }) {
145
+ const parsed = parseCsvFlag({ flags, name });
146
+ if (parsed === undefined || parsed.length === 0) {
147
+ throw new Error(`Missing required --${name}.`);
148
+ }
149
+ return parsed;
150
+ }
151
+ export function parseNullableStringFlag({ flags, name, }) {
152
+ const value = getStringFlag({ flags, name });
153
+ if (value === undefined) {
154
+ return undefined;
155
+ }
156
+ if (value === "null") {
157
+ return null;
158
+ }
159
+ return value;
160
+ }
161
+ export function parseStringRecordFlag({ flags, name, }) {
162
+ const value = parseJsonObjectFlag({ flags, name });
163
+ if (value === undefined) {
164
+ return undefined;
165
+ }
166
+ for (const [key, item] of Object.entries(value)) {
167
+ if (typeof item !== "string") {
168
+ throw new Error(`--${name}.${key} must be a string.`);
169
+ }
170
+ }
171
+ return value;
172
+ }
173
+ function readJsonFlagValue({ flags, name, fileName, }) {
174
+ const inlineValue = getStringFlag({ flags, name });
175
+ const filePath = fileName === undefined
176
+ ? undefined
177
+ : getStringFlag({ flags, name: fileName });
178
+ if (inlineValue !== undefined && filePath !== undefined) {
179
+ throw new Error(`Use either --${name} or --${fileName}, not both.`);
180
+ }
181
+ if (inlineValue !== undefined) {
182
+ return { raw: inlineValue, sourceName: `--${name}` };
183
+ }
184
+ if (filePath === undefined) {
185
+ return undefined;
186
+ }
187
+ try {
188
+ return {
189
+ raw: readFileSync(resolve(filePath), "utf8"),
190
+ sourceName: `--${fileName}`,
191
+ };
192
+ }
193
+ catch (error) {
194
+ const message = error instanceof Error ? error.message : String(error);
195
+ throw new Error(`Could not read --${fileName} file "${filePath}": ${message}`);
196
+ }
197
+ }
198
+ function parseJsonFlagValue({ value, sourceName, }) {
199
+ try {
200
+ return JSON.parse(value);
201
+ }
202
+ catch (error) {
203
+ const message = error instanceof Error ? error.message : String(error);
204
+ throw new Error(`${sourceName} contains invalid JSON: ${message}`);
205
+ }
206
+ }
207
+ //# sourceMappingURL=cli-flag-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-flag-reader.js","sourceRoot":"","sources":["../src/cli-flag-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function readJsonResponse({ response, url, action, }: {
2
+ response: Response;
3
+ url: string;
4
+ action: string;
5
+ }): Promise<unknown>;
6
+ //# sourceMappingURL=cli-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-http.d.ts","sourceRoot":"","sources":["../src/cli-http.ts"],"names":[],"mappings":"AAAA,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,GAAG,EACH,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnB"}
@@ -0,0 +1,42 @@
1
+ export async function readJsonResponse({ response, url, action, }) {
2
+ const contentType = response.headers.get("content-type") ?? "";
3
+ const text = await response.text();
4
+ const parsed = tryParseJson({ text });
5
+ if (parsed !== undefined) {
6
+ if (!response.ok) {
7
+ throw new Error(`${action} failed with ${response.status}: ${extractJsonErrorMessage({ value: parsed })}`);
8
+ }
9
+ return parsed;
10
+ }
11
+ const hint = contentType.includes("text/html")
12
+ ? "The server returned HTML instead of JSON. For production, deploy the BlitzReels web app with the CLI auth routes first. For local testing, pass --base-url http://localhost:3000/api/v1."
13
+ : "The server returned a non-JSON response.";
14
+ throw new Error(`${action} failed: ${url} returned ${response.status} ${contentType || "unknown content type"}. ${hint}`);
15
+ }
16
+ function tryParseJson({ text }) {
17
+ if (text.trim().length === 0) {
18
+ return null;
19
+ }
20
+ try {
21
+ return JSON.parse(text);
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ function extractJsonErrorMessage({ value }) {
28
+ if (value && typeof value === "object") {
29
+ const record = value;
30
+ if (typeof record.error_description === "string") {
31
+ return record.error_description;
32
+ }
33
+ if (typeof record.error === "string") {
34
+ return record.error;
35
+ }
36
+ if (typeof record.message === "string") {
37
+ return record.message;
38
+ }
39
+ }
40
+ return JSON.stringify(value);
41
+ }
42
+ //# sourceMappingURL=cli-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-http.js","sourceRoot":"","sources":["../src/cli-http.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,QAAQ,EACR,GAAG,EACH,MAAM,GAKP;IACC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,gBAAgB,QAAQ,CAAC,MAAM,KAAK,uBAAuB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5C,CAAC,CAAC,0LAA0L;QAC5L,CAAC,CAAC,0CAA0C,CAAC;IAC/C,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,YAAY,GAAG,aAAa,QAAQ,CAAC,MAAM,IAAI,WAAW,IAAI,sBAAsB,KAAK,IAAI,EAAE,CACzG,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,IAAI,EAAoB;IAC9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAE,KAAK,EAAsB;IAC5D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}