291 lines
8.9 KiB
JavaScript
291 lines
8.9 KiB
JavaScript
// Module ID: 4789
|
|
// Function ID: 41646
|
|
// Name: getNameAndValue
|
|
// Dependencies: []
|
|
|
|
// Module 4789 (getNameAndValue)
|
|
function getNameAndValue(byteLength, arg1, arg2, type) {
|
|
arg1 = type;
|
|
const items = [];
|
|
const importDefault = items;
|
|
const items1 = [];
|
|
const dependencyMap = items1;
|
|
const items2 = [];
|
|
let tmp = closure_4;
|
|
const COMPRESSION_METHOD_NONE = arg1(dependencyMap[4]).COMPRESSION_METHOD_NONE;
|
|
let dataView;
|
|
let tmp3 = COMPRESSION_METHOD_NONE;
|
|
if (0 < arg2) {
|
|
let tmp4 = COMPRESSION_METHOD_NONE;
|
|
let num2 = 0;
|
|
tmp3 = COMPRESSION_METHOD_NONE;
|
|
if (arg1 < byteLength.byteLength) {
|
|
while (true) {
|
|
let tmp5 = closure_5;
|
|
let tmp6 = tmp4;
|
|
let tmp7 = num2;
|
|
if (tmp !== closure_5) {
|
|
let tmp16 = closure_8;
|
|
if (tmp === closure_8) {
|
|
break;
|
|
} else {
|
|
let uint8 = byteLength.getUint8(arg1 + num2);
|
|
if (0 === uint8) {
|
|
let tmp27 = moveToNextState;
|
|
let tmp15 = moveToNextState(type, tmp);
|
|
let tmp9 = tmp4;
|
|
let sum = num2;
|
|
let tmp28 = uint8;
|
|
} else {
|
|
let tmp17 = closure_4;
|
|
if (tmp === closure_4) {
|
|
let arr = items.push(uint8);
|
|
tmp15 = tmp;
|
|
tmp9 = tmp4;
|
|
sum = num2;
|
|
let tmp26 = uint8;
|
|
} else {
|
|
let tmp18 = closure_6;
|
|
if (tmp === closure_6) {
|
|
arr = items1.push(uint8);
|
|
tmp15 = tmp;
|
|
tmp9 = tmp4;
|
|
sum = num2;
|
|
let tmp24 = uint8;
|
|
} else {
|
|
let tmp19 = closure_7;
|
|
tmp15 = tmp;
|
|
tmp9 = tmp4;
|
|
sum = num2;
|
|
let tmp20 = uint8;
|
|
if (tmp === closure_7) {
|
|
let arr1 = items2.push(uint8);
|
|
tmp15 = tmp;
|
|
tmp9 = tmp4;
|
|
sum = num2;
|
|
let tmp22 = uint8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
let tmp8 = getCompressionMethod;
|
|
let obj = { type, dataView: byteLength, offset: arg1 + num2 };
|
|
tmp9 = getCompressionMethod(obj);
|
|
let tmp10 = arg1;
|
|
let tmp11 = dependencyMap;
|
|
sum = num2;
|
|
if (type === arg1(dependencyMap[5]).TYPE_ITXT) {
|
|
let tmp13 = closure_9;
|
|
sum = num2 + closure_9;
|
|
}
|
|
let tmp14 = moveToNextState;
|
|
tmp15 = moveToNextState(type, tmp);
|
|
}
|
|
num2 = sum + 1;
|
|
tmp3 = tmp9;
|
|
if (num2 < arg2) {
|
|
tmp = tmp15;
|
|
tmp4 = tmp9;
|
|
tmp3 = tmp9;
|
|
}
|
|
}
|
|
const _DataView = DataView;
|
|
const buffer = byteLength.buffer;
|
|
dataView = new DataView(buffer.slice(arg1 + num2, arg1 + arg2));
|
|
tmp3 = tmp4;
|
|
}
|
|
}
|
|
if (tmp3 !== arg1(dependencyMap[4]).COMPRESSION_METHOD_NONE) {
|
|
if (!arg4) {
|
|
return {};
|
|
}
|
|
}
|
|
if (type === arg1(dependencyMap[5]).TYPE_TEXT) {
|
|
let str = "latin1";
|
|
} else {
|
|
str = "utf-8";
|
|
}
|
|
const decompressResult = arg1(dependencyMap[4]).decompress(dataView, tmp3, str);
|
|
if (decompressResult instanceof Promise) {
|
|
let catchPromise = decompressResult.then((arg0) => callback(arg0, arg3, items1, items)).catch(() => callback("<text using unknown compression>".split(""), arg3, items1, items));
|
|
const nextPromise = decompressResult.then((arg0) => callback(arg0, arg3, items1, items));
|
|
} else {
|
|
catchPromise = constructTag(decompressResult, type, items1, items);
|
|
}
|
|
return catchPromise;
|
|
}
|
|
function getCompressionMethod(arg0) {
|
|
let dataView;
|
|
let offset;
|
|
let type;
|
|
({ type, dataView, offset } = arg0);
|
|
if (type === arg1(dependencyMap[5]).TYPE_ITXT) {
|
|
if (dataView.getUint8(offset) === closure_10) {
|
|
return dataView.getUint8(offset + 1);
|
|
}
|
|
} else if (type === arg1(dependencyMap[5]).TYPE_ZTXT) {
|
|
return dataView.getUint8(offset);
|
|
}
|
|
return arg1(dependencyMap[4]).COMPRESSION_METHOD_NONE;
|
|
}
|
|
function moveToNextState(type, arg1) {
|
|
if (arg1 === closure_4) {
|
|
const items = [arg1(dependencyMap[5]).TYPE_ITXT, arg1(dependencyMap[5]).TYPE_ZTXT];
|
|
if (items.includes(type)) {
|
|
let tmp4 = closure_5;
|
|
}
|
|
return tmp4;
|
|
}
|
|
if (arg1 === closure_5) {
|
|
type === arg1(dependencyMap[5]).TYPE_ITXT ? closure_6 : closure_8;
|
|
} else {
|
|
tmp4 = arg1 === closure_6 ? closure_7 : closure_8;
|
|
}
|
|
}
|
|
function constructTag(decompressResult, type, items1, items) {
|
|
let stringFromDataView = decompressResult;
|
|
if (decompressResult instanceof DataView) {
|
|
let obj = type(dependencyMap[4]);
|
|
stringFromDataView = obj.getStringFromDataView(decompressResult, 0, decompressResult.byteLength);
|
|
}
|
|
obj = { name: getName(type, items1, items), value: stringFromDataView };
|
|
if (type === type(dependencyMap[5]).TYPE_ITXT) {
|
|
stringFromDataView = getDescription(decompressResult);
|
|
}
|
|
obj.description = stringFromDataView;
|
|
return obj;
|
|
}
|
|
function getName(arg0, items, items) {
|
|
const stringValueFromArray = items(dependencyMap[4]).getStringValueFromArray(items);
|
|
let combined = stringValueFromArray;
|
|
if (arg0 !== items(dependencyMap[5]).TYPE_TEXT) {
|
|
combined = stringValueFromArray;
|
|
if (0 !== items.length) {
|
|
const _HermesInternal = HermesInternal;
|
|
combined = "" + stringValueFromArray + " (" + items(dependencyMap[4]).getStringValueFromArray(items) + ")";
|
|
const obj2 = items(dependencyMap[4]);
|
|
}
|
|
}
|
|
return combined;
|
|
}
|
|
function getDescription(arg0) {
|
|
return importDefault(dependencyMap[6]).decode("UTF-8", arg0);
|
|
}
|
|
function isExifGroupTag(str, str2) {
|
|
let tmp = "raw profile type exif" === str.toLowerCase();
|
|
if (tmp) {
|
|
tmp = "exif" === str2.substring(1, 5);
|
|
}
|
|
return tmp;
|
|
}
|
|
function isIptcGroupTag(str, str2) {
|
|
let tmp = "raw profile type iptc" === str.toLowerCase();
|
|
if (tmp) {
|
|
tmp = "iptc" === str2.substring(1, 5);
|
|
}
|
|
return tmp;
|
|
}
|
|
function decodeRawData(arg0) {
|
|
let length;
|
|
let sum;
|
|
const replaced = arg0.match(/\n(exif|iptc)\n\s*\d+\n([\s\S]*)$/)[2].replace(/\n/g, "");
|
|
const arrayBuffer = new ArrayBuffer(replaced.length / 2);
|
|
const dataView = new DataView(arrayBuffer);
|
|
let num = 0;
|
|
if (0 < replaced.length) {
|
|
do {
|
|
let _parseInt = parseInt;
|
|
sum = num + 2;
|
|
let setUint8Result = dataView.setUint8(num / 2, parseInt(replaced.substring(num, sum), 16));
|
|
num = sum;
|
|
length = replaced.length;
|
|
} while (sum < length);
|
|
}
|
|
return dataView;
|
|
}
|
|
let closure_3 = importDefault(dependencyMap[0]);
|
|
let closure_4 = "STATE_KEYWORD";
|
|
let closure_5 = "STATE_COMPRESSION";
|
|
let closure_6 = "STATE_LANG";
|
|
let closure_7 = "STATE_TRANSLATED_KEYWORD";
|
|
let closure_8 = "STATE_TEXT";
|
|
let closure_9 = 1;
|
|
let closure_10 = 1;
|
|
let closure_11 = 6;
|
|
|
|
export default {
|
|
read(arg0, arg1, arg2, arg3) {
|
|
let description;
|
|
let name;
|
|
let value;
|
|
arg1 = arg3;
|
|
let obj = {};
|
|
const items = [];
|
|
let num = 0;
|
|
if (0 < arg1.length) {
|
|
do {
|
|
let arr2 = arg1[num];
|
|
let tmp4 = closure_12;
|
|
let tmp5 = arg0;
|
|
let tmp6 = arg2;
|
|
let promise = closure_12(arg0, arr2.offset, arr2.length, arr2.type, arg2);
|
|
let _Promise = Promise;
|
|
if (promise instanceof Promise) {
|
|
let arr = items.push(promise.then((description) => {
|
|
let name;
|
|
let value;
|
|
({ name, value } = description);
|
|
if (callback(closure_2[1]).USE_EXIF) {
|
|
if (callback3(name, value)) {
|
|
let obj = { __exif: callback(closure_2[2]).read(callback5(value), closure_11, arg3).tags };
|
|
return obj;
|
|
}
|
|
}
|
|
if (callback(closure_2[1]).USE_IPTC) {
|
|
if (callback4(name, value)) {
|
|
obj = { __iptc: callback(closure_2[3]).read(callback5(value), 0, arg3) };
|
|
return obj;
|
|
}
|
|
}
|
|
if (name) {
|
|
if (!callback3(name, value)) {
|
|
if (!callback4(name, value)) {
|
|
obj = { value, description: description.description };
|
|
return callback2({}, name, obj);
|
|
}
|
|
}
|
|
}
|
|
}));
|
|
let tmp7 = tmp;
|
|
let tmp8 = tmp2;
|
|
let tmp9 = tmp3;
|
|
} else {
|
|
({ name, value, description } = promise);
|
|
tmp7 = name;
|
|
tmp8 = value;
|
|
tmp9 = description;
|
|
if (name) {
|
|
obj = { value, description };
|
|
obj[name] = obj;
|
|
tmp7 = name;
|
|
tmp8 = value;
|
|
tmp9 = description;
|
|
}
|
|
}
|
|
num = num + 1;
|
|
let tmp = tmp7;
|
|
let tmp2 = tmp8;
|
|
let tmp3 = tmp9;
|
|
} while (num < arg1.length);
|
|
}
|
|
obj = { readTags: obj };
|
|
let allPromises;
|
|
if (items.length > 0) {
|
|
allPromises = Promise.all(items);
|
|
}
|
|
obj.readTagsPromise = allPromises;
|
|
return obj;
|
|
}
|
|
};
|