import { Plugin } from '../../vite'; import { FilterPattern } from '../@rollup/pluginutils'; import { InputType, ZlibOptions, BrotliOptions, ZstdOptions } from 'zlib'; type CoreAlgorithm = 'gzip' | 'brotliCompress' | 'deflate' | 'deflateRaw' | 'zstandard'; type AliasAlgorithm = 'gz' | 'br' | 'brotli' | 'zstd'; type Algorithm = CoreAlgorithm | AliasAlgorithm; interface UserCompressionOptions { [key: string]: any; } type InferDefault = T extends infer K ? K : UserCompressionOptions; type CompressionOptions = InferDefault; interface FileNameFunctionMetadata { algorithm: CoreAlgorithm | AlgorithmFunction; options: UserCompressionOptions; } interface BaseCompressionPluginOptions { include?: FilterPattern; exclude?: FilterPattern; threshold?: number; filename?: string | ((id: string, metadata: FileNameFunctionMetadata) => string); deleteOriginalAssets?: boolean; skipIfLargerOrEqual?: boolean; } interface AlgorithmToZlib { gz: ZlibOptions; gzip: ZlibOptions; brotliCompress: BrotliOptions; brotli: BrotliOptions; br: BrotliOptions; deflate: ZlibOptions; deflateRaw: ZlibOptions; zstd: ZstdOptions; zstandard: ZstdOptions; } type AlgorithmFunction = (buf: InputType, options: T) => Promise; type DefineAlgorithmResult = readonly [ 'gzip' | 'deflate' | 'deflateRaw', ZlibOptions ] | readonly [ 'brotliCompress', BrotliOptions ] | readonly [ 'zstandard', ZstdOptions ] | readonly [ AlgorithmFunction, T ]; type Algorithms = (Algorithm | DefineAlgorithmResult)[]; interface ViteCompressionPluginOption extends BaseCompressionPluginOptions { algorithms?: Algorithms; } interface ViteTarballPluginOptions { dest?: string; } interface CompressionPluginAPI { staticOutputs: Set; done: Promise; } declare function tarball(opts?: ViteTarballPluginOptions): Plugin; declare function compression(opts?: ViteCompressionPluginOption): Plugin; declare namespace compression { var getPluginAPI: (plugins: readonly Plugin[]) => CompressionPluginAPI | undefined; } declare function defineAlgorithm>(algorithm: T extends Algorithm | AlgorithmFunction ? T : AlgorithmFunction>, options?: T extends Algorithm ? AlgorithmToZlib[T] : T extends AlgorithmFunction ? UserCompressionOptions : T): DefineAlgorithmResult ? UserCompressionOptions : T>; export { compression, compression as default, defineAlgorithm, tarball }; export type { Algorithm, CompressionOptions, ViteCompressionPluginOption, ViteTarballPluginOptions };