Detalhes do pacote

chromiumly

cherfia28.4kMIT4.1.4

A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.

gotenberg, chromium, LibreOffice, screenshots

readme (leia-me)

Chromiumly Logo

build coverage vulnerabilities Maintainability npm downloads licence

A lightweight Typescript library that interacts with Gotenberg's different routes to convert a variety of document formats to PDF files.

Table of Contents

  1. Getting Started
  2. Authentication
  3. Core Features
  4. Usage Example

Getting Started

Installation

Using npm:

npm install chromiumly

Using yarn:

yarn add chromiumly

Prerequisites

Before attempting to use Chromiumly, be sure you install Docker if you have not already done so.

After that, you can start a default Docker container of Gotenberg as follows:

docker run --rm -p 3000:3000 gotenberg/gotenberg:8

Configuration

Chromiumly supports configurations via both dotenv and config configuration libraries or directly via code to add Gotenberg endpoint to your project.

dotenv

GOTENBERG_ENDPOINT=http://localhost:3000

config

{
  "gotenberg": {
    "endpoint": "http://localhost:3000"
  }
}

code

import { Chromiumly } from "chromiumly";

Chromiumly.configure({ endpoint: "http://localhost:3000" });

Authentication

Basic Authentication

Gotenberg introduces basic authentication support starting from version 8.4.0. Suppose you are running a Docker container using the command below:

docker run --rm -p 3000:3000 \
-e GOTENBERG_API_BASIC_AUTH_USERNAME=user \
-e GOTENBERG_API_BASIC_AUTH_PASSWORD=pass \
gotenberg/gotenberg:8.4.0 gotenberg --api-enable-basic-auth

To integrate this setup with Chromiumly, you need to update your configuration as outlined below:

GOTENBERG_ENDPOINT=http://localhost:3000
GOTENBERG_API_BASIC_AUTH_USERNAME=user
GOTENBERG_API_BASIC_AUTH_PASSWORD=pass

Or

{
  "gotenberg": {
    "endpoint": "http://localhost:3000",
    "api": {
      "basicAuth": {
        "username": "user",
        "password": "pass"
      }
    }
  }
}

Or

Chromiumly.configure({
  endpoint: "http://localhost:3000",
  username: "user",
  password: "pass",
});

Advanced Authentication

To implement advanced authentication or add custom HTTP headers to your requests, you can use the customHttpHeaders option within the configure method. This allows you to pass additional headers, such as authentication tokens or custom metadata, with each API call.

For example, you can include a Bearer token for authentication along with a custom header as follows:

const token = await generateToken();

Chromiumly.configure({
  endpoint: "http://localhost:3000",
  customHttpHeaders: {
    Authorization: `Bearer ${token}`,
    "X-Custom-Header": "value",
  },
});

Core Features

Chromiumly introduces different classes that serve as wrappers to Gotenberg's routes. These classes encompass methods featuring an input file parameter, such as html, header, footer, and markdown, capable of accepting inputs in the form of a string (i.e. file path), Buffer, or ReadStream.

Chromium

There are three different classes that come with a single method (i.e.convert) which calls one of Chromium's Conversion routes to convert html and markdown files, or a url to a buffer which contains the converted PDF file content.

Similarly, a new set of classes have been added to harness the recently introduced Gotenberg Screenshot routes. These classes include a single method called capture, which allows capturing full-page screenshots of html, markdown, and url.

URL

import { UrlConverter } from "chromiumly";

const urlConverter = new UrlConverter();
const buffer = await urlConverter.convert({
  url: "https://www.example.com/",
});
import { UrlScreenshot } from "chromiumly";

const screenshot = new UrlScreenshot();
const buffer = await screenshot.capture({
  url: "https://www.example.com/",
});

HTML

The only requirement is that the file name should be index.html.

import { HtmlConverter } from "chromiumly";

const htmlConverter = new HtmlConverter();
const buffer = await htmlConverter.convert({
  html: "path/to/index.html",
});
import { HtmlScreenshot } from "chromiumly";

const screenshot = new HtmlScreenshot();
const buffer = await screenshot.capture({
  html: "path/to/index.html",
});

Markdown

This route accepts an index.html file plus a markdown file.

import { MarkdownConverter } from "chromiumly";

const markdownConverter = new MarkdownConverter();
const buffer = await markdownConverter.convert({
  html: "path/to/index.html",
  markdown: "path/to/file.md",
});
import { MarkdownScreenshot } from "chromiumly";

const screenshot = new MarkdownScreenshot();
const buffer = await screenshot.capture({
  html: "path/to/index.html",
  markdown: "path/to/file.md",
});

Each convert() method takes an optional properties parameter of the following type which dictates how the PDF generated file will look like.

type PageProperties = {
  singlePage?: boolean; // Print the entire content in one single page (default false)
  size?: {
    width: number; // Paper width, in inches (default 8.5)
    height: number; //Paper height, in inches (default 11)
  };
  margins?: {
    top: number; // Top margin, in inches (default 0.39)
    bottom: number; // Bottom margin, in inches (default 0.39)
    left: number; // Left margin, in inches (default 0.39)
    right: number; // Right margin, in inches (default 0.39)
  };
  preferCssPageSize?: boolean; // Define whether to prefer page size as defined by CSS (default false)
  printBackground?: boolean; // Print the background graphics (default false)
  omitBackground?: boolean; // Hide the default white background and allow generating PDFs with transparency (default false)
  landscape?: boolean; // Set the paper orientation to landscape (default false)
  scale?: number; // The scale of the page rendering (default 1.0)
  nativePageRanges?: { from: number; to: number }; // Page ranges to print
};

