"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ensurePNGIsNotTransparent = ensurePNGIsNotTransparent;
function _fsExtra() {
const data = _interopRequireDefault(require("fs-extra"));
_fsExtra = function () {
return data;
};
return data;
}
function _pngjs() {
const data = require("pngjs");
_pngjs = function () {
return data;
};
return data;
}
function _pick() {
const data = _interopRequireDefault(require("lodash/pick"));
_pick = function () {
return data;
};
return data;
}
function _xdl() {
const data = require("@expo/xdl");
_xdl = function () {
return data;
};
return data;
}
function _request() {
const data = _interopRequireDefault(require("request"));
_request = function () {
return data;
};
return data;
}
function _validator() {
const data = _interopRequireDefault(require("validator"));
_validator = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function ensurePNGIsNotTransparent(imagePathOrURL) {
let hasAlreadyResolved = false;
const stream = _validator().default.isURL(imagePathOrURL, {
protocols: ['http', 'https'],
require_protocol: true
}) ? (0, _request().default)(imagePathOrURL) : _fsExtra().default.createReadStream(imagePathOrURL);
return new Promise((res, rej) => {
stream.pipe(new (_pngjs().PNG)({
filterType: 4
})).on('metadata', ({
alpha
}) => {
if (!alpha) {
hasAlreadyResolved = true;
stream.close();
res();
}
}).on('parsed', function () {
if (hasAlreadyResolved) {
return;
}
try {
validateAlphaChannelIsEmpty(this.data, (0, _pick().default)(this, ['width', 'height']));
res();
} catch (err) {
rej(err);
}
}).on('error', err => rej(err));
});
}
function validateAlphaChannelIsEmpty(data, {
width,
height
}) {
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
let idx = (width * y + x) * 4;
if (data[idx + 3] !== 255) {
throw new (_xdl().XDLError)('INVALID_ASSETS', `Your application icon can't have transparency if you wish to upload your app to Apple Store.`);
}
}
}
}
//# sourceMappingURL=../../../../__sourcemaps__/commands/build/ios/utils/image.js.map