cronli5 0.8.3 → 0.8.5

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,53 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.5]
10
+
11
+ Blind per-language Claude Sonnet panels reviewed the seconds-within-minute
12
+ confinement forms (the non-English mirrors added in 0.8.3–0.8.4).
13
+
14
+ ### Fixed
15
+
16
+ - **French & Portuguese: a minute step inside the seconds confinement no longer
17
+ reads as a single minute.** It rendered a stepped minute with an ordinal — fr
18
+ "à la sixième minute", pt "no sexto minuto" — which a native reads as one
19
+ minute (the 10th), not every sixth. It now uses the same cardinal cadence the
20
+ standalone already used: fr "…toutes les six minutes à partir de la minute 4…",
21
+ pt "…a cada seis minutos a partir do minuto 4…".
22
+
23
+ ### Changed
24
+
25
+ - **Chinese: a clean seconds step is no longer spelled out.** Under a minute
26
+ confinement, `0/6` now reads "每6秒" (mirroring "每6分钟") instead of listing
27
+ "第0、6、…、54秒".
28
+ - **Spanish & German: dropped the comma** before the locative minute phrase in
29
+ the seconds confinement ("cada segundo en los minutos…", "jede Sekunde in den
30
+ Minuten…"). The locative-vs-genitive preposition split is correct grammar and
31
+ is unchanged. Finnish is unchanged pending a dedicated redesign (see backlog).
32
+
33
+ ## [0.8.4]
34
+
35
+ ### Fixed
36
+
37
+ - **Seconds combined with a minute restriction now confine instead of
38
+ juxtaposing.** A seconds clause beside a minute restriction used to be joined
39
+ by a comma — which reads as two independent schedules — in two places:
40
+ - **English: a seconds *step*** (`0/6`, `*/6`, `5/6`) juxtaposed ("every six
41
+ seconds, every six minutes from four minutes past the hour") while the
42
+ seconds wildcard already confined. English now confines any seconds step:
43
+ "every six seconds during every sixth minute from four minutes past the
44
+ hour" — matching the other six languages.
45
+ - **All languages: a seconds *list, range, or single value*** under a minute
46
+ restriction (`5,10,15 4/6`, `30 4/6`, `0-30 4/6`, `5,10,15 0,15,30`)
47
+ juxtaposed; a blind panel of Claude Sonnet instances confirmed the comma
48
+ reads as two schedules. Each language now confines it — e.g. English "at 5,
49
+ 10, and 15 seconds past the minute during every sixth minute from four
50
+ minutes past the hour".
51
+
52
+ English and Chinese are now uniform across the whole seconds × minute surface
53
+ (wildcard, step, offset-step, list, range, single); a remaining es/de/fi/fr/pt
54
+ connector nuance under a minute list is tracked for native review.
55
+
9
56
  ## [0.8.3]
10
57
 
11
58
  ### 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}},T=["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 f(n,r){return(""+n).indexOf(r)!==-1}function Z(n){return Array.from(new Set(n))}function L(n){return/^\d+$/.test(n)}function d(n,r){return L(n)?+n:r[n.toUpperCase()]}function Hn(n){return T.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){Mr(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 E(n.slice(0,-1),r);let e=n.split("#");return e.length===2?E(e[0],r)&&/^[1-5]$/.test(e[1]):!1}function Mr(n,r){return f(n,"/")?Tr(n,r):f(n,"-")?Ln(n,r):E(n,r)}function Tr(n,r){let e=n.split("/");return e.length!==2||!L(e[1])||+e[1]<1?!1:e[0]==="*"||E(e[0],r)||Ln(e[0],r,!0)}function Ln(n,r,e){let t=n.split("-");return t.length!==2||!E(t[0],r)||!E(t[1],r)?!1:r.cyclic&&!e?!0:d(t[0],r.numbers)<=d(t[1],r.numbers)}function E(n,r){return n==="*"?!1:L(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){T.forEach(function(e){let t=N[e].aliases,i=t&&t[""+n[e]];i&&(n[e]=i)})}function Dn(n){return T.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,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(!L(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 c(n,r){return n.analyses.segments[r]??[]}function k(n,r){return c(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!=="*"&&!f(n,",")&&!f(n,"-")&&!f(n,"/")}function cn(n){return f(n,"-")&&!f(n,",")&&!f(n,"/")}function Yr(n){return f(n,"/")&&!f(n,",")}function fn(n){return n!=="*"&&!f(n,"-")&&!f(n,"/")}function ln(n){return n!=="*"&&!cn(n)&&!Yr(n)}function W(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(f(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(f(o,"/"))t.push(...Kn(o,r,e));else if(f(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 fn(n)?n.split(",").map(Number):[0]}function Zr(n){if(n==="*")return[0,59];if(cn(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":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={};T.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"&&fn(n.minute)&&ln(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 mn(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==="*"?mn(n.hour)?{form:"wildcard",kind:"minuteSpanAcrossHourStep"}:{form:"wildcard",kind:"minutesAcrossHours",times:$(n.hour)}:r.minute==="range"?{form:"range",kind:"minuteSpanAcrossHourStep"}:r.minute==="list"&&mn(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"?mn(n.hour)?{kind:"step"}:{kind:"during",times:$(n.hour)}:{kind:"none"}}function ue(n,r){return ln(n.hour)?n.minute==="*"?{form:"wildcard",kind:"minutesAcrossHours",times:$(n.hour)}:r.minute==="range"||r.minute==="list"&&f(n.minute,"-")&&!f(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"}: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=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 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"]],C=[["Sunday","Sun"],["Monday","Mon"],["Tuesday","Tue"],["Wednesday","Wed"],["Thursday","Thu"],["Friday","Fri"],["Saturday","Sat"]],me={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=et(n,r)??er(n,n.plan,r),i=G(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"||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=c(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):H(c(n,"minute"),"minute","hour",r)??w(M(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=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 l({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 l({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:H(c(n,"second"),"second",r,e)??w(M(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 K(n.pattern.minute,e)+a(n,e)}function We(n,r,e){return(H(c(n,"minute"),"minute","hour",e)??w(M(c(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 "+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=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):at(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=H(c(n,"minute"),"minute","hour",e)??w(M(c(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(c(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 "+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"?H(c(n,"minute"),"minute","hour",e)??w(M(c(n,"minute"),e),"minute","hour",e):K(n.pattern.minute,e)),o=Y(n,e);return i+", "+(o??fr(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":H(c(n,"minute"),"minute","hour",r)??w(M(c(n,"minute"),r),"minute","hour",r)}function Qe(n,r,e){let t=Y(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 A(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 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 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 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(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 "+R(n,m,!0,e)+ur(n,e)}let t=H(c(n,"minute"),"minute","hour",e)??w(M(c(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(m){return l({hour:m,minute:t},e)});return c(n,"hour").forEach(function(m){m.kind==="range"&&i.push(A({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 j(n){return n==="*"||n.startsWith("*/")&&n.indexOf("-")===-1}function Ye(n){return j(n.pattern.second)?!0:n.shapes.second!=="step"?!1:W(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:P(n,"minute",r)}:e==="0"&&j(t)?{secondLead:!1,text:t==="*"?"every minute":nn(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 :"+v(e);if(n.shapes.minute==="range"){let u=e.split("-");return" during minutes :"+v(u[0])+h(r)+":"+v(u[1])}let o=M(i,r).map(function(s){return":"+v(s)});return" during minutes "+p(o,r)}function Xe(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 "+l({hour:t,minute:0},r)+" until "+l({hour:(t+1)%24,minute:0},r):n.pattern.minute!=="*"&&!j(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" "+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 _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=V(c(n,"minute"));return r!==null&&B(r)!==null}function rt(n,r){let{minute:e,hour:t}=n.pattern,i=j(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 X({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=rn();return m+" from "+O(t)+h(r)+O(i)+" "+y(i,u)+" past the "+s}})}function H(n,r,e,t){let i=V(n),o=i&&B(i);return o?cr({...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):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 _(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 "+l({hour:e,minute:0},r),bounded:()=>o+" from "+l({hour:e,minute:0},r)+h(r)+l({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=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=V(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)?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)&&it(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):lr(n,r,e)+", "+_(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(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 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)?P(n,"minute",e)+" for one minute during the "+R(n,{minute:0,second:null},!1,e)+" hours"+a(n,e):lr(n,r,e)+", "+ut(n,e)+a(n,e)}function rn(){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 M(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 J(n,r,e,t){return r.kind==="fires"?yn(r.fires,t):R(n,{minute:0,second:null},e,t)}function ct(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=c(n,"hour"),s=xn(u.flatMap(function(S){return ct(S).map(function(un){return{hour:+un,minute:i,second:o}})})),m=[];return u.forEach(function(S){S.kind==="step"?m.push(...S.fires.map(function(un){return l({hour:un,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(G(n,r))return pr(n,r);let e=en(n,mt,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 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=tn(t.date,e);return i?Sn(i,n,e):W(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 G(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=tn(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 "+x(u.bounds[0],r)+h(r)+"a "+x(u.bounds[1],r)):u.kind==="step"?u.fires.forEach(function(m){i.push("a "+x(m,r))}):i.push("a "+x(u.value,r))}),i}function bt(n){if(!W(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)&&!tn(e.date,r)&&!W(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=tn(e.date,r);return t||(W(e.date)?Sr(e.date):"on the "+kn(n,r))}function kt(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 Mn(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(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 on(c(n,"date"),b,r)}function z(n,r){let e=kr(n.pattern.month);return e||on(c(n,"month"),function(i){return Ct(i,r)},r)}function kr(n){if(!W(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 on(t,r&&!i?function(s){return Nt(s,e)}:function(s){return x(s,e)},e)}function Nt(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+", "+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 x(n,r){let e=n===7||n==="7"?0:n,t=C[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)) {
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)) {
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)) {
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)) {