diff --git a/src/converters/assimp.ts b/src/converters/assimp.ts index 869f28e..08223ea 100644 --- a/src/converters/assimp.ts +++ b/src/converters/assimp.ts @@ -121,7 +121,7 @@ export async function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("assimp", ["export", filePath, targetPath], (error, stdout, stderr) => { + execFile("assimp", ["export", filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/calibre.ts b/src/converters/calibre.ts index 153de16..bf63a27 100644 --- a/src/converters/calibre.ts +++ b/src/converters/calibre.ts @@ -67,7 +67,7 @@ export async function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("ebook-convert", [filePath, targetPath], (error, stdout, stderr) => { + execFile("ebook-convert", [filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/dvisvgm.ts b/src/converters/dvisvgm.ts index 76ef5c1..e7e422f 100644 --- a/src/converters/dvisvgm.ts +++ b/src/converters/dvisvgm.ts @@ -30,20 +30,25 @@ export function convert( } return new Promise((resolve, reject) => { - execFile("dvisvgm", [...inputArgs, filePath, "-o", targetPath], (error, stdout, stderr) => { - if (error) { - reject(`error: ${error}`); - } + execFile( + "dvisvgm", + [...inputArgs, filePath, "-o", targetPath], + options, + (error, stdout, stderr) => { + if (error) { + reject(`error: ${error}`); + } - if (stdout) { - console.log(`stdout: ${stdout}`); - } + if (stdout) { + console.log(`stdout: ${stdout}`); + } - if (stderr) { - console.error(`stderr: ${stderr}`); - } + if (stderr) { + console.error(`stderr: ${stderr}`); + } - resolve("Done"); - }); + resolve("Done"); + }, + ); }); } diff --git a/src/converters/ffmpeg.ts b/src/converters/ffmpeg.ts index 8207c61..3e0cab7 100644 --- a/src/converters/ffmpeg.ts +++ b/src/converters/ffmpeg.ts @@ -735,6 +735,7 @@ export async function convert( execFile( "ffmpeg", [...ffmpegArgs, "-i", filePath, ...extraArgs, targetPath], + options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); diff --git a/src/converters/graphicsmagick.ts b/src/converters/graphicsmagick.ts index 5551341..7d234e7 100644 --- a/src/converters/graphicsmagick.ts +++ b/src/converters/graphicsmagick.ts @@ -318,7 +318,7 @@ export function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("gm", ["convert", filePath, targetPath], (error, stdout, stderr) => { + execFile("gm", ["convert", filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/imagemagick.ts b/src/converters/imagemagick.ts index eb2eaa7..28b1ef5 100644 --- a/src/converters/imagemagick.ts +++ b/src/converters/imagemagick.ts @@ -472,6 +472,7 @@ export function convert( execFile( "magick", [...inputArgs, filePath, ...outputArgs, targetPath], + options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); diff --git a/src/converters/inkscape.ts b/src/converters/inkscape.ts index 4497e2f..4d277bd 100644 --- a/src/converters/inkscape.ts +++ b/src/converters/inkscape.ts @@ -37,7 +37,7 @@ export function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("inkscape", [filePath, "-o", targetPath], (error, stdout, stderr) => { + execFile("inkscape", [filePath, "-o", targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/libheif.ts b/src/converters/libheif.ts index b88e177..6326662 100644 --- a/src/converters/libheif.ts +++ b/src/converters/libheif.ts @@ -19,7 +19,7 @@ export function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("heif-convert", [filePath, targetPath], (error, stdout, stderr) => { + execFile("heif-convert", [filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/libjxl.ts b/src/converters/libjxl.ts index 6ff825f..cd7f315 100644 --- a/src/converters/libjxl.ts +++ b/src/converters/libjxl.ts @@ -31,7 +31,7 @@ export function convert( } return new Promise((resolve, reject) => { - execFile(tool, [filePath, targetPath], (error, stdout, stderr) => { + execFile(tool, [filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/libreoffice.ts b/src/converters/libreoffice.ts index d5c47af..7489a91 100644 --- a/src/converters/libreoffice.ts +++ b/src/converters/libreoffice.ts @@ -1,4 +1,5 @@ -import { execFile } from "node:child_process"; +import { execFile as execFileOriginal } from "node:child_process"; +import { ExecFileFn } from "./types.ts"; export const properties = { from: { @@ -136,8 +137,8 @@ export function convert( fileType: string, convertTo: string, targetPath: string, - // eslint-disable-next-line @typescript-eslint/no-unused-vars options?: unknown, + execFile: ExecFileFn = execFileOriginal, ): Promise { const outputPath = targetPath.split("/").slice(0, -1).join("/").replace("./", "") ?? targetPath; @@ -157,7 +158,7 @@ export function convert( } return new Promise((resolve, reject) => { - execFile("soffice", args, (error, stdout, stderr) => { + execFile("soffice", args, options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/pandoc.ts b/src/converters/pandoc.ts index 6aab79d..3873454 100644 --- a/src/converters/pandoc.ts +++ b/src/converters/pandoc.ts @@ -1,4 +1,5 @@ -import { execFile } from "node:child_process"; +import { execFile as execFileOriginal } from "node:child_process"; +import { ExecFileFn } from "./types.ts"; export const properties = { from: { @@ -124,8 +125,8 @@ export function convert( fileType: string, convertTo: string, targetPath: string, - // eslint-disable-next-line @typescript-eslint/no-unused-vars options?: unknown, + execFile: ExecFileFn = execFileOriginal, ): Promise { // set xelatex here const xelatex = ["pdf", "latex"]; @@ -143,7 +144,7 @@ export function convert( args.push("-o", targetPath); return new Promise((resolve, reject) => { - execFile("pandoc", args, (error, stdout, stderr) => { + execFile("pandoc", args, options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/potrace.ts b/src/converters/potrace.ts index 6027491..767fee0 100644 --- a/src/converters/potrace.ts +++ b/src/converters/potrace.ts @@ -31,20 +31,25 @@ export function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("potrace", [filePath, "-o", targetPath, "-b", convertTo], (error, stdout, stderr) => { - if (error) { - reject(`error: ${error}`); - } + execFile( + "potrace", + [filePath, "-o", targetPath, "-b", convertTo], + options, + (error, stdout, stderr) => { + if (error) { + reject(`error: ${error}`); + } - if (stdout) { - console.log(`stdout: ${stdout}`); - } + if (stdout) { + console.log(`stdout: ${stdout}`); + } - if (stderr) { - console.error(`stderr: ${stderr}`); - } + if (stderr) { + console.error(`stderr: ${stderr}`); + } - resolve("Done"); - }); + resolve("Done"); + }, + ); }); } diff --git a/src/converters/resvg.ts b/src/converters/resvg.ts index 3155483..97062cc 100644 --- a/src/converters/resvg.ts +++ b/src/converters/resvg.ts @@ -19,7 +19,7 @@ export function convert( execFile: ExecFileFn = execFileOriginal, // to make it mockable ): Promise { return new Promise((resolve, reject) => { - execFile("resvg", [filePath, targetPath], (error, stdout, stderr) => { + execFile("resvg", [filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/types.ts b/src/converters/types.ts index 5227b37..0f265b6 100644 --- a/src/converters/types.ts +++ b/src/converters/types.ts @@ -1,7 +1,7 @@ export type ExecFileFn = ( cmd: string, args: string[], - options: import("child_process").ExecFileOptions | undefined, + options: import("child_process").ExecFileOptions | unknown | undefined | null, callback: (err: Error | null, stdout: string, stderr: string) => void, ) => void; diff --git a/src/converters/vips.ts b/src/converters/vips.ts index b89db12..ddab269 100644 --- a/src/converters/vips.ts +++ b/src/converters/vips.ts @@ -120,7 +120,7 @@ export function convert( } return new Promise((resolve, reject) => { - execFile("vips", [action, filePath, targetPath], (error, stdout, stderr) => { + execFile("vips", [action, filePath, targetPath], options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); } diff --git a/src/converters/xelatex.ts b/src/converters/xelatex.ts index 784acdc..a940fdf 100644 --- a/src/converters/xelatex.ts +++ b/src/converters/xelatex.ts @@ -25,6 +25,7 @@ export function convert( execFile( "latexmk", ["-xelatex", "-interaction=nonstopmode", `-output-directory=${outputPath}`, filePath], + options, (error, stdout, stderr) => { if (error) { reject(`error: ${error}`); diff --git a/tests/converters/dvisvgm.test.ts b/tests/converters/dvisvgm.test.ts index 873b4db..2c91a2f 100644 --- a/tests/converters/dvisvgm.test.ts +++ b/tests/converters/dvisvgm.test.ts @@ -37,6 +37,7 @@ test("convert respects eps filetype", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -63,6 +64,7 @@ test("convert respects pdf filetype", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -89,6 +91,7 @@ test("convert respects svgz conversion target type", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); diff --git a/tests/converters/ffmpeg.test.ts b/tests/converters/ffmpeg.test.ts index 2bb375a..4cea0ea 100644 --- a/tests/converters/ffmpeg.test.ts +++ b/tests/converters/ffmpeg.test.ts @@ -6,6 +6,7 @@ let calls: string[][] = []; function mockExecFile( _cmd: string, args: string[], + options: unknown, callback: (err: Error | null, stdout: string, stderr: string) => void, ) { calls.push(args); diff --git a/tests/converters/helpers/converters.ts b/tests/converters/helpers/converters.ts index fe04d7e..950c873 100644 --- a/tests/converters/helpers/converters.ts +++ b/tests/converters/helpers/converters.ts @@ -13,6 +13,7 @@ export async function runConvertSuccessTest(convertFn: ConvertFnWithExecFile) { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { callback(null, "Fake stdout", ""); @@ -30,6 +31,7 @@ export async function runConvertFailTest(convertFn: ConvertFnWithExecFile) { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { callback(new Error("Test error"), "", ""); @@ -51,9 +53,10 @@ export async function runConvertLogsStderror(convertFn: ConvertFnWithExecFile) { const mockExecFile = ( _cmd: string, _args: string[], - cb: (err: Error | null, stdout: string, stderr: string) => void, + options: unknown, + callback: (err: Error | null, stdout: string, stderr: string) => void, ) => { - cb(null, "", "Fake stderr"); + callback(null, "", "Fake stderr"); }; await convertFn("file.obj", "obj", "stl", "out.stl", undefined, mockExecFile); diff --git a/tests/converters/imagemagick.test.ts b/tests/converters/imagemagick.test.ts index 26ec4a9..06f1d13 100644 --- a/tests/converters/imagemagick.test.ts +++ b/tests/converters/imagemagick.test.ts @@ -37,6 +37,7 @@ test("convert respects ico conversion target type", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -72,6 +73,7 @@ test("convert respects ico conversion target type with svg as input filetype", a const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -109,6 +111,7 @@ test("convert respects ico conversion target type with emf as input filetype", a const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -150,6 +153,7 @@ test("convert respects emf as input filetype", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); diff --git a/tests/converters/libjxl.test.ts b/tests/converters/libjxl.test.ts index cea851b..ed352d6 100644 --- a/tests/converters/libjxl.test.ts +++ b/tests/converters/libjxl.test.ts @@ -37,6 +37,7 @@ test("convert uses djxl with input filetype being jxl", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { command = _cmd; @@ -63,6 +64,7 @@ test("convert uses cjxl with output filetype being jxl", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { command = _cmd; diff --git a/tests/converters/vips.test.ts b/tests/converters/vips.test.ts index dec12dd..d7ea9d8 100644 --- a/tests/converters/vips.test.ts +++ b/tests/converters/vips.test.ts @@ -37,6 +37,7 @@ test("convert uses action pdfload with filetype being pdf", async () => { const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args); @@ -63,6 +64,7 @@ test("convert uses action copy with filetype being anything but pdf", async () = const mockExecFile: ExecFileFn = ( _cmd: string, _args: string[], + options: unknown, callback: (err: ExecFileException | null, stdout: string, stderr: string) => void, ) => { calls.push(_args);