UNPKG

resedit-cli

Version:

Command-line tool for editing Windows Resource data in executable binaries

38 lines (37 loc) 1.5 kB
import { validateStringOrIntegerValue, validateStringValue, validateIntegerValue, } from './utils.js'; export default function parseIcons(data) { if (!Array.isArray(data)) { throw new Error("Invalid data: 'icons' is not an array"); } return data.map((item, i) => { if (typeof item !== 'object' || !item) { throw new Error(`Invalid data: 'icons[${i}]' is not an object`); } if (!('sourceFile' in item)) { throw new Error(`Invalid data: 'icons[${i}].sourceFile' is missing`); } validateStringValue(item.sourceFile, `icons[${i}].sourceFile`); const result = { sourceFile: item.sourceFile, }; Object.keys(item).forEach((key) => { const value = item[key]; switch (key) { case 'id': validateStringOrIntegerValue(value, `icons[${i}].id`); result.id = value; break; case 'sourceFile': validateStringValue(value, `icons[${i}].sourceFile`); break; case 'lang': validateIntegerValue(value, `icons[${i}].lang`); result.lang = value; break; default: throw new Error(`Invalid data: unknown property '${key}' on 'icons[${i}]`); } }); return result; }); }