In addition to the PageProperties customization options, the convert() method also accepts a set of parameters to further enhance the versatility of the conversion process. Here's an overview of the full list of parameters:

type ConversionOptions = {
  properties?: PageProperties; // Customize the appearance of the generated PDF
  pdfFormat?: PdfFormat; // Define the PDF format for the conversion
  pdfUA?: boolean; // Enable PDF for Universal Access for optimal accessibility (default false)
  userAgent?: string; // Customize the user agent string sent during conversion
  header?: PathLikeOrReadStream; // Specify a custom header for the PDF
  footer?: PathLikeOrReadStream; // Specify a custom footer for the PDF
  emulatedMediaType?: EmulatedMediaType; // Specify the emulated media type for conversion
  waitDelay?: string; // Duration (e.g., '5s') to wait when loading an HTML document before conversion
  waitForExpression?: string; // JavaScript expression to wait before converting an HTML document into PDF
  extraHttpHeaders?: Record<string, string>; // Include additional HTTP headers in the request
  failOnHttpStatusCodes?: number[]; // List of HTTP status codes triggering a 409 Conflict response (default [499, 599])
  failOnConsoleExceptions?: boolean; // Return a 409 Conflict response if there are exceptions in the Chromium console (default false)
  skipNetworkIdleEvent?: boolean; // Do not wait for Chromium network to be idle (default true)
  metadata?: Metadata; // Metadata to be written.
  cookies?: Cookie[]; // Cookies to be written.
  downloadFrom?: DownloadFrom; //Download a file from a URL. It must return a Content-Disposition header with a filename parameter.
  split?: SplitOptions; // Split the PDF file into multiple files.
};

Screenshot

Similarly, the capture() method takes an optional properties parameter of the specified type, influencing the appearance of the captured screenshot file.

type ImageProperties = {
  format: "png" | "jpeg" | "webp"; //The image compression format, either "png", "jpeg" or "webp".
  quality?: number; // The compression quality from range 0 to 100 (jpeg only).
  omitBackground?: boolean; // Hide the default white background and allow generating screenshots with transparency.
  width?: number; // The device screen width in pixels (default 800).
  height?: number; // The device screen height in pixels (default 600).
  clip?: boolean; // Define whether to clip the screenshot according to the device dimensions (default false).
};

Furthermore, alongside the customization options offered by ImageProperties, the capture() method accommodates a variety of parameters to expand the versatility of the screenshot process. Below is a comprehensive overview of all parameters available:

type ScreenshotOptions = {
  properties?: ImageProperties;
  header?: PathLikeOrReadStream;
  footer?: PathLikeOrReadStream;
  emulatedMediaType?: EmulatedMediaType;
  waitDelay?: string; // Duration (e.g, '5s') to wait when loading an HTML document before convertion.
  waitForExpression?: string; // JavaScript's expression to wait before converting an HTML document into PDF until it returns true.
  extraHttpHeaders?: Record<string, string>;
  failOnHttpStatusCodes?: number[]; // Return a 409 Conflict response if the HTTP status code is in the list (default [499,599])
  failOnConsoleExceptions?: boolean; // Return a 409 Conflict response if there are exceptions in the Chromium console (default false)
  skipNetworkIdleEvent?: boolean; // Do not wait for Chromium network to be idle (default true)
  optimizeForSpeed?: boolean; // Define whether to optimize image encoding for speed, not for resulting size.
  cookies?: Cookie[]; // Cookies to be written.
  downloadFrom?: DownloadFrom; // Download the file from a specific URL. It must return a Content-Disposition header with a filename parameter.
};

LibreOffice

The LibreOffice class comes with a single method convert. This method interacts with LibreOffice route to convert different documents to PDF files. You can find the file extensions accepted here.

import { LibreOffice } from "chromiumly";

const buffer = await LibreOffice.convert({
  files: [
    "path/to/file.docx",
    "path/to/file.png",
    { data: xlsxFileBuffer, ext: "xlsx" },
  ],
});

Similarly to Chromium's route convert method, this method takes the following optional parameters :

  • properties: changes how the PDF generated file will look like. It also includes a password parameter to open the source file.
  • pdfa: PDF format of the conversion resulting file (i.e. PDF/A-1a, PDF/A-2b, PDF/A-3b).
  • pdfUA: enables PDF for Universal Access for optimal accessibility.
  • merge: merges all the resulting files from the conversion into an individual PDF file.
  • metadata: writes metadata to the generated PDF file.
  • lolosslessImageCompression: allows turning lossless compression on or off to tweak image conversion performance.
  • reduceImageResolution: allows turning on or off image resolution reduction to tweak image conversion performance.
  • quality: specifies the quality of the JPG export. The value ranges from 1 to 100, with higher values producing higher-quality images and larger file sizes.
  • maxImageResolution: specifies if all images will be reduced to the specified DPI value. Possible values are: 75, 150, 300, 600, and 1200.
  • flatten: a boolean that, when set to true, flattens the split PDF files, making form fields and annotations uneditable.

PDF Engines

The PDFEngines class interacts with Gotenberg's PDF Engines routes to manipulate PDF files.

Format Conversion

This method interacts with PDF Engines convertion route to transform PDF files into the requested PDF/A format and/or PDF/UA.

