rehype-image-optim
Version:
rehype plugin to change the `src` (and `srcset`/`sizes`) of images to optimized versions from your image CDN/optimization provider
30 lines • 1.9 kB
TypeScript
import type { Root } from "hast";
import transformers from "./link-transformer/index.js";
type TransformerTypes = keyof typeof transformers;
type TransformerFunction<T = any> = (original: string, options: T) => string;
type OptimizeOptions<Provider extends TransformerTypes | TransformerFunction<any>> = Provider extends TransformerTypes ? (typeof transformers)[Provider] extends (originalLink: string, options: infer Options) => string ? Options : never : Provider extends TransformerFunction<infer T> ? T : never;
type Options<Provider extends TransformerTypes | TransformerFunction<any>, OptOptions extends OptimizeOptions<Provider>> = {
provider: Provider;
originValidation?: string | RegExp | ((arg0: string) => boolean);
/**
* Options for the image optimization. Used to replace the image `src` property.
*
* If set to undefined, will not replace the `src` property.
*
* Else, this value is passed to the transformer function.
*/
optimizeSrcOptions?: OptOptions;
/**
* Options for the image optimization. Used to replace the image `srcset` property.
* The `descriptor` is a string that describes the size of the image or density.
*
* @see https://developers.cloudflare.com/images/transform-images/make-responsive-images/
*/
srcsetOptionsList?: [OptOptions, string][];
sizesOptionsList?: string[] | string;
style?: string;
};
export default function rehypeImageOptimization<Provider extends TransformerTypes | TransformerFunction<any>, OptOptions extends OptimizeOptions<Provider>>(options: Options<Provider, OptOptions>): (tree: Root) => void;
export declare function defineOptions<Provider extends TransformerTypes | TransformerFunction<any>, OptOptions extends OptimizeOptions<Provider>>(options: Options<Provider, OptOptions>): Options<Provider, OptOptions>;
export {};
//# sourceMappingURL=index.d.ts.map