import { Options as HtmlMinifierOptions } from "html-minifier-terser"; import zlib from "zlib"; import { PluginOption } from "vite"; //#region src/compress.d.ts declare const compressors: { readonly "deflate-raw": (script: string) => NonSharedBuffer; readonly deflate: (script: string) => NonSharedBuffer; readonly gzip: (script: string) => NonSharedBuffer; readonly brotli: typeof zlib.brotliCompressSync; readonly zstd: (script: string) => NonSharedBuffer; }; declare const compressFormatAlias: { readonly deflateRaw: "deflate-raw"; readonly gz: "gzip"; readonly br: "brotli"; readonly brotliCompress: "brotli"; readonly zstandard: "zstd"; readonly zst: "zstd"; }; type Compressor = ((script: string) => (Uint8Array | Promise)); type CompressFormat = keyof typeof compressors | CompressionFormat; type CompressFormatAlias = keyof typeof compressFormatAlias; //#endregion //#region src/options.d.ts interface Options { /** * Rename index.html */ rename?: string; /** * Enable compress. * @default true */ enableCompress?: boolean; /** * Use Base128 to encode compressed script. * If false, use Base64. * https://www.npmjs.com/package/base128-ascii * * This option is only valid when the `enableCompress` option is set to true. * * @default true */ useBase128?: boolean; /** * Compress format. * * https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream/DecompressionStream * * This option is only valid when the `enableCompress` option is set to true. * * @type {"deflate-raw" | "deflate" | "gzip" | "brotli" | "zstd" | "deflateRaw" | "gz" | "br" | "brotliCompress" | "zstandard" | "zst"} * * @default "deflate-raw" */ compressFormat?: CompressFormat | CompressFormatAlias; /** * Custom compressor. * * This option is only valid when the `enableCompress` option is set to true. */ compressor?: Compressor; /** * https://github.com/terser/html-minifier-terser?tab=readme-ov-file#options-quick-reference * @default defaultHtmlMinifierTerserOptions */ htmlMinifierTerser?: HtmlMinifierOptions | boolean; /** * Try inline html used assets, if inlined or not used in JS. * @default true */ tryInlineHtmlAssets?: boolean; /** * Remove inlined asset files. * @default true */ removeInlinedAssetFiles?: boolean; /** * Try inline html favicon, if icon is in public dir. * @default true */ tryInlineHtmlPublicIcon?: boolean; /** * Remove inlined html favicon files. * @default true */ removeInlinedPublicIconFiles?: boolean; /** * Enable compress inlined html favicon. * * This option is only valid when the `enableCompress` option is set to true. * * ⚠️ Not works on Safari (See [#20](https://github.com/bddjr/vite-plugin-singlefile-compression/issues/20)) * * @default false */ enableCompressInlinedIcon?: boolean; /** * Use import.meta polyfill. * @default false */ useImportMetaPolyfill?: boolean; /** * Do not log. * @default false */ quiet?: boolean; } declare const defaultHtmlMinifierTerserOptions: HtmlMinifierOptions; //#endregion //#region src/index.d.ts declare function singleFileCompression(opt?: Options): PluginOption; //#endregion export { type CompressFormat, type CompressFormatAlias, type Compressor, type HtmlMinifierOptions, type Options, singleFileCompression as default, singleFileCompression, defaultHtmlMinifierTerserOptions };