i18n:xls - read as buffer instead

This commit is contained in:
Code 2025-02-16 22:39:04 +01:00
parent 8d22c1722a
commit 97b2d3d989
2 changed files with 17 additions and 23 deletions

View File

@ -2,6 +2,7 @@ import * as path from 'path';
import { JSONPath } from 'jsonpath-plus';
import { get_cached, set_cached } from '@polymech/cache';
import { OSR_CACHE } from '@polymech/commons';
import { sync as read } from "@polymech/fs/read";
import { sync as exists } from "@polymech/fs/exists";
import { sync as mkdir } from "@polymech/fs/dir";
import * as XLSX from 'xlsx';
@ -10,19 +11,18 @@ import { logger, translateObjectAIT } from './translate_commons.js';
export const translateXLS = async (src, dst, options) => {
logger.debug(`Translating ${src} to ${dst}`);
if (!exists(src)) {
logger.error('File not found : ' + src);
logger.error(`Translating ${src} : not found ${src}`);
return;
}
const dstDir = path.parse(dst).dir;
mkdir(dstDir);
const osr_cache = OSR_CACHE();
const cached = await get_cached(src, {
keys: options.keys
}, MODULE_NAME);
const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME);
if (osr_cache && cached && options.cache && exists(dst)) {
return cached;
}
const workbook = XLSX.readFile(src);
const data = read(src, 'buffer');
const workbook = XLSX.read(data);
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const raw_data = XLSX.utils.sheet_to_json(worksheet, { header: 1, blankrows: false, raw: false, skipHidden: true });
const queryResult = JSONPath({
@ -37,20 +37,18 @@ export const translateXLS = async (src, dst, options) => {
});
}
catch (error) {
logger.error('Error translating XLSX', error);
logger.error(`Error translating XLSX ${src}`, error);
return;
}
if (!translated) {
logger.error('Error translating XLSX', src);
logger.error(`Error translating XLSX ${src}`);
return;
}
const sheetOut = XLSX.utils.json_to_sheet(translated, { skipHeader: true });
const workbookOut = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbookOut, sheetOut, workbook.SheetNames[0]);
XLSX.writeFileXLSX(workbookOut, dst);
if (osr_cache && options.cache) {
await set_cached(src, { keys: options.keys }, MODULE_NAME, translated);
}
osr_cache && options.cache && await set_cached(src, { keys: options.keys }, MODULE_NAME, translated);
return workbookOut;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlX3hscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlX3hscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxPQUFpQixFQUFFLEVBQUU7SUFDOUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDdkMsT0FBTTtJQUNWLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDYixNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDakMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ3JCLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFFZixJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLFFBQVEsR0FBVSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzSCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQ3hCO1FBQ0ksSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLElBQUksRUFBRSxRQUFRO0tBRWpCLENBQUMsQ0FBQTtJQUNOLElBQUksVUFBVSxDQUFBO0lBQ2QsSUFBSSxDQUFDO1FBQ0QsVUFBVSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNqRCxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsV0FBVztTQUNwQixDQUFDLENBQUE7SUFDTixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDN0MsT0FBTTtJQUNWLENBQUM7SUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzNDLE9BQU07SUFDVixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDM0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ3BDLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDdEIsQ0FBQyxDQUFBIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlX3hscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlX3hscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFbkUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUM5RSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDckQsT0FBTTtJQUNWLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcs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

View File

@ -2,6 +2,7 @@ import * as path from 'path'
import { JSONPath } from 'jsonpath-plus'
import { get_cached, set_cached } from '@polymech/cache'
import { OSR_CACHE } from '@polymech/commons'
import { sync as read } from "@polymech/fs/read"
import { sync as exists } from "@polymech/fs/exists"
import { sync as mkdir } from "@polymech/fs/dir"
import * as XLSX from 'xlsx'
@ -12,21 +13,18 @@ import { logger, translateObjectAIT } from './translate_commons.js'
export const translateXLS = async (src: string, dst: string, options: IOptions) => {
logger.debug(`Translating ${src} to ${dst}`)
if (!exists(src)) {
logger.error('File not found : ' + src)
logger.error(`Translating ${src} : not found ${src}`)
return
}
const dstDir = path.parse(dst).dir
mkdir(dstDir)
const osr_cache = OSR_CACHE()
const cached = await get_cached(src, {
keys: options.keys
}, MODULE_NAME)
const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME)
if (osr_cache && cached && options.cache && exists(dst)) {
return cached
}
const workbook = XLSX.readFile(src)
const data = read(src, 'buffer') as Buffer
const workbook = XLSX.read(data)
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const raw_data: any[] = XLSX.utils.sheet_to_json(worksheet, { header: 1, blankrows: false, raw: false, skipHidden: true });
const queryResult = JSONPath(
@ -42,19 +40,17 @@ export const translateXLS = async (src: string, dst: string, options: IOptions)
keys: queryResult
})
} catch (error) {
logger.error('Error translating XLSX', error)
logger.error(`Error translating XLSX ${src}`, error)
return
}
if (!translated) {
logger.error('Error translating XLSX', src)
logger.error(`Error translating XLSX ${src}`)
return
}
const sheetOut = XLSX.utils.json_to_sheet(translated, { skipHeader: true })
const workbookOut = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(workbookOut, sheetOut, workbook.SheetNames[0])
XLSX.writeFileXLSX(workbookOut, dst)
if (osr_cache && options.cache) {
await set_cached(src, { keys: options.keys }, MODULE_NAME, translated)
}
osr_cache && options.cache && await set_cached(src, { keys: options.keys }, MODULE_NAME, translated)
return workbookOut
}