decord/beta/source/lib/uploader/imageConversion.tsx

359 lines
12 KiB
TypeScript
Raw Normal View History

2026-10-12 16:32:48 +00:00
// Module ID: 7881
// Function ID: 7882
// Name: imageConversion
2026-10-12 16:32:48 +00:00
// Dependencies: [5, 3, 5444, 7788, 4731, 2]
// Exports: convertFileToJpeg
2026-10-12 16:32:48 +00:00
// Module 7881 (imageConversion)
import LoggerDefault from "Logger" /* 3 */;
2026-10-12 16:32:48 +00:00
import MediaTypes from "MediaTypes" /* 5444 */;
import imageFilename from "imageFilename" /* 7788 */;
2026-10-01 14:13:23 +00:00
import _asyncToGenerator from "_asyncToGenerator" /* 5 */;
import size from "module_2" /* 2 */;
2026-10-12 16:32:48 +00:00
let UNKNOWN_ERROR, c7, c8, closure_5;
function toImageEncoder(arg0) {
if ("WIC" === arg0) {
return MediaTypes.ImageEncoder.WIC;
} else if ("ImageIO" === arg0) {
return MediaTypes.ImageEncoder.IMAGEIO;
} else if ("stub" === arg0) {
return MediaTypes.ImageEncoder.SYSIMG_STUB;
} else {
return MediaTypes.ImageEncoder.SYSIMG_UNKNOWN;
}
}
function convertViaSysimg() {
2026-10-01 14:13:23 +00:00
return obj(...arguments);
}
2026-10-01 14:13:23 +00:00
let obj = function _convertViaSysimg() {
2026-10-12 16:32:48 +00:00
obj = _asyncToGenerator(async function(arg0, value) {
2026-10-01 14:13:23 +00:00
let c1;
let c2;
let c3;
2026-10-12 16:32:48 +00:00
let c4;
let c5;
2026-10-01 14:13:23 +00:00
let closure_0 = arg0;
let closure_1 = value;
2026-10-12 16:32:48 +00:00
if (c8 === 2) {
c8 = 3;
2026-10-01 14:13:23 +00:00
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp3 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
obj = { value, done: true };
return obj;
} else {
2026-10-02 13:37:24 +00:00
return { value: "IconComponent", done: null };
2026-10-01 14:13:23 +00:00
}
} else {
2026-10-12 16:32:48 +00:00
let c6;
2026-10-01 14:13:23 +00:00
try {
2026-10-12 16:32:48 +00:00
let _null;
let quality;
2026-10-01 14:13:23 +00:00
let sysimg;
let closure_10;
2026-10-12 16:32:48 +00:00
let closure_11;
let closure_12;
2026-10-01 14:13:23 +00:00
let blob;
let compressTimeMs;
2026-10-12 16:32:48 +00:00
let closure_15;
2026-10-01 14:13:23 +00:00
let elapsed;
let fail;
2026-10-12 16:32:48 +00:00
c8 = 2;
if (0 === c7) {
2026-10-01 14:13:23 +00:00
if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
obj2 = { value, done: true };
return obj2;
} else {
2026-10-12 16:32:48 +00:00
closure_4 = tmp;
2026-10-01 14:13:23 +00:00
c1 = undefined;
2026-10-12 16:32:48 +00:00
_null = undefined;
quality = undefined;
c5 = undefined;
({ label: c1, matches: c2, canConvert: c3, quality: c4, maxFileSizeBytes: c5 } = closure_1);
2026-10-01 14:13:23 +00:00
let closure_6;
sysimg = undefined;
closure_10 = undefined;
2026-10-12 16:32:48 +00:00
closure_11 = undefined;
2026-10-01 14:13:23 +00:00
closure_12 = undefined;
blob = undefined;
compressTimeMs = undefined;
2026-10-12 16:32:48 +00:00
closure_15 = undefined;
2026-10-01 14:13:23 +00:00
elapsed = function elapsed() {
return Math.round(performance.now() - closure_6);
};
fail = function fail(CONVERSION_FAILED) {
obj = { success: false, sizeBefore: closure_0.size, sizeAfter: closure_0.size, reason: CONVERSION_FAILED, compressTimeMs: Math.round(performance.now() - closure_6) };
return obj;
};
2026-10-12 16:32:48 +00:00
c7 = 1;
c8 = 1;
return { value: "Set", done: true };
}
2026-10-12 16:32:48 +00:00
} else if (1 === c7) {
2026-10-01 14:13:23 +00:00
if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
obj3 = { value, done: true };
return obj3;
} else {
2026-10-12 16:32:48 +00:00
sysimg = _null;
if (_null(closure_0)) {
2026-10-01 14:13:23 +00:00
const _performance = performance;
closure_6 = performance.now();
2026-10-12 16:32:48 +00:00
const tmp53 = closure_132_1(closure_132_2[4]);
2026-10-01 14:13:23 +00:00
sysimg = undefined;
2026-10-12 16:32:48 +00:00
if (tmp53 != null) {
sysimg = tmp53.sysimg;
2026-10-01 14:13:23 +00:00
}
if (null == sysimg) {
2026-10-12 16:32:48 +00:00
closure_132_4.verbose("sysimg not available (not Electron)");
sysimg = fail(closure_132_6.NATIVE_MODULE_UNAVAILABLE);
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj4 = { value: sysimg, done: true };
return obj4;
} else {
2026-10-12 16:32:48 +00:00
c6 = 1;
sysimg = sysimg(sysimg);
c7 = 3;
2026-10-01 14:13:23 +00:00
c8 = 1;
const obj5 = { value: sysimg, done: false };
return obj5;
}
} else {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
return { value: null, done: true };
}
}
2026-10-12 16:32:48 +00:00
} else if (2 === c7) {
c6 = 0;
let closure_16 = closure_5;
2026-10-01 14:13:23 +00:00
const _HermesInternal3 = HermesInternal;
2026-10-12 16:32:48 +00:00
closure_132_4.warn("" + c1 + " conversion failed for " + closure_0.name + ":", closure_16);
sysimg = fail(closure_132_6.CONVERSION_FAILED);
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj6 = { value: sysimg, done: true };
return obj6;
2026-10-12 16:32:48 +00:00
} else if (3 === c7) {
2026-10-01 14:13:23 +00:00
if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c6 = 0;
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj7 = { value, done: true };
return obj7;
} else if (value) {
2026-10-12 16:32:48 +00:00
sysimg = closure_0.size;
if (sysimg > c5) {
const _HermesInternal2 = HermesInternal;
closure_132_4.verbose("file too large: " + closure_0.size + " > " + c5);
sysimg = fail(closure_132_6.SIZE_LIMIT_EXCEEDED);
c6 = 0;
c8 = 3;
const obj8 = { value: sysimg, done: true };
return obj8;
} else {
sysimg = closure_0.arrayBuffer();
c7 = 4;
c8 = 1;
const obj9 = { value: sysimg, done: false };
return obj9;
2026-10-01 14:13:23 +00:00
}
} else {
const _HermesInternal = HermesInternal;
2026-10-12 16:32:48 +00:00
closure_132_4.verbose("platform does not support " + c1 + " conversion");
c6 = 0;
c8 = 3;
const obj10 = { value: fail(closure_132_6.PLATFORM_UNSUPPORTED), done: true };
2026-10-01 14:13:23 +00:00
return obj10;
}
2026-10-12 16:32:48 +00:00
} else if (4 === c7) {
2026-10-01 14:13:23 +00:00
if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c6 = 0;
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj11 = { value, done: true };
return obj11;
} else {
closure_10 = value;
const _JSON = JSON;
const obj12 = { format: "jpeg", quality };
2026-10-12 16:32:48 +00:00
closure_11 = JSON.stringify(obj12);
sysimg = sysimg.convertBytes(closure_10, closure_11);
c7 = 5;
c8 = 1;
const obj13 = { value: sysimg, done: false };
2026-10-01 14:13:23 +00:00
return obj13;
}
2026-10-12 16:32:48 +00:00
} else if (5 === c7) {
2026-10-01 14:13:23 +00:00
if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c6 = 0;
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj14 = { value, done: true };
return obj14;
} else {
2026-10-12 16:32:48 +00:00
closure_12 = value;
2026-10-01 14:13:23 +00:00
const _Blob = Blob;
2026-10-12 16:32:48 +00:00
const items = [closure_12];
2026-10-01 14:13:23 +00:00
const self = this;
const self2 = this;
blob = new Blob(items, { type: "image/jpeg" });
compressTimeMs = elapsed();
const _HermesInternal4 = HermesInternal;
2026-10-12 16:32:48 +00:00
closure_132_4.log("converted " + closure_0.name + ": " + closure_0.size + " -> " + blob.size + " bytes in " + compressTimeMs + "ms");
closure_15 = null;
c6 = 2;
2026-10-01 14:13:23 +00:00
const getBackendName = sysimg.getBackendName;
sysimg = undefined;
if (getBackendName != null) {
sysimg = getBackendName();
}
2026-10-12 16:32:48 +00:00
c7 = 7;
c8 = 1;
2026-10-01 14:13:23 +00:00
const obj15 = { value: sysimg, done: false };
return obj15;
}
} else {
2026-10-12 16:32:48 +00:00
if (6 === c7) {
c6 = 1;
closure_15 = null;
2026-10-01 14:13:23 +00:00
} else if (arg0 === 1) {
2026-10-12 16:32:48 +00:00
c8 = 3;
2026-10-01 14:13:23 +00:00
throw value;
} else if (arg0 === 2) {
2026-10-12 16:32:48 +00:00
c6 = 0;
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj16 = { value, done: true };
return obj16;
} else {
2026-10-12 16:32:48 +00:00
_null = value;
2026-10-01 14:13:23 +00:00
if (value == null) {
2026-10-12 16:32:48 +00:00
_null = null;
2026-10-01 14:13:23 +00:00
}
2026-10-12 16:32:48 +00:00
sysimg = _null;
closure_15 = _null;
c6 = 1;
}
2026-10-12 16:32:48 +00:00
sysimg = { success: true, convertedBlob: blob, sizeBefore: closure_0.size, sizeAfter: blob.size, compressTimeMs, imageCompressionQuality: quality / 100, imageEncoderType: closure_132_5(closure_15) };
c6 = 0;
c8 = 3;
2026-10-01 14:13:23 +00:00
const obj17 = { value: sysimg, done: true };
return obj17;
}
2026-10-12 16:32:48 +00:00
} catch (tmp65) {
closure_5 = tmp65;
if (0 === c6) {
c8 = 3;
throw tmp65;
} else if (1 === tmp67) {
c7 = 2;
2026-10-01 14:13:23 +00:00
} else {
2026-10-12 16:32:48 +00:00
c7 = 6;
}
}
}
2026-10-01 14:13:23 +00:00
});
return obj(...arguments);
};
function maybeConvertHeicToJpeg(arg0) {
2026-10-12 16:32:48 +00:00
return convertViaSysimg(arg0, obj2);
}
function maybeConvertJxrToJpeg(arg0) {
2026-10-12 16:32:48 +00:00
return convertViaSysimg(arg0, obj3);
}
2026-10-01 14:13:23 +00:00
obj = function _convertFileToJpeg() {
2026-10-12 16:32:48 +00:00
obj = _asyncToGenerator(async (arg0, arg1) => {
let closure_3;
2026-10-01 14:13:23 +00:00
const user = arg0;
let closure_1 = arg1;
2026-10-12 16:32:48 +00:00
let c5 = 0;
let c6 = 0;
return (async function(arg0, value) {
2026-10-01 14:13:23 +00:00
let file;
let obj10;
let obj9;
2026-10-12 16:32:48 +00:00
let tmp41;
2026-10-01 14:13:23 +00:00
if ("heic" === closure_1) {
2026-10-12 16:32:48 +00:00
tmp41 = maybeConvertHeicToJpeg(tmp38);
} else {
2026-10-12 16:32:48 +00:00
tmp41 = maybeConvertJxrToJpeg(tmp38);
2026-10-01 14:13:23 +00:00
}
2026-10-12 16:32:48 +00:00
UNKNOWN_ERROR = await tmp41;
2026-10-01 14:13:23 +00:00
let tmp37 = null;
2026-10-12 16:32:48 +00:00
if (null != UNKNOWN_ERROR) {
if (UNKNOWN_ERROR.success) {
if (null != UNKNOWN_ERROR.convertedBlob) {
2026-10-01 14:13:23 +00:00
const _HermesInternal = HermesInternal;
2026-10-12 16:32:48 +00:00
closure_132_4.log("" + closure_1 + " conversion worked for " + user.name + ": " + UNKNOWN_ERROR.sizeBefore + " -> " + UNKNOWN_ERROR.sizeAfter + " bytes");
2026-10-01 14:13:23 +00:00
const _File = File;
2026-10-12 16:32:48 +00:00
const items = [UNKNOWN_ERROR.convertedBlob];
2026-10-01 14:13:23 +00:00
const self = this;
const self2 = this;
const obj7 = { convertedFile: file, analytics: obj9 };
const obj8 = { type: "image/jpeg", lastModified: user.lastModified };
2026-10-12 16:32:48 +00:00
const obj4 = closure_132_0(closure_132_2[3]);
2026-10-01 14:13:23 +00:00
file = new File(items, obj4.renameToJpegExtension(user.name), obj8);
obj = obj7;
2026-10-12 16:32:48 +00:00
obj9 = { convertedMimeType: "image/jpeg", compressTimeMs: UNKNOWN_ERROR.compressTimeMs, imageCompressionQuality: UNKNOWN_ERROR.imageCompressionQuality, imageEncoderType: UNKNOWN_ERROR.imageEncoderType };
}
2026-10-01 14:13:23 +00:00
tmp37 = obj;
}
2026-10-12 16:32:48 +00:00
const reason = UNKNOWN_ERROR.reason;
2026-10-01 14:13:23 +00:00
UNKNOWN_ERROR = reason;
if (reason == null) {
2026-10-12 16:32:48 +00:00
UNKNOWN_ERROR = closure_132_6.UNKNOWN_ERROR;
2026-10-01 14:13:23 +00:00
}
obj = { convertedFile: null, analytics: obj10 };
2026-10-12 16:32:48 +00:00
obj10 = { convertedMimeType: null, conversionFailureReason: UNKNOWN_ERROR, compressTimeMs: UNKNOWN_ERROR.compressTimeMs };
}
2026-10-01 14:13:23 +00:00
return tmp37;
})();
});
return obj(...arguments);
};
let closure_4 = new LoggerDefault("ImageConversion");
2026-10-01 14:13:23 +00:00
obj = { NATIVE_MODULE_UNAVAILABLE: "native_module_unavailable", PLATFORM_UNSUPPORTED: "platform_unsupported", SIZE_LIMIT_EXCEEDED: "size_limit_exceeded", CONVERSION_FAILED: "conversion_failed", UNKNOWN_ERROR: "unknown_error" };
const tmp2 = new LoggerDefault("ImageConversion");
let obj2 = {
label: "heic",
2026-10-01 14:13:23 +00:00
matches: imageFilename.isHeicFile,
canConvert(canConvertHeic) {
return canConvertHeic.canConvertHeic();
2026-10-12 16:32:48 +00:00
},
quality: 80,
maxFileSizeBytes: 20971520
};
let obj3 = {
label: "jxr",
2026-10-01 14:13:23 +00:00
matches: imageFilename.isJxrFile,
canConvert(canConvertJxr) {
return canConvertJxr.canConvertJxr();
2026-10-12 16:32:48 +00:00
},
quality: 85,
maxFileSizeBytes: 52428800
};
const result = size.fileFinishedImporting("lib/uploader/imageConversion.tsx");
2026-10-01 14:13:23 +00:00
export const ImageConversionFailureReason = obj;
export const renameToJpegExtension = imageFilename.renameToJpegExtension;
export { maybeConvertHeicToJpeg };
export { maybeConvertJxrToJpeg };
export const convertFileToJpeg = function convertFileToJpeg() {
2026-10-01 14:13:23 +00:00
return obj(...arguments);
};