or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cloud-storage.mdconfiguration.mderror-handling.mdimage-sources.mdindex.mdresults.mdtransformations.md
tile.json

tessl/npm-tinify

Node.js client for the Tinify API that intelligently compresses, resizes, converts, and stores images in AVIF, WebP, JPEG, and PNG formats.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/tinify@1.8.x

To install, run

npx @tessl/cli install tessl/npm-tinify@1.8.0

index.mddocs/

Tinify

Tinify is a Node.js client library for the Tinify API (TinyPNG/TinyJPG) that provides intelligent image compression, resizing, format conversion, and cloud storage integration. It supports AVIF, WebP, JPEG, and PNG formats with advanced features like metadata preservation and direct cloud storage uploads.

Package Information

  • Package Name: tinify
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install tinify

Core Imports

const tinify = require("tinify");

For TypeScript:

import tinify = require("tinify");

Basic Usage

const tinify = require("tinify");

// Set API key
tinify.key = "YOUR_API_KEY";

// Basic compression from file
await tinify.fromFile("input.png").toFile("output.png");

// From URL with resizing  
await tinify.fromUrl("https://example.com/image.jpg")
  .resize({ method: "fit", width: 150, height: 100 })
  .toFile("thumbnail.jpg");

// Format conversion
const source = tinify.fromFile("image.jpg")
  .convert({ type: ["image/webp", "image/png"] });
const result = source.result();
const extension = await result.extension();
await source.toFile(`converted.${extension}`);

Architecture

Tinify uses a fluent API design centered around these core components:

  • Main Module: Configuration and factory methods for creating sources
  • Source Class: Represents an image for processing with chainable transformation methods
  • Result Classes: Handle processed image data and metadata
  • Client: Internal HTTP client for API communication
  • Error Handling: Comprehensive error types for different failure scenarios

Capabilities

Configuration and Authentication

Core configuration settings including API key authentication, proxy settings, and application identification.

// Configuration properties
let key: string;
let appIdentifier: string;
let proxy: string;
let compressionCount?: number;

// Validation method
function validate(): Promise<void>;
function validate(callback: (err: Error | null) => void): void;

Configuration

Image Source Creation

Factory methods for creating image sources from files, buffers, or URLs for processing.

function fromFile(path: string): Source;
function fromBuffer(data: string | Uint8Array): Source;
function fromUrl(url: string): Source;

Image Sources

Image Transformations

Comprehensive image processing operations including resizing, format conversion, and metadata preservation.

class Source {
  resize(options: ResizeOptions): Source;
  convert(options: ConvertOptions): Source;
  preserve(options: string[]): Source;
  preserve(...options: string[]): Source;
  transform(options: object): Source;
}

interface ResizeOptions {
  method: "fit" | "cover";
  width?: number;
  height?: number;
}

interface ConvertOptions {
  type: SupportedImageTypes | SupportedImageTypes[] | "*/*";
}

type SupportedImageTypes = "image/webp" | "image/png" | "image/jpg" | "image/jpeg" | "image/avif";

Image Transformations

Results and Output

Methods for retrieving processed images as files, buffers, or metadata, with both Promise and callback support.

class Source {
  result(): Result;
  toFile(path: string): Promise<void>;
  toFile(path: string, callback: (err: Error | null) => void): void;
  toBuffer(): Promise<Uint8Array>;
  toBuffer(callback: (err: Error | null, data?: Uint8Array) => void): void;
}

class Result {
  toFile(path: string): Promise<void>;
  toBuffer(): Promise<Uint8Array>;
  size(): Promise<number>;
  mediaType(): Promise<string | void>;
  extension(): Promise<string | void>;
}

Results and Output

Cloud Storage Integration

Direct upload integration with Amazon S3, Google Cloud Storage, and other S3-compatible services.

class Source {
  store(options: StoreOptions): ResultMeta;
}

interface StoreOptions {
  service: "s3" | "gcs";
  aws_access_key_id?: string;
  aws_secret_access_key?: string;
  region?: string;
  path: string;
  // Additional S3/GCS options
}

Cloud Storage

Error Handling

Comprehensive error types for different failure scenarios including authentication, client, server, and connection errors.

class Error extends globalThis.Error {
  status?: number;
  constructor(message: string, type?: string, status?: number);
  static create(message: string, type: string, status?: number): Error;
}

class AccountError extends Error {} // 401, 429 errors
class ClientError extends Error {}  // 400-499 errors  
class ServerError extends Error {}  // 500-599 errors
class ConnectionError extends Error {} // Network errors

Error Handling

Types

type Callback<T = void> = (err: Error | null, data?: T) => void;

interface ResultMeta {
  width(): Promise<number>;
  height(): Promise<number>;
  location(): Promise<string>;
}