import { PDFEngines } from "chromiumly";

const buffer = await PDFEngines.convert({
  files: ["path/to/file_1.pdf", "path/to/file_2.pdf"],
  pdfa: PdfFormat.A_2b,
  pdfUA: true,
});

Merging

This method interacts with PDF Engines merge route which gathers different engines that can manipulate and merge PDF files such as: PDFtk, PDFcpu, QPDF, and UNO.

import { PDFEngines } from "chromiumly";

const buffer = await PDFEngines.merge({
  files: ["path/to/file_1.pdf", "path/to/file_2.pdf"],
  pdfa: PdfFormat.A_2b,
  pdfUA: true,
});

Metadata Management

readMetadata

This method reads metadata from the provided PDF files.

import { PDFEngines } from "chromiumly";

const metadataBuffer = await PDFEngines.readMetadata([
  "path/to/file_1.pdf",
  "path/to/file_2.pdf",
]);
writeMetadata

This method writes metadata to the provided PDF files.

import { PDFEngines } from "chromiumly";

const buffer = await PDFEngines.writeMetadata({
  files: [
  "path/to/file_1.pdf",
  "path/to/file_2.pdf",
  ],
  metadata: {
    Author: 'Taha Cherfia',
    Tite: 'Chromiumly'
    Keywords: ['pdf', 'html', 'gotenberg'],
  }
});

Please consider referring to ExifTool for a comprehensive list of accessible metadata options.

File Generation

It is just a generic complementary method that takes the buffer returned by the convert method, and a chosen filename to generate the PDF file.

Please note that all the PDF files can be found __generated__ folder in the root folder of your project.

PDF Splitting

Each Chromium and LibreOffice route has a split parameter that allows splitting the PDF file into multiple files. The split parameter is an object with the following properties:

  • mode: the mode of the split. It can be pages or intervals.
  • span: the span of the split. It is a string that represents the range of pages to split.
  • unify: a boolean that allows unifying the split files. Only works when mode is pages.
  • flatten: a boolean that, when set to true, flattens the split PDF files, making form fields and annotations uneditable.
import { UrlConverter } from "chromiumly";
const buffer = await UrlConverter.convert({
  url: "https://www.example.com/",
  split: {
    mode: "pages",
    span: "1-2",
    unify: true,
  },
});

On the other hand, PDFEngines' has a split method that interacts with PDF Engines split route which splits PDF files into multiple files.

import { PDFEngines } from "chromiumly";

const buffer = await PDFEngines.split({
  files: ["path/to/file_1.pdf", "path/to/file_2.pdf"],
  options: {
    mode: "pages",
    span: "1-2",
    unify: true,
  },
});

⚠️ Note: Gotenberg does not currently validate the span value when mode is set to pages, as the validation depends on the chosen engine for the split feature. See PDF Engines module configuration for more details.

PDF Flattening

PDF flattening converts interactive elements like forms and annotations into a static PDF. This ensures the document looks the same everywhere and prevents further edits.

import { PDFEngines } from "chromiumly";

const buffer = await PDFEngines.flatten({
  files: ["path/to/file_1.pdf", "path/to/file_2.pdf"],
});

Snippet

The following is a short snippet of how to use the library.

import { PDFEngines, UrlConverter } from "chromiumly";

async function run() {
  const urlConverter = new UrlConverter();
  const buffer = await urlConverter.convert({
    url: "https://gotenberg.dev/",
    properties: {
      singlePage: true,
      size: {
        width: 8.5,
        height: 11,
      },
    },
    emulatedMediaType: "screen",
    failOnHttpStatusCodes: [404],
    failOnConsoleExceptions: true,
    skipNetworkIdleEvent: false,
    optimizeForSpeed: true,
    split: {
      mode: "pages",
      span: "1-2",
      unify: true,
    },
  });

  await PDFEngines.generate("gotenberg.pdf", buffer);
}

run();

changelog (log de mudanças)

Changelog

