chromiumly
Version:
A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.
91 lines • 4.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScreenshotUtils = void 0;
const tslib_1 = require("tslib");
const common_1 = require("../../common");
/**
* Utility class for handling common tasks related to screenshot.
*/
class ScreenshotUtils {
/**
* Adds page properties to the FormData object based on the provided imageProperties.
*
* @param {FormData} data - The FormData object to which page properties will be added.
* @param {ImageProperties} imageProperties - The page properties to be added to the FormData.
*/
static addImageProperties(data, imageProperties) {
data.append('format', imageProperties.format);
if (imageProperties.quality) {
common_1.GotenbergUtils.assert(imageProperties.format === 'jpeg', 'Compression quality is exclusively supported for JPEG format.');
common_1.GotenbergUtils.assert(imageProperties.quality >= 0 && imageProperties.quality <= 100, 'Invalid compression quality. Please provide a value between 0 and 100.');
data.append('quality', imageProperties.quality);
}
if (imageProperties.omitBackground) {
data.append('omitBackground', String(imageProperties.omitBackground));
}
if (imageProperties.width) {
data.append('width', imageProperties.width);
}
if (imageProperties.height) {
data.append('height', imageProperties.height);
}
if (imageProperties.clip) {
data.append('clip', String(imageProperties.clip));
}
}
/**
* Customizes the FormData object based on the provided screenshot options.
*
* @param {FormData} data - The FormData object to be customized.
* @param {ScreenshotOptions} options - The screenshot options to apply to the FormData.
* @returns {Promise<void>} A Promise that resolves once the customization is complete.
*/
static customize(data, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (options.emulatedMediaType) {
data.append('emulatedMediaType', options.emulatedMediaType);
}
if (options.properties) {
ScreenshotUtils.addImageProperties(data, options.properties);
}
if (options.waitDelay) {
data.append('waitDelay', options.waitDelay);
}
if (options.waitForExpression) {
data.append('waitForExpression', options.waitForExpression);
}
if (options.extraHttpHeaders) {
data.append('extraHttpHeaders', JSON.stringify(options.extraHttpHeaders));
}
if (options.failOnHttpStatusCodes) {
data.append('failOnHttpStatusCodes', JSON.stringify(options.failOnHttpStatusCodes));
}
if (options.failOnResourceHttpStatusCodes) {
data.append('failOnResourceHttpStatusCodes', JSON.stringify(options.failOnResourceHttpStatusCodes));
}
if (options.failOnResourceLoadingFailed) {
data.append('failOnResourceLoadingFailed', String(options.failOnResourceLoadingFailed));
}
if (options.failOnConsoleExceptions) {
data.append('failOnConsoleExceptions', String(options.failOnConsoleExceptions));
}
if (options.skipNetworkIdleEvent === false) {
data.append('skipNetworkIdleEvent', String(options.skipNetworkIdleEvent));
}
if (options.optimizeForSpeed) {
data.append('optimizeForSpeed', String(options.optimizeForSpeed));
}
if (options.cookies) {
data.append('cookies', JSON.stringify(options.cookies));
}
if (options.downloadFrom) {
data.append('downloadFrom', JSON.stringify(options.downloadFrom));
}
if (options.generateDocumentOutline) {
data.append('generateDocumentOutline', String(options.generateDocumentOutline));
}
});
}
}
exports.ScreenshotUtils = ScreenshotUtils;
//# sourceMappingURL=screenshot.utils.js.map