tinify
Version:
Node.js client for the Tinify API. Tinify compresses your images intelligently. Read more at https://tinify.com.
44 lines (43 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const compat_1 = require("./compat");
const ResultMeta_1 = require("./ResultMeta");
const ignore = () => { };
const intify = (v) => parseInt(v, 10);
class Result extends ResultMeta_1.default {
/** @internal */
constructor(meta, data) {
super(meta);
this._data = data;
}
/** @internal */
meta() {
/* Ignore errors on data, because they'll be propagated to meta too. */
return this._data.catch(ignore).then(() => this._meta);
}
/** @internal */
data() {
/* Ignore errors on meta, because they'll be propagated to data too. */
return this._meta.catch(ignore).then(() => this._data);
}
toFile(path, callback) {
const writer = compat_1.writeFile.bind(null, path);
return (0, compat_1.nodeify)(this.data().then(writer), callback);
}
toBuffer(callback) {
return (0, compat_1.nodeify)(this.data(), callback);
}
size(callback) {
return (0, compat_1.nodeify)(this.meta().then(meta => intify(meta["content-length"])), callback);
}
mediaType(callback) {
return (0, compat_1.nodeify)(this.meta().then(meta => meta["content-type"]), callback);
}
contentType(callback) {
return this.mediaType(callback);
}
extension(callback) {
return (0, compat_1.nodeify)(this.meta().then(meta => (meta["content-type"] || " ").split("/")[1]), callback);
}
}
exports.default = Result;