export = ImageMinimizerPlugin; /** @typedef {import("schema-utils/declarations/validate").Schema} Schema */ /** @typedef {import("webpack").WebpackPluginInstance} WebpackPluginInstance */ /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").Compilation} Compilation */ /** @typedef {import("webpack").WebpackError} WebpackError */ /** @typedef {import("webpack").Asset} Asset */ /** @typedef {import("webpack").AssetInfo} AssetInfo */ /** @typedef {import("webpack").sources.Source} Source */ /** @typedef {import("./utils.js").imageminMinify} ImageminMinifyFunction */ /** @typedef {import("./utils.js").squooshMinify} SquooshMinifyFunction */ /** @typedef {RegExp | string} Rule */ /** @typedef {Rule[] | Rule} Rules */ /** * @callback FilterFn * @param {Buffer} source `Buffer` of source file. * @param {string} sourcePath Absolute path to source. * @returns {boolean} */ /** * @typedef {Object} ImageminOptions * @property {Array?] | import("imagemin").Plugin>} plugins */ /** * @typedef {Object.} SquooshOptions */ /** * @typedef {Object} WorkerResult * @property {string} filename * @property {Buffer} data * @property {Array} warnings * @property {Array} errors * @property {AssetInfo} info */ /** * @template T * @typedef {Object} Task * @property {string} name * @property {AssetInfo} info * @property {Source} inputSource * @property {WorkerResult & { source?: Source } | undefined} output * @property {ReturnType["getItemCache"]>} cacheItem * @property {Transformer | Transformer[]} transformer */ /** * @typedef {{ [key: string]: any }} CustomOptions */ /** * @template T * @typedef {T extends infer U ? U : CustomOptions} InferDefaultType */ /** * @template T * @typedef {InferDefaultType | undefined} BasicTransformerOptions */ /** * @template T * @callback BasicTransformerImplementation * @param {WorkerResult} original * @param {BasicTransformerOptions} [options] * @returns {Promise} */ /** * @typedef {Object} BasicTransformerHelpers * @property {() => void} [setup] * @property {() => void} [teardown] */ /** * @template T * @typedef {BasicTransformerImplementation & BasicTransformerHelpers} TransformerFunction */ /** * @typedef {Object} PathData * @property {string} [filename] */ /** * @callback FilenameFn * @param {PathData} pathData * @param {AssetInfo} [assetInfo] * @returns {string} */ /** * @template T * @typedef {Object} Transformer * @property {TransformerFunction} implementation * @property {BasicTransformerOptions} [options] * @property {FilterFn} [filter] * @property {string | FilenameFn} [filename] * @property {string} [preset] * @property {"import" | "asset"} [type] */ /** * @template T * @typedef {Omit, "preset" | "type">} Minimizer */ /** * @template T * @typedef {Transformer} Generator */ /** * @template T * @typedef {Object} InternalWorkerOptions * @property {string} filename * @property {Buffer} input * @property {Transformer | Transformer[]} transformer * @property {string} [severityError] * @property {Function} [generateFilename] */ /** * @template T * @typedef {import("./loader").LoaderOptions} InternalLoaderOptions */ /** * @template T, G * @typedef {Object} PluginOptions * @property {Rules} [test] Test to match files against. * @property {Rules} [include] Files to include. * @property {Rules} [exclude] Files to exclude. * @property {T extends any[] ? { [P in keyof T]: Minimizer } : Minimizer | Minimizer[]} [minimizer] Allows to setup the minimizer. * @property {G extends any[] ? { [P in keyof G]: Generator } : Generator[]} [generator] Allows to set the generator. * @property {boolean} [loader] Automatically adding `imagemin-loader`. * @property {number} [concurrency] Maximum number of concurrency optimization processes in one time. * @property {string} [severityError] Allows to choose how errors are displayed. * @property {boolean} [deleteOriginalAssets] Allows to remove original assets. Useful for converting to a `webp` and remove original assets. */ /** * @template T, [G=T] * @extends {WebpackPluginInstance} */ declare class ImageMinimizerPlugin { /** * @param {PluginOptions} [options={}] Plugin options. */ constructor(options?: PluginOptions | undefined); /** * @private */ private options; /** * @private * @param {Compiler} compiler * @param {Compilation} compilation * @param {Record} assets * @returns {Promise} */ private optimize; /** * @private */ private setupAll; /** * @private */ private teardownAll; /** * @param {import("webpack").Compiler} compiler */ apply(compiler: import("webpack").Compiler): void; } declare namespace ImageMinimizerPlugin { export { loader, imageminNormalizeConfig, imageminMinify, imageminGenerate, squooshMinify, squooshGenerate, Schema, WebpackPluginInstance, Compiler, Compilation, WebpackError, Asset, AssetInfo, Source, ImageminMinifyFunction, SquooshMinifyFunction, Rule, Rules, FilterFn, ImageminOptions, SquooshOptions, WorkerResult, Task, CustomOptions, InferDefaultType, BasicTransformerOptions, BasicTransformerImplementation, BasicTransformerHelpers, TransformerFunction, PathData, FilenameFn, Transformer, Minimizer, Generator, InternalWorkerOptions, InternalLoaderOptions, PluginOptions, }; } type PluginOptions = { /** * Test to match files against. */ test?: Rules | undefined; /** * Files to include. */ include?: Rules | undefined; /** * Files to exclude. */ exclude?: Rules | undefined; /** * Allows to setup the minimizer. */ minimizer?: | (T extends any[] ? { [P in keyof T]: Minimizer } : Minimizer | Minimizer[]) | undefined; /** * Allows to set the generator. */ generator?: | (G extends any[] ? { [P_1 in keyof G]: Generator } : Generator[]) | undefined; /** * Automatically adding `imagemin-loader`. */ loader?: boolean | undefined; /** * Maximum number of concurrency optimization processes in one time. */ concurrency?: number | undefined; /** * Allows to choose how errors are displayed. */ severityError?: string | undefined; /** * Allows to remove original assets. Useful for converting to a `webp` and remove original assets. */ deleteOriginalAssets?: boolean | undefined; }; declare var loader: string; import { imageminNormalizeConfig } from "./utils.js"; import { imageminMinify } from "./utils.js"; import { imageminGenerate } from "./utils.js"; import { squooshMinify } from "./utils.js"; import { squooshGenerate } from "./utils.js"; type Schema = import("schema-utils/declarations/validate").Schema; type WebpackPluginInstance = import("webpack").WebpackPluginInstance; type Compiler = import("webpack").Compiler; type Compilation = import("webpack").Compilation; type WebpackError = import("webpack").WebpackError; type Asset = import("webpack").Asset; type AssetInfo = import("webpack").AssetInfo; type Source = import("webpack").sources.Source; type ImageminMinifyFunction = typeof imageminMinify; type SquooshMinifyFunction = typeof squooshMinify; type Rule = RegExp | string; type Rules = Rule[] | Rule; type FilterFn = (source: Buffer, sourcePath: string) => boolean; type ImageminOptions = { plugins: Array< string | [string, Record?] | import("imagemin").Plugin >; }; type SquooshOptions = { [x: string]: any; }; type WorkerResult = { filename: string; data: Buffer; warnings: Array; errors: Array; info: AssetInfo; }; type Task = { name: string; info: AssetInfo; inputSource: Source; output: | (WorkerResult & { source?: Source; }) | undefined; cacheItem: ReturnType["getItemCache"]>; transformer: Transformer | Transformer[]; }; type CustomOptions = { [key: string]: any; }; type InferDefaultType = T extends infer U ? U : CustomOptions; type BasicTransformerOptions = InferDefaultType | undefined; type BasicTransformerImplementation = ( original: WorkerResult, options?: BasicTransformerOptions ) => Promise; type BasicTransformerHelpers = { setup?: (() => void) | undefined; teardown?: (() => void) | undefined; }; type TransformerFunction = BasicTransformerImplementation & BasicTransformerHelpers; type PathData = { filename?: string | undefined; }; type FilenameFn = ( pathData: PathData, assetInfo?: import("webpack").AssetInfo | undefined ) => string; type Transformer = { implementation: TransformerFunction; options?: BasicTransformerOptions; filter?: FilterFn | undefined; filename?: string | FilenameFn | undefined; preset?: string | undefined; type?: "import" | "asset" | undefined; }; type Minimizer = Omit, "preset" | "type">; type Generator = Transformer; type InternalWorkerOptions = { filename: string; input: Buffer; transformer: Transformer | Transformer[]; severityError?: string | undefined; generateFilename?: Function | undefined; }; type InternalLoaderOptions = import("./loader").LoaderOptions;