4.1.3 (2025-08-03)

  • chore(deps): update dependency @types/node to v22.16.0 (#632) (d32eceb), closes #632
  • chore(deps): update dependency @types/node to v22.16.3 (#635) (528079e), closes #635
  • chore(deps): update dependency @types/node to v22.16.5 (#641) (3d3c334), closes #641
  • chore(deps): update dependency @types/node to v22.17.0 (#647) (4f8cb9b), closes #647
  • chore(deps): update dependency config to v4.0.1 (#638) (7f0e57d), closes #638
  • chore(deps): update dependency config to v4.1.0 (#645) (bad89a3), closes #645
  • chore(deps): update dependency dotenv to v17 (#626) (1938016), closes #626
  • chore(deps): update dependency dotenv to v17.0.1 (#630) (359c17d), closes #630
  • chore(deps): update dependency dotenv to v17.1.0 (#634) (a93f23c), closes #634
  • chore(deps): update dependency dotenv to v17.2.0 (#636) (07e111d), closes #636
  • chore(deps): update dependency dotenv to v17.2.1 (#646) (71b8cf1), closes #646
  • chore(deps): update dependency eslint-config-prettier to v10.1.8 (#642) (d952651), closes #642
  • chore(deps): update dependency jest to v30.0.3 (#624) (e7d422a), closes #624
  • chore(deps): update dependency jest to v30.0.4 (#631) (19ddcba), closes #631
  • chore(deps): update dependency jest to v30.0.5 (#644) (b25464e), closes #644
  • chore(deps): update dependency prettier to v3.6.2 (#625) (4c256f6), closes #625
  • chore(deps): update dependency release-it to v19.0.4 (#640) (6ffa8d7), closes #640
  • chore(deps): update dependency typescript to v5.9.2 (#648) (7fd9e0f), closes #648
  • chore(deps): update node.js to v22.17.0 (#628) (a1f6b68), closes #628
  • chore(deps): update node.js to v22.17.1 (#639) (64c7eb7), closes #639
  • chore(deps): update node.js to v22.18.0 (#649) (bc5551a), closes #649
  • chore(deps): update typescript-eslint monorepo to v8.35.0 (#627) (90fe130), closes #627
  • chore(deps): update typescript-eslint monorepo to v8.35.1 (#629) (c4f3b37), closes #629
  • chore(deps): update typescript-eslint monorepo to v8.36.0 (#633) (191da6e), closes #633
  • chore(deps): update typescript-eslint monorepo to v8.37.0 (#637) (087cedb), closes #637
  • chore(deps): update typescript-eslint monorepo to v8.38.0 (#643) (ac3902f), closes #643

#

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

v4.1.3

  • chore(deps): update node.js to v22.18.0 #649
  • chore(deps): update dependency typescript to v5.9.2 #648
  • chore(deps): update dependency @types/node to v22.17.0 #647
  • chore(deps): update dependency dotenv to v17.2.1 #646
  • chore(deps): update dependency config to v4.1.0 #645
  • chore(deps): update dependency jest to v30.0.5 #644
  • chore(deps): update typescript-eslint monorepo to v8.38.0 #643
  • chore(deps): update dependency eslint-config-prettier to v10.1.8 #642
  • chore(deps): update dependency @types/node to v22.16.5 #641
  • chore(deps): update dependency release-it to v19.0.4 #640
  • chore(deps): update node.js to v22.17.1 #639
  • chore(deps): update dependency config to v4.0.1 #638
  • chore(deps): update typescript-eslint monorepo to v8.37.0 #637
  • chore(deps): update dependency dotenv to v17.2.0 #636
  • chore(deps): update dependency @types/node to v22.16.3 #635
  • chore(deps): update dependency dotenv to v17.1.0 #634
  • chore(deps): update typescript-eslint monorepo to v8.36.0 #633
  • chore(deps): update dependency @types/node to v22.16.0 #632
  • chore(deps): update dependency jest to v30.0.4 #631
  • chore(deps): update dependency dotenv to v17.0.1 #630
  • chore(deps): update typescript-eslint monorepo to v8.35.1 #629
  • chore(deps): update dependency dotenv to v17 #626
  • chore(deps): update node.js to v22.17.0 #628
  • chore(deps): update typescript-eslint monorepo to v8.35.0 #627
  • chore(deps): update dependency prettier to v3.6.2 #625
  • chore(deps): update dependency jest to v30.0.3 #624

v4.1.2

25 June 2025

  • chore(deps): update dependency prettier to v3.6.0 #623
  • chore(deps): update dependency jest to v30.0.2 #622
  • chore(deps): update typescript-eslint monorepo to v8.34.1 #621
  • chore(deps): update dependency release-it to v19 #589
  • chore(deps): update dependency lint-staged to v16 #600
  • chore(deps): update dependency config to v4 #604
  • chore(deps): update jest monorepo to v30 #615
  • chore(deps): update dependency dotenv to v16.5.0 #619
  • chore(deps): update dependency @types/node to v22.15.32 #620
  • chore(deps): update dependency ts-jest to v29.4.0 #618
  • chore(deps): update dependency @types/node to v22.15.31 #617
  • chore(deps): update typescript-eslint monorepo to v8.34.0 #616
  • chore(deps): update typescript-eslint monorepo to v8.33.1 #614
  • chore(deps): update dependency @types/node to v22.15.30 #613
  • chore(deps): update dependency @types/node to v22.15.29 #611
  • chore(deps): update typescript-eslint monorepo to v8.33.0 #610
  • chore(deps): update node.js to v22.16.0 #609
  • chore(deps): update dependency @types/node to v22.15.19 #608
  • chore(deps): update dependency ts-jest to v29.3.4 #607
  • chore(deps): update node.js to v22.15.1 #606
  • chore(deps): update dependency ts-jest to v29.3.3 #605
  • chore(deps): update typescript-eslint monorepo to v8.32.1 #603
  • chore(deps): update dependency eslint-config-prettier to v10.1.5 #602
  • chore(deps): update commitlint monorepo to v19.8.1 #601
  • chore(deps): update dependency @types/node to v22.15.17 #599
  • chore(deps): update dependency eslint-config-prettier to v10.1.3 #598
  • chore(deps): update dependency lint-staged to v15.5.2 #597
  • chore(deps): update typescript-eslint monorepo to v8.32.0 #596
  • chore(deps): update dependency @babel/preset-typescript to v7.27.1 #595
  • chore(deps): update typescript-eslint monorepo to v8.31.1 #594
  • chore(deps): update dependency @types/node to v22.15.3 #593
  • chore(deps): update node.js to v22.15.0 #592
  • chore(deps): update typescript-eslint monorepo to v8.31.0 #591
  • chore(deps): update dependency @release-it/conventional-changelog to v10.0.1 #590
  • chore(deps): update typescript-eslint monorepo to v8.30.1 #588
  • chore(deps): update dependency ts-jest to v29.3.2 #587
  • chore(deps): update dependency @types/node to v22.14.1 #586
  • chore(deps): update dependency lint-staged to v15.5.1 #585
  • chore(deps): update dependency eslint-config-prettier to v10.1.2 #584
  • chore(deps): update typescript-eslint monorepo to v8.29.1 #583
  • chore(deps): update dependency typescript to v5.8.3 #582
  • chore(deps): update dependency @types/node to v22.14.0 #581
  • chore(deps): update typescript-eslint monorepo to v8.29.0 #580
  • chore(deps): update dependency ts-jest to v29.3.1 #579
  • chore(deps): update dependency @types/node to v22.13.14 #578
  • chore(deps): update typescript-eslint monorepo to v8.28.0 #577
  • chore(deps): update dependency @babel/preset-typescript to v7.27.0 #576
  • chore(deps): update dependency @types/node to v22.13.13 #575
  • chore(deps): update dependency ts-jest to v29.3.0 #574
  • chore(deps): update dependency @types/node to v22.13.11 #573
  • chore(deps): update typescript-eslint monorepo to v8.27.0 #572
  • chore: release v4.1.2 6325853

v4.1.1

17 March 2025

  • chore(deps): update dependency lint-staged to v15.5.0 #571
  • chore(deps): update node.js to v22 #569
  • chore: release v4.1.1 c90eb60
  • docs: update README.md 6ae581a
  • fix(pdf-engines): correct form data append structure for file uploads a3e73ba

v4.1.0

13 March 2025

  • chore(deps): update typescript-eslint monorepo to v8.26.1 #568
  • chore(deps): update commitlint monorepo to v19.8.0 #567
  • chore(deps): update dependency @types/node to v22.13.10 #566
  • chore(deps): update dependency eslint-config-prettier to v10.1.1 #565
  • chore(deps): update typescript-eslint monorepo to v8.26.0 #564
  • chore(deps): update dependency @types/node to v22.13.9 #563
  • chore(deps): update dependency prettier to v3.5.3 #562
  • chore(deps): update dependency @types/node to v22.13.8 #561
  • chore(deps): update dependency typescript to v5.8.2 #560
  • chore(deps): update typescript-eslint monorepo to v8.25.0 #558
  • chore(deps): update dependency eslint-config-prettier to v10.0.2 #559
  • chore(deps): update dependency ts-jest to v29.2.6 #556
  • chore(deps): update dependency prettier to v3.5.2 #555
  • chore(deps): update dependency @types/node to v22.13.5 #554
  • chore(deps): update typescript-eslint monorepo to v8.24.1 #552
  • chore(deps): update dependency @types/node to v22.13.4 #551
  • chore(deps): update dependency prettier to v3.5.1 #550
  • chore(deps): update typescript-eslint monorepo to v8.24.0 #549
  • chore(deps): update dependency prettier to v3.5.0 #548
  • chore(deps): update dependency @types/node to v22.13.1 #547
  • chore(deps): update typescript-eslint monorepo to v8.23.0 #546
  • chore(deps): update commitlint monorepo to v19.7.1 #545
  • chore(deps): update dependency @types/node to v22.13.0 #544
  • chore: release v4.1.0 d607390
  • feat(pdf-engines): add flatten route 36d9767
  • feat(libre-translate): add flatten property e6272c1

v4.0.0

30 January 2025

  • chore(deps): update typescript-eslint monorepo to v8.22.0 #543
  • chore(deps): update dependency @types/node to v22.12.0 #542
  • chore(deps): update dependency lint-staged to v15.4.3 #541
  • chore(deps): update dependency release-it to v18.1.2 #540
  • chore(deps): update dependency @types/node to v22.10.10 #539
  • chore(deps): update dependency lint-staged to v15.4.2 #538
  • chore(deps): update typescript-eslint monorepo to v8.21.0 #536
  • chore(deps): update dependency lint-staged to v15.4.1 #535
  • chore(deps): update dependency @types/node to v22.10.7 #534
  • chore(deps): update dependency eslint-config-prettier to v10 #531
  • chore(deps): update typescript-eslint monorepo to v8.20.0 #533
  • chore(deps): update dependency @types/node to v22.10.6 #532
  • chore(deps): update typescript-eslint monorepo to v8.19.1 #530
  • chore(deps): update dependency typescript to v5.7.3 #529
  • chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 #528
  • test: update unit tests ebc3976
  • refactor!: use built-in fetch and form-data f943fce
  • chore: release v4.0.0 b6b34ba

v3.11.0

9 January 2025

  • chore(deps): update dependency @types/node to v22.10.5 #525
  • chore(deps): update dependency @types/node to v22.10.3 #524
  • chore(deps): update typescript-eslint monorepo to v8.19.0 #523
  • chore(deps): update dependency lint-staged to v15.3.0 #522
  • chore(deps): update typescript-eslint monorepo to v8.18.2 #521
  • chore(deps): update dependency release-it to v17.11.0 #520
  • chore(deps): update dependency @release-it/conventional-changelog to v9.0.4 #519
  • chore(deps): update typescript-eslint monorepo to v8.18.1 #518
  • chore(deps): update commitlint monorepo to v19.6.1 #517
  • chore(deps): update dependency lint-staged to v15.2.11 #516
  • chore(deps): update dependency @types/node to v22.10.2 #515
  • chore(deps): update dependency release-it to v18 17cda23
  • docs: update README 0240e0c
  • chore: release v3.11.0 5f31747

v3.10.1

12 December 2024

  • chore: release v3.10.1 d9c53b4
  • fix(libre-office): correct file naming to preserve order b4bb45f
  • fix(pdf-engines): correct file naming to preserve order fa8261d

v3.10.0

11 December 2024

  • feat: add custom http headers support #512
  • chore(deps): update typescript-eslint monorepo to v8.18.0 #514
  • chore(deps): update dependency prettier to v3.4.2 #513
  • chore(deps): update dependency dotenv to v16.4.7 #511
  • chore(deps): update typescript-eslint monorepo to v8.17.0 #510
  • chore(deps): update dependency @types/node to v22.10.1 #509
  • chore(deps): update dependency prettier to v3.4.1 #508
  • chore(deps): update dependency @types/node to v22.10.0 #507
  • chore(deps): update typescript-eslint monorepo to v8.16.0 #506
  • chore(deps): update dependency @types/node to v22.9.3 #504
  • chore(deps): update dependency typescript to v5.7.2 #503
  • chore(deps): update commitlint monorepo to v19.6.0 #502
  • chore(deps): update dependency @types/node to v22.9.1 #501
  • chore(deps): update typescript-eslint monorepo to v8.15.0 #500
  • chore(deps): update dependency husky to v9.1.7 #499
  • chore: release v3.10.0 93faa76

v3.9.0

18 November 2024

  • chore(deps): update codecov/codecov-action action to v5 #498
  • chore(deps): update typescript-eslint monorepo to v8.14.0 #496
  • chore(deps): update dependency @release-it/conventional-changelog to v9.0.3 #497
  • chore(deps): update dependency @types/node-fetch to v2.6.12 #495
  • chore(deps): update dependency @types/node to v22 #486
  • chore(deps): update dependency @types/form-data to v2.5.2 #482
  • chore(deps): update dependency release-it to v17.10.0 #473
  • chore(deps): update dependency tslib to v2.8.0 #474
  • chore(deps): update dependency @release-it/conventional-changelog to v9 #470
  • chore(deps): update dependency @babel/preset-typescript to v7.25.9 97f2e6a
  • chore(deps): update typescript-eslint monorepo to v8.13.0 79d6350
  • chore(deps): update typescript-eslint monorepo to v8.12.2 9ab42d1

v3.8.2

13 October 2024

  • chore(deps): update dependency @release-it/conventional-changelog to v9 #468
  • chore(deps): update dependency release-it to v17.8.2 #469
  • chore(deps): update dependency typescript to v5.6.3 #466
  • fix(deps): update dependency form-data to v4.0.1 #467
  • chore(deps): update typescript-eslint monorepo to v8.8.1 #464
  • Revert "chore(deps): update dependency @release-it/conventional-changelog to v9" f35f9ce
  • chore(deps): update dependency release-it to v17.7.0 5c6da67
  • chore: release v3.8.2 fb26785

v3.8.1

4 October 2024

  • chore(deps): update dependency @babel/preset-typescript to v7.25.7 a35ee78
  • chore(deps): update typescript-eslint monorepo to v8.8.0 818d3d2
  • chore(pdf-engines): assert at least pdfa or pdfUA is provided bf13769

v3.8.0

1 October 2024

  • feat: update skipNetworkIdleEvent default value 9f5a53d
  • chore(deps): update dependency commitizen to v4.3.1 25ef1a0
  • chore: release v3.8.0 0e40ece

v3.7.0

24 September 2024

  • chore(deps): update dependency typescript to v5.6.2 #456
  • chore(deps): update commitlint monorepo to v19.5.0 7b83743
  • chore(deps): update @typescript-eslint dependencies c83a457
  • feat(chromium): add downloadFrom property to routes dba3ff1

v3.6.2

9 September 2024

  • chore: add missing option cookie to URL screenshot #449
  • chore(screenshots): remove unsupported parameters 787b344
  • chore(deps): update commitlint monorepo to v19.4.1 74e61de
  • chore(deps): update dependency ts-jest to v29.2.5 f48822c

v3.6.1

20 August 2024

  • chore(deps): update dependency ts-jest to v29.2.2 #418
  • chore(deps): update dependency lint-staged to v15.2.8 b2ab059
  • chore(deps): update dependency release-it to v17.6.0 f1ab400
  • chore(deps): update typescript-eslint monorepo to v7.18.0 2d08de8

v3.6.0

11 July 2024

  • chore(deps): update typescript-eslint monorepo to v7.16.0 38cecfb
  • test(libre-office): update unit tests b22e984
  • feat(libre-office): add support to quality and maxImageResolution properties a2384e0

v3.5.0

4 July 2024

  • chore(deps): update dependency release-it to v17.4.1 #409
  • feat(libre-office): add support to new page properties bb5e890
  • chore(deps): update typescript-eslint monorepo to v7.15.0 e95051e
  • chore: suppress config warnings 88da5ae

v3.4.0

28 June 2024

  • feat(libre-office): add losslessImageCompression and reduceImageResolution properties 1b07f8d
  • chore(deps): update typescript-eslint monorepo to v7.14.1 d748559
  • chore(deps): update typescript-eslint monorepo to v7.13.1 43fe613

v3.3.4

14 June 2024

  • chore(deps): move config and dotenv to dependencies e2b4d89
  • chore: release v3.3.4 c894748

v3.3.3

13 June 2024

  • chore: release v3.3.3 09d895f
  • chore(deps): make peer dependencies optional 6311213

v3.3.2

13 June 2024

  • chore(deps): update dependency @babel/preset-typescript to v7.24.7 250ec4c
  • chore(deps): update typescript-eslint monorepo to v7.13.0 ba32de9
  • chore: release v3.3.2 e3b182e

v3.3.1

6 June 2024

  • chore(deps): update typescript-eslint monorepo to v7.12.0 beec84a
  • chore(pdf-engines): optimize addFiles method ce7ceaf
  • chore: release v3.3.1 177a705

v3.3.0

3 June 2024

  • feat: add chromiumly configuration via code fdbde2c
  • test: update jest configuration 5f45d20
  • docs: update README.md c259187

v3.2.1

29 May 2024

  • chore(deps): update dependency @babel/preset-typescript to v7.24.6 3af3135
  • chore(deps): update typescript-eslint monorepo to v7.9.0 187f5d7
  • chore(deps): update dependency release-it to v17.3.0 db17a5f

v3.2.0

27 April 2024

  • chore(deps): update dependency release-it to v17.2.0 #370
  • chore(deps): update typescript-eslint monorepo to v7.7.1 3f739e4
  • chore(deps): update typescript-eslint monorepo to v7.7.0 95d13a0
  • test(chromium): update unit tests 2c7b230

v3.1.0

12 April 2024

  • chore(deps): update dependency typescript to v5.4.5 #369
  • chore(deps): update typescript-eslint monorepo to v7.6.0 b31672a
  • feat(chromium): add cookies support 91e487d
  • feat: add basic authentication support 43db77c

v3.0.1

9 April 2024

  • refactor(libre-office): improve documents support a077110
  • chore: remove file-type dependency 15d93bc
  • chore: release v3.0.1 a103ba6

v3.0.0

8 April 2024

  • feat(libre-office): add LibreOffice convert route 0adba11
  • refactor(pdf-engines)!: separate pdf-engines from LibreOffice 439f7f9
  • docs: update README.md 94cbc0e

v2.10.0

5 April 2024

  • feat(libre-office): add newly supported extensions f58fcbb
  • chore(deps): update typescript-eslint monorepo to v7.5.0 d59c1e5
  • chore(deps): update typescript-eslint monorepo to v7.4.0 e575c57

v2.9.0

23 March 2024

  • chore(deps): update dependency @babel/preset-typescript to v7.24.1 4497f5d
  • chore(deps): update commitlint monorepo to v19.1.0 48aef9c
  • chore(deps): update typescript-eslint monorepo to v7.3.1 e258783

v2.8.0

6 March 2024

  • test(chromium): add screenshots unit tests 2f36ccc
  • feat(chromium): add screenshots support d56e656
  • chore(deps): update typescript-eslint monorepo to v7.1.1 915a905

v2.7.0

29 February 2024

  • chore(deps): update typescript-eslint monorepo to v7.1.0 #341
  • refactor(chromium): move addFile to common utils edc284d
  • chore: format code fdbcbdb
  • chore(deps): update commitlint monorepo to v19.0.3 f762d5d

v2.6.0

19 February 2024

  • chore(deps): update codecov/codecov-action action to v4 #320
  • feat: support assets for html conversion #332
  • chore(deps): update typescript-eslint monorepo to v7 (major) #329
  • chore(deps): update dependency husky to v9 #314
  • chore(deps): update dependency @types/node to v20.10.5 #294
  • chore(deps): update dependency release-it to v17.0.3 e9a3552
  • chore(deps): update typescript-eslint monorepo to v6.16.0 6723226
  • chore(deps): update dependency release-it to v17.0.5 12e0618

v2.5.1

11 December 2023

  • docs: add JSDoc comments daa7783
  • chore: determine file type from buffer and read stream d345e4c
  • docs: update modules section in README.md be9e0dc

v2.5.0

10 December 2023

  • chore(deps): update dependency @types/jest to v29.5.11 #287
  • chore(deps): update dependency @types/node to v20.10.4 #288
  • chore(deps): update dependency typescript to v5.3.3 #289
  • chore: format code 211c6e1
  • feat(chromium): add ReadStream support 1c45580
  • test(chromium): update converter utils unit tests 0ca55dd

v2.4.0

5 December 2023

  • feat(chromium): add buffer support f7bfaa0
  • chore: release v2.4.0 74d410f

v2.3.1

4 December 2023

  • chore: release v2.3.1 72a0057
  • fix(ci): build package before release 16e852a

v2.3.0

3 December 2023

  • chore(deps): update dependency release-it to v17 #276
  • chore(deps): update dependency @types/node to v20.10.1 #274
  • chore(deps): update typescript-eslint monorepo to v6.13.1 #275
  • chore(chromium): add costomize function 8b6e401
  • refactor(chromium): use customize to append common properties 87c51bc
  • feat: add PDF/Universal Accessibility property ed4ca4b

v2.2.2

30 November 2023

  • chore(deps): update dependency inquirer to v9 #272
  • chore: add release-it c28463a
  • chore: add commitlint a5e8271
  • chore: release v2.2.1 66ec31c

v2.2.0

4 November 2023

  • chore(deps): bump @babel/traverse from 7.17.3 to 7.23.2 #254
  • [Snyk] Upgrade node-fetch from 2.6.13 to 2.7.0 #225
  • chore(deps): update dependency @types/jest to v29.5.7 #251
  • chore(deps): update dependency @types/node-fetch to v2.6.8 #252
  • chore(deps): update dependency @types/node to v20 #248
  • chore(deps): update actions/setup-node action to v4 #247
  • chore(deps): update actions/checkout action to v4 #211
  • [Snyk] Upgrade node-fetch from 2.6.12 to 2.6.13 #215
  • chore(deps): update jest monorepo #146
  • chore(deps): update typescript-eslint monorepo to v6 (major) #186
  • [Snyk] Upgrade node-fetch from 2.6.11 to 2.6.12 #189
  • [Snyk] Upgrade node-fetch from 2.6.10 to 2.6.11 #185
  • [Snyk] Upgrade node-fetch from 2.6.9 to 2.6.10 #165
  • chore(deps): update dependency jest to v29.6.3 045396d
  • chore(deps): update dependency jest to v29.7.0 c874967
  • chore(deps): update dependency jest to v29.6.4 84323ac

v2.1.0

7 July 2023

  • [Snyk] Upgrade node-fetch from 2.6.8 to 2.6.9 #147
  • chore(deps): update dependency @babel/preset-typescript to v7.22.5 845b1eb
  • chore(deps): update typescript-eslint monorepo to v5.61.0 b14781f
  • chore(deps): update typescript-eslint monorepo to v5.60.1 ce3aaab

v2.0.8

30 April 2023

  • chore(deps): bump json5 from 2.2.1 to 2.2.3 #144
  • chore(deps): update dependency jest-junit to v16 #135
  • chore(deps): update dependency typescript to v5 #121
  • [Snyk] Upgrade node-fetch from 2.6.7 to 2.6.8 #102
  • chore(deps): update dependency @babel/preset-typescript to v7.21.0 3e5566f
  • chore(deps): update dependency @babel/preset-typescript to v7.21.5 ecc4a81
  • chore(deps): update typescript-eslint monorepo to v5.55.0 be21076

v2.0.7

1 February 2023

  • chore(deps): update dependency jest-junit to v15 #65
  • feat: update dependencies f7cba87
  • chore(deps): update jest monorepo to v29.2.0 d5775c1
  • chore(deps): update dependency jest to v29.3.1 c123594

v2.0.6

21 September 2022

  • chore(deps): update dependency ts-jest to v29.0.1 e667a7d
  • chore(deps): update dependency ts-jest to v29.0.1 d390678
  • chore(deps): update dependency @types/jest to v29.0.3 834c983

v2.0.5

11 September 2022

  • [Snyk] Upgrade dotenv from 16.0.0 to 16.0.1 #27
  • chore(deps): update dependency @types/config to v3 #33
  • chore(deps): update jest monorepo to v29 (major) #32
  • chore(deps): update dependency ts-jest to v28.0.8 #31
  • chore(deps): update dependency jest-junit to v14 #29
  • chore(deps): update dependency @types/node-fetch to v2.6.2 #28
  • chore(deps): update dependency typescript to v4.8.3 #26
  • chore(deps): update dependency ts-node to v10.9.1 #25
  • chore(deps): update dependency @babel/preset-typescript to v7.18.6 #23
  • chore(deps): update dependency eslint to v8.23.0 #22
  • chore(deps): update jest monorepo #21
  • chore(deps): update typescript-eslint monorepo to v5.36.2 #20
  • chore(deps): update jest monorepo to v28 (major) #18
  • chore(deps): update dependency typescript to v4.6.4 #19
  • chore(deps): update dependency jest-junit to v13.2.0 #16
  • chore(deps): update dependency eslint to v8.14.0 #17
  • chore(deps): update typescript-eslint monorepo to v5.21.0 #15
  • chore(deps): update dependency jest-junit to v13.1.0 #13
  • chore(deps): update codecov/codecov-action action to v3 #12
  • chore(deps): update typescript-eslint monorepo to v5.19.0 #11
  • chore(deps): update dependency eslint to v8.13.0 #14
  • chore(deps): pin dependencies #2
  • chore(deps): update actions/checkout action to v3 #7
  • chore(deps): update actions/setup-node action to v3 #8
  • chore(deps): update typescript-eslint monorepo to v5.17.0 #6
  • chore(deps): update dependency eslint to v8.12.0 #5
  • chore(deps): update jest monorepo to v28 60ecc86
  • chore(deps): update jest monorepo to v29 9aaf2d1
  • feat: update renovate config 6614cd0

v2.0.4

2 April 2022

  • fix(readme): fix description typo bd98092

v2.0.3

2 April 2022

  • chore(deps): update dependency typescript to v4.6.3 #3
  • Configure Renovate #1
  • feat: add build workflow 64c1879
  • feat: add codecov steps f873152
  • feat: update badges style 35533e9

v2.0.2

1 April 2022

  • feat: add ts-jest dependency 9625072
  • feat: add unit tests 1513c8e
  • fix(pdf-engines): check file extension b9b4397

v2.0.1

28 March 2022

  • feat: add installation steps to README a0bb726
  • feat: add LibreOffice to keywords c781cee

v2.0.0

28 March 2022

  • chore(converters): move converters to chromium module c29bdf4
  • feat(libre-office): add LibreOffice utility class 7894d88
  • feat(pdf-engines): add PDF Engines module bffa17b

v1.0.4

28 March 2022