cronli5 0.8.3 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,65 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.6]
10
+
11
+ ### Changed
12
+
13
+ - **English: minute-of-hour positions render as plain numbers, not ":NN".** A
14
+ blind Claude Sonnet panel unanimously found the colon notation ("during minute
15
+ :30", "minutes :04, :07, …") reads as a seconds value or a clock fragment — the
16
+ word "minute(s)" already supplies the unit. English now writes plain, unpadded
17
+ integers: "during minute 30 of every hour", "during minutes 4, 7, 8, … of every
18
+ hour". Clock times (h:mm, e.g. "9:30 a.m.") are unchanged; the other six
19
+ languages were already plain.
20
+
21
+ ## [0.8.5]
22
+
23
+ Blind per-language Claude Sonnet panels reviewed the seconds-within-minute
24
+ confinement forms (the non-English mirrors added in 0.8.3–0.8.4).
25
+
26
+ ### Fixed
27
+
28
+ - **French & Portuguese: a minute step inside the seconds confinement no longer
29
+ reads as a single minute.** It rendered a stepped minute with an ordinal — fr
30
+ "à la sixième minute", pt "no sexto minuto" — which a native reads as one
31
+ minute (the 10th), not every sixth. It now uses the same cardinal cadence the
32
+ standalone already used: fr "…toutes les six minutes à partir de la minute 4…",
33
+ pt "…a cada seis minutos a partir do minuto 4…".
34
+
35
+ ### Changed
36
+
37
+ - **Chinese: a clean seconds step is no longer spelled out.** Under a minute
38
+ confinement, `0/6` now reads "每6秒" (mirroring "每6分钟") instead of listing
39
+ "第0、6、…、54秒".
40
+ - **Spanish & German: dropped the comma** before the locative minute phrase in
41
+ the seconds confinement ("cada segundo en los minutos…", "jede Sekunde in den
42
+ Minuten…"). The locative-vs-genitive preposition split is correct grammar and
43
+ is unchanged. Finnish is unchanged pending a dedicated redesign (see backlog).
44
+
45
+ ## [0.8.4]
46
+
47
+ ### Fixed
48
+
49
+ - **Seconds combined with a minute restriction now confine instead of
50
+ juxtaposing.** A seconds clause beside a minute restriction used to be joined
51
+ by a comma — which reads as two independent schedules — in two places:
52
+ - **English: a seconds *step*** (`0/6`, `*/6`, `5/6`) juxtaposed ("every six
53
+ seconds, every six minutes from four minutes past the hour") while the
54
+ seconds wildcard already confined. English now confines any seconds step:
55
+ "every six seconds during every sixth minute from four minutes past the
56
+ hour" — matching the other six languages.
57
+ - **All languages: a seconds *list, range, or single value*** under a minute
58
+ restriction (`5,10,15 4/6`, `30 4/6`, `0-30 4/6`, `5,10,15 0,15,30`)
59
+ juxtaposed; a blind panel of Claude Sonnet instances confirmed the comma
60
+ reads as two schedules. Each language now confines it — e.g. English "at 5,
61
+ 10, and 15 seconds past the minute during every sixth minute from four
62
+ minutes past the hour".
63
+
64
+ English and Chinese are now uniform across the whole seconds × minute surface
65
+ (wildcard, step, offset-step, list, range, single); a remaining es/de/fi/fr/pt
66
+ connector nuance under a minute list is tracked for native review.
67
+
9
68
  ## [0.8.3]
10
69
 
11
70
  ### Fixed
package/cronli5.min.js CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";(()=>{var Cr={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},xr={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12},N={second:{cyclic:!0,max:59,min:0,top:59},minute:{cyclic:!0,max:59,min:0,top:59},hour:{cyclic:!0,max:23,min:0,top:23},date:{cyclic:!0,max:31,min:1,top:31},month:{cyclic:!0,max:12,min:1,numbers:xr,top:12},weekday:{aliases:{L:"6"},cyclic:!0,max:7,min:0,numbers:Cr,top:6},year:{max:9999,min:1970}},M=["second","minute","hour","date","month","weekday","year"],sn={"@annually":"0 0 1 1 *","@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *"},U=6;function l(n,r){return(""+n).indexOf(r)!==-1}function Z(n){return Array.from(new Set(n))}function H(n){return/^\d+$/.test(n)}function d(n,r){return H(n)?+n:r[n.toUpperCase()]}function Hn(n){return M.forEach(function(e){Pr(n[e],N[e],e)}),n}function Pr(n,r,e){typeof n!="string"&&typeof n!="number"&&Wn(n,e);let t=""+n;t!=="*"&&(e==="date"&&q(t)||e==="weekday"&&Q(t,r)||t.split(",").forEach(function(o){Tr(o,r)||Wn(o,e)}))}function q(n){if(n==="L"||n==="LW"||n==="WL")return!0;let r=/^L-(\d{1,2})$/.exec(n);if(r)return+r[1]>=1&&+r[1]<=30;let e=/^(\d{1,2})W$|^W(\d{1,2})$/.exec(n);if(e){let t=+(e[1]||e[2]);return t>=1&&t<=31}return!1}function Q(n,r){if(/L$/.test(n))return L(n.slice(0,-1),r);let e=n.split("#");return e.length===2?L(e[0],r)&&/^[1-5]$/.test(e[1]):!1}function Tr(n,r){return l(n,"/")?Mr(n,r):l(n,"-")?Ln(n,r):L(n,r)}function Mr(n,r){let e=n.split("/");return e.length!==2||!H(e[1])||+e[1]<1?!1:e[0]==="*"||L(e[0],r)||Ln(e[0],r,!0)}function Ln(n,r,e){let t=n.split("-");return t.length!==2||!L(t[0],r)||!L(t[1],r)?!1:r.cyclic&&!e?!0:d(t[0],r.numbers)<=d(t[1],r.numbers)}function L(n,r){return n==="*"?!1:H(n)?+n>=r.min&&+n<=r.max:r.numbers?n.toUpperCase()in r.numbers:!1}function Wn(n,r){throw new Error('`cronli5` was passed an invalid field value "'+n+'" for the '+r+" field.")}var Fr={hour:24,minute:60,second:60};function jn(n){M.forEach(function(e){let t=N[e].aliases,i=t&&t[""+n[e]];i&&(n[e]=i)})}function Dn(n){return M.forEach(function(e){let t=""+n[e];if(e==="date"&&q(t)||e==="weekday"&&Q(t,N[e])){n[e]=t;return}n[e]=Wr(t,e,N[e])}),n}function Wr(n,r,e){let t=""+n;if(t==="*")return t;let i=Fr[r],o=t.split(",").map(function(s){return Hr(Rn(Dr(Rr(Ar(jr(Er(s,e),e),e),e),e,i),e),e)}).join(",").split(",");return o.indexOf("*")!==-1?"*":Z(o).sort(function(s,c){return En(s,e)-En(c,e)}).join(",")}function Hr(n,r){if(!r.numbers)return n;let e=n.split("/"),t=e[0].split("-").map(function(o){return Lr(o,r)}).join("-");return e.length===2?t+"/"+e[1]:t}function Lr(n,r){if(n==="*")return n;let e=d(n,r.numbers);return""+(e>r.top?r.min:e)}function Er(n,r){let e=n.split("/");if(!r.cyclic||e.length!==2||+e[1]!=1)return n;let t=e[0];return l(t,"-")?t:t==="*"||d(t,r.numbers)===r.min?"*":t+"-"+r.top}function jr(n,r){let e=n.split("/");if(!r.cyclic||typeof r.top!="number"||e.length!==2||l(e[0],"-"))return n;let t=e[0];return(t==="*"?r.min:d(t,r.numbers))+ +e[1]<=r.top?n:t==="*"?""+r.min:t}function Dr(n,r,e){let t=n.split("/");if(typeof e!="number"||t.length!==2||l(t[0],"-"))return n;let i=+t[1],o=t[0]==="*"?r.min:d(t[0]);if(e%i===0&&o<i)return n;let u=[];for(let s=o;s<=r.top;s+=i)u.push(s);return u.join(",")}function Rr(n,r){let e=n.split("/");return e.length!==2||!l(e[0],"-")?n:Rn(e[0],r)==="*"?"*/"+e[1]:n}function Rn(n,r){if(typeof r.top!="number"||l(n,"/")||!l(n,"-"))return n;let e=n.split("-"),t=d(e[0],r.numbers),i=d(e[1],r.numbers);if(t>i)return n;let o=r.top,u={};for(let s=t;s<=i;s+=1)u[s>o?r.min:s]=!0;for(let s=r.min;s<=o;s+=1)if(!u[s])return n;return"*"}function Ar(n,r){let e=n.split("/")[0];if(!l(e,"-"))return n;let t=e.split("-");return d(t[0],r.numbers)!==d(t[1],r.numbers)?n:t[0]}function En(n,r){let e=n.split("/")[0].split("-")[0];return e==="*"?r.min:d(e,r.numbers)}var Ur="`?` is a Quartz token \u2014 pass { quartz: true } to enable Quartz semantics.";function Un(n,r){if(!r){An(n.date),An(n.weekday);return}if(""+n.date=="?"&&(n.date="*"),""+n.weekday=="?"){n.weekday="*";return}n.weekday=qr(""+n.weekday)}function An(n){if(""+n=="?")throw new Error(Ur)}function qr(n){return n==="*"?n:n.split(",").map(Qr).join(",")}function Qr(n){let r=/(#\d+|L)$/.exec(n),e=r?r[0]:"",i=(e?n.slice(0,-e.length):n).split("/"),o=i[0].split("-").map(Vr).join("-");return(i.length===2?o+"/"+i[1]:o)+e}function Vr(n){if(!H(n))return n;if(n==="0")throw new Error('`cronli5` was passed an invalid Quartz day-of-week value "0"; Quartz numbers weekdays 1 (Sunday) through 7 (Saturday).');return""+(+n-1)}function qn(n,r){let e=n instanceof Array;if(n===null||typeof n>"u"||n===""||e&&n.length===0)throw new Error("`cronli5` expects a non-empty cron pattern as the first argument.");if(e)return Qn(n,r);if(typeof n=="object")return Ir(n);if(typeof n=="string")return $r(n,r);throw new Error("`cronli5` was passed an unexpected type.")}function Qn(n,r){if(n.length>7)throw new Error("`cronli5` was passed a cron pattern with more than seven fields.");return!r.seconds&&n.length<(r.years?7:6)&&n.unshift("0"),{second:n[0]||"0",minute:n[1]||"*",hour:n[2]||"*",date:n[3]||"*",month:n[4]||"*",weekday:n[5]||"*",year:n[6]||"*"}}function Ir(n){if(!n.second&&!n.minute&&!n.hour)throw new Error("`cronli5` expects that any object being interpreted as a cron pattern have at least one of the following properties: `second`, `minute`, or `hour`");let r=typeof n.second<"u",e=typeof n.minute<"u",t=r?"*":"0",i=r||e?"*":"0";return{second:F(n.second,"0"),minute:F(n.minute,t),hour:F(n.hour,i),date:F(n.date,"*"),month:F(n.month,"*"),weekday:F(n.weekday,"*"),year:F(n.year,"*")}}function F(n,r){return typeof n>"u"?r:n}function $r(n,r){let e=Jr(n).split(/\s+/);return Qn(e,r)}function Jr(n){let r=n.trim();if(r.charAt(0)!=="@")return n;let e=r.toLowerCase();if(Object.hasOwn(sn,e))return sn[e];throw new Error("`cronli5` does not recognize the macro `"+r+"`.")}function Vn(n){return n===0?7:n}function In(n){let r=n.flatMap(function(i){return i.kind==="step"?i.fires.map(function(u){return{kind:"single",value:""+u}}):[i]});function e(t){return t.kind==="range"?Vn(+t.bounds[0]):Vn(+t.value)}return r.map(function(i,o){return[i,o]}).sort(function(i,o){return e(i[0])-e(o[0])||i[1]-o[1]}).map(function(i){return i[0]})}function B(n){if(n.length<5)return null;let r=n[1]-n[0];if(r<2)return null;for(let e=2;e<n.length;e+=1)if(n[e]-n[e-1]!==r)return null;return{start:n[0],interval:r,last:n[n.length-1]}}function f(n,r){return n.analyses.segments[r]??[]}function k(n,r){return f(n,r)[0]}function V(n){let r=[];for(let e of n){if(e.kind!=="single")return null;r.push(+e.value)}return r}function an(n){return n.start<n.interval&&24%n.interval===0}function Kr(n,r,e){return e-1-(e-1-n)%r}function X(n,r){let{start:e,interval:t,last:i,cycle:o}=n,u=o%t===0&&i===Kr(e,t,o);return e===0&&u?r.bare():e<t&&u?r.offset():r.bounded()}function $n(n){if(n.length<2)return null;let r=n[1]-n[0];if(r<2)return null;for(let e=2;e<n.length;e+=1)if(n[e]-n[e-1]!==r)return null;return n[0]!==0&&n.length<5?null:{interval:r,last:n[n.length-1],start:n[0]}}function Jn(n){return n!=="*"&&!l(n,",")&&!l(n,"-")&&!l(n,"/")}function fn(n){return l(n,"-")&&!l(n,",")&&!l(n,"/")}function Yr(n){return l(n,"/")&&!l(n,",")}function ln(n){return n!=="*"&&!l(n,"-")&&!l(n,"/")}function mn(n){return n!=="*"&&!fn(n)&&!Yr(n)}function E(n){return n.indexOf("/")!==-1&&n.indexOf("-")===-1&&n.indexOf(",")===-1}function I(n,r,e){let t=[],i=n;for(;i<=e;)t.push(i),i+=r;return t}function Kn(n,r,e,t){let i=n.split("/"),o=+i[1];if(l(i[0],"-")){let s=i[0].split("-");return I(d(s[0],t),o,d(s[1],t))}let u=i[0]==="*"?r:d(i[0],t);return I(u,o,e)}function dn(n,r,e){let t=[];return n.split(",").forEach(function(o){if(l(o,"/"))t.push(...Kn(o,r,e));else if(l(o,"-")){let u=o.split("-");+u[0]<=+u[1]?t.push(...I(+u[0],1,+u[1])):(t.push(...I(+u[0],1,e)),t.push(...I(r,1,+u[1])))}else t.push(+o)}),Z(t)}function Gr(n){return ln(n)?n.split(",").map(Number):[0]}function Zr(n){if(n==="*")return[0,59];if(fn(n)){let r=n.split("-");if(+r[0]<=+r[1])return[+r[0],+r[1]]}return null}function Br(n){return n==="*"?59:Math.max(...dn(n,0,59))}function Xr(n){if(Jn(n)&&n!=="0")return+n}function _r(n,r){return n==="*"?"wildcard":r==="date"&&q(n)||r==="weekday"&&Q(n,N.weekday)?"quartz":l(n,",")?"list":l(n,"/")?"step":l(n,"-")?"range":"single"}function ne(n,r,e){return r==="wildcard"||r==="quartz"?null:n.split(",").map(function(i){if(l(i,"/")){let o=i.split("/");return{fires:Kn(i,e.min,e.top,e.numbers),interval:+o[1],kind:"step",startToken:o[0]}}return l(i,"-")?{bounds:i.split("-"),kind:"range"}:{kind:"single",value:i}})}function Yn(n){let r={},e={};M.forEach(function(u){r[u]=_r(n[u],u),e[u]=ne(n[u],r[u],N[u])});let i={analyses:{clockSecond:Xr(n.second),lastMinuteFire:Br(n.minute),minuteSpan:Zr(n.minute),segments:e},pattern:n,shapes:r};return{...i,plan:re(i)}}function re(n){let{analyses:r,pattern:e,shapes:t}=n;if(e.second!=="0"){let i=ee(e,t,r);if(i)return i}return Gn(e,t,r)||Zn(e,t,r)}function ee(n,r,e){let t=te(n,r);return t||(n.hour==="*"&&r.minute==="single"&&n.second!=="*"?{kind:"secondsWithinMinute",singleSecond:r.second==="single"}:r.second==="single"&&ln(n.minute)&&mn(n.hour)?null:{kind:"composeSeconds",rest:Gn(n,r,e,!0)||Zn(n,r,e,!0)})}function te(n,r){return n.minute!=="*"||n.hour!=="*"?null:n.second==="*"?{kind:"everySecond"}:r.second==="single"?{kind:"secondPastMinute"}:{kind:"standaloneSeconds"}}function Gn(n,r,e,t=!1){if(r.minute==="step")return{hours:oe(n,r,e),kind:"minuteFrequency"};if(r.hour==="single"&&e.minuteSpan)return{hour:+n.hour,kind:"minuteSpanInHour",span:e.minuteSpan};let i=ue(n,r);if(i)return i;let o=ie(n,r);if(o)return o;if(n.hour==="*")return se(n,r,t)}function cn(n){let[r,e]=n.split("/"),t=r==="*"?0:+r;return r.indexOf("-")===-1&&24%+e===0&&t<+e}function ie(n,r){return r.hour!=="step"?null:n.minute==="*"?cn(n.hour)?{form:"wildcard",kind:"minuteSpanAcrossHourStep"}:{form:"wildcard",kind:"minutesAcrossHours",times:$(n.hour)}:r.minute==="range"?{form:"range",kind:"minuteSpanAcrossHourStep"}:r.minute==="list"&&cn(n.hour)?{form:"list",kind:"minuteSpanAcrossHourStep"}:null}function oe(n,r,e){if(r.hour==="list")return{kind:"during",times:$(n.hour)};if(r.hour==="range"){let t=n.hour.split("-");return{from:+t[0],kind:"window",last:e.lastMinuteFire,to:+t[1]}}return r.hour==="single"?{from:+n.hour,kind:"window",last:e.lastMinuteFire,to:+n.hour}:r.hour==="step"?cn(n.hour)?{kind:"step"}:{kind:"during",times:$(n.hour)}:{kind:"none"}}function ue(n,r){return mn(n.hour)?n.minute==="*"?{form:"wildcard",kind:"minutesAcrossHours",times:$(n.hour)}:r.minute==="range"||r.minute==="list"&&l(n.minute,"-")&&!l(n.minute,"/")?{form:r.minute==="range"?"range":"list",kind:"minutesAcrossHours",times:$(n.hour)}:null:null}function se(n,r,e){if(r.minute==="range")return{kind:"rangeOfMinutes"};if(r.minute==="list")return{kind:"multipleMinutes"};if(n.minute==="*")return{kind:"everyMinute"};if(n.minute!=="0"||e)return{kind:"singleMinute"}}function Zn(n,r,e,t=!1){let i=t&&n.minute==="0";return r.hour==="range"&&!i?ae(n,r,e):r.hour==="step"&&n.minute==="0"&&!t?{kind:"hourStep"}:n.hour==="*"&&!i?{kind:"everyHour"}:fe(n,e,i)}function ae(n,r,e){let t=n.hour.split("-"),i="lead";return n.minute==="*"?i="wildcard":r.minute==="range"&&(i="range"),{boundMinute:r.minute==="range"||r.minute==="list"?null:e.lastMinuteFire,from:+t[0],kind:"hourRange",last:e.lastMinuteFire,minuteForm:i,to:+t[1]}}function fe(n,r,e=!1){let t=dn(n.hour,0,23),i=Gr(n.minute);if(!e&&t.length*i.length>U)return{fold:i.length===1,kind:"compactClockTimes",minute:i[0]};let o=[];return t.forEach(function(s){i.forEach(function(O){o.push({hour:s,minute:O,second:r.clockSecond})})}),{kind:"clockTimes",times:o}}function $(n){let r=dn(n,0,23);return r.length<=U?{fires:r,kind:"fires"}:{kind:"segments"}}function Bn(n,r){let e=qn(n,r);return Un(e,r.quartz),jn(e),Hn(e),Dn(e)}function v(n){return n=""+n,n.length<2?"0"+n:n}function Xn(n,r,e){return e.short?n:r[n]||n}function gn(n,{sep:r,pad:e,lean:t}){let i=e?v(n.hour):""+n.hour;return t&&!n.minute&&!n.second?i:i+r+v(n.minute)+(n.second?r+v(n.second):"")}var hn={gb:{am:"am",closeUp:!0,dayFirst:!0,midday:"midday",midnight:"midnight",ordinals:!1,pm:"pm",sep:".",serialComma:!1,through:" to "},us:{am:"a.m.",closeUp:!1,dayFirst:!1,midday:"noon",midnight:"midnight",ordinals:!1,pm:"p.m.",sep:":",serialComma:!0,through:" through ",untilWindow:!0},house:{am:"AM",closeUp:!1,dayFirst:!1,midday:"noon",midnight:"midnight",ordinals:!0,pm:"PM",sep:":",serialComma:!0,through:" - "}};function _n(n){return typeof n=="object"&&n!==null?{...hn.us,untilWindow:!1,...n}:hn[n==="uk"?"gb":n]||hn.us}var le=["zero","one","two","three","four","five","six","seven","eight","nine","ten"],pn=["th","st","nd","rd"],me=[null,["January","Jan"],["February","Feb"],["March","Mar"],["April","Apr"],["May","May"],["June","Jun"],["July","Jul"],["August","Aug"],["September","Sep"],["October","Oct"],["November","Nov"],["December","Dec"]],C=[["Sunday","Sun"],["Monday","Mon"],["Tuesday","Tue"],["Wednesday","Wed"],["Thursday","Thu"],["Friday","Fri"],["Saturday","Sat"]],ce={SUN:C[0],MON:C[1],TUE:C[2],WED:C[3],THU:C[4],FRI:C[5],SAT:C[6]},de=[null,"first","second","third","fourth","fifth"];function ge(n){return n=n||{},{ampm:typeof n.ampm=="boolean"?n.ampm:!0,lenient:!!n.lenient,quartz:!!n.quartz,seconds:!!n.seconds,short:!!n.short,style:_n(n.dialect),years:!!n.years}}function he(n,r){let e=Se(n,r);if(e!==null)return rr(e,n,r);let t=nt(n,r)??er(n,n.plan,r),i=G(n,r)?ct(n,r):"";return rr(i+t,n,r)}function er(n,r,e){let t=rt[r.kind];return t(n,r,e)}function bn(n){return n==="step"||n==="range"||n==="list"}function pe(n,r){if(!r.style.untilWindow||r.short||n.plan.kind!=="composeSeconds"||n.plan.rest.kind==="clockTimes"||G(n,r))return!1;let{shapes:e}=n;return bn(e.second)&&bn(e.minute)&&bn(e.hour)}function be(n,r){let e=Nn(n);if(e)return _(e,r);if(n.shapes.hour==="range"){let t=f(n,"hour").find(function(o){return o.kind==="range"});return A({continuous:!1,from:+t.bounds[0],throughMinute:0,to:+t.bounds[1]},r)}return"during the "+R(n,{minute:0,second:null},!1,r)+" hours"}function ye(n,r){return n.shapes.minute==="step"?nn(k(n,"minute"),"minute","hour",r):n.shapes.minute==="range"?K(n.pattern.minute,r):W(f(n,"minute"),"minute","hour",r)??w(T(f(n,"minute"),r),"minute","hour",r)}function Se(n,r){if(!pe(n,r))return null;let e=be(n,r),t=ye(n,r),i=P(n,"minute",r),o=e+", "+t+", and within each of those minutes, "+i,u=a(n,r).trim();return u?u+", "+o:o}function ke(n,r,e){return"every second"+a(n,e)}function Oe(n,r,e){return D(n,e)+a(n,e)}function Ne(n,r,e){let t=n.pattern.second;return g(t,e)+" "+y(t,"second")+" past the minute, every minute"+a(n,e)}function ze(n,r,e){let t=n.pattern.minute,i=g(t,e),o=y(t,"minute");if(r.singleSecond){let u=n.pattern.second;return i+" "+o+" and "+g(u,e)+" "+y(u,"second")+" past the hour, every hour"+a(n,e)}return D(n,e)+", "+i+" "+o+" past the hour, every hour"+a(n,e)}function we(n,r,e){if(!(r.rest.kind==="clockTimes"||r.rest.kind==="compactClockTimes")||n.shapes.minute!=="single")return null;let i=+n.pattern.minute;return wn(n,i,e)??vn(n,i,e)}function ve(n,r,e){return+r.times[0].minute==0&&n.shapes.minute==="single"?D(n,e)+" for one minute at "+xe(n,r,e):D(n,e)+" of "+Pe(n,r,e)}function Ce(n,r,e){let t=we(n,r,e);return t!==null?t:r.rest.kind==="clockTimes"&&(n.shapes.second==="wildcard"||n.shapes.second==="step")?ve(n,r.rest,e):n.shapes.second==="wildcard"&&r.rest.kind==="minuteFrequency"&&r.rest.hours.kind==="none"&&n.pattern.minute==="*/2"?"every second of every other minute"+a(n,e):(r.rest.kind==="compactClockTimes"&&n.analyses.clockSecond?"":D(n,e)+", ")+er(n,r.rest,e)}function xe(n,r,e){let t=r.times.map(function(u){return m({hour:u.hour,minute:0},e)}),i=en(n,Pn,e);return p(t,e)+(i&&", "+i)}function Pe(n,r,e){let t=r.times.map(function(u){return m({hour:u.hour,minute:u.minute,second:u.second,explicit:!0},e)}),i=en(n,Pn,e);return p(t,e)+(i&&", "+i)}function D(n,r){return P(n,"minute",r)}function P(n,r,e){let t=n.pattern.second,i=n.shapes.second;if(t==="*")return"every second";if(i==="step")return nn(k(n,"second"),"second",r,e);if(i==="range"){let o=t.split("-"),u=rn();return"every second from "+u(o[0])+h(e)+u(o[1])+" past the "+r}return i==="single"?"at "+g(t,e)+" "+y(t,"second")+" past the "+r:W(f(n,"second"),"second",r,e)??w(T(f(n,"second"),e),"second",r,e)}function Te(n,r,e){return"every minute"+a(n,e)}function Me(n,r,e){let t=n.pattern.minute;return g(t,e)+" "+y(t,"minute")+" past the hour, every hour"+a(n,e)}function Fe(n,r,e){return K(n.pattern.minute,e)+a(n,e)}function We(n,r,e){return(W(f(n,"minute"),"minute","hour",e)??w(T(f(n,"minute"),e),"minute","hour",e))+a(n,e)}function He(n,r,e){let t=nn(k(n,"minute"),"minute","hour",e);if(r.hours.kind==="during"){let i=Y(n,e);t+=i?", "+i:" during the "+J(n,r.hours.times,!1,e)+" hours"}else if(r.hours.kind==="window")t+=" "+A({continuous:!1,from:r.hours.from,throughMinute:r.hours.last,to:r.hours.to},e);else if(r.hours.kind==="step"){let i=Cn(t);t=i+(i===t?" ":", ")+On(k(n,"hour"),e)}return t+a(n,e)}function Le(n,r,e){return n.pattern.minute==="*"?"every minute of the "+m({hour:r.hour,minute:0},e)+" hour"+a(n,e):"every minute from "+m({hour:r.hour,minute:r.span[0]},e)+h(e)+m({hour:r.hour,minute:r.span[1]},e)+a(n,e)}function Ee(n,r,e){let t=Y(n,e);if(r.form==="wildcard")return t!==null?"every minute, "+t+a(n,e):"every minute during the "+J(n,r.times,!1,e)+" hours"+a(n,e);if(r.form==="range"){let u=K(n.pattern.minute,e);return t!==null?u+", "+t+a(n,e):ut(r.times)?u+", at "+J(n,r.times,!0,e)+a(n,e):u+" during the "+J(n,r.times,!1,e)+" hours"+a(n,e)}let i=W(f(n,"minute"),"minute","hour",e)??w(T(f(n,"minute"),e),"minute","hour",e);if(t!==null)return i+", "+t+a(n,e);let o=J(n,r.times,!0,e);return i+", at "+o+a(n,e)}var tr={2:"other",3:"third",4:"fourth",6:"sixth",8:"eighth",12:"twelfth"},je={2:"other",3:"third",4:"fourth",5:"fifth",6:"sixth",7:"seventh",8:"eighth",9:"ninth",10:"tenth",11:"eleventh",12:"twelfth",15:"fifteenth",20:"twentieth",30:"thirtieth"};function De(n){return je[n]??b(n)}function Re(n,r){let e=" during every "+De(n.interval)+" minute";return X({...n,cycle:60},{bare:()=>e,offset:()=>e+" from "+g(n.start,r)+" "+y(n.start,"minute")+" past the hour",bounded:()=>{let t=rn();return e+" from "+t(n.start)+h(r)+t(n.last)+" "+y(n.last,"minute")+" past the hour"}})}function ir(n){if(n.shapes.minute==="step"){let e=k(n,"minute"),t=e.startToken==="*"?0:+e.startToken;return{interval:e.interval,last:e.fires[e.fires.length-1],start:t}}let r=V(f(n,"minute"));return r&&B(r)}function On(n,r){let e="during every "+tr[n.interval]+" hour",t=n.startToken==="*"?0:+n.startToken;return t===0?e:e+" starting at "+m({hour:t,minute:0},r)}function Ae(n,r,e){let t=k(n,"hour");if(r.form==="wildcard")return"every minute "+On(t,e)+a(n,e);let i=Cn(r.form==="list"?W(f(n,"minute"),"minute","hour",e)??w(T(f(n,"minute"),e),"minute","hour",e):K(n.pattern.minute,e)),o=Y(n,e);return i+", "+(o??lr(t,e))+a(n,e)}function K(n,r){let e=n.split("-"),t=rn();return"every minute from "+t(e[0])+h(r)+t(e[1])+" past the hour"}function Ue(n,r,e){return"every hour"+a(n,e)}function qe(n,r,e){let t=Ie(Ve(r),e);return r.minuteForm==="wildcard"?"every minute "+t+a(n,e):r.minuteForm==="range"?K(n.pattern.minute,e)+", "+t+a(n,e):or(n,e)+" "+t+a(n,e)}function or(n,r){return n.pattern.minute==="0"?"every hour":W(f(n,"minute"),"minute","hour",r)??w(T(f(n,"minute"),r),"minute","hour",r)}function Qe(n,r,e){let t=Y(n,e);return t!==null?t+a(n,e):lr(k(n,"hour"),e)+a(n,e)}function Ve(n){let r=n.minuteForm==="wildcard",e=r?n.boundMinute??0:0;return{from:n.from,closeMinute:e,to:n.to,continuous:r}}function A(n,r){let{from:e,to:t,throughMinute:i,continuous:o}=n,u="from "+m({hour:e,minute:0},r);return r.style.untilWindow&&!r.short&&e!==t?o?u+" until "+m({hour:(t+1)%24,minute:0},r):u+h(r)+m({hour:t,minute:0},r):u+h(r)+m({hour:t,minute:i},r)}function Ie(n,r){return A({continuous:n.continuous,from:n.from,throughMinute:n.closeMinute,to:n.to},r)}function $e(n,r,e){if(n.shapes.minute==="single"){let o=+n.pattern.minute,u=wn(n,o,e)??vn(n,o,e);if(u!==null)return u}let t=xn(r.times),i=r.times.map(function(u){return m({hour:u.hour,minute:u.minute,second:u.second,plain:t},e)});return gr(n,e)+"at "+p(i,e)+ur(n,e)}function ur(n,r){return G(n,r)?pr(n,r):""}function Je(n,r,e){if(r.fold){let u=wn(n,+r.minute,e)??vn(n,+r.minute,e);if(u!==null)return u;if(f(n,"hour").some(function(S){return S.kind==="range"})&&!n.analyses.clockSecond)return Ke(n,r,e)+a(n,e);let c={minute:r.minute,second:n.analyses.clockSecond};return gr(n,e)+"at "+R(n,c,!0,e)+ur(n,e)}let t=W(f(n,"minute"),"minute","hour",e)??w(T(f(n,"minute"),e),"minute","hour",e),i=Y(n,e),o=i?Cn(t)+", "+i+a(n,e):t+", at "+R(n,{minute:0,second:null},!0,e)+a(n,e);return n.analyses.clockSecond?D(n,e)+", "+o:o}function Ke(n,r,e){let t=r.minute,i=[],o=sr(n).map(function(c){return m({hour:c,minute:t},e)});return f(n,"hour").forEach(function(c){c.kind==="range"&&i.push(A({continuous:!1,from:+c.bounds[0],throughMinute:t,to:+c.bounds[1]},e))}),or(n,e)+" "+p(i,e)+ar(o,e)}function sr(n){let r=[];return f(n,"hour").forEach(function(t){t.kind==="step"?r.push(...t.fires):t.kind!=="range"&&r.push(+t.value)}),r}function ar(n,r){return n.length?" and at "+p(n,r):""}function j(n){return n==="*"||n.startsWith("*/")&&n.indexOf("-")===-1}function Ye(n,r){let{second:e,minute:t}=n.pattern;return j(e)?{secondLead:!0,text:P(n,"minute",r)}:e==="0"&&j(t)?{secondLead:!1,text:t==="*"?"every minute":nn(k(n,"minute"),"minute","hour",r)}:null}function Ge(n,r){let e=n.pattern.minute;if(e==="*")return"";if(e==="*/2")return" of every other minute";let t=ir(n);if(t)return Re(t,r);let i=f(n,"minute");if(n.shapes.minute==="single")return" during minute :"+v(e);if(n.shapes.minute==="range"){let u=e.split("-");return" during minutes :"+v(u[0])+h(r)+":"+v(u[1])}let o=T(i,r).map(function(s){return":"+v(s)});return" during minutes "+p(o,r)}function Ze(n,r){let e=n.pattern.hour;if(e==="*")return n.pattern.minute!=="*"&&!j(n.pattern.minute)&&!ir(n)?" of every hour":"";if(j(e))return e==="*/2"?" of every other hour":"";if(n.shapes.hour==="single"){let t=+e;return n.shapes.minute==="step"?" from "+m({hour:t,minute:0},r)+" until "+m({hour:(t+1)%24,minute:0},r):n.pattern.minute!=="*"&&!j(n.pattern.minute)?" at "+m({hour:t,minute:0},r):" of the "+m({hour:t,minute:0},r)+" hour"}if(n.shapes.hour==="range"){let t=e.split("-");return" "+A({continuous:n.pattern.minute==="*",from:+t[0],throughMinute:0,to:+t[1]},r)}return" during the "+R(n,{minute:0,second:null},!1,r)+" hours"}function Be(n){if(n.shapes.hour!=="step")return!0;let r=k(n,"hour");return n.pattern.hour==="*/2"||r.startToken.indexOf("-")!==-1}function Xe(n){if(n.shapes.minute!=="list")return!1;let r=V(f(n,"minute"));return r!==null&&B(r)!==null}function _e(n,r){let{minute:e,hour:t}=n.pattern,i=j(e)&&e!=="*";return Be(n)?r.secondLead?i?e==="*/2"?n.shapes.hour!=="range":n.pattern.hour==="*":Xe(n)?n.pattern.hour==="*":!(n.shapes.minute==="list"&&n.shapes.hour==="list"):t==="*/2"?!0:n.shapes.hour==="single"&&e==="*/2":!1}function nt(n,r){if(!r.style.untilWindow||r.short||n.pattern.minute==="*"&&n.pattern.hour==="*")return null;let e=Ye(n,r);if(!e||!_e(n,e))return null;let t=e.secondLead?Ge(n,r):"";return e.text+t+Ze(n,r)+a(n,r)}var rt={clockTimes:$e,compactClockTimes:Je,composeSeconds:Ce,everyHour:Ue,everyMinute:Te,everySecond:ke,hourRange:qe,hourStep:Qe,minuteFrequency:He,minuteSpanAcrossHourStep:Ae,minuteSpanInHour:Le,minutesAcrossHours:Ee,multipleMinutes:We,rangeOfMinutes:Fe,secondPastMinute:Ne,secondsWithinMinute:ze,singleMinute:Me,standaloneSeconds:Oe};function fr(n,r){let{interval:e,start:t,last:i,cycle:o,unit:u,anchor:s}=n,c="every "+g(e,r)+" "+u+"s";return X({start:t,interval:e,last:i,cycle:o},{bare:()=>c,offset:()=>c+" from "+g(t,r)+" "+y(t,u)+" past the "+s,bounded:()=>{let O=rn();return c+" from "+O(t)+h(r)+O(i)+" "+y(i,u)+" past the "+s}})}function W(n,r,e,t){let i=V(n),o=i&&B(i);return o?fr({...o,cycle:60,unit:r,anchor:e},t):null}function nn(n,r,e,t){if(n.startToken.indexOf("-")!==-1)return w(nr(n.fires,t),r,e,t);let i=n.startToken==="*"?0:+n.startToken;return i!==0&&n.fires.length<=3?w(nr(n.fires,t),r,e,t):fr({interval:n.interval,start:i,last:n.fires[n.fires.length-1],cycle:60,unit:r,anchor:e},t)}function lr(n,r){if(n.startToken.indexOf("-")!==-1)return"at "+yn(n.fires,r);let e=n.startToken==="*"?0:+n.startToken,t=n.interval;return e===0?"every "+g(t,r)+" hours":n.fires.length<=3?"at "+yn(n.fires,r):"every "+g(t,r)+" hours from "+m({hour:e,minute:0},r)}function _(n,r){let{start:e,interval:t,last:i}=n,o="every "+g(t,r)+" hours";return X({start:e,interval:t,last:i,cycle:24},{bare:()=>o,offset:()=>o+" from "+m({hour:e,minute:0},r),bounded:()=>o+" from "+m({hour:e,minute:0},r)+h(r)+m({hour:i,minute:0},r)})}function Y(n,r){let e=Nn(n);return!e||an(e)?null:_(e,r)}function Nn(n){let r=f(n,"hour");if(r.length===1&&r[0].kind==="step"){let t=r[0];if(t.fires.length<2)return null;let i=t.startToken==="*"?0:+t.startToken.split("-")[0];return{interval:t.interval,last:t.fires[t.fires.length-1],start:i}}let e=V(r);return e&&$n(e)}function zn(n){return n.pattern.second==="*"||n.shapes.second==="step"}function mr(n,r,e){if(r===0)return zn(n)?P(n,"minute",e)+" for one minute":P(n,"hour",e);let t=g(r,e)+" "+y(r,"minute")+" past the hour";return n.pattern.second==="0"?t:P(n,"minute",e)+", "+t}function wn(n,r,e){let t=Nn(n);if(!t)return null;let i=(t.last-t.start)/t.interval+1;if(n.pattern.second==="0"&&i<=U&&an(t))return null;let o=r===0&&zn(n)&&et(n);return o?P(n,"minute",e)+" for one minute "+On(o,e)+a(n,e):r===0&&n.pattern.second==="0"?_(t,e)+a(n,e):mr(n,r,e)+", "+_(t,e)+a(n,e)}function et(n){let r=f(n,"hour"),e=r.length===1&&r[0];return!e||e.kind!=="step"||e.startToken.indexOf("-")!==-1||!(e.interval in tr)?null:e}function tt(n){return f(n,"hour").some(function(e){return e.kind==="range"})}function it(n,r){let e=[],t=sr(n);f(n,"hour").forEach(function(s){s.kind==="range"&&e.push(A({continuous:!1,from:+s.bounds[0],throughMinute:0,to:+s.bounds[1]},r))});let i="every hour "+p(e,r),o=t.map(function(s){return m({hour:s,minute:0},r)});return i+ar(o,r)}function vn(n,r,e){return r!==0||!tt(n)||n.pattern.second==="0"?null:zn(n)?P(n,"minute",e)+" for one minute during the "+R(n,{minute:0,second:null},!1,e)+" hours"+a(n,e):mr(n,r,e)+", "+it(n,e)+a(n,e)}function rn(){return function(r){return""+r}}function cr(n,r){return n>1?function(t){return""+t}:function(t){return g(t,r)}}function nr(n,r){return n.map(cr(n.length,r))}function T(n,r){let e=n.reduce(function(o,u){return u.kind==="range"?o+1:o+(u.kind==="step"?u.fires.length:1)},0),t=cr(e,r);return n.flatMap(function(o){return o.kind==="range"?[t(o.bounds[0])+h(r)+t(o.bounds[1])]:o.kind==="step"?o.fires.map(t):[t(o.value)]})}function w(n,r,e,t){return"at "+p(n,t)+" "+r+"s past the "+e}function Cn(n){return n.replace(/ past the hour$/,"")}function ot(n,r,e){return(+n==0||+n==12)&&+r==0&&!(typeof e=="number"&&e>0)}function xn(n){let r=n.filter(function(t){return ot(t.hour,t.minute,t.second)});return r.length>0&&r.length<n.length}function yn(n,r){let e=xn(n.map(function(o){return{hour:o,minute:0}})),t=n.map(function(o){return m({hour:o,minute:0,plain:e},r)});return p(t,r)}function ut(n){return n.kind==="fires"&&n.fires.length===1}function J(n,r,e,t){return r.kind==="fires"?yn(r.fires,t):R(n,{minute:0,second:null},e,t)}function st(n){return n.kind==="range"?n.bounds:n.kind==="step"?n.fires:[n.value]}function R(n,r,e,t){let{minute:i,second:o}=r,u=f(n,"hour"),s=xn(u.flatMap(function(S){return st(S).map(function(un){return{hour:+un,minute:i,second:o}})})),c=[];return u.forEach(function(S){S.kind==="step"?c.push(...S.fires.map(function(un){return m({hour:un,minute:i,second:o,plain:s},t)})):S.kind==="range"?c.push(m({hour:S.bounds[0],minute:i,second:o,plain:s},t)+h(t)+m({hour:S.bounds[1],minute:i,second:o,plain:s},t)):c.push(m({hour:S.value,minute:i,second:o,plain:s},t))}),p(at(c,u,e),t)}function at(n,r,e){let t=r.some(function(o){return o.kind==="range"});return!e||!t?n:n.map(function(o,u){return u===0?o:"at "+o})}function dr(n,r,e){if(n.length<=1)return n.join("");if(n.length===2)return n[0]+r+n[1];let t=e.style.serialComma?","+r:r;return n.slice(0,-1).join(", ")+t+n[n.length-1]}function p(n,r){return dr(n," and ",r)}function ft(n,r){return dr(n," or ",r)}var lt={all:"",month:"in ",recurringWeekday:!0,stepDate:"on ",weekday:"on "},Pn={all:"every day",month:"every day in ",recurringWeekday:!1,stepDate:"",weekday:"every "};function a(n,r){if(G(n,r))return pr(n,r);let e=en(n,lt,r);return e&&" "+e}function gr(n,r){return G(n,r)?"":en(n,Pn,r)+" "}function en(n,r,e){let t=n.pattern;if(t.date!=="*"&&t.weekday!=="*")return pt(n,e);if(t.date!=="*")return mt(n,r,e);if(t.weekday!=="*"){let i=Tn(t.weekday,e);return i?Sn(i,n,e):r.weekday+Or(n,r.recurringWeekday,e)+yr(n,e)}return t.month!=="*"?r.month+z(n,e):r.all}function mt(n,r,e){let t=n.pattern,i=tn(t.date,e);return i?Sn(i,n,e):E(t.date)?Sn(r.stepDate+Sr(t.date),n,e):t.month!=="*"&&!hr(n)?"on the "+kn(n,e)+yr(n,e):t.month!=="*"?"on "+br(n,e):"on the "+kn(n,e)}function hr(n){return!kr(n.pattern.month)&&f(n,"month").every(function(e){return e.kind!=="range"})}function G(n,r){return n.pattern.date!=="*"&&n.pattern.weekday!=="*"&&!!r.style.untilWindow&&!r.short}function pr(n,r){let e=[...dt(n,r),...gt(n,r)];return" whenever the day is "+ft(e,r)}function ct(n,r){return n.pattern.month==="*"?"":"in "+z(n,r)+" "}function dt(n,r){let e=n.pattern.date,t=tn(e,r);if(t)return[t.replace(/^on /,"")];let i=ht(e);if(i)return[i];let o=[];return f(n,"date").forEach(function(s){s.kind==="range"?o.push("from the "+b(s.bounds[0])+h(r)+"the "+b(s.bounds[1])):s.kind==="step"?s.fires.forEach(function(O){o.push("the "+b(O))}):o.push("the "+b(s.value))}),o}function gt(n,r){let e=n.pattern.weekday,t=Tn(e,r);if(t)return[t.replace(/^on /,"")];let i=[];return f(n,"weekday").forEach(function(u){u.kind==="range"&&u.bounds[0]==="1"&&u.bounds[1]==="5"?i.push("a weekday"):u.kind==="range"?i.push("a "+x(u.bounds[0],r)+h(r)+"a "+x(u.bounds[1],r)):u.kind==="step"?u.fires.forEach(function(c){i.push("a "+x(c,r))}):i.push("a "+x(u.value,r))}),i}function ht(n){if(!E(n))return null;let[r,e]=n.split("/");return+e!=2?null:r==="*"||r==="1"?"an odd-numbered day":r==="2"?"an even-numbered day":null}function pt(n,r){let e=n.pattern,t=Tn(e.weekday,r)||"on "+Or(n,!1,r);return e.month!=="*"&&hr(n)&&!tn(e.date,r)&&!E(e.date)?"on "+br(n,r)+" or "+t+" in "+z(n,r):bt(n,r)+" or "+t+yt(n,r)}function bt(n,r){let e=n.pattern,t=tn(e.date,r);return t||(E(e.date)?Sr(e.date):"on the "+kn(n,r))}function yt(n,r){return n.pattern.month==="*"?"":", in "+z(n,r)}function tn(n,r){if(n==="L")return"on the last day of the month";if(n==="LW"||n==="WL")return"on the last weekday of the month";let e=/^L-(\d{1,2})$/.exec(n);if(e)return g(+e[1],r)+" "+y(e[1],"day")+" before the last day of the month";let t=/^(\d{1,2})W$|^W(\d{1,2})$/.exec(n);if(t)return"on the weekday nearest the "+b(t[1]||t[2])}function Tn(n,r){let e=n.split("#");if(e.length===2)return"on the "+de[+e[1]]+" "+x(e[0],r)+" of the month";if(/L$/.test(n))return"on the last "+x(n.slice(0,-1),r)+" of the month"}function br(n,r){let e=z(n,r),t=on(f(n,"date"),r.style.ordinals?b:St,r);return r.style.dayFirst&&n.shapes.date==="single"&&n.shapes.month!=="single"?"the "+b(n.pattern.date)+" of "+e:r.style.dayFirst?t+" "+e:e+" "+t}function St(n){return""+n}function yr(n,r){return n.pattern.month==="*"?"":" in "+z(n,r)}function Sn(n,r,e){if(r.pattern.month==="*")return n;let t=n.indexOf(" of the month")!==-1;return t&&r.shapes.month==="range"?n.replace(" of the month"," of each month")+" from "+z(r,e):t&&(r.shapes.month==="single"||r.shapes.month==="step")?n.replace(" of the month","")+" in "+z(r,e):n+" in "+z(r,e)}function Sr(n){let r=n.split("/"),e=+r[1],t=r[0],o=(e===2?"every other":"every "+b(e))+" day of the month";return t!=="*"&&t!=="1"&&(o+=" from the "+b(t)),o}function kn(n,r){return on(f(n,"date"),b,r)}function z(n,r){let e=kr(n.pattern.month);return e||on(f(n,"month"),function(i){return wt(i,r)},r)}function kr(n){if(!E(n))return null;let[r,e]=n.split("/");return+e!=2?null:r==="*"||r==="1"?"every odd-numbered month":r==="2"?"every even-numbered month":null}function Or(n,r,e){let t=In(f(n,"weekday")),i=t.some(function(s){return s.kind==="range"});return on(t,r&&!i?function(s){return kt(s,e)}:function(s){return x(s,e)},e)}function kt(n,r){let e=x(n,r);return r.short?e:e+"s"}function on(n,r,e){let t=[];return n.forEach(function(o){o.kind==="step"?t.push(...o.fires.map(r)):o.kind==="range"?t.push(o.bounds.map(r).join(h(e))):t.push(r(o.value))}),p(t,e)}function rr(n,r,e){let t=r.pattern.year;if(t==="*")return n;if(t.indexOf("/")!==-1)return n+", "+Nt(t,e);let i=Ot(t,e);if(t.indexOf("-")===-1&&t.indexOf(",")===-1&&r.pattern.date!=="*"&&n.indexOf(" at ")!==-1){let o=e.style.dayFirst?" ":", ";return n.replace(" at ",o+i+" at ")}return n+" in "+i}function Ot(n,r){return n.indexOf(",")!==-1?p(n.split(","),r):n.indexOf("-")!==-1?n.split("-").join(h(r)):n}function Nt(n,r){let e=n.split("/"),t=+e[1],i=e[0];if(t<=1)return"every year";let o=t===2?"every other year":"every "+g(t,r)+" years";return i!=="*"&&i!=="0"&&(o+=" from "+i),o}function m(n,r){let{hour:e,minute:t,plain:i,explicit:o}=n,u=typeof n.second=="number"&&n.second>0?n.second:0;return r.ampm?zt({hour:e,minute:t,second:u,plain:i,explicit:o},r):gn({hour:e,minute:t,second:u},{pad:!0,sep:r.style.sep})}function zt(n,r){let{hour:e,minute:t,second:i,plain:o,explicit:u}=n,s=r.style;if(!o&&!u&&+t==0&&!i){if(+e==0)return s.midnight;if(+e==12)return s.midday}return gn({hour:e%12||12,minute:t,second:i},{lean:!u,sep:s.sep})+(s.closeUp?"":" ")+(e<12?s.am:s.pm)}function g(n,r){return Xn(n,le,r)}function y(n,r){return+n==1?r:r+"s"}function h(n){return n.short?"-":n.style.through}function b(n){let r=Math.abs(n),e=pn[r];return e||(r=(r%100-20)%10,e=pn[r]||pn[0]),n+e}function wt(n,r){let e=me[+n];return e&&e[r.short?1:0]}function x(n,r){let e=n===7||n==="7"?0:n,t=C[e]||ce[e];return t&&t[r.short?1:0]}var vt={describe:he,fallback:"an unrecognizable cron pattern",options:ge,reboot:"at system startup",sentence:n=>"Runs "+n+(n.endsWith(".")?"":".")},Nr=vt;/**
1
+ "use strict";(()=>{var Cr={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},xr={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12},N={second:{cyclic:!0,max:59,min:0,top:59},minute:{cyclic:!0,max:59,min:0,top:59},hour:{cyclic:!0,max:23,min:0,top:23},date:{cyclic:!0,max:31,min:1,top:31},month:{cyclic:!0,max:12,min:1,numbers:xr,top:12},weekday:{aliases:{L:"6"},cyclic:!0,max:7,min:0,numbers:Cr,top:6},year:{max:9999,min:1970}},M=["second","minute","hour","date","month","weekday","year"],un={"@annually":"0 0 1 1 *","@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *"},A=6;function f(n,r){return(""+n).indexOf(r)!==-1}function G(n){return Array.from(new Set(n))}function H(n){return/^\d+$/.test(n)}function d(n,r){return H(n)?+n:r[n.toUpperCase()]}function Hn(n){return M.forEach(function(e){Pr(n[e],N[e],e)}),n}function Pr(n,r,e){typeof n!="string"&&typeof n!="number"&&Wn(n,e);let t=""+n;t!=="*"&&(e==="date"&&U(t)||e==="weekday"&&q(t,r)||t.split(",").forEach(function(o){Mr(o,r)||Wn(o,e)}))}function U(n){if(n==="L"||n==="LW"||n==="WL")return!0;let r=/^L-(\d{1,2})$/.exec(n);if(r)return+r[1]>=1&&+r[1]<=30;let e=/^(\d{1,2})W$|^W(\d{1,2})$/.exec(n);if(e){let t=+(e[1]||e[2]);return t>=1&&t<=31}return!1}function q(n,r){if(/L$/.test(n))return L(n.slice(0,-1),r);let e=n.split("#");return e.length===2?L(e[0],r)&&/^[1-5]$/.test(e[1]):!1}function Mr(n,r){return f(n,"/")?Tr(n,r):f(n,"-")?Ln(n,r):L(n,r)}function Tr(n,r){let e=n.split("/");return e.length!==2||!H(e[1])||+e[1]<1?!1:e[0]==="*"||L(e[0],r)||Ln(e[0],r,!0)}function Ln(n,r,e){let t=n.split("-");return t.length!==2||!L(t[0],r)||!L(t[1],r)?!1:r.cyclic&&!e?!0:d(t[0],r.numbers)<=d(t[1],r.numbers)}function L(n,r){return n==="*"?!1:H(n)?+n>=r.min&&+n<=r.max:r.numbers?n.toUpperCase()in r.numbers:!1}function Wn(n,r){throw new Error('`cronli5` was passed an invalid field value "'+n+'" for the '+r+" field.")}var Fr={hour:24,minute:60,second:60};function jn(n){M.forEach(function(e){let t=N[e].aliases,i=t&&t[""+n[e]];i&&(n[e]=i)})}function Dn(n){return M.forEach(function(e){let t=""+n[e];if(e==="date"&&U(t)||e==="weekday"&&q(t,N[e])){n[e]=t;return}n[e]=Wr(t,e,N[e])}),n}function Wr(n,r,e){let t=""+n;if(t==="*")return t;let i=Fr[r],o=t.split(",").map(function(s){return Hr(Rn(Dr(Rr(Ar(jr(Er(s,e),e),e),e),e,i),e),e)}).join(",").split(",");return o.indexOf("*")!==-1?"*":G(o).sort(function(s,m){return En(s,e)-En(m,e)}).join(",")}function Hr(n,r){if(!r.numbers)return n;let e=n.split("/"),t=e[0].split("-").map(function(o){return Lr(o,r)}).join("-");return e.length===2?t+"/"+e[1]:t}function Lr(n,r){if(n==="*")return n;let e=d(n,r.numbers);return""+(e>r.top?r.min:e)}function Er(n,r){let e=n.split("/");if(!r.cyclic||e.length!==2||+e[1]!=1)return n;let t=e[0];return f(t,"-")?t:t==="*"||d(t,r.numbers)===r.min?"*":t+"-"+r.top}function jr(n,r){let e=n.split("/");if(!r.cyclic||typeof r.top!="number"||e.length!==2||f(e[0],"-"))return n;let t=e[0];return(t==="*"?r.min:d(t,r.numbers))+ +e[1]<=r.top?n:t==="*"?""+r.min:t}function Dr(n,r,e){let t=n.split("/");if(typeof e!="number"||t.length!==2||f(t[0],"-"))return n;let i=+t[1],o=t[0]==="*"?r.min:d(t[0]);if(e%i===0&&o<i)return n;let u=[];for(let s=o;s<=r.top;s+=i)u.push(s);return u.join(",")}function Rr(n,r){let e=n.split("/");return e.length!==2||!f(e[0],"-")?n:Rn(e[0],r)==="*"?"*/"+e[1]:n}function Rn(n,r){if(typeof r.top!="number"||f(n,"/")||!f(n,"-"))return n;let e=n.split("-"),t=d(e[0],r.numbers),i=d(e[1],r.numbers);if(t>i)return n;let o=r.top,u={};for(let s=t;s<=i;s+=1)u[s>o?r.min:s]=!0;for(let s=r.min;s<=o;s+=1)if(!u[s])return n;return"*"}function Ar(n,r){let e=n.split("/")[0];if(!f(e,"-"))return n;let t=e.split("-");return d(t[0],r.numbers)!==d(t[1],r.numbers)?n:t[0]}function En(n,r){let e=n.split("/")[0].split("-")[0];return e==="*"?r.min:d(e,r.numbers)}var Ur="`?` is a Quartz token \u2014 pass { quartz: true } to enable Quartz semantics.";function Un(n,r){if(!r){An(n.date),An(n.weekday);return}if(""+n.date=="?"&&(n.date="*"),""+n.weekday=="?"){n.weekday="*";return}n.weekday=qr(""+n.weekday)}function An(n){if(""+n=="?")throw new Error(Ur)}function qr(n){return n==="*"?n:n.split(",").map(Qr).join(",")}function Qr(n){let r=/(#\d+|L)$/.exec(n),e=r?r[0]:"",i=(e?n.slice(0,-e.length):n).split("/"),o=i[0].split("-").map(Vr).join("-");return(i.length===2?o+"/"+i[1]:o)+e}function Vr(n){if(!H(n))return n;if(n==="0")throw new Error('`cronli5` was passed an invalid Quartz day-of-week value "0"; Quartz numbers weekdays 1 (Sunday) through 7 (Saturday).');return""+(+n-1)}function qn(n,r){let e=n instanceof Array;if(n===null||typeof n>"u"||n===""||e&&n.length===0)throw new Error("`cronli5` expects a non-empty cron pattern as the first argument.");if(e)return Qn(n,r);if(typeof n=="object")return Ir(n);if(typeof n=="string")return $r(n,r);throw new Error("`cronli5` was passed an unexpected type.")}function Qn(n,r){if(n.length>7)throw new Error("`cronli5` was passed a cron pattern with more than seven fields.");return!r.seconds&&n.length<(r.years?7:6)&&n.unshift("0"),{second:n[0]||"0",minute:n[1]||"*",hour:n[2]||"*",date:n[3]||"*",month:n[4]||"*",weekday:n[5]||"*",year:n[6]||"*"}}function Ir(n){if(!n.second&&!n.minute&&!n.hour)throw new Error("`cronli5` expects that any object being interpreted as a cron pattern have at least one of the following properties: `second`, `minute`, or `hour`");let r=typeof n.second<"u",e=typeof n.minute<"u",t=r?"*":"0",i=r||e?"*":"0";return{second:T(n.second,"0"),minute:T(n.minute,t),hour:T(n.hour,i),date:T(n.date,"*"),month:T(n.month,"*"),weekday:T(n.weekday,"*"),year:T(n.year,"*")}}function T(n,r){return typeof n>"u"?r:n}function $r(n,r){let e=Jr(n).split(/\s+/);return Qn(e,r)}function Jr(n){let r=n.trim();if(r.charAt(0)!=="@")return n;let e=r.toLowerCase();if(Object.hasOwn(un,e))return un[e];throw new Error("`cronli5` does not recognize the macro `"+r+"`.")}function Vn(n){return n===0?7:n}function In(n){let r=n.flatMap(function(i){return i.kind==="step"?i.fires.map(function(u){return{kind:"single",value:""+u}}):[i]});function e(t){return t.kind==="range"?Vn(+t.bounds[0]):Vn(+t.value)}return r.map(function(i,o){return[i,o]}).sort(function(i,o){return e(i[0])-e(o[0])||i[1]-o[1]}).map(function(i){return i[0]})}function Z(n){if(n.length<5)return null;let r=n[1]-n[0];if(r<2)return null;for(let e=2;e<n.length;e+=1)if(n[e]-n[e-1]!==r)return null;return{start:n[0],interval:r,last:n[n.length-1]}}function c(n,r){return n.analyses.segments[r]??[]}function k(n,r){return c(n,r)[0]}function Q(n){let r=[];for(let e of n){if(e.kind!=="single")return null;r.push(+e.value)}return r}function sn(n){return n.start<n.interval&&24%n.interval===0}function Kr(n,r,e){return e-1-(e-1-n)%r}function B(n,r){let{start:e,interval:t,last:i,cycle:o}=n,u=o%t===0&&i===Kr(e,t,o);return e===0&&u?r.bare():e<t&&u?r.offset():r.bounded()}function $n(n){if(n.length<2)return null;let r=n[1]-n[0];if(r<2)return null;for(let e=2;e<n.length;e+=1)if(n[e]-n[e-1]!==r)return null;return n[0]!==0&&n.length<5?null:{interval:r,last:n[n.length-1],start:n[0]}}function Jn(n){return n!=="*"&&!f(n,",")&&!f(n,"-")&&!f(n,"/")}function an(n){return f(n,"-")&&!f(n,",")&&!f(n,"/")}function Yr(n){return f(n,"/")&&!f(n,",")}function cn(n){return n!=="*"&&!f(n,"-")&&!f(n,"/")}function fn(n){return n!=="*"&&!an(n)&&!Yr(n)}function F(n){return n.indexOf("/")!==-1&&n.indexOf("-")===-1&&n.indexOf(",")===-1}function V(n,r,e){let t=[],i=n;for(;i<=e;)t.push(i),i+=r;return t}function Kn(n,r,e,t){let i=n.split("/"),o=+i[1];if(f(i[0],"-")){let s=i[0].split("-");return V(d(s[0],t),o,d(s[1],t))}let u=i[0]==="*"?r:d(i[0],t);return V(u,o,e)}function mn(n,r,e){let t=[];return n.split(",").forEach(function(o){if(f(o,"/"))t.push(...Kn(o,r,e));else if(f(o,"-")){let u=o.split("-");+u[0]<=+u[1]?t.push(...V(+u[0],1,+u[1])):(t.push(...V(+u[0],1,e)),t.push(...V(r,1,+u[1])))}else t.push(+o)}),G(t)}function Gr(n){return cn(n)?n.split(",").map(Number):[0]}function Zr(n){if(n==="*")return[0,59];if(an(n)){let r=n.split("-");if(+r[0]<=+r[1])return[+r[0],+r[1]]}return null}function Br(n){return n==="*"?59:Math.max(...mn(n,0,59))}function Xr(n){if(Jn(n)&&n!=="0")return+n}function _r(n,r){return n==="*"?"wildcard":r==="date"&&U(n)||r==="weekday"&&q(n,N.weekday)?"quartz":f(n,",")?"list":f(n,"/")?"step":f(n,"-")?"range":"single"}function ne(n,r,e){return r==="wildcard"||r==="quartz"?null:n.split(",").map(function(i){if(f(i,"/")){let o=i.split("/");return{fires:Kn(i,e.min,e.top,e.numbers),interval:+o[1],kind:"step",startToken:o[0]}}return f(i,"-")?{bounds:i.split("-"),kind:"range"}:{kind:"single",value:i}})}function Yn(n){let r={},e={};M.forEach(function(u){r[u]=_r(n[u],u),e[u]=ne(n[u],r[u],N[u])});let i={analyses:{clockSecond:Xr(n.second),lastMinuteFire:Br(n.minute),minuteSpan:Zr(n.minute),segments:e},pattern:n,shapes:r};return{...i,plan:re(i)}}function re(n){let{analyses:r,pattern:e,shapes:t}=n;if(e.second!=="0"){let i=ee(e,t,r);if(i)return i}return Gn(e,t,r)||Zn(e,t,r)}function ee(n,r,e){let t=te(n,r);return t||(n.hour==="*"&&r.minute==="single"&&n.second!=="*"?{kind:"secondsWithinMinute",singleSecond:r.second==="single"}:r.second==="single"&&cn(n.minute)&&fn(n.hour)?null:{kind:"composeSeconds",rest:Gn(n,r,e,!0)||Zn(n,r,e,!0)})}function te(n,r){return n.minute!=="*"||n.hour!=="*"?null:n.second==="*"?{kind:"everySecond"}:r.second==="single"?{kind:"secondPastMinute"}:{kind:"standaloneSeconds"}}function Gn(n,r,e,t=!1){if(r.minute==="step")return{hours:oe(n,r,e),kind:"minuteFrequency"};if(r.hour==="single"&&e.minuteSpan)return{hour:+n.hour,kind:"minuteSpanInHour",span:e.minuteSpan};let i=ue(n,r);if(i)return i;let o=ie(n,r);if(o)return o;if(n.hour==="*")return se(n,r,t)}function ln(n){let[r,e]=n.split("/"),t=r==="*"?0:+r;return r.indexOf("-")===-1&&24%+e===0&&t<+e}function ie(n,r){return r.hour!=="step"?null:n.minute==="*"?ln(n.hour)?{form:"wildcard",kind:"minuteSpanAcrossHourStep"}:{form:"wildcard",kind:"minutesAcrossHours",times:I(n.hour)}:r.minute==="range"?{form:"range",kind:"minuteSpanAcrossHourStep"}:r.minute==="list"&&ln(n.hour)?{form:"list",kind:"minuteSpanAcrossHourStep"}:null}function oe(n,r,e){if(r.hour==="list")return{kind:"during",times:I(n.hour)};if(r.hour==="range"){let t=n.hour.split("-");return{from:+t[0],kind:"window",last:e.lastMinuteFire,to:+t[1]}}return r.hour==="single"?{from:+n.hour,kind:"window",last:e.lastMinuteFire,to:+n.hour}:r.hour==="step"?ln(n.hour)?{kind:"step"}:{kind:"during",times:I(n.hour)}:{kind:"none"}}function ue(n,r){return fn(n.hour)?n.minute==="*"?{form:"wildcard",kind:"minutesAcrossHours",times:I(n.hour)}:r.minute==="range"||r.minute==="list"&&f(n.minute,"-")&&!f(n.minute,"/")?{form:r.minute==="range"?"range":"list",kind:"minutesAcrossHours",times:I(n.hour)}:null:null}function se(n,r,e){if(r.minute==="range")return{kind:"rangeOfMinutes"};if(r.minute==="list")return{kind:"multipleMinutes"};if(n.minute==="*")return{kind:"everyMinute"};if(n.minute!=="0"||e)return{kind:"singleMinute"}}function Zn(n,r,e,t=!1){let i=t&&n.minute==="0";return r.hour==="range"&&!i?ae(n,r,e):r.hour==="step"&&n.minute==="0"&&!t?{kind:"hourStep"}:n.hour==="*"&&!i?{kind:"everyHour"}:ce(n,e,i)}function ae(n,r,e){let t=n.hour.split("-"),i="lead";return n.minute==="*"?i="wildcard":r.minute==="range"&&(i="range"),{boundMinute:r.minute==="range"||r.minute==="list"?null:e.lastMinuteFire,from:+t[0],kind:"hourRange",last:e.lastMinuteFire,minuteForm:i,to:+t[1]}}function ce(n,r,e=!1){let t=mn(n.hour,0,23),i=Gr(n.minute);if(!e&&t.length*i.length>A)return{fold:i.length===1,kind:"compactClockTimes",minute:i[0]};let o=[];return t.forEach(function(s){i.forEach(function(O){o.push({hour:s,minute:O,second:r.clockSecond})})}),{kind:"clockTimes",times:o}}function I(n){let r=mn(n,0,23);return r.length<=A?{fires:r,kind:"fires"}:{kind:"segments"}}function Bn(n,r){let e=qn(n,r);return Un(e,r.quartz),jn(e),Hn(e),Dn(e)}function dn(n){return n=""+n,n.length<2?"0"+n:n}function Xn(n,r,e){return e.short?n:r[n]||n}function gn(n,{sep:r,pad:e,lean:t}){let i=e?dn(n.hour):""+n.hour;return t&&!n.minute&&!n.second?i:i+r+dn(n.minute)+(n.second?r+dn(n.second):"")}var hn={gb:{am:"am",closeUp:!0,dayFirst:!0,midday:"midday",midnight:"midnight",ordinals:!1,pm:"pm",sep:".",serialComma:!1,through:" to "},us:{am:"a.m.",closeUp:!1,dayFirst:!1,midday:"noon",midnight:"midnight",ordinals:!1,pm:"p.m.",sep:":",serialComma:!0,through:" through ",untilWindow:!0},house:{am:"AM",closeUp:!1,dayFirst:!1,midday:"noon",midnight:"midnight",ordinals:!0,pm:"PM",sep:":",serialComma:!0,through:" - "}};function _n(n){return typeof n=="object"&&n!==null?{...hn.us,untilWindow:!1,...n}:hn[n==="uk"?"gb":n]||hn.us}var fe=["zero","one","two","three","four","five","six","seven","eight","nine","ten"],pn=["th","st","nd","rd"],le=[null,["January","Jan"],["February","Feb"],["March","Mar"],["April","Apr"],["May","May"],["June","Jun"],["July","Jul"],["August","Aug"],["September","Sep"],["October","Oct"],["November","Nov"],["December","Dec"]],v=[["Sunday","Sun"],["Monday","Mon"],["Tuesday","Tue"],["Wednesday","Wed"],["Thursday","Thu"],["Friday","Fri"],["Saturday","Sat"]],me={SUN:v[0],MON:v[1],TUE:v[2],WED:v[3],THU:v[4],FRI:v[5],SAT:v[6]},de=[null,"first","second","third","fourth","fifth"];function ge(n){return n=n||{},{ampm:typeof n.ampm=="boolean"?n.ampm:!0,lenient:!!n.lenient,quartz:!!n.quartz,seconds:!!n.seconds,short:!!n.short,style:_n(n.dialect),years:!!n.years}}function he(n,r){let e=Se(n,r);if(e!==null)return rr(e,n,r);let t=et(n,r)??er(n,n.plan,r),i=Y(n,r)?gt(n,r):"";return rr(i+t,n,r)}function er(n,r,e){let t=tt[r.kind];return t(n,r,e)}function bn(n){return n==="step"||n==="range"||n==="list"}function pe(n,r){if(!r.style.untilWindow||r.short||n.plan.kind!=="composeSeconds"||n.plan.rest.kind==="clockTimes"||Y(n,r))return!1;let{shapes:e}=n;return bn(e.second)&&bn(e.minute)&&bn(e.hour)}function be(n,r){let e=Nn(n);if(e)return X(e,r);if(n.shapes.hour==="range"){let t=c(n,"hour").find(function(o){return o.kind==="range"});return R({continuous:!1,from:+t.bounds[0],throughMinute:0,to:+t.bounds[1]},r)}return"during the "+D(n,{minute:0,second:null},!1,r)+" hours"}function ye(n,r){return n.shapes.minute==="step"?_(k(n,"minute"),"minute","hour",r):n.shapes.minute==="range"?J(n.pattern.minute,r):W(c(n,"minute"),"minute","hour",r)??w(P(c(n,"minute"),r),"minute","hour",r)}function Se(n,r){if(!pe(n,r))return null;let e=be(n,r),t=ye(n,r),i=x(n,"minute",r),o=e+", "+t+", and within each of those minutes, "+i,u=a(n,r).trim();return u?u+", "+o:o}function ke(n,r,e){return"every second"+a(n,e)}function Oe(n,r,e){return j(n,e)+a(n,e)}function Ne(n,r,e){let t=n.pattern.second;return g(t,e)+" "+y(t,"second")+" past the minute, every minute"+a(n,e)}function ze(n,r,e){let t=n.pattern.minute,i=g(t,e),o=y(t,"minute");if(r.singleSecond){let u=n.pattern.second;return i+" "+o+" and "+g(u,e)+" "+y(u,"second")+" past the hour, every hour"+a(n,e)}return j(n,e)+", "+i+" "+o+" past the hour, every hour"+a(n,e)}function we(n,r,e){if(!(r.rest.kind==="clockTimes"||r.rest.kind==="compactClockTimes")||n.shapes.minute!=="single")return null;let i=+n.pattern.minute;return wn(n,i,e)??vn(n,i,e)}function ve(n,r,e){return+r.times[0].minute==0&&n.shapes.minute==="single"?j(n,e)+" for one minute at "+xe(n,r,e):j(n,e)+" of "+Pe(n,r,e)}function Ce(n,r,e){let t=we(n,r,e);return t!==null?t:r.rest.kind==="clockTimes"&&(n.shapes.second==="wildcard"||n.shapes.second==="step")?ve(n,r.rest,e):n.shapes.second==="wildcard"&&r.rest.kind==="minuteFrequency"&&r.rest.hours.kind==="none"&&n.pattern.minute==="*/2"?"every second of every other minute"+a(n,e):(r.rest.kind==="compactClockTimes"&&n.analyses.clockSecond?"":j(n,e)+", ")+er(n,r.rest,e)}function xe(n,r,e){let t=r.times.map(function(u){return l({hour:u.hour,minute:0},e)}),i=rn(n,Pn,e);return p(t,e)+(i&&", "+i)}function Pe(n,r,e){let t=r.times.map(function(u){return l({hour:u.hour,minute:u.minute,second:u.second,explicit:!0},e)}),i=rn(n,Pn,e);return p(t,e)+(i&&", "+i)}function j(n,r){return x(n,"minute",r)}function x(n,r,e){let t=n.pattern.second,i=n.shapes.second;if(t==="*")return"every second";if(i==="step")return _(k(n,"second"),"second",r,e);if(i==="range"){let o=t.split("-"),u=nn();return"every second from "+u(o[0])+h(e)+u(o[1])+" past the "+r}return i==="single"?"at "+g(t,e)+" "+y(t,"second")+" past the "+r:W(c(n,"second"),"second",r,e)??w(P(c(n,"second"),e),"second",r,e)}function Me(n,r,e){return"every minute"+a(n,e)}function Te(n,r,e){let t=n.pattern.minute;return g(t,e)+" "+y(t,"minute")+" past the hour, every hour"+a(n,e)}function Fe(n,r,e){return J(n.pattern.minute,e)+a(n,e)}function We(n,r,e){return(W(c(n,"minute"),"minute","hour",e)??w(P(c(n,"minute"),e),"minute","hour",e))+a(n,e)}function He(n,r,e){let t=_(k(n,"minute"),"minute","hour",e);if(r.hours.kind==="during"){let i=K(n,e);t+=i?", "+i:" during the "+$(n,r.hours.times,!1,e)+" hours"}else if(r.hours.kind==="window")t+=" "+R({continuous:!1,from:r.hours.from,throughMinute:r.hours.last,to:r.hours.to},e);else if(r.hours.kind==="step"){let i=Cn(t);t=i+(i===t?" ":", ")+On(k(n,"hour"),e)}return t+a(n,e)}function Le(n,r,e){return n.pattern.minute==="*"?"every minute of the "+l({hour:r.hour,minute:0},e)+" hour"+a(n,e):"every minute from "+l({hour:r.hour,minute:r.span[0]},e)+h(e)+l({hour:r.hour,minute:r.span[1]},e)+a(n,e)}function Ee(n,r,e){let t=K(n,e);if(r.form==="wildcard")return t!==null?"every minute, "+t+a(n,e):"every minute during the "+$(n,r.times,!1,e)+" hours"+a(n,e);if(r.form==="range"){let u=J(n.pattern.minute,e);return t!==null?u+", "+t+a(n,e):at(r.times)?u+", at "+$(n,r.times,!0,e)+a(n,e):u+" during the "+$(n,r.times,!1,e)+" hours"+a(n,e)}let i=W(c(n,"minute"),"minute","hour",e)??w(P(c(n,"minute"),e),"minute","hour",e);if(t!==null)return i+", "+t+a(n,e);let o=$(n,r.times,!0,e);return i+", at "+o+a(n,e)}var tr={2:"other",3:"third",4:"fourth",6:"sixth",8:"eighth",12:"twelfth"},je={2:"other",3:"third",4:"fourth",5:"fifth",6:"sixth",7:"seventh",8:"eighth",9:"ninth",10:"tenth",11:"eleventh",12:"twelfth",15:"fifteenth",20:"twentieth",30:"thirtieth"};function De(n){return je[n]??b(n)}function Re(n,r){let e=" during every "+De(n.interval)+" minute";return B({...n,cycle:60},{bare:()=>e,offset:()=>e+" from "+g(n.start,r)+" "+y(n.start,"minute")+" past the hour",bounded:()=>{let t=nn();return e+" from "+t(n.start)+h(r)+t(n.last)+" "+y(n.last,"minute")+" past the hour"}})}function ir(n){if(n.shapes.minute==="step"){let e=k(n,"minute"),t=e.startToken==="*"?0:+e.startToken;return{interval:e.interval,last:e.fires[e.fires.length-1],start:t}}let r=Q(c(n,"minute"));return r&&Z(r)}function On(n,r){let e="during every "+tr[n.interval]+" hour",t=n.startToken==="*"?0:+n.startToken;return t===0?e:e+" starting at "+l({hour:t,minute:0},r)}function Ae(n,r,e){let t=k(n,"hour");if(r.form==="wildcard")return"every minute "+On(t,e)+a(n,e);let i=Cn(r.form==="list"?W(c(n,"minute"),"minute","hour",e)??w(P(c(n,"minute"),e),"minute","hour",e):J(n.pattern.minute,e)),o=K(n,e);return i+", "+(o??fr(t,e))+a(n,e)}function J(n,r){let e=n.split("-"),t=nn();return"every minute from "+t(e[0])+h(r)+t(e[1])+" past the hour"}function Ue(n,r,e){return"every hour"+a(n,e)}function qe(n,r,e){let t=Ie(Ve(r),e);return r.minuteForm==="wildcard"?"every minute "+t+a(n,e):r.minuteForm==="range"?J(n.pattern.minute,e)+", "+t+a(n,e):or(n,e)+" "+t+a(n,e)}function or(n,r){return n.pattern.minute==="0"?"every hour":W(c(n,"minute"),"minute","hour",r)??w(P(c(n,"minute"),r),"minute","hour",r)}function Qe(n,r,e){let t=K(n,e);return t!==null?t+a(n,e):fr(k(n,"hour"),e)+a(n,e)}function Ve(n){let r=n.minuteForm==="wildcard",e=r?n.boundMinute??0:0;return{from:n.from,closeMinute:e,to:n.to,continuous:r}}function R(n,r){let{from:e,to:t,throughMinute:i,continuous:o}=n,u="from "+l({hour:e,minute:0},r);return r.style.untilWindow&&!r.short&&e!==t?o?u+" until "+l({hour:(t+1)%24,minute:0},r):u+h(r)+l({hour:t,minute:0},r):u+h(r)+l({hour:t,minute:i},r)}function Ie(n,r){return R({continuous:n.continuous,from:n.from,throughMinute:n.closeMinute,to:n.to},r)}function $e(n,r,e){if(n.shapes.minute==="single"){let o=+n.pattern.minute,u=wn(n,o,e)??vn(n,o,e);if(u!==null)return u}let t=xn(r.times),i=r.times.map(function(u){return l({hour:u.hour,minute:u.minute,second:u.second,plain:t},e)});return gr(n,e)+"at "+p(i,e)+ur(n,e)}function ur(n,r){return Y(n,r)?pr(n,r):""}function Je(n,r,e){if(r.fold){let u=wn(n,+r.minute,e)??vn(n,+r.minute,e);if(u!==null)return u;if(c(n,"hour").some(function(S){return S.kind==="range"})&&!n.analyses.clockSecond)return Ke(n,r,e)+a(n,e);let m={minute:r.minute,second:n.analyses.clockSecond};return gr(n,e)+"at "+D(n,m,!0,e)+ur(n,e)}let t=W(c(n,"minute"),"minute","hour",e)??w(P(c(n,"minute"),e),"minute","hour",e),i=K(n,e),o=i?Cn(t)+", "+i+a(n,e):t+", at "+D(n,{minute:0,second:null},!0,e)+a(n,e);return n.analyses.clockSecond?j(n,e)+", "+o:o}function Ke(n,r,e){let t=r.minute,i=[],o=sr(n).map(function(m){return l({hour:m,minute:t},e)});return c(n,"hour").forEach(function(m){m.kind==="range"&&i.push(R({continuous:!1,from:+m.bounds[0],throughMinute:t,to:+m.bounds[1]},e))}),or(n,e)+" "+p(i,e)+ar(o,e)}function sr(n){let r=[];return c(n,"hour").forEach(function(t){t.kind==="step"?r.push(...t.fires):t.kind!=="range"&&r.push(+t.value)}),r}function ar(n,r){return n.length?" and at "+p(n,r):""}function E(n){return n==="*"||n.startsWith("*/")&&n.indexOf("-")===-1}function Ye(n){return E(n.pattern.second)?!0:n.shapes.second!=="step"?!1:F(n.pattern.second)}function Ge(n){if(n.plan.kind!=="composeSeconds"&&n.plan.kind!=="secondsWithinMinute")return!1;let{second:r,minute:e,hour:t}=n.shapes;return(r==="single"||r==="range"||r==="list")&&e!=="wildcard"&&t==="wildcard"&&!(r==="single"&&e==="single")}function Ze(n,r){let{second:e,minute:t}=n.pattern;return Ye(n)||Ge(n)?{secondLead:!0,text:x(n,"minute",r)}:e==="0"&&E(t)?{secondLead:!1,text:t==="*"?"every minute":_(k(n,"minute"),"minute","hour",r)}:null}function Be(n,r){let e=n.pattern.minute;if(e==="*")return"";if(e==="*/2")return" of every other minute";let t=ir(n);if(t)return Re(t,r);let i=c(n,"minute");if(n.shapes.minute==="single")return" during minute "+Number(e);if(n.shapes.minute==="range"){let u=e.split("-");return" during minutes "+Number(u[0])+h(r)+Number(u[1])}let o=P(i,r).map(function(s){return String(Number(s))});return" during minutes "+p(o,r)}function Xe(n,r){let e=n.pattern.hour;if(e==="*")return n.pattern.minute!=="*"&&!E(n.pattern.minute)&&!ir(n)?" of every hour":"";if(E(e))return e==="*/2"?" of every other hour":"";if(n.shapes.hour==="single"){let t=+e;return n.shapes.minute==="step"?" from "+l({hour:t,minute:0},r)+" until "+l({hour:(t+1)%24,minute:0},r):n.pattern.minute!=="*"&&!E(n.pattern.minute)?" at "+l({hour:t,minute:0},r):" of the "+l({hour:t,minute:0},r)+" hour"}if(n.shapes.hour==="range"){let t=e.split("-");return" "+R({continuous:n.pattern.minute==="*",from:+t[0],throughMinute:0,to:+t[1]},r)}return" during the "+D(n,{minute:0,second:null},!1,r)+" hours"}function _e(n){if(n.shapes.hour!=="step")return!0;let r=k(n,"hour");return n.pattern.hour==="*/2"||r.startToken.indexOf("-")!==-1}function nt(n){if(n.shapes.minute!=="list")return!1;let r=Q(c(n,"minute"));return r!==null&&Z(r)!==null}function rt(n,r){let{minute:e,hour:t}=n.pattern,i=E(e)&&e!=="*";return _e(n)?r.secondLead?i?e==="*/2"?n.shapes.hour!=="range":n.pattern.hour==="*":nt(n)?n.pattern.hour==="*":!(n.shapes.minute==="list"&&n.shapes.hour==="list"):t==="*/2"?!0:n.shapes.hour==="single"&&e==="*/2":!1}function et(n,r){if(!r.style.untilWindow||r.short||n.pattern.minute==="*"&&n.pattern.hour==="*")return null;let e=Ze(n,r);if(!e||!rt(n,e))return null;let t=e.secondLead?Be(n,r):"";return e.text+t+Xe(n,r)+a(n,r)}var tt={clockTimes:$e,compactClockTimes:Je,composeSeconds:Ce,everyHour:Ue,everyMinute:Me,everySecond:ke,hourRange:qe,hourStep:Qe,minuteFrequency:He,minuteSpanAcrossHourStep:Ae,minuteSpanInHour:Le,minutesAcrossHours:Ee,multipleMinutes:We,rangeOfMinutes:Fe,secondPastMinute:Ne,secondsWithinMinute:ze,singleMinute:Te,standaloneSeconds:Oe};function cr(n,r){let{interval:e,start:t,last:i,cycle:o,unit:u,anchor:s}=n,m="every "+g(e,r)+" "+u+"s";return B({start:t,interval:e,last:i,cycle:o},{bare:()=>m,offset:()=>m+" from "+g(t,r)+" "+y(t,u)+" past the "+s,bounded:()=>{let O=nn();return m+" from "+O(t)+h(r)+O(i)+" "+y(i,u)+" past the "+s}})}function W(n,r,e,t){let i=Q(n),o=i&&Z(i);return o?cr({...o,cycle:60,unit:r,anchor:e},t):null}function _(n,r,e,t){if(n.startToken.indexOf("-")!==-1)return w(nr(n.fires,t),r,e,t);let i=n.startToken==="*"?0:+n.startToken;return i!==0&&n.fires.length<=3?w(nr(n.fires,t),r,e,t):cr({interval:n.interval,start:i,last:n.fires[n.fires.length-1],cycle:60,unit:r,anchor:e},t)}function fr(n,r){if(n.startToken.indexOf("-")!==-1)return"at "+yn(n.fires,r);let e=n.startToken==="*"?0:+n.startToken,t=n.interval;return e===0?"every "+g(t,r)+" hours":n.fires.length<=3?"at "+yn(n.fires,r):"every "+g(t,r)+" hours from "+l({hour:e,minute:0},r)}function X(n,r){let{start:e,interval:t,last:i}=n,o="every "+g(t,r)+" hours";return B({start:e,interval:t,last:i,cycle:24},{bare:()=>o,offset:()=>o+" from "+l({hour:e,minute:0},r),bounded:()=>o+" from "+l({hour:e,minute:0},r)+h(r)+l({hour:i,minute:0},r)})}function K(n,r){let e=Nn(n);return!e||sn(e)?null:X(e,r)}function Nn(n){let r=c(n,"hour");if(r.length===1&&r[0].kind==="step"){let t=r[0];if(t.fires.length<2)return null;let i=t.startToken==="*"?0:+t.startToken.split("-")[0];return{interval:t.interval,last:t.fires[t.fires.length-1],start:i}}let e=Q(r);return e&&$n(e)}function zn(n){return n.pattern.second==="*"||n.shapes.second==="step"}function lr(n,r,e){if(r===0)return zn(n)?x(n,"minute",e)+" for one minute":x(n,"hour",e);let t=g(r,e)+" "+y(r,"minute")+" past the hour";return n.pattern.second==="0"?t:x(n,"minute",e)+", "+t}function wn(n,r,e){let t=Nn(n);if(!t)return null;let i=(t.last-t.start)/t.interval+1;if(n.pattern.second==="0"&&i<=A&&sn(t))return null;let o=r===0&&zn(n)&&it(n);return o?x(n,"minute",e)+" for one minute "+On(o,e)+a(n,e):r===0&&n.pattern.second==="0"?X(t,e)+a(n,e):lr(n,r,e)+", "+X(t,e)+a(n,e)}function it(n){let r=c(n,"hour"),e=r.length===1&&r[0];return!e||e.kind!=="step"||e.startToken.indexOf("-")!==-1||!(e.interval in tr)?null:e}function ot(n){return c(n,"hour").some(function(e){return e.kind==="range"})}function ut(n,r){let e=[],t=sr(n);c(n,"hour").forEach(function(s){s.kind==="range"&&e.push(R({continuous:!1,from:+s.bounds[0],throughMinute:0,to:+s.bounds[1]},r))});let i="every hour "+p(e,r),o=t.map(function(s){return l({hour:s,minute:0},r)});return i+ar(o,r)}function vn(n,r,e){return r!==0||!ot(n)||n.pattern.second==="0"?null:zn(n)?x(n,"minute",e)+" for one minute during the "+D(n,{minute:0,second:null},!1,e)+" hours"+a(n,e):lr(n,r,e)+", "+ut(n,e)+a(n,e)}function nn(){return function(r){return""+r}}function mr(n,r){return n>1?function(t){return""+t}:function(t){return g(t,r)}}function nr(n,r){return n.map(mr(n.length,r))}function P(n,r){let e=n.reduce(function(o,u){return u.kind==="range"?o+1:o+(u.kind==="step"?u.fires.length:1)},0),t=mr(e,r);return n.flatMap(function(o){return o.kind==="range"?[t(o.bounds[0])+h(r)+t(o.bounds[1])]:o.kind==="step"?o.fires.map(t):[t(o.value)]})}function w(n,r,e,t){return"at "+p(n,t)+" "+r+"s past the "+e}function Cn(n){return n.replace(/ past the hour$/,"")}function st(n,r,e){return(+n==0||+n==12)&&+r==0&&!(typeof e=="number"&&e>0)}function xn(n){let r=n.filter(function(t){return st(t.hour,t.minute,t.second)});return r.length>0&&r.length<n.length}function yn(n,r){let e=xn(n.map(function(o){return{hour:o,minute:0}})),t=n.map(function(o){return l({hour:o,minute:0,plain:e},r)});return p(t,r)}function at(n){return n.kind==="fires"&&n.fires.length===1}function $(n,r,e,t){return r.kind==="fires"?yn(r.fires,t):D(n,{minute:0,second:null},e,t)}function ct(n){return n.kind==="range"?n.bounds:n.kind==="step"?n.fires:[n.value]}function D(n,r,e,t){let{minute:i,second:o}=r,u=c(n,"hour"),s=xn(u.flatMap(function(S){return ct(S).map(function(on){return{hour:+on,minute:i,second:o}})})),m=[];return u.forEach(function(S){S.kind==="step"?m.push(...S.fires.map(function(on){return l({hour:on,minute:i,second:o,plain:s},t)})):S.kind==="range"?m.push(l({hour:S.bounds[0],minute:i,second:o,plain:s},t)+h(t)+l({hour:S.bounds[1],minute:i,second:o,plain:s},t)):m.push(l({hour:S.value,minute:i,second:o,plain:s},t))}),p(ft(m,u,e),t)}function ft(n,r,e){let t=r.some(function(o){return o.kind==="range"});return!e||!t?n:n.map(function(o,u){return u===0?o:"at "+o})}function dr(n,r,e){if(n.length<=1)return n.join("");if(n.length===2)return n[0]+r+n[1];let t=e.style.serialComma?","+r:r;return n.slice(0,-1).join(", ")+t+n[n.length-1]}function p(n,r){return dr(n," and ",r)}function lt(n,r){return dr(n," or ",r)}var mt={all:"",month:"in ",recurringWeekday:!0,stepDate:"on ",weekday:"on "},Pn={all:"every day",month:"every day in ",recurringWeekday:!1,stepDate:"",weekday:"every "};function a(n,r){if(Y(n,r))return pr(n,r);let e=rn(n,mt,r);return e&&" "+e}function gr(n,r){return Y(n,r)?"":rn(n,Pn,r)+" "}function rn(n,r,e){let t=n.pattern;if(t.date!=="*"&&t.weekday!=="*")return yt(n,e);if(t.date!=="*")return dt(n,r,e);if(t.weekday!=="*"){let i=Mn(t.weekday,e);return i?Sn(i,n,e):r.weekday+Or(n,r.recurringWeekday,e)+yr(n,e)}return t.month!=="*"?r.month+z(n,e):r.all}function dt(n,r,e){let t=n.pattern,i=en(t.date,e);return i?Sn(i,n,e):F(t.date)?Sn(r.stepDate+Sr(t.date),n,e):t.month!=="*"&&!hr(n)?"on the "+kn(n,e)+yr(n,e):t.month!=="*"?"on "+br(n,e):"on the "+kn(n,e)}function hr(n){return!kr(n.pattern.month)&&c(n,"month").every(function(e){return e.kind!=="range"})}function Y(n,r){return n.pattern.date!=="*"&&n.pattern.weekday!=="*"&&!!r.style.untilWindow&&!r.short}function pr(n,r){let e=[...ht(n,r),...pt(n,r)];return" whenever the day is "+lt(e,r)}function gt(n,r){return n.pattern.month==="*"?"":"in "+z(n,r)+" "}function ht(n,r){let e=n.pattern.date,t=en(e,r);if(t)return[t.replace(/^on /,"")];let i=bt(e);if(i)return[i];let o=[];return c(n,"date").forEach(function(s){s.kind==="range"?o.push("from the "+b(s.bounds[0])+h(r)+"the "+b(s.bounds[1])):s.kind==="step"?s.fires.forEach(function(O){o.push("the "+b(O))}):o.push("the "+b(s.value))}),o}function pt(n,r){let e=n.pattern.weekday,t=Mn(e,r);if(t)return[t.replace(/^on /,"")];let i=[];return c(n,"weekday").forEach(function(u){u.kind==="range"&&u.bounds[0]==="1"&&u.bounds[1]==="5"?i.push("a weekday"):u.kind==="range"?i.push("a "+C(u.bounds[0],r)+h(r)+"a "+C(u.bounds[1],r)):u.kind==="step"?u.fires.forEach(function(m){i.push("a "+C(m,r))}):i.push("a "+C(u.value,r))}),i}function bt(n){if(!F(n))return null;let[r,e]=n.split("/");return+e!=2?null:r==="*"||r==="1"?"an odd-numbered day":r==="2"?"an even-numbered day":null}function yt(n,r){let e=n.pattern,t=Mn(e.weekday,r)||"on "+Or(n,!1,r);return e.month!=="*"&&hr(n)&&!en(e.date,r)&&!F(e.date)?"on "+br(n,r)+" or "+t+" in "+z(n,r):St(n,r)+" or "+t+kt(n,r)}function St(n,r){let e=n.pattern,t=en(e.date,r);return t||(F(e.date)?Sr(e.date):"on the "+kn(n,r))}function kt(n,r){return n.pattern.month==="*"?"":", in "+z(n,r)}function en(n,r){if(n==="L")return"on the last day of the month";if(n==="LW"||n==="WL")return"on the last weekday of the month";let e=/^L-(\d{1,2})$/.exec(n);if(e)return g(+e[1],r)+" "+y(e[1],"day")+" before the last day of the month";let t=/^(\d{1,2})W$|^W(\d{1,2})$/.exec(n);if(t)return"on the weekday nearest the "+b(t[1]||t[2])}function Mn(n,r){let e=n.split("#");if(e.length===2)return"on the "+de[+e[1]]+" "+C(e[0],r)+" of the month";if(/L$/.test(n))return"on the last "+C(n.slice(0,-1),r)+" of the month"}function br(n,r){let e=z(n,r),t=tn(c(n,"date"),r.style.ordinals?b:Ot,r);return r.style.dayFirst&&n.shapes.date==="single"&&n.shapes.month!=="single"?"the "+b(n.pattern.date)+" of "+e:r.style.dayFirst?t+" "+e:e+" "+t}function Ot(n){return""+n}function yr(n,r){return n.pattern.month==="*"?"":" in "+z(n,r)}function Sn(n,r,e){if(r.pattern.month==="*")return n;let t=n.indexOf(" of the month")!==-1;return t&&r.shapes.month==="range"?n.replace(" of the month"," of each month")+" from "+z(r,e):t&&(r.shapes.month==="single"||r.shapes.month==="step")?n.replace(" of the month","")+" in "+z(r,e):n+" in "+z(r,e)}function Sr(n){let r=n.split("/"),e=+r[1],t=r[0],o=(e===2?"every other":"every "+b(e))+" day of the month";return t!=="*"&&t!=="1"&&(o+=" from the "+b(t)),o}function kn(n,r){return tn(c(n,"date"),b,r)}function z(n,r){let e=kr(n.pattern.month);return e||tn(c(n,"month"),function(i){return Ct(i,r)},r)}function kr(n){if(!F(n))return null;let[r,e]=n.split("/");return+e!=2?null:r==="*"||r==="1"?"every odd-numbered month":r==="2"?"every even-numbered month":null}function Or(n,r,e){let t=In(c(n,"weekday")),i=t.some(function(s){return s.kind==="range"});return tn(t,r&&!i?function(s){return Nt(s,e)}:function(s){return C(s,e)},e)}function Nt(n,r){let e=C(n,r);return r.short?e:e+"s"}function tn(n,r,e){let t=[];return n.forEach(function(o){o.kind==="step"?t.push(...o.fires.map(r)):o.kind==="range"?t.push(o.bounds.map(r).join(h(e))):t.push(r(o.value))}),p(t,e)}function rr(n,r,e){let t=r.pattern.year;if(t==="*")return n;if(t.indexOf("/")!==-1)return n+", "+wt(t,e);let i=zt(t,e);if(t.indexOf("-")===-1&&t.indexOf(",")===-1&&r.pattern.date!=="*"&&n.indexOf(" at ")!==-1){let o=e.style.dayFirst?" ":", ";return n.replace(" at ",o+i+" at ")}return n+" in "+i}function zt(n,r){return n.indexOf(",")!==-1?p(n.split(","),r):n.indexOf("-")!==-1?n.split("-").join(h(r)):n}function wt(n,r){let e=n.split("/"),t=+e[1],i=e[0];if(t<=1)return"every year";let o=t===2?"every other year":"every "+g(t,r)+" years";return i!=="*"&&i!=="0"&&(o+=" from "+i),o}function l(n,r){let{hour:e,minute:t,plain:i,explicit:o}=n,u=typeof n.second=="number"&&n.second>0?n.second:0;return r.ampm?vt({hour:e,minute:t,second:u,plain:i,explicit:o},r):gn({hour:e,minute:t,second:u},{pad:!0,sep:r.style.sep})}function vt(n,r){let{hour:e,minute:t,second:i,plain:o,explicit:u}=n,s=r.style;if(!o&&!u&&+t==0&&!i){if(+e==0)return s.midnight;if(+e==12)return s.midday}return gn({hour:e%12||12,minute:t,second:i},{lean:!u,sep:s.sep})+(s.closeUp?"":" ")+(e<12?s.am:s.pm)}function g(n,r){return Xn(n,fe,r)}function y(n,r){return+n==1?r:r+"s"}function h(n){return n.short?"-":n.style.through}function b(n){let r=Math.abs(n),e=pn[r];return e||(r=(r%100-20)%10,e=pn[r]||pn[0]),n+e}function Ct(n,r){let e=le[+n];return e&&e[r.short?1:0]}function C(n,r){let e=n===7||n==="7"?0:n,t=v[e]||me[e];return t&&t[r.short?1:0]}var xt={describe:he,fallback:"an unrecognizable cron pattern",options:ge,reboot:"at system startup",sentence:n=>"Runs "+n+(n.endsWith(".")?"":".")},Nr=xt;/**
2
2
  * @license MIT, Copyright (c) 2026 Andrew Brož
3
- */function Mn(n,r){let e=r&&r.lang||Nr,t=e.options(r);if(!t.lenient)return zr(wr(n,e,t),e,r);try{return zr(wr(n,e,t),e,r)}catch{return e.fallback}}function zr(n,r,e){return e&&e.sentence?r.sentence(n):n}function wr(n,r,e){if(typeof n=="string"&&n.trim().toLowerCase()==="@reboot")return r.reboot;let t=Yn(Bn(n,e)),i=r.plan?r.plan(t,t.plan):t.plan;return r.describe({...t,plan:i},e)}function Ct(n,r){return Mn(n,{...r,sentence:!0})}function xt(n,r){return Mn(n,{...r,sentence:!1})}var Pt=Object.assign(Mn,{sentence:Ct,fragment:xt}),Fn=Pt;typeof globalThis<"u"&&Object.assign(globalThis,{cronli5:Fn});var Oi=Fn;})();
3
+ */function Tn(n,r){let e=r&&r.lang||Nr,t=e.options(r);if(!t.lenient)return zr(wr(n,e,t),e,r);try{return zr(wr(n,e,t),e,r)}catch{return e.fallback}}function zr(n,r,e){return e&&e.sentence?r.sentence(n):n}function wr(n,r,e){if(typeof n=="string"&&n.trim().toLowerCase()==="@reboot")return r.reboot;let t=Yn(Bn(n,e)),i=r.plan?r.plan(t,t.plan):t.plan;return r.describe({...t,plan:i},e)}function Pt(n,r){return Tn(n,{...r,sentence:!0})}function Mt(n,r){return Tn(n,{...r,sentence:!1})}var Tt=Object.assign(Tn,{sentence:Pt,fragment:Mt}),Fn=Tt;typeof globalThis<"u"&&Object.assign(globalThis,{cronli5:Fn});var zi=Fn;})();
package/dist/cronli5.cjs CHANGED
@@ -1560,9 +1560,27 @@ function outlierTail(times, opts) {
1560
1560
  function isCadenceField(token) {
1561
1561
  return token === "*" || token.startsWith("*/") && token.indexOf("-") === -1;
1562
1562
  }
1563
+ function secondLeadsCadence(schedule) {
1564
+ if (isCadenceField(schedule.pattern.second)) {
1565
+ return true;
1566
+ }
1567
+ if (schedule.shapes.second !== "step") {
1568
+ return false;
1569
+ }
1570
+ return isOpenStep(schedule.pattern.second);
1571
+ }
1572
+ function secondLeadsClockPoint(schedule) {
1573
+ if (schedule.plan.kind !== "composeSeconds" && schedule.plan.kind !== "secondsWithinMinute") {
1574
+ return false;
1575
+ }
1576
+ const { second, minute, hour } = schedule.shapes;
1577
+ const clockPoint = second === "single" || second === "range" || second === "list";
1578
+ const minuteRestricted = minute !== "wildcard";
1579
+ return clockPoint && minuteRestricted && hour === "wildcard" && !(second === "single" && minute === "single");
1580
+ }
1563
1581
  function leadingCadence(schedule, opts) {
1564
1582
  const { second, minute } = schedule.pattern;
1565
- if (isCadenceField(second)) {
1583
+ if (secondLeadsCadence(schedule) || secondLeadsClockPoint(schedule)) {
1566
1584
  return { secondLead: true, text: secondsClause(schedule, "minute", opts) };
1567
1585
  }
1568
1586
  if (second === "0" && isCadenceField(minute)) {
@@ -1593,14 +1611,14 @@ function minuteConfinement(schedule, opts) {
1593
1611
  }
1594
1612
  const segments = segmentsOf(schedule, "minute");
1595
1613
  if (schedule.shapes.minute === "single") {
1596
- return " during minute :" + pad(minute);
1614
+ return " during minute " + Number(minute);
1597
1615
  }
1598
1616
  if (schedule.shapes.minute === "range") {
1599
1617
  const bounds = minute.split("-");
1600
- return " during minutes :" + pad(bounds[0]) + through(opts) + ":" + pad(bounds[1]);
1618
+ return " during minutes " + Number(bounds[0]) + through(opts) + Number(bounds[1]);
1601
1619
  }
1602
- const values = segmentWords(segments, opts).map(function colon(word) {
1603
- return ":" + pad(word);
1620
+ const values = segmentWords(segments, opts).map(function plain(word) {
1621
+ return String(Number(word));
1604
1622
  });
1605
1623
  return " during minutes " + joinList(values, opts);
1606
1624
  }
package/dist/cronli5.js CHANGED
@@ -1534,9 +1534,27 @@ function outlierTail(times, opts) {
1534
1534
  function isCadenceField(token) {
1535
1535
  return token === "*" || token.startsWith("*/") && token.indexOf("-") === -1;
1536
1536
  }
1537
+ function secondLeadsCadence(schedule) {
1538
+ if (isCadenceField(schedule.pattern.second)) {
1539
+ return true;
1540
+ }
1541
+ if (schedule.shapes.second !== "step") {
1542
+ return false;
1543
+ }
1544
+ return isOpenStep(schedule.pattern.second);
1545
+ }
1546
+ function secondLeadsClockPoint(schedule) {
1547
+ if (schedule.plan.kind !== "composeSeconds" && schedule.plan.kind !== "secondsWithinMinute") {
1548
+ return false;
1549
+ }
1550
+ const { second, minute, hour } = schedule.shapes;
1551
+ const clockPoint = second === "single" || second === "range" || second === "list";
1552
+ const minuteRestricted = minute !== "wildcard";
1553
+ return clockPoint && minuteRestricted && hour === "wildcard" && !(second === "single" && minute === "single");
1554
+ }
1537
1555
  function leadingCadence(schedule, opts) {
1538
1556
  const { second, minute } = schedule.pattern;
1539
- if (isCadenceField(second)) {
1557
+ if (secondLeadsCadence(schedule) || secondLeadsClockPoint(schedule)) {
1540
1558
  return { secondLead: true, text: secondsClause(schedule, "minute", opts) };
1541
1559
  }
1542
1560
  if (second === "0" && isCadenceField(minute)) {
@@ -1567,14 +1585,14 @@ function minuteConfinement(schedule, opts) {
1567
1585
  }
1568
1586
  const segments = segmentsOf(schedule, "minute");
1569
1587
  if (schedule.shapes.minute === "single") {
1570
- return " during minute :" + pad(minute);
1588
+ return " during minute " + Number(minute);
1571
1589
  }
1572
1590
  if (schedule.shapes.minute === "range") {
1573
1591
  const bounds = minute.split("-");
1574
- return " during minutes :" + pad(bounds[0]) + through(opts) + ":" + pad(bounds[1]);
1592
+ return " during minutes " + Number(bounds[0]) + through(opts) + Number(bounds[1]);
1575
1593
  }
1576
- const values = segmentWords(segments, opts).map(function colon(word) {
1577
- return ":" + pad(word);
1594
+ const values = segmentWords(segments, opts).map(function plain(word) {
1595
+ return String(Number(word));
1578
1596
  });
1579
1597
  return " during minutes " + joinList(values, opts);
1580
1598
  }
package/dist/lang/de.cjs CHANGED
@@ -544,7 +544,10 @@ function renderSecondsWithinMinute(schedule, plan) {
544
544
  if (plan.singleSecond) {
545
545
  return "in Minute " + schedule.pattern.minute + " und Sekunde " + schedule.pattern.second + " jeder Stunde";
546
546
  }
547
- return secondsLead(schedule) + ", in Minute " + schedule.pattern.minute + " jeder Stunde";
547
+ if (secondsConfinesMinute(schedule)) {
548
+ return secondsLead(schedule) + " " + confinedMinutePhrase(schedule);
549
+ }
550
+ return secondsLead(schedule) + " in Minute " + schedule.pattern.minute + " jeder Stunde";
548
551
  }
549
552
  function wholeHour(hour) {
550
553
  if (hour === 0) {
@@ -591,6 +594,45 @@ function minuteStepConfinement(schedule, stride) {
591
594
  function isSteppedMinuteSeconds(schedule, plan) {
592
595
  return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
593
596
  }
597
+ function confinedMinutePhrase(schedule) {
598
+ const stride = minuteStride(schedule);
599
+ if (stride && schedule.pattern.minute !== "*/2") {
600
+ const ordinal = minuteStepOrdinals[stride.interval];
601
+ const head = ordinal ? "jeder " + ordinal + " Minute" : "alle " + stride.interval + " Minuten";
602
+ const tail = renderStride({ ...stride, cycle: 60 }, {
603
+ bare: () => "",
604
+ offset: () => " ab Minute " + stride.start,
605
+ bounded: () => " von Minute " + stride.start + " bis " + stride.last
606
+ });
607
+ return head + tail + " jeder Stunde";
608
+ }
609
+ const genitive = schedule.shapes.minute === "single" ? "der Minute " + schedule.pattern.minute : "der Minuten " + joinList(fieldValues(schedule, "minute"));
610
+ return genitive + " jeder Stunde";
611
+ }
612
+ function minuteConfinementRender(plan, schedule) {
613
+ if (isSteppedMinuteSeconds(schedule, plan)) {
614
+ return minuteStepConfinement(schedule, minuteStride(schedule));
615
+ }
616
+ const minuteRest = plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes" || plan.rest.kind === "rangeOfMinutes";
617
+ if (minuteRest && secondsConfinesMinute(schedule)) {
618
+ return secondsLead(schedule) + " " + confinedMinutePhrase(schedule);
619
+ }
620
+ return null;
621
+ }
622
+ function secondsConfinesMinute(schedule) {
623
+ const { second, minute, hour } = schedule.shapes;
624
+ if (second === "list") {
625
+ const values = singleValues(segmentsOf(schedule, "second"));
626
+ if (values && arithmeticStep(values)) {
627
+ return false;
628
+ }
629
+ }
630
+ const clockPoint = second === "single" || second === "range" || second === "list";
631
+ return clockPoint && minute !== "wildcard" && hour === "wildcard" && !(second === "single" && minute === "single");
632
+ }
633
+ function isLocativeMinuteConfinement(schedule, plan) {
634
+ return (plan.rest.kind === "multipleMinutes" || plan.rest.kind === "singleMinute") && schedule.shapes.hour === "wildcard";
635
+ }
594
636
  function renderComposeSeconds(schedule, plan, opts) {
595
637
  if ((plan.rest.kind === "clockTimes" || plan.rest.kind === "compactClockTimes") && schedule.shapes.minute === "single") {
596
638
  const minute = +schedule.pattern.minute;
@@ -602,12 +644,16 @@ function renderComposeSeconds(schedule, plan, opts) {
602
644
  if (composeSingleMinute(schedule, plan)) {
603
645
  return secondsLead(schedule) + " " + clockMinuteGenitive(plan.rest.times, opts.style.sep);
604
646
  }
605
- if (isSteppedMinuteSeconds(schedule, plan)) {
606
- return minuteStepConfinement(schedule, minuteStride(schedule));
647
+ const confined = minuteConfinementRender(plan, schedule);
648
+ if (confined !== null) {
649
+ return confined;
607
650
  }
608
651
  if (isEveryOtherMinuteSeconds(schedule, plan)) {
609
652
  return secondsLead(schedule) + " jeder zweiten Minute";
610
653
  }
654
+ if (isLocativeMinuteConfinement(schedule, plan)) {
655
+ return secondsLead(schedule) + " " + render(schedule, plan.rest, opts);
656
+ }
611
657
  const restOwnsLead = plan.rest.kind === "compactClockTimes" && schedule.analyses.clockSecond;
612
658
  const lead = restOwnsLead ? "" : secondsLead(schedule) + ", ";
613
659
  return lead + render(schedule, plan.rest, opts);
package/dist/lang/de.js CHANGED
@@ -518,7 +518,10 @@ function renderSecondsWithinMinute(schedule, plan) {
518
518
  if (plan.singleSecond) {
519
519
  return "in Minute " + schedule.pattern.minute + " und Sekunde " + schedule.pattern.second + " jeder Stunde";
520
520
  }
521
- return secondsLead(schedule) + ", in Minute " + schedule.pattern.minute + " jeder Stunde";
521
+ if (secondsConfinesMinute(schedule)) {
522
+ return secondsLead(schedule) + " " + confinedMinutePhrase(schedule);
523
+ }
524
+ return secondsLead(schedule) + " in Minute " + schedule.pattern.minute + " jeder Stunde";
522
525
  }
523
526
  function wholeHour(hour) {
524
527
  if (hour === 0) {
@@ -565,6 +568,45 @@ function minuteStepConfinement(schedule, stride) {
565
568
  function isSteppedMinuteSeconds(schedule, plan) {
566
569
  return (plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes") && (schedule.shapes.second === "wildcard" || schedule.shapes.second === "step") && schedule.shapes.hour === "wildcard" && schedule.pattern.minute !== "*/2" && minuteStride(schedule) !== null;
567
570
  }
571
+ function confinedMinutePhrase(schedule) {
572
+ const stride = minuteStride(schedule);
573
+ if (stride && schedule.pattern.minute !== "*/2") {
574
+ const ordinal = minuteStepOrdinals[stride.interval];
575
+ const head = ordinal ? "jeder " + ordinal + " Minute" : "alle " + stride.interval + " Minuten";
576
+ const tail = renderStride({ ...stride, cycle: 60 }, {
577
+ bare: () => "",
578
+ offset: () => " ab Minute " + stride.start,
579
+ bounded: () => " von Minute " + stride.start + " bis " + stride.last
580
+ });
581
+ return head + tail + " jeder Stunde";
582
+ }
583
+ const genitive = schedule.shapes.minute === "single" ? "der Minute " + schedule.pattern.minute : "der Minuten " + joinList(fieldValues(schedule, "minute"));
584
+ return genitive + " jeder Stunde";
585
+ }
586
+ function minuteConfinementRender(plan, schedule) {
587
+ if (isSteppedMinuteSeconds(schedule, plan)) {
588
+ return minuteStepConfinement(schedule, minuteStride(schedule));
589
+ }
590
+ const minuteRest = plan.rest.kind === "minuteFrequency" || plan.rest.kind === "multipleMinutes" || plan.rest.kind === "rangeOfMinutes";
591
+ if (minuteRest && secondsConfinesMinute(schedule)) {
592
+ return secondsLead(schedule) + " " + confinedMinutePhrase(schedule);
593
+ }
594
+ return null;
595
+ }
596
+ function secondsConfinesMinute(schedule) {
597
+ const { second, minute, hour } = schedule.shapes;
598
+ if (second === "list") {
599
+ const values = singleValues(segmentsOf(schedule, "second"));
600
+ if (values && arithmeticStep(values)) {
601
+ return false;
602
+ }
603
+ }
604
+ const clockPoint = second === "single" || second === "range" || second === "list";
605
+ return clockPoint && minute !== "wildcard" && hour === "wildcard" && !(second === "single" && minute === "single");
606
+ }
607
+ function isLocativeMinuteConfinement(schedule, plan) {
608
+ return (plan.rest.kind === "multipleMinutes" || plan.rest.kind === "singleMinute") && schedule.shapes.hour === "wildcard";
609
+ }
568
610
  function renderComposeSeconds(schedule, plan, opts) {
569
611
  if ((plan.rest.kind === "clockTimes" || plan.rest.kind === "compactClockTimes") && schedule.shapes.minute === "single") {
570
612
  const minute = +schedule.pattern.minute;
@@ -576,12 +618,16 @@ function renderComposeSeconds(schedule, plan, opts) {
576
618
  if (composeSingleMinute(schedule, plan)) {
577
619
  return secondsLead(schedule) + " " + clockMinuteGenitive(plan.rest.times, opts.style.sep);
578
620
  }
579
- if (isSteppedMinuteSeconds(schedule, plan)) {
580
- return minuteStepConfinement(schedule, minuteStride(schedule));
621
+ const confined = minuteConfinementRender(plan, schedule);
622
+ if (confined !== null) {
623
+ return confined;
581
624
  }
582
625
  if (isEveryOtherMinuteSeconds(schedule, plan)) {
583
626
  return secondsLead(schedule) + " jeder zweiten Minute";
584
627
  }
628
+ if (isLocativeMinuteConfinement(schedule, plan)) {
629
+ return secondsLead(schedule) + " " + render(schedule, plan.rest, opts);
630
+ }
585
631
  const restOwnsLead = plan.rest.kind === "compactClockTimes" && schedule.analyses.clockSecond;
586
632
  const lead = restOwnsLead ? "" : secondsLead(schedule) + ", ";
587
633
  return lead + render(schedule, plan.rest, opts);
package/dist/lang/en.cjs CHANGED
@@ -741,9 +741,27 @@ function outlierTail(times, opts) {
741
741
  function isCadenceField(token) {
742
742
  return token === "*" || token.startsWith("*/") && token.indexOf("-") === -1;
743
743
  }
744
+ function secondLeadsCadence(schedule) {
745
+ if (isCadenceField(schedule.pattern.second)) {
746
+ return true;
747
+ }
748
+ if (schedule.shapes.second !== "step") {
749
+ return false;
750
+ }
751
+ return isOpenStep(schedule.pattern.second);
752
+ }
753
+ function secondLeadsClockPoint(schedule) {
754
+ if (schedule.plan.kind !== "composeSeconds" && schedule.plan.kind !== "secondsWithinMinute") {
755
+ return false;
756
+ }
757
+ const { second, minute, hour } = schedule.shapes;
758
+ const clockPoint = second === "single" || second === "range" || second === "list";
759
+ const minuteRestricted = minute !== "wildcard";
760
+ return clockPoint && minuteRestricted && hour === "wildcard" && !(second === "single" && minute === "single");
761
+ }
744
762
  function leadingCadence(schedule, opts) {
745
763
  const { second, minute } = schedule.pattern;
746
- if (isCadenceField(second)) {
764
+ if (secondLeadsCadence(schedule) || secondLeadsClockPoint(schedule)) {
747
765
  return { secondLead: true, text: secondsClause(schedule, "minute", opts) };
748
766
  }
749
767
  if (second === "0" && isCadenceField(minute)) {
@@ -774,14 +792,14 @@ function minuteConfinement(schedule, opts) {
774
792
  }
775
793
  const segments = segmentsOf(schedule, "minute");
776
794
  if (schedule.shapes.minute === "single") {
777
- return " during minute :" + pad(minute);
795
+ return " during minute " + Number(minute);
778
796
  }
779
797
  if (schedule.shapes.minute === "range") {
780
798
  const bounds = minute.split("-");
781
- return " during minutes :" + pad(bounds[0]) + through(opts) + ":" + pad(bounds[1]);
799
+ return " during minutes " + Number(bounds[0]) + through(opts) + Number(bounds[1]);
782
800
  }
783
- const values = segmentWords(segments, opts).map(function colon(word) {
784
- return ":" + pad(word);
801
+ const values = segmentWords(segments, opts).map(function plain(word) {
802
+ return String(Number(word));
785
803
  });
786
804
  return " during minutes " + joinList(values, opts);
787
805
  }
package/dist/lang/en.js CHANGED
@@ -715,9 +715,27 @@ function outlierTail(times, opts) {
715
715
  function isCadenceField(token) {
716
716
  return token === "*" || token.startsWith("*/") && token.indexOf("-") === -1;
717
717
  }
718
+ function secondLeadsCadence(schedule) {
719
+ if (isCadenceField(schedule.pattern.second)) {
720
+ return true;
721
+ }
722
+ if (schedule.shapes.second !== "step") {
723
+ return false;
724
+ }
725
+ return isOpenStep(schedule.pattern.second);
726
+ }
727
+ function secondLeadsClockPoint(schedule) {
728
+ if (schedule.plan.kind !== "composeSeconds" && schedule.plan.kind !== "secondsWithinMinute") {
729
+ return false;
730
+ }
731
+ const { second, minute, hour } = schedule.shapes;
732
+ const clockPoint = second === "single" || second === "range" || second === "list";
733
+ const minuteRestricted = minute !== "wildcard";
734
+ return clockPoint && minuteRestricted && hour === "wildcard" && !(second === "single" && minute === "single");
735
+ }
718
736
  function leadingCadence(schedule, opts) {
719
737
  const { second, minute } = schedule.pattern;
720
- if (isCadenceField(second)) {
738
+ if (secondLeadsCadence(schedule) || secondLeadsClockPoint(schedule)) {
721
739
  return { secondLead: true, text: secondsClause(schedule, "minute", opts) };
722
740
  }
723
741
  if (second === "0" && isCadenceField(minute)) {
@@ -748,14 +766,14 @@ function minuteConfinement(schedule, opts) {
748
766
  }
749
767
  const segments = segmentsOf(schedule, "minute");
750
768
  if (schedule.shapes.minute === "single") {
751
- return " during minute :" + pad(minute);
769
+ return " during minute " + Number(minute);
752
770
  }
753
771
  if (schedule.shapes.minute === "range") {
754
772
  const bounds = minute.split("-");
755
- return " during minutes :" + pad(bounds[0]) + through(opts) + ":" + pad(bounds[1]);
773
+ return " during minutes " + Number(bounds[0]) + through(opts) + Number(bounds[1]);
756
774
  }
757
- const values = segmentWords(segments, opts).map(function colon(word) {
758
- return ":" + pad(word);
775
+ const values = segmentWords(segments, opts).map(function plain(word) {
776
+ return String(Number(word));
759
777
  });
760
778
  return " during minutes " + joinList(values, opts);
761
779
  }