A problem with a plan's options or source, returned by
ImagePipe.URL.validate/1, ImagePipe.URL.url/3, and
ImagePipe.URL.url_with_issues/3, and by
ImagePipe.validate/2 and ImagePipe.run/4 in image_pipe.
%ImagePipe.Plan.Spec.Issue{
reason: :inert_option,
locations: [{:group, 0, :fit}],
detail: {:requires, :resize},
severity: :warning
}severity is :error or :warning. An error fails the request. A warning
marks an option the request ignores because it has no effect, or a builder
mistake with one clear meaning, which the builder repairs. The checks
return warnings alone as {:ok, warnings}, and list them after the errors
in {:error, issues}. They report only options the plan sets itself, not
ones that a preset or the request defaults supply.
locations lists the options involved. {:group, index, key} is an option
of the group at the zero-based index, and {:request, key} is a
request-wide option. Keys are builder option names, and resize: options
appear under their own names, such as :width and :fit.
reason is one of:
:unknown_option- the name isn't a builder option.:invalid_value- the builder rejects the option's value.detailis the builder's message, such as"invalid value for :fit option: expected one of [:contain, :cover, :stretch, :auto], got: :fill".:repeated_option- a warning: the option was given twice in one builder call, or a key was repeated inside its list value, and the URL uses the last value.:empty_group- a warning: anImagePipe.URL.group/2call has no options, or only an emptypresets:orresize:list, and adds no group.locationsis empty.:redundant_unset- a warning:[:unset]alone or a repeated leading:unsetinformat_qualities:or an encoder option such asjpeg_options:. The builder writes a single:unset.:invalid_source,:too_many_options- returned only byImagePipe.URL.url_with_issues/3, for whatImagePipe.URL.url/3returns as{:error, :invalid_source}and{:error, :too_many_options}.locationsis empty.:inert_option- a warning: the option has no effect, such asfitwithout a width or height, orjpeg_optionswithformat: :webp, so the request ignores it.:mutually_exclusive_options- the options can't be combined, such asextendandextend_ratio.:invalid_offset- a pixel offset is too large to multiply by the group'sdpr.:unknown_preset- a named preset isn't defined.:pipeline_preset_with_group_options,:pipeline_preset_with_preset,:multiple_pipeline_presets- a preset that defines several groups is combined with options or presets it can't be combined with.:unknown_watermark,:watermark_source_disabled- the plan names a watermark the server doesn't define, or useswatermark_sourcewhere the server doesn't allow it.ImagePipe.validate/2andImagePipe.run/4return both.ImagePipe.URL.validate/1andImagePipe.URL.url/3return:unknown_watermarkwhen the URL configuration's:validate_againstlists the watermark names, and:watermark_source_disabledwhen it setsrequest_watermarks: false.
detail describes the failed constraint, such as {:requires, :resize}
or %{preset: "card"}, holds the builder's message for :invalid_value,
or is nil.