UNPKG

@wordpress/upload-media

Version:
75 lines 3.04 kB
/** * Internal dependencies */ import type { ImageDimensions } from './get-image-dimensions'; /** * Result of client-side media processing support detection. */ export interface FeatureDetectionResult { /** * Whether client-side media processing is supported. */ supported: boolean; /** * Reason why client-side media processing is not supported (if applicable). */ reason?: string; } /** * Detects whether the browser supports client-side media processing. * * Checks (in order of evaluation): * 1. WebAssembly support (required for wasm-vips). * 2. SharedArrayBuffer support (required for WASM threading; relies on * cross-origin isolation headers being set). * 3. Web Worker support (baseline requirement for the processing worker). * 4. Device memory: disables on devices reporting ≤ 2 GB of RAM. * 5. Hardware concurrency: disables on devices reporting fewer than 2 CPU cores. * 6. Network conditions: disables when the data saver flag is on, or when the * connection's effective type is `slow-2g` or `2g`. * 7. CSP compatibility for blob URL workers: a probe Worker is created from a * blob: URL to confirm the site's Content Security Policy permits inline * worker creation (`worker-src` must allow `blob:`). * * Results are cached after the first call. Use `clearFeatureDetectionCache()` to reset. * * @return Feature detection result with supported status and reason if not supported. */ export declare function detectClientSideMediaSupport(): FeatureDetectionResult; /** * Returns whether client-side media processing is supported. * * This is a convenience function that returns just the boolean result. * * @return Whether client-side media processing is supported. */ export declare function isClientSideMediaSupported(): boolean; /** * Detects whether the browser can decode HEIC images via canvas APIs. * * This checks for createImageBitmap and OffscreenCanvas support, * which are sufficient to convert HEIC to JPEG without VIPS/WASM. * Safari supports both APIs and can natively decode HEIC via * createImageBitmap(), leveraging macOS platform codecs. * * @return Whether HEIC canvas-based processing is supported. */ export declare function isHeicCanvasSupported(): boolean; /** * Clears the cached feature detection result. * * This is primarily useful for testing purposes. */ export declare function clearFeatureDetectionCache(): void; /** * Determines whether an image is too large to process client-side. * * Very large images, especially interlaced/progressive ones, can exceed the * 1 GiB wasm-vips memory cap and fail to process. Such images are better * handled by the server, which has no comparable per-image memory ceiling. * * @param dimensions The image's parsed dimensions and interlacing. * @return Whether the image's estimated memory use exceeds the client budget. */ export declare function exceedsClientProcessingMemory(dimensions: ImageDimensions): boolean; //# sourceMappingURL=feature-detection.d.ts.map