"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var sizeOf = require("image-size");
var common_1 = require("../common");
function toManifestImage(filePath, urlPath, options) {
    if (options === void 0) { options = {}; }
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var parts, dir, name, ext, image, file1x, name2x, file2x, _a, width, height;
        return tslib_1.__generator(this, function (_b) {
            switch (_b.label) {
                case 0:
                    parts = common_1.fsPath.parse(filePath);
                    dir = parts.dir;
                    name = parts.name.replace(/\@2x$/, '');
                    ext = parts.ext.replace(/^\./, '');
                    image = {
                        type: 'FILE/image',
                        name: name,
                        ext: ext,
                        path: urlPath,
                    };
                    file1x = common_1.fsPath.join(dir, parts.base);
                    return [4, common_1.fs.pathExists(file1x)];
                case 1:
                    if (!(_b.sent())) {
                        return [2];
                    }
                    if (!!is2x(filePath)) return [3, 3];
                    name2x = image.name + "@2x." + image.ext;
                    file2x = common_1.fsPath.join(dir, name2x);
                    return [4, common_1.fs.pathExists(file2x)];
                case 2:
                    if (_b.sent()) {
                        image.path2x = common_1.fsPath.join(common_1.fsPath.dirname(urlPath), name2x);
                    }
                    _b.label = 3;
                case 3:
                    if (!(options.size === true)) return [3, 5];
                    return [4, getSize(file1x)];
                case 4:
                    _a = _b.sent(), width = _a.width, height = _a.height;
                    image.width = width;
                    image.height = height;
                    _b.label = 5;
                case 5: return [2, image];
            }
        });
    });
}
exports.toManifestImage = toManifestImage;
var is2x = function (value) { return value.includes('@2x'); };
function getSize(path) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        return tslib_1.__generator(this, function (_a) {
            return [2, new Promise(function (resolve, reject) {
                    sizeOf(path, function (err, data) {
                        if (err) {
                            reject(err);
                        }
                        else {
                            resolve(data);
                        }
                    });
                })];
        });
    });
}
//# sourceMappingURL=util.image.js.map