parseCronDuration function
Parses a Duration from a config value: a number of seconds, or a string
with a unit suffix: ms, s, m, h or d (e.g. 30s, 5m, 1h).
Returns def if value is null or invalid.
Implementation
Duration? parseCronDuration(Object? value, [Duration? def]) {
if (value == null) return def;
if (value is Duration) return value;
if (value is num) return Duration(milliseconds: (value * 1000).round());
var s = value.toString().trim().toLowerCase();
if (s.isEmpty) return def;
var m = RegExp(r'^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)?$').firstMatch(s);
if (m == null) return def;
var n = double.parse(m.group(1)!);
var unitMs = switch (m.group(2)) {
'ms' => 1,
'm' => 60 * 1000,
'h' => 60 * 60 * 1000,
'd' => 24 * 60 * 60 * 1000,
_ => 1000,
};
return Duration(milliseconds: (n * unitMs).round());
}