mirror of https://github.com/VERT-sh/VERT.git
chore: clean up logging
This commit is contained in:
parent
fb1bd521f3
commit
ed851d8bd3
|
|
@ -79,9 +79,16 @@ export class FFmpegConverter extends Converter {
|
||||||
|
|
||||||
public readonly reportsProgress = true;
|
public readonly reportsProgress = true;
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private log: (...msg: any[]) => void = () => {};
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private error: (...msg: any[]) => void = () => {};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
log(["converters", this.name], `created converter`);
|
this.log = (msg) => log(["converters", this.name], msg);
|
||||||
|
this.error = (msg) => error(["converters", this.name], msg);
|
||||||
|
this.log(`created converter`);
|
||||||
if (!browser) return;
|
if (!browser) return;
|
||||||
try {
|
try {
|
||||||
// this is just to cache the wasm and js for when we actually use it. we're not using this ffmpeg instance
|
// this is just to cache the wasm and js for when we actually use it. we're not using this ffmpeg instance
|
||||||
|
|
@ -246,10 +253,7 @@ export class FFmpegConverter extends Converter {
|
||||||
|
|
||||||
const buf = new Uint8Array(await input.file.arrayBuffer());
|
const buf = new Uint8Array(await input.file.arrayBuffer());
|
||||||
await ffmpeg.writeFile("input", buf);
|
await ffmpeg.writeFile("input", buf);
|
||||||
log(
|
this.log(`wrote ${input.name} to ffmpeg virtual fs`);
|
||||||
["converters", this.name],
|
|
||||||
`wrote ${input.name} to ffmpeg virtual fs`,
|
|
||||||
);
|
|
||||||
|
|
||||||
const command = await this.buildConversionCommand(
|
const command = await this.buildConversionCommand(
|
||||||
ffmpeg,
|
ffmpeg,
|
||||||
|
|
@ -258,9 +262,9 @@ export class FFmpegConverter extends Converter {
|
||||||
conversionSettings,
|
conversionSettings,
|
||||||
isAlac,
|
isAlac,
|
||||||
);
|
);
|
||||||
log(["converters", this.name], `FFmpeg command: ${command.join(" ")}`);
|
this.log(`FFmpeg command: ${command.join(" ")}`);
|
||||||
await ffmpeg.exec(command);
|
await ffmpeg.exec(command);
|
||||||
log(["converters", this.name], "executed ffmpeg command");
|
this.log("executed ffmpeg command");
|
||||||
|
|
||||||
if (conversionError) {
|
if (conversionError) {
|
||||||
ffmpeg.off("log", errorListener);
|
ffmpeg.off("log", errorListener);
|
||||||
|
|
@ -280,10 +284,7 @@ export class FFmpegConverter extends Converter {
|
||||||
|
|
||||||
const outputFileName =
|
const outputFileName =
|
||||||
input.name.split(".").slice(0, -1).join(".") + to;
|
input.name.split(".").slice(0, -1).join(".") + to;
|
||||||
log(
|
this.log(`read ${outputFileName} from ffmpeg virtual fs`);
|
||||||
["converters", this.name],
|
|
||||||
`read ${outputFileName} from ffmpeg virtual fs`,
|
|
||||||
);
|
|
||||||
|
|
||||||
ffmpeg.off("log", errorListener);
|
ffmpeg.off("log", errorListener);
|
||||||
ffmpeg.terminate();
|
ffmpeg.terminate();
|
||||||
|
|
@ -295,17 +296,11 @@ export class FFmpegConverter extends Converter {
|
||||||
public async cancel(input: VertFile): Promise<void> {
|
public async cancel(input: VertFile): Promise<void> {
|
||||||
const ffmpeg = this.activeConversions.get(input.id);
|
const ffmpeg = this.activeConversions.get(input.id);
|
||||||
if (!ffmpeg) {
|
if (!ffmpeg) {
|
||||||
error(
|
this.error(`no active conversion found for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`no active conversion found for file ${input.name}`,
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log(
|
this.log(`cancelling conversion for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`cancelling conversion for file ${input.name}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
ffmpeg.terminate();
|
ffmpeg.terminate();
|
||||||
this.activeConversions.delete(input.id);
|
this.activeConversions.delete(input.id);
|
||||||
|
|
@ -323,7 +318,7 @@ export class FFmpegConverter extends Converter {
|
||||||
});
|
});
|
||||||
|
|
||||||
ffmpeg.on("log", (l) => {
|
ffmpeg.on("log", (l) => {
|
||||||
log(["converters", this.name], l.message);
|
this.log(l.message);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -358,10 +353,7 @@ export class FFmpegConverter extends Converter {
|
||||||
const n = parseInt(event.message.trim(), 10);
|
const n = parseInt(event.message.trim(), 10);
|
||||||
if (!n) return;
|
if (!n) return;
|
||||||
bitrate = Math.round(n / 1000);
|
bitrate = Math.round(n / 1000);
|
||||||
log(
|
this.log(`Detected stream audio bitrate: ${bitrate} kbps`);
|
||||||
["converters", this.name],
|
|
||||||
`Detected stream audio bitrate: ${bitrate} kbps`,
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ffmpeg.on("log", bitrateListener);
|
ffmpeg.on("log", bitrateListener);
|
||||||
|
|
@ -400,10 +392,7 @@ export class FFmpegConverter extends Converter {
|
||||||
const n = parseInt(event.message.trim(), 10);
|
const n = parseInt(event.message.trim(), 10);
|
||||||
if (!n) return;
|
if (!n) return;
|
||||||
sampleRate = n;
|
sampleRate = n;
|
||||||
log(
|
this.log(`Detected stream audio sample rate: ${sampleRate} Hz`);
|
||||||
["converters", this.name],
|
|
||||||
`Detected stream audio sample rate: ${sampleRate} Hz`,
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ffmpeg.on("log", sampleRateListener);
|
ffmpeg.on("log", sampleRateListener);
|
||||||
|
|
@ -453,7 +442,7 @@ export class FFmpegConverter extends Converter {
|
||||||
let metadataArgs: string[] = [];
|
let metadataArgs: string[] = [];
|
||||||
let m4aArgs: string[] = [];
|
let m4aArgs: string[] = [];
|
||||||
|
|
||||||
log(["converters", this.name], `keep metadata: ${keepMetadata}`);
|
this.log(`keep metadata: ${keepMetadata}`);
|
||||||
if (!keepMetadata) {
|
if (!keepMetadata) {
|
||||||
metadataArgs = [
|
metadataArgs = [
|
||||||
"-map_metadata", // remove metadata
|
"-map_metadata", // remove metadata
|
||||||
|
|
@ -473,17 +462,13 @@ export class FFmpegConverter extends Converter {
|
||||||
"-b:a",
|
"-b:a",
|
||||||
`${userBitrate === "custom" ? customBitrate : userBitrate}k`,
|
`${userBitrate === "custom" ? customBitrate : userBitrate}k`,
|
||||||
];
|
];
|
||||||
log(
|
this.log(`using user setting for audio bitrate: ${userBitrate}`);
|
||||||
["converters", this.name],
|
|
||||||
`using user setting for audio bitrate: ${userBitrate}`,
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
// detect bitrate of original file and use
|
// detect bitrate of original file and use
|
||||||
if (isLosslessToLossy) {
|
if (isLosslessToLossy) {
|
||||||
// use safe default
|
// use safe default
|
||||||
audioBitrateArgs = ["-b:a", "128k"];
|
audioBitrateArgs = ["-b:a", "128k"];
|
||||||
log(
|
this.log(
|
||||||
["converters", this.name],
|
|
||||||
`converting from lossless to lossy, using default audio bitrate: 128k`,
|
`converting from lossless to lossy, using default audio bitrate: 128k`,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -491,10 +476,7 @@ export class FFmpegConverter extends Converter {
|
||||||
audioBitrateArgs = inputBitrate
|
audioBitrateArgs = inputBitrate
|
||||||
? ["-b:a", `${inputBitrate}k`]
|
? ["-b:a", `${inputBitrate}k`]
|
||||||
: [];
|
: [];
|
||||||
log(
|
this.log(`using detected audio bitrate: ${inputBitrate}k`);
|
||||||
["converters", this.name],
|
|
||||||
`using detected audio bitrate: ${inputBitrate}k`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -504,17 +486,13 @@ export class FFmpegConverter extends Converter {
|
||||||
"-ar",
|
"-ar",
|
||||||
userSampleRate === "custom" ? customSampleRate : userSampleRate,
|
userSampleRate === "custom" ? customSampleRate : userSampleRate,
|
||||||
];
|
];
|
||||||
log(
|
this.log(`using user setting for sample rate: ${userSampleRate}Hz`);
|
||||||
["converters", this.name],
|
|
||||||
`using user setting for sample rate: ${userSampleRate}Hz`,
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
// detect sample rate of original file and use
|
// detect sample rate of original file and use
|
||||||
if (isLosslessToLossy) {
|
if (isLosslessToLossy) {
|
||||||
// use safe default
|
// use safe default
|
||||||
const defaultRate = to === ".opus" ? "48000" : "44100";
|
const defaultRate = to === ".opus" ? "48000" : "44100";
|
||||||
log(
|
this.log(
|
||||||
["converters", this.name],
|
|
||||||
`converting from lossless to lossy, using default sample rate: ${defaultRate}Hz`,
|
`converting from lossless to lossy, using default sample rate: ${defaultRate}Hz`,
|
||||||
);
|
);
|
||||||
sampleRateArgs = ["-ar", defaultRate];
|
sampleRateArgs = ["-ar", defaultRate];
|
||||||
|
|
@ -522,9 +500,8 @@ export class FFmpegConverter extends Converter {
|
||||||
let inputSampleRate = await this.detectAudioSampleRate(ffmpeg);
|
let inputSampleRate = await this.detectAudioSampleRate(ffmpeg);
|
||||||
if (to === ".opus" && inputSampleRate === 44100) {
|
if (to === ".opus" && inputSampleRate === 44100) {
|
||||||
// special case: opus does not support 44100Hz which is more common - adjust to 48000Hz
|
// special case: opus does not support 44100Hz which is more common - adjust to 48000Hz
|
||||||
log(
|
this.log(
|
||||||
["converters", this.name],
|
`conversion to opus with 44100Hz sample rate detected, adjusting to 48000Hz`,
|
||||||
"conversion to opus with 44100Hz sample rate detected, adjusting to 48000Hz",
|
|
||||||
);
|
);
|
||||||
inputSampleRate = 48000;
|
inputSampleRate = 48000;
|
||||||
}
|
}
|
||||||
|
|
@ -532,8 +509,7 @@ export class FFmpegConverter extends Converter {
|
||||||
sampleRateArgs = inputSampleRate
|
sampleRateArgs = inputSampleRate
|
||||||
? ["-ar", `${inputSampleRate}`]
|
? ["-ar", `${inputSampleRate}`]
|
||||||
: [];
|
: [];
|
||||||
log(
|
this.log(
|
||||||
["converters", this.name],
|
|
||||||
`using detected audio sample rate: ${inputSampleRate}Hz`,
|
`using detected audio sample rate: ${inputSampleRate}Hz`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -542,8 +518,7 @@ export class FFmpegConverter extends Converter {
|
||||||
// channels setting
|
// channels setting
|
||||||
if (settings.channels !== "auto") {
|
if (settings.channels !== "auto") {
|
||||||
channelsArgs = ["-ac", settings.channels];
|
channelsArgs = ["-ac", settings.channels];
|
||||||
log(
|
this.log(
|
||||||
["converters", this.name],
|
|
||||||
`using user setting for audio channels: ${settings.channels}`,
|
`using user setting for audio channels: ${settings.channels}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -560,18 +535,12 @@ export class FFmpegConverter extends Converter {
|
||||||
tracksArgs = ["-map", "0:a:0"]; // default to first audio track if not specified
|
tracksArgs = ["-map", "0:a:0"]; // default to first audio track if not specified
|
||||||
}
|
}
|
||||||
|
|
||||||
log(
|
this.log(`using user setting for audio tracks: ${settings.tracks}`);
|
||||||
["converters", this.name],
|
|
||||||
`using user setting for audio tracks: ${settings.tracks}`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// video to audio
|
// video to audio
|
||||||
if (videoFormats.includes(inputFormat)) {
|
if (videoFormats.includes(inputFormat)) {
|
||||||
log(
|
this.log(`Converting video ${input.from} to audio ${to}`);
|
||||||
["converters", this.name],
|
|
||||||
`Converting video ${input.from} to audio ${to}`,
|
|
||||||
);
|
|
||||||
return [
|
return [
|
||||||
"-i",
|
"-i",
|
||||||
"input",
|
"input",
|
||||||
|
|
@ -588,10 +557,7 @@ export class FFmpegConverter extends Converter {
|
||||||
|
|
||||||
// audio to video
|
// audio to video
|
||||||
if (videoFormats.includes(outputFormat)) {
|
if (videoFormats.includes(outputFormat)) {
|
||||||
log(
|
this.log(`Converting audio ${input.from} to video ${to}`);
|
||||||
["converters", this.name],
|
|
||||||
`Converting audio ${input.from} to video ${to}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
const hasAlbumArt = keepMetadata
|
const hasAlbumArt = keepMetadata
|
||||||
? await this.extractAlbumArt(ffmpeg)
|
? await this.extractAlbumArt(ffmpeg)
|
||||||
|
|
@ -599,10 +565,7 @@ export class FFmpegConverter extends Converter {
|
||||||
const codecArgs = toArgs(to, isAlac);
|
const codecArgs = toArgs(to, isAlac);
|
||||||
|
|
||||||
if (hasAlbumArt) {
|
if (hasAlbumArt) {
|
||||||
log(
|
this.log("Using album art as video background");
|
||||||
["converters", this.name],
|
|
||||||
"Using album art as video background",
|
|
||||||
);
|
|
||||||
return [
|
return [
|
||||||
"-loop",
|
"-loop",
|
||||||
"1",
|
"1",
|
||||||
|
|
@ -626,7 +589,7 @@ export class FFmpegConverter extends Converter {
|
||||||
"output" + to,
|
"output" + to,
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
log(["converters", this.name], "Using solid color background");
|
this.log("Using solid color background");
|
||||||
return [
|
return [
|
||||||
"-f",
|
"-f",
|
||||||
"lavfi",
|
"lavfi",
|
||||||
|
|
@ -651,10 +614,7 @@ export class FFmpegConverter extends Converter {
|
||||||
}
|
}
|
||||||
|
|
||||||
// audio to audio
|
// audio to audio
|
||||||
log(
|
this.log(`Converting audio ${input.from} to audio ${to}`);
|
||||||
["converters", this.name],
|
|
||||||
`Converting audio ${input.from} to audio ${to}`,
|
|
||||||
);
|
|
||||||
const { audio: audioCodec } = getCodecs(to, isAlac);
|
const { audio: audioCodec } = getCodecs(to, isAlac);
|
||||||
if (m4a && keepMetadata) m4aArgs = ["-c:v", "copy"]; // for album art
|
if (m4a && keepMetadata) m4aArgs = ["-c:v", "copy"]; // for album art
|
||||||
|
|
||||||
|
|
@ -688,10 +648,7 @@ export class FFmpegConverter extends Converter {
|
||||||
"cover.jpg",
|
"cover.jpg",
|
||||||
])
|
])
|
||||||
) {
|
) {
|
||||||
log(
|
this.log("Successfully extracted album art from stream 0:1");
|
||||||
["converters", this.name],
|
|
||||||
"Successfully extracted album art from stream 0:1",
|
|
||||||
);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -708,17 +665,11 @@ export class FFmpegConverter extends Converter {
|
||||||
"cover.jpg",
|
"cover.jpg",
|
||||||
])
|
])
|
||||||
) {
|
) {
|
||||||
log(
|
this.log("Successfully extracted album art (fallback method)");
|
||||||
["converters", this.name],
|
|
||||||
"Successfully extracted album art (fallback method)",
|
|
||||||
);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
log(
|
this.log("No album art found, will create solid color background");
|
||||||
["converters", this.name],
|
|
||||||
"No album art found, will create solid color background",
|
|
||||||
);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,9 +83,16 @@ export class MagickConverter extends Converter {
|
||||||
|
|
||||||
public readonly reportsProgress = false;
|
public readonly reportsProgress = false;
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private log: (...msg: any[]) => void = () => {};
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private error: (...msg: any[]) => void = () => {};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
log(["converters", this.name], `created converter`);
|
this.log = (msg) => log(["converters", this.name], msg);
|
||||||
|
this.error = (msg) => error(["converters", this.name], msg);
|
||||||
|
this.log(`created converter`);
|
||||||
if (!browser) return;
|
if (!browser) return;
|
||||||
this.initializeWasm();
|
this.initializeWasm();
|
||||||
}
|
}
|
||||||
|
|
@ -104,10 +111,7 @@ export class MagickConverter extends Converter {
|
||||||
this.status = "ready";
|
this.status = "ready";
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.status = "error";
|
this.status = "error";
|
||||||
error(
|
this.error(`Failed to load ImageMagick WASM: ${err}`);
|
||||||
["converters", this.name],
|
|
||||||
`Failed to load ImageMagick WASM: ${err}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
ToastManager.add({
|
ToastManager.add({
|
||||||
type: "error",
|
type: "error",
|
||||||
|
|
@ -209,7 +213,7 @@ export class MagickConverter extends Converter {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
...args: any[]
|
...args: any[]
|
||||||
): Promise<VertFile> {
|
): Promise<VertFile> {
|
||||||
log(["converters", this.name], `converting ${input.name} to ${to}`);
|
this.log(`converting ${input.name} to ${to}`);
|
||||||
|
|
||||||
// handle converting from SVG manually because magick-wasm doesn't support it
|
// handle converting from SVG manually because magick-wasm doesn't support it
|
||||||
if (input.from === ".svg") {
|
if (input.from === ".svg") {
|
||||||
|
|
@ -222,10 +226,7 @@ export class MagickConverter extends Converter {
|
||||||
if (to === ".png") return pngFile; // if target is png, return it directly
|
if (to === ".png") return pngFile; // if target is png, return it directly
|
||||||
return await this.convert(pngFile, to, settings, ...args); // otherwise, recursively convert png to user's target format
|
return await this.convert(pngFile, to, settings, ...args); // otherwise, recursively convert png to user's target format
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
error(
|
this.error(`SVG conversion failed: ${err}`);
|
||||||
["converters", this.name],
|
|
||||||
`SVG conversion failed: ${err}`,
|
|
||||||
);
|
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -295,10 +296,7 @@ export class MagickConverter extends Converter {
|
||||||
|
|
||||||
const res = await this.waitForMessage(worker);
|
const res = await this.waitForMessage(worker);
|
||||||
if (res.type === "finished") {
|
if (res.type === "finished") {
|
||||||
log(
|
this.log(`converted ${input.name} to ${to}`);
|
||||||
["converters", this.name],
|
|
||||||
`converted ${input.name} to ${to}`,
|
|
||||||
);
|
|
||||||
return new VertFile(
|
return new VertFile(
|
||||||
new File([res.output as unknown as BlobPart], input.name),
|
new File([res.output as unknown as BlobPart], input.name),
|
||||||
res.zip ? ".zip" : to,
|
res.zip ? ".zip" : to,
|
||||||
|
|
@ -319,17 +317,11 @@ export class MagickConverter extends Converter {
|
||||||
public async cancel(input: VertFile): Promise<void> {
|
public async cancel(input: VertFile): Promise<void> {
|
||||||
const worker = this.activeConversions.get(input.id);
|
const worker = this.activeConversions.get(input.id);
|
||||||
if (!worker) {
|
if (!worker) {
|
||||||
error(
|
this.error(`no active conversion found for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`no active conversion found for file ${input.name}`,
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log(
|
this.log(`cancelling conversion for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`cancelling conversion for file ${input.name}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
worker.terminate();
|
worker.terminate();
|
||||||
this.activeConversions.delete(input.id);
|
this.activeConversions.delete(input.id);
|
||||||
|
|
@ -366,7 +358,7 @@ export class MagickConverter extends Converter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async svgToImage(input: VertFile): Promise<Blob> {
|
private async svgToImage(input: VertFile): Promise<Blob> {
|
||||||
log(["converters", this.name], `converting SVG to image (PNG)`);
|
this.log(`converting SVG to image (PNG)`);
|
||||||
|
|
||||||
const svgText = await input.file.text();
|
const svgText = await input.file.text();
|
||||||
const svgBlob = new Blob([svgText], { type: "image/svg+xml" });
|
const svgBlob = new Blob([svgText], { type: "image/svg+xml" });
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,15 @@ export class PandocConverter extends Converter {
|
||||||
|
|
||||||
private activeConversions = new Map<string, Worker>();
|
private activeConversions = new Map<string, Worker>();
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private log: (...msg: any[]) => void = () => {};
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private error: (...msg: any[]) => void = () => {};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
this.log = (msg) => log(["converters", this.name], msg);
|
||||||
|
this.error = (msg) => error(["converters", this.name], msg);
|
||||||
if (!browser) return;
|
if (!browser) return;
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
|
|
@ -26,10 +33,7 @@ export class PandocConverter extends Converter {
|
||||||
this.status = "ready";
|
this.status = "ready";
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.status = "error";
|
this.status = "error";
|
||||||
error(
|
this.error(`Failed to load Pandoc worker: ${err}`);
|
||||||
["converters", this.name],
|
|
||||||
`Failed to load Pandoc worker: ${err}`,
|
|
||||||
);
|
|
||||||
ToastManager.add({
|
ToastManager.add({
|
||||||
type: "error",
|
type: "error",
|
||||||
message: m["workers.errors.pandoc"](),
|
message: m["workers.errors.pandoc"](),
|
||||||
|
|
@ -113,17 +117,11 @@ export class PandocConverter extends Converter {
|
||||||
public async cancel(input: VertFile): Promise<void> {
|
public async cancel(input: VertFile): Promise<void> {
|
||||||
const worker = this.activeConversions.get(input.id);
|
const worker = this.activeConversions.get(input.id);
|
||||||
if (!worker) {
|
if (!worker) {
|
||||||
error(
|
this.error(`no active conversion found for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`no active conversion found for file ${input.name}`,
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log(
|
this.log(`cancelling conversion for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`cancelling conversion for file ${input.name}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
worker.terminate();
|
worker.terminate();
|
||||||
this.activeConversions.delete(input.id);
|
this.activeConversions.delete(input.id);
|
||||||
|
|
|
||||||
|
|
@ -332,10 +332,13 @@ export class VertdConverter extends Converter {
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
private log: (...msg: any[]) => void = () => {};
|
private log: (...msg: any[]) => void = () => {};
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
private error: (...msg: any[]) => void = () => {};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.log = (msg) => log(["converters", this.name], msg);
|
this.log = (msg) => log(["converters", this.name], msg);
|
||||||
|
this.error = (msg) => error(["converters", this.name], msg);
|
||||||
this.log("created converter");
|
this.log("created converter");
|
||||||
this.log("not rly sure how to implement this :P");
|
this.log("not rly sure how to implement this :P");
|
||||||
this.status = "ready";
|
this.status = "ready";
|
||||||
|
|
@ -712,10 +715,7 @@ export class VertdConverter extends Converter {
|
||||||
`confirmed download for file ${input.name}`,
|
`confirmed download for file ${input.name}`,
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error(
|
this.error(`failed to confirm download: ${e}`);
|
||||||
["converters", this.name],
|
|
||||||
`failed to confirm download: ${e}`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(new VertFile(new File([res], input.name), to));
|
resolve(new VertFile(new File([res], input.name), to));
|
||||||
|
|
@ -754,10 +754,7 @@ export class VertdConverter extends Converter {
|
||||||
public async cancel(input: VertFile): Promise<void> {
|
public async cancel(input: VertFile): Promise<void> {
|
||||||
const activeConversion = this.activeConversions.get(input.id);
|
const activeConversion = this.activeConversions.get(input.id);
|
||||||
if (!activeConversion) {
|
if (!activeConversion) {
|
||||||
error(
|
this.error(`no active conversion found for file ${input.name}`);
|
||||||
["converters", this.name],
|
|
||||||
`no active conversion found for file ${input.name}`,
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue