UNPKG

askui

Version:

Reliable, automated end-to-end-testing that depends on what is shown on your screen instead of the technology you are running on

101 lines (100 loc) 4.07 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Base64Image = void 0; const fs_1 = __importDefault(require("fs")); const sharp_1 = require("./sharp"); const base_64_image_string_error_1 = require("./base-64-image-string-error"); class Base64Image { constructor(buffer) { this.buffer = buffer; } static fromPathOrString(pathOrStr) { return __awaiter(this, void 0, void 0, function* () { if (pathOrStr.startsWith(Base64Image.strPrefix)) { return Base64Image.fromString(pathOrStr); } return Base64Image.fromPath(pathOrStr); }); } static fromPath(filePath) { return __awaiter(this, void 0, void 0, function* () { const data = yield fs_1.default.promises.readFile(filePath, 'base64'); return Base64Image.fromString(`${Base64Image.strPrefix}${data}`); }); } static fromString(str) { return __awaiter(this, void 0, void 0, function* () { if (!str.startsWith(Base64Image.strPrefix)) { throw new base_64_image_string_error_1.Base64ImageStringError(str, Base64Image.strPrefix); } const data = str.substring(Base64Image.strPrefix.length); return new Base64Image(Buffer.from(data, 'base64')); }); } static fromBuffer(buffer) { return __awaiter(this, void 0, void 0, function* () { return new Base64Image(buffer); }); } getSharp() { return __awaiter(this, void 0, void 0, function* () { if (this._sharp === undefined) { const createSharp = yield (0, sharp_1.getSharpFactory)(); this._sharp = createSharp(this.buffer); } return this._sharp; }); } getInfo() { return __awaiter(this, void 0, void 0, function* () { return (yield this.getSharp()) .toBuffer({ resolveWithObject: true }) .then(({ info }) => info); }); } resizeToFitInto(dimension) { return __awaiter(this, void 0, void 0, function* () { const { width, height } = yield this.getInfo(); const buffer = yield (yield this.getSharp()) .resize({ fit: 'contain', height: height > width ? dimension : undefined, width: width >= height ? dimension : undefined, }) .toBuffer(); return Base64Image.fromBuffer(buffer); }); } resizeWithSameAspectRatio(width, height) { return __awaiter(this, void 0, void 0, function* () { const buffer = yield (yield this.getSharp()) .resize({ fit: 'contain', height, width, }) .toBuffer(); return Base64Image.fromBuffer(buffer); }); } toString(withPrefix = true) { if (withPrefix) { return `${Base64Image.strPrefix}${this.buffer.toString('base64')}`; } return this.buffer.toString('base64'); } } exports.Base64Image = Base64Image; Base64Image.strPrefix = 'data:image/png;base64,';