Kind: Subsystem must-guarantee (free tree)
Product should: Conversion engine PRD
How-it-works: conversion-engine.md
getFileConverter(file)is the only supported router entry for choosing a Converter.- All converters implement the abstract
Convertercontract (convert,optimize,cancel, progress/status). - Premium adds converters and image hooks only through documented
@wordpress/hooksfilters.
| Symbol / seam | Guarantee |
|---|---|
getFileConverter(file) |
Always returns a Converter; NullConverter for unknown/invalid |
requiresFileConversion(converters) |
True iff any entry is not NullConverter |
Converter abstract |
progress ∈ [0,1], status, errorMessage, convert(), optimize(), cancel() |
| Result object | At least { file }; optional metadata, reason, error, notice |
Filter cimo.getFileConverter |
(converter|null, file); Premium returns Video/Audio/SVG converters |
Filter cimo.imageConverter.mimeTypes |
MIME list for ImageConverter |
Filter cimo.convertImage.prepare |
Async prepare before image convert (HEIC) |
Filter cimo.imageConverter.optimize |
Async smart optimize path |
- Cross-realm File reconstruction when
instanceof Filefails but shape is file-like. - Prefer original file when output grows (unless forced), on unsupported encode, or on failure.
- Read runtime options from
window.cimoSettingsat construction time. - Free ImageConverter must not import premium modules.
Canvas math, mediabunny graphs, SVGO option bags, and resemblejs search loops are implementation behind the Converter/filter seams.