in lib/prepare.js [241:280]
function findHighResIcons (icons) {
// find icons that are not in the highResIcons, unless they have a target set
const findRemainingIcons = (icons, highResIcons) => icons.filter(
(icon) => (icon.target || (!icon.target && !highResIcons.includes(icon)))
? Object.assign(icon)
: false
);
const highResIcons = icons.filter(icon => { // eslint-disable-line array-callback-return
if (icon.src.includes('@')) {
const extension = path.extname(icon.src);
const suffix = icon.src.split('@').pop().slice(0, -extension.length);
return Object.assign(icon, { suffix, extension });
}
});
let remainingIcons = findRemainingIcons(icons, highResIcons);
// set normal image that has standard resolution
const has1x = highResIcons.find(obj => obj.suffix === '1x');
if (!has1x && Object.keys(highResIcons).length) {
const highResIcon = highResIcons[Object.keys(highResIcons)[0]];
let baseIcon = remainingIcons.find(obj => obj.src === highResIcon.src.split('@')[0] + highResIcon.extension);
if (!baseIcon) {
throw new CordovaError('Base icon for high resolution images was not found.');
}
const extension = path.extname(baseIcon.src);
const suffix = '1x';
baseIcon = Object.assign(baseIcon, { suffix, extension });
highResIcons.push(baseIcon);
remainingIcons = findRemainingIcons(icons, highResIcons);
}
return { highResIcons, remainingIcons };
}