@@ -68,6 +68,20 @@ export type CanvasCliDependencies = {
|
68 | 68 | }; |
69 | 69 | |
70 | 70 | type CanvasNodeCandidate = NodeMatchCandidate; |
| 71 | +type CanvasSnapshotRequestFormat = "png" | "jpeg"; |
| 72 | + |
| 73 | +function parseCanvasSnapshotRequestFormat(raw: unknown): CanvasSnapshotRequestFormat { |
| 74 | +const format = normalizeLowercaseStringOrEmpty(normalizeOptionalString(raw) ?? "jpg"); |
| 75 | +switch (format) { |
| 76 | +case "png": |
| 77 | +return "png"; |
| 78 | +case "jpg": |
| 79 | +case "jpeg": |
| 80 | +return "jpeg"; |
| 81 | +default: |
| 82 | +throw new Error(`invalid format: ${String(raw)} (expected png|jpg|jpeg)`); |
| 83 | +} |
| 84 | +} |
71 | 85 | |
72 | 86 | function parseTimeoutMs(raw: unknown): number | undefined { |
73 | 87 | if (raw === undefined || raw === null) { |
@@ -234,19 +248,11 @@ export function registerNodesCanvasCommands(nodes: Command, deps: CanvasCliDepen
|
234 | 248 | .option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 20000)", "20000") |
235 | 249 | .action(async (opts: CanvasNodesRpcOpts) => { |
236 | 250 | await deps.runNodesCommand("canvas snapshot", async () => { |
237 | | -const formatOpt = normalizeLowercaseStringOrEmpty( |
238 | | -normalizeOptionalString(opts.format) ?? "jpg", |
239 | | -); |
240 | | -const formatForParams = |
241 | | -formatOpt === "jpg" ? "jpeg" : formatOpt === "jpeg" ? "jpeg" : "png"; |
242 | | -if (formatForParams !== "png" && formatForParams !== "jpeg") { |
243 | | -throw new Error(`invalid format: ${String(opts.format)} (expected png|jpg|jpeg)`); |
244 | | -} |
245 | | - |
| 251 | +const format = parseCanvasSnapshotRequestFormat(opts.format); |
246 | 252 | const maxWidth = opts.maxWidth ? Number.parseInt(opts.maxWidth, 10) : undefined; |
247 | 253 | const quality = opts.quality ? Number.parseFloat(opts.quality) : undefined; |
248 | 254 | const raw = await invokeCanvas(deps, opts, "canvas.snapshot", { |
249 | | -format: formatForParams, |
| 255 | + format, |
250 | 256 | maxWidth: Number.isFinite(maxWidth) ? maxWidth : undefined, |
251 | 257 | quality: Number.isFinite(quality) ? quality : undefined, |
252 | 258 | }); |
|