{"version":3,"file":"index.d.ts","names":["CompressorReturnType","ImageFormat","CompressorOutput","Buffer","CompressorResult","CompressorOptions","Record","Compressor","TOptions","MinifierOptions","Promise","FileType","Settings","Result","MinifyOptions"],"sources":["../../types/src/types.d.ts","../src/index.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2025 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * The return type of a compressor function.\n * @deprecated Use `CompressorResult` instead. Will be removed in v11.\n */\nexport type CompressorReturnType = string;\n\n/**\n * Supported image formats for image compression.\n */\nexport type ImageFormat =\n    | \"webp\"\n    | \"avif\"\n    | \"png\"\n    | \"jpeg\"\n    | \"jpg\"\n    | \"gif\"\n    | \"tiff\"\n    | \"heif\"\n    | \"heic\";\n\n/**\n * Output result for multi-format image compression.\n */\nexport type CompressorOutput = {\n    /**\n     * Format of the output (e.g., 'webp', 'avif').\n     */\n    format?: string;\n\n    /**\n     * Output content as string or Buffer.\n     */\n    content: string | Buffer;\n};\n\n/**\n * Result returned by a compressor function.\n */\nexport type CompressorResult = {\n    /**\n     * Minified content as string (for text-based formats like JS, CSS, HTML, SVG).\n     */\n    code: string;\n\n    /**\n     * Source map (for JS/CSS compressors).\n     */\n    map?: string;\n\n    /**\n     * Minified content as Buffer (for binary formats like images).\n     * @example\n     * When using sharp for PNG/WebP compression\n     */\n    buffer?: Buffer;\n\n    /**\n     * Multiple outputs for multi-format image compression.\n     * Used when converting to multiple formats simultaneously.\n     * @example\n     * [{ format: 'webp', content: <Buffer> }, { format: 'avif', content: <Buffer> }]\n     */\n    outputs?: CompressorOutput[];\n};\n\n/**\n * Base options that all compressors can accept.\n * Specific compressors may extend this with their own options.\n */\nexport type CompressorOptions = Record<string, unknown>;\n\n/**\n * A compressor function that minifies content.\n * @param args - The minifier options including settings and content\n * @returns A promise resolving to the compression result\n */\nexport type Compressor<TOptions extends CompressorOptions = CompressorOptions> =\n    (args: MinifierOptions<TOptions>) => Promise<CompressorResult>;\n\n/**\n * File type for compressors that support multiple types (e.g., YUI).\n */\nexport type FileType = \"js\" | \"css\";\n\n/**\n * User-facing settings for the minify function.\n * This is what users pass when calling minify().\n *\n * @example\n * ```ts\n * import { minify } from '@node-minify/core';\n * import { terser } from '@node-minify/terser';\n *\n * await minify({\n *   compressor: terser,\n *   input: 'src/*.js',\n *   output: 'dist/bundle.min.js',\n *   options: { mangle: true }\n * });\n * ```\n */\nexport type Settings<TOptions extends CompressorOptions = CompressorOptions> = {\n    /**\n     * The compressor function to use for minification.\n     */\n    compressor: Compressor<TOptions>;\n\n    /**\n     * Optional label for the compressor (used in logging).\n     */\n    compressorLabel?: string;\n\n    /**\n     * Content to minify (for in-memory minification).\n     * If provided, input/output are not required.\n     * For text-based formats (JS, CSS, HTML, SVG): string\n     * For binary formats (images): Buffer (handled internally by image compressors)\n     */\n    content?: string | Buffer;\n\n    /**\n     * Input file path(s) or glob pattern.\n     * Can be a single file, array of files, or wildcard pattern.\n     *\n     * @example\n     * - 'src/app.js'\n     * - ['src/a.js', 'src/b.js']\n     * - 'src/**\\/*.js'\n     */\n    input?: string | string[];\n\n    /**\n     * Output file path.\n     * Use $1 as placeholder for input filename in multi-file scenarios.\n     * Can be a single file, array of files, or pattern with $1.\n     *\n     * @example\n     * - 'dist/bundle.min.js'\n     * - ['file1.min.js', 'file2.min.js']\n     * - '$1.min.js' (creates app.min.js from app.js)\n     */\n    output?: string | string[];\n\n    /**\n     * Compressor-specific options.\n     * See individual compressor documentation for available options.\n     */\n    options?: TOptions;\n\n    /**\n     * CLI option string (used by CLI only).\n     * @internal\n     */\n    option?: string;\n\n    /**\n     * Buffer size for file operations (in bytes).\n     * @default 1024000 (1MB)\n     */\n    buffer?: number;\n\n    /**\n     * File type for compressors that support multiple types.\n     * Required for YUI compressor.\n     */\n    type?: FileType;\n\n    /**\n     * Suppress console output.\n     * @default false\n     */\n    silence?: boolean;\n\n    /**\n     * Public folder to prepend to input paths.\n     *\n     * @example\n     * With publicFolder: 'public/js/' and input: 'app.js',\n     * the actual path becomes 'public/js/app.js'\n     */\n    publicFolder?: string;\n\n    /**\n     * Replace files in place instead of creating new output files.\n     * @default false\n     */\n    replaceInPlace?: boolean;\n};\n\n/**\n * Options passed to compressor functions internally.\n * This is what compressors receive, not what users pass.\n */\nexport type MinifierOptions<\n    TOptions extends CompressorOptions = CompressorOptions,\n> = {\n    /**\n     * The full settings object.\n     */\n    settings: Settings<TOptions>;\n\n    /**\n     * The content to minify.\n     * For text-based formats (JS, CSS, HTML, SVG): string\n     * For binary formats (images): Buffer\n     * For multiple binary files: Buffer[]\n     */\n    content?: string | Buffer | Buffer[];\n\n    /**\n     * Index of current file when processing multiple files.\n     */\n    index?: number;\n};\n\n/**\n * Result returned after compression (used by CLI).\n */\nexport type Result = {\n    /**\n     * Label of the compressor used.\n     */\n    compressorLabel: string;\n\n    /**\n     * Size of minified content (formatted string, e.g., \"1.5 KB\").\n     */\n    size: string;\n\n    /**\n     * Gzipped size of minified content (formatted string).\n     */\n    sizeGzip: string;\n};\n\n/**\n * Type alias for user convenience.\n * @deprecated Use `Settings` instead. Will be removed in v11.\n */\nexport type MinifyOptions<\n    TOptions extends CompressorOptions = CompressorOptions,\n> = Settings<TOptions>;\n"],"mappings":";;;;;AAqNsC,KAxL1BE,gBAAAA,GAwL0B;;;;ECnMhB,MAAA,CAAA,EAAM,MAAA;;EAExB;;;EACiB,OAAA,EAAA,MAAA,GDiBCC,MCjBD;CAAO;;;;KDuBhBC,gBAAAA;;;;;;;;;;;;;;;;WAgBCD;;;;;;;;YAQCD;;;;;;KAOFG,iBAAAA,GAAoBC;;;;;;KAOpBC,4BAA4BF,oBAAoBA,4BACjDI,gBAAgBD,cAAcE,QAAQN;;;;KAKrCO,QAAAA;;;;;;;;;;;;;;;;;;KAmBAC,0BAA0BP,oBAAoBA;;;;cAI1CE,WAAWC;;;;;;;;;;;;;qBAaJL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6BTK;;;;;;;;;;;;;;;;;;SAkBHG;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BCF,iCACSJ,oBAAoBA;;;;YAK3BO,SAASJ;;;;;;;;qBAQAL,SAASA;;;;;;;;;;;;;;;AA7HhC;AAmBA;AAAsCE,iBCzFhB,MAAA,CDyFgBA;EAAAA,QAAAA;EAAAA;AAAAA,CAAAA,ECtFnC,eDsFmCA,CAAAA,ECtFjB,ODsFiBA,CCtFT,gBDsFSA,CAAAA"}