qrono 1.0.3 → 1.0.4
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/dist/qrono.cjs +1 -1
- package/dist/qrono.cjs.map +1 -1
- package/dist/qrono.js +56 -56
- package/dist/qrono.js.map +1 -1
- package/dist/qrono.min.js +1 -1
- package/dist/qrono.min.js.map +1 -1
- package/package.json +1 -1
- package/src/qrono.js +4 -6
package/dist/qrono.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var _=Object.defineProperty;var W=Object.getOwnPropertySymbols;var K=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var k=(t,e,n)=>e in t?_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,N=(t,e)=>{for(var n in e||(e={}))K.call(e,n)&&k(t,n,e[n]);if(W)for(var n of W(e))tt.call(e,n)&&k(t,n,e[n]);return t};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const et=new Date(1915,0,1,12,0,0,0),M=7,x=24,b=60,E=b*x,L=60,nt=L*b,it=nt*x,B=1e3,ot=L*B,$=it*B,z=1,Q=2,U=3,T=4,Z=5,q=6,V=7;function w(t,...e){return e.flat().some(t.hasOwnProperty,t)}function F(t){return Object.entries(t).filter(([,e])=>!rt(e)).map(([e])=>e)}function p(t){return t!==void 0}function rt(t){return t instanceof Function}function st(t){return typeof t=="string"||t instanceof String}function Y(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function G(t){return!isNaN(t.getTime())}function A(t){return w(t,["year","month","day","hour","minute","second","millisecond"])}function C(t,e){const n=e.getTime(),c=new Date(n);if(t)return c;const a=new Date(n);a.setDate(e.getDate()+1);const o=new Date(n);o.setDate(e.getDate()-1);const u=a.getTimezoneOffset()-o.getTimezoneOffset();if(u===0)return c;const y=new Date(n).setMinutes(e.getMinutes()+u),d=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return y===d||y===n?c:new Date(d)}const v=i;i.date=r;const g={localtime:!1,interpretAsDst:!0};F(g).forEach(t=>{i[t]=function(e){return p(e)?(g[t]=e,this):g[t]}});i.context=function(t){return p(t)?(F(g).filter(e=>w(t,e)).forEach(e=>{g[e]=t[e]}),this):N({},g)};i.asUtc=function(){return g.localtime=!1,this};i.asLocaltime=function(){return g.localtime=!0,this};Object.assign(i,{monday:z,tuesday:Q,wednesday:U,thursday:T,friday:Z,saturday:q,sunday:V});const s=Symbol("Qrono.internal");function i(...t){var a;if(!new.target)return new i(...t);const e=this[s]={nativeDate:null,localtime:!1,interpretAsDst:!1,set:ht,parse:lt,valid:at,context:ut,getNative:ct};if(e.context(g),t[0]instanceof i){const o=t.shift();F(e).forEach(u=>{e[u]=o[u]()})}Y(t[0])&&!A(t[0])&&e.context(t.shift());const n=t[0],c=t[1];if(n==null)(a=e.nativeDate)!=null||(e.nativeDate=new Date);else if(n instanceof Date)e.nativeDate=new Date(n.getTime());else if(st(n))e.parse(n);else if(Y(n)){if(!A(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");e.set(n)}else if(Number.isFinite(n)&&!Number.isFinite(c))e.nativeDate=new Date(n);else if(Number.isFinite(n)||Array.isArray(n)){const o=t.flat().filter(u=>Number.isSafeInteger(u));if(o.length!==t.flat().length)throw RangeError("Should be safe integers");if(o.length>7)throw RangeError("Too many numbers");e.set({year:o[0],month:o[1],day:o[2],hour:o[3],minute:o[4],second:o[5],millisecond:o[6]})}else throw TypeError(`Invalid argument ${t}`);return this}function at(){return G(this.nativeDate)}function ut(t){if(t)return F(g).filter(e=>w(t,e)).forEach(e=>{this[e]=t[e]}),this}function ct(t){return this.nativeDate[`get${this.localtime?"":"UTC"}${t}`]()}function ht(t){var n,c,a,o,u,y,d,f,m,D,O,I,H,P,j,R;const e=N({},t);if(e.month=e.month&&e.month-1,this.localtime){const h=(n=this.nativeDate)!=null?n:new Date(0,0),S=new Date(et.getTime());S.setFullYear((c=e.year)!=null?c:h.getFullYear(),(a=e.month)!=null?a:h.getMonth(),(o=e.day)!=null?o:h.getDate()),S.setHours((u=e.hour)!=null?u:h.getHours(),(y=e.minute)!=null?y:h.getMinutes(),(d=e.second)!=null?d:h.getSeconds(),(f=e.millisecond)!=null?f:h.getMilliseconds()),this.nativeDate=C(this.interpretAsDst,S)}else{const h=(m=this.nativeDate)!=null?m:new Date(0),S=new Date(0);S.setUTCFullYear((D=e.year)!=null?D:h.getUTCFullYear(),(O=e.month)!=null?O:h.getUTCMonth(),(I=e.day)!=null?I:h.getUTCDate()),S.setUTCHours((H=e.hour)!=null?H:h.getUTCHours(),(P=e.minute)!=null?P:h.getUTCMinutes(),(j=e.second)!=null?j:h.getUTCSeconds(),(R=e.millisecond)!=null?R:h.getUTCMilliseconds()),this.nativeDate=S}return this}const ft=new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");function lt(t){var O;const e=t.trim().toUpperCase(),n=e.match(ft);if(!n)throw RangeError(`Failed to parse '${t}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);const[c,a,o,u,y,d,f,m]=[+n[1],+n[2]||1,+n[3]||1,+n[4]||0,+n[5]||0,+n[6]||0,+((O=n[7])==null?void 0:O.padStart(3,"0"))||0,n[8]],D=new Date(e);if(!G(D))throw RangeError(`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);return m?this.nativeDate=D:this.localtime?this.nativeDate=C(this.interpretAsDst,D):this.set({year:c,month:a,day:o,hour:u,minute:y,second:d,millisecond:f}),this}i.prototype.toString=function(){if(this[s].localtime){const t=this[s].nativeDate,e=-t.getTimezoneOffset(),n=Math.abs(e);return`${String(t.getFullYear()).padStart(4,"0")}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}T${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}${(e>=0?"+":"-")+String(Math.trunc(n/b)).padStart(2,"0")+":"+String(n%b).padStart(2,"0")}`}return this[s].nativeDate.toISOString()};i.prototype.valueOf=function(){return this[s].nativeDate.valueOf()};i.prototype.clone=function(...t){return new i(this,...t)};i.prototype.context=function(t){return p(t)?this.clone(t):{localtime:this[s].localtime,interpretAsDst:this[s].interpretAsDst}};i.prototype.nativeDate=function(){return new Date(this[s].nativeDate.getTime())};i.prototype.offset=function(){return this[s].localtime?-this[s].nativeDate.getTimezoneOffset():0};i.prototype.localtime=function(t){return p(t)?this.clone({localtime:t}):this[s].localtime};i.prototype.interpretAsDst=function(t){return p(t)?this.clone({interpretAsDst:t}):this[s].interpretAsDst};i.prototype.valid=function(){return this[s].valid()};i.prototype.numeric=function(){return this[s].nativeDate.getTime()};i.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day(),hour:this.hour(),minute:this.minute(),second:this.second(),millisecond:this.millisecond()}};i.prototype.toArray=function(){return[this.year(),this.month(),this.day(),this.hour(),this.minute(),this.second(),this.millisecond()]};i.prototype.toDate=function(...t){return new r(this.clone(...t))};i.prototype.asUtc=function(){return this.clone({localtime:!1})};i.prototype.asLocaltime=function(){return this.clone({localtime:!0})};i.prototype.year=function(t){return p(t)?this.clone({year:t}):this[s].getNative("FullYear")};i.prototype.month=function(t){return p(t)?this.clone({month:t}):this[s].getNative("Month")+1};i.prototype.day=function(t){return p(t)?this.clone({day:t}):this[s].getNative("Date")};i.prototype.hour=function(t){return p(t)?this.clone({hour:t}):this[s].getNative("Hours")};i.prototype.minute=function(t){return p(t)?this.clone({minute:t}):this[s].getNative("Minutes")};i.prototype.second=function(t){return p(t)?this.clone({second:t}):this[s].getNative("Seconds")};i.prototype.millisecond=function(t){return p(t)?this.clone({millisecond:t}):this[s].getNative("Milliseconds")};i.prototype.dayOfWeek=function(){return 1+(this[s].getNative("Day")-1+M)%M};i.prototype.dayOfYear=function(){const t=this.toDate();return 1+t-t.startOfYear()};i.prototype.weekOfYear=function(){const t=this.toDate(),e=t.day(t.day()-t.dayOfWeek()+T),n=e.startOfYear(),c=n.dayOfWeek()===T?n:n.day(1+(T-n.dayOfWeek()+M)%M);return 1+Math.ceil((e-c)/M)};i.prototype.yearOfWeek=function(){const t=this.toDate();return t.day(t.day()-t.dayOfWeek()+T).year()};i.prototype.isLeapYear=function(){const t=this.year();return t%4===0&&(t%100!==0||t%400===0)};i.prototype.hasDstInYear=function(){if(!this[s].localtime)return!1;const t=this.offset();return[3,6,9,12].map(e=>this.month(e).offset()).some(e=>e!==t)};i.prototype.isInDst=function(){return this[s].localtime?this.offset()===Math.max(...[3,6,9,12].map(t=>this.month(t).offset())):!1};i.prototype.isDstTransitionDay=function(){return this[s].localtime?this.minutesInDay()!==E:!1};i.prototype.minutesInDay=function(){if(!this[s].localtime)return E;const t=this.context({interpretAsDst:!0}).startOfDay(),e=t.plus({day:1}).startOfDay();return t.day()===e.day()?E:(e-t)/ot};i.prototype.daysInMonth=function(){const t=[31,28,31,30,31,30,31,31,30,31,30,31],e=this.month();return t[e-1]+(this.isLeapYear()&&e===2?1:0)};i.prototype.daysInYear=function(){return this.isLeapYear()?366:365};i.prototype.weeksInYear=function(){const t=this.toDate({month:12,day:31}),e=t.minus({year:1});return t.dayOfWeek()===T||e.dayOfWeek()===U?53:52};i.prototype.startOfYear=function(){return this.clone({month:1,day:1,hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfMonth=function(){return this.clone({day:1,hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfDay=function(){return this.clone({hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfHour=function(){return this.clone({minute:0,second:0,millisecond:0})};i.prototype.startOfMinute=function(){return this.clone({second:0,millisecond:0})};i.prototype.startOfSecond=function(){return this.clone({millisecond:0})};i.prototype.isSame=function(t){return+this==+t};i.prototype.isBefore=function(t){return this<t};i.prototype.isAfter=function(t){return this>t};i.prototype.isSameOrBefore=function(t){return this<=t};i.prototype.isSameOrAfter=function(t){return this>=t};i.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t};i.prototype.plus=function(...t){return J.call(this,1,...t)};i.prototype.minus=function(...t){return J.call(this,-1,...t)};function J(t,...e){var y,d;const n=e[0],c=e[1];if(Number.isFinite(n)&&!Number.isFinite(c))return this.clone(this.numeric()+n);let a=null;if(Y(n)){if(!A(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");a=n}else if(Number.isFinite(n)||Array.isArray(n)){const f=e.flat().filter(m=>Number.isSafeInteger(m));if(f.length!==e.flat().length)throw RangeError("Should be safe integers");if(f.length>7)throw RangeError("Too many numbers");a={year:e[0],month:e[1],day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]}}else throw TypeError();const o=this.nativeDate(),u=this[s].localtime?"":"UTC";if(w(a,"year")||w(a,"month")){const f=this.year()+t*((y=a.year)!=null?y:0),m=this.month()+t*((d=a.month)!=null?d:0),D=new Date(o.getTime());D[`set${u}FullYear`](f,m,0);const O=D.getDate();O<this.day()?o[`set${u}FullYear`](f,D[`get${u}Month`](),O):o[`set${u}FullYear`](f,m-1)}return w(a,"day")&&o[`set${u}Date`](o[`get${u}Date`]()+t*a.day),[["hour","Hours"],["minute","Minutes"],["second","Seconds"],["millisecond","Milliseconds"]].forEach(([f,m])=>{w(a,f)&&o[`setUTC${m}`](o[`getUTC${m}`]()+t*a[f])}),this.clone(C(this[s].interpretAsDst,o))}const l=Symbol("QronoDate.internal");function r(...t){if(!new.target)return new r(...t);const e=this[l]={datetime:null};let n=null;t[0]instanceof r&&(n=t.shift().toDatetime());const c=t[0],a=t[1];return Number.isFinite(c)&&!Number.isFinite(a)&&(t[0]*=$),n=(n?n.clone(...t):v(...t)).startOfDay(),e.datetime=v({localtime:!1},n.toObject()),this}r.prototype.toString=function(){return this[l].datetime.toString().substring(0,10)};r.prototype.valueOf=function(){return this[l].datetime/$};r.prototype.valid=function(){return this[l].datetime.valid()};r.prototype.clone=function(...t){return new r(this,...t)};r.prototype.toDatetime=function(){return v(this[l].datetime.toArray())};r.prototype.numeric=function(){return this[l].datetime.numeric()/$};r.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day()}};r.prototype.toArray=function(){return[this.year(),this.month(),this.day()]};r.prototype.startOfYear=function(){return new r(this[l].datetime.startOfYear())};r.prototype.startOfMonth=function(){return new r(this[l].datetime.startOfMonth())};r.prototype.startOfDay=function(){return this[l].datetime.clone()};["year","month","day"].forEach(t=>{r.prototype[t]=function(e){return p(e)?new r(this[l].datetime[t](e)):this[l].datetime[t]()}});["dayOfWeek","dayOfYear","weekOfYear","yearOfWeek","isLeapYear","daysInMonth","daysInYear","weeksInYear"].forEach(t=>{r.prototype[t]=function(){return this[l].datetime[t]()}});["minutesInDay","hasDstInYear","isDstTransitionDay"].forEach(t=>{r.prototype[t]=function(){return v({interpretAsDst:!0},this[l].datetime.toArray().slice(0,3))[t]()}});r.prototype.endOfYear=function(){return this.clone({month:12,day:31})};r.prototype.endOfMonth=function(){return this.clone({day:this.daysInMonth()})};r.prototype.isSame=function(t){return+this==+t};r.prototype.isBefore=function(t){return this<t};r.prototype.isAfter=function(t){return this>t};r.prototype.isSameOrBefore=function(t){return this<=t};r.prototype.isSameOrAfter=function(t){return this>=t};r.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t};r.prototype.plus=function(...t){return X.call(this,1,...t)};r.prototype.minus=function(...t){return X.call(this,-1,...t)};function X(t,...e){var u,y,d;const n=e[0],c=e[1],a=this[l].datetime;if(Number.isFinite(n)&&!Number.isFinite(c))return a.plus({day:t*n}).toDate();let o=null;if(Y(n)&&A(n))o={year:t*((u=n.year)!=null?u:0),month:t*((y=n.month)!=null?y:0),day:t*((d=n.day)!=null?d:0)};else if(Number.isFinite(n)){if(e.length>3)throw RangeError("Too many arguments");o={year:e[0],month:e[1],day:e[2]}}else if(Array.isArray(n)){if(n.length>3)throw RangeError("Too many elements");o={year:n[0],month:n[1],day:n[2]}}else throw TypeError();return a.plus(o).toDate()}exports.friday=Z;exports.monday=z;exports.qrono=v;exports.saturday=q;exports.sunday=V;exports.thursday=T;exports.tuesday=Q;exports.wednesday=U;
|
|
1
|
+
"use strict";var _=Object.defineProperty;var W=Object.getOwnPropertySymbols;var K=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var j=(t,e,n)=>e in t?_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,N=(t,e)=>{for(var n in e||(e={}))K.call(e,n)&&j(t,n,e[n]);if(W)for(var n of W(e))tt.call(e,n)&&j(t,n,e[n]);return t};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const et=new Date(1915,0,1,12,0,0,0),M=7,k=24,v=60,$=v*k,x=60,nt=x*v,it=nt*k,L=1e3,ot=x*L,E=it*L,B=1,z=2,U=3,T=4,Q=5,Z=6,q=7;function w(t,...e){return e.flat().some(t.hasOwnProperty,t)}function F(t){return Object.entries(t).filter(([,e])=>!rt(e)).map(([e])=>e)}function p(t){return t!==void 0}function rt(t){return t instanceof Function}function st(t){return typeof t=="string"||t instanceof String}function b(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function V(t){return!isNaN(t.getTime())}function Y(t){return w(t,["year","month","day","hour","minute","second","millisecond"])}function G(t,e){const n=e.getTime(),c=new Date(n);if(t)return c;const a=new Date(n);a.setDate(e.getDate()+1);const o=new Date(n);o.setDate(e.getDate()-1);const u=a.getTimezoneOffset()-o.getTimezoneOffset();if(u===0)return c;const y=new Date(n).setMinutes(e.getMinutes()+u),d=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return y===d||y===n?c:new Date(d)}const A=i;i.date=r;const D={localtime:!1,interpretAsDst:!0};F(D).forEach(t=>{i[t]=function(e){return p(e)?(D[t]=e,this):D[t]}});i.context=function(t){return p(t)?(F(D).filter(e=>w(t,e)).forEach(e=>{D[e]=t[e]}),this):N({},D)};i.asUtc=function(){return D.localtime=!1,this};i.asLocaltime=function(){return D.localtime=!0,this};Object.assign(i,{monday:B,tuesday:z,wednesday:U,thursday:T,friday:Q,saturday:Z,sunday:q});const s=Symbol("Qrono.internal");function i(...t){var a;if(!new.target)return new i(...t);const e=this[s]={nativeDate:null,localtime:!1,interpretAsDst:!1,set:ft,parse:lt,valid:at,context:ut,getNative:ct};if(e.context(D),t[0]instanceof i){const o=t.shift();F(e).forEach(u=>{e[u]=o[u]()})}b(t[0])&&!Y(t[0])&&e.context(t.shift());const n=t[0],c=t[1];if(n==null)(a=e.nativeDate)!=null||(e.nativeDate=new Date);else if(n instanceof Date)e.nativeDate=new Date(n.getTime());else if(st(n))e.parse(n);else if(b(n)){if(!Y(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");e.set(n)}else if(Number.isFinite(n)&&!Number.isFinite(c))e.nativeDate=new Date(n);else if(Number.isFinite(n)||Array.isArray(n)){const o=t.flat().filter(u=>Number.isSafeInteger(u));if(o.length!==t.flat().length)throw RangeError("Should be safe integers");if(o.length>7)throw RangeError("Too many numbers");e.set({year:o[0],month:o[1],day:o[2],hour:o[3],minute:o[4],second:o[5],millisecond:o[6]})}else throw TypeError(`Invalid argument ${t}`);return this}function at(){return V(this.nativeDate)}function ut(t){if(t)return F(D).filter(e=>w(t,e)).forEach(e=>{this[e]=t[e]}),this}function ct(t){return this.nativeDate[`get${this.localtime?"":"UTC"}${t}`]()}function ft(t){var n,c,a,o,u,y,d,h,m,g,O,C,I,H,P,R;const e=N({},t);if(e.month=e.month&&e.month-1,this.localtime){const f=(n=this.nativeDate)!=null?n:new Date(0,0),S=new Date(et.getTime());S.setFullYear((c=e.year)!=null?c:f.getFullYear(),(a=e.month)!=null?a:f.getMonth(),(o=e.day)!=null?o:f.getDate()),S.setHours((u=e.hour)!=null?u:f.getHours(),(y=e.minute)!=null?y:f.getMinutes(),(d=e.second)!=null?d:f.getSeconds(),(h=e.millisecond)!=null?h:f.getMilliseconds()),this.nativeDate=G(this.interpretAsDst,S)}else{const f=(m=this.nativeDate)!=null?m:new Date(0),S=new Date(0);S.setUTCFullYear((g=e.year)!=null?g:f.getUTCFullYear(),(O=e.month)!=null?O:f.getUTCMonth(),(C=e.day)!=null?C:f.getUTCDate()),S.setUTCHours((I=e.hour)!=null?I:f.getUTCHours(),(H=e.minute)!=null?H:f.getUTCMinutes(),(P=e.second)!=null?P:f.getUTCSeconds(),(R=e.millisecond)!=null?R:f.getUTCMilliseconds()),this.nativeDate=S}return this}const ht=new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");function lt(t){var O;const e=t.trim().toUpperCase(),n=e.match(ht);if(!n)throw RangeError(`Failed to parse '${t}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);const[c,a,o,u,y,d,h,m]=[+n[1],+n[2]||1,+n[3]||1,+n[4]||0,+n[5]||0,+n[6]||0,+((O=n[7])==null?void 0:O.padStart(3,"0"))||0,n[8]],g=new Date(e);if(!V(g))throw RangeError(`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);return m?this.nativeDate=g:this.set({year:c,month:a,day:o,hour:u,minute:y,second:d,millisecond:h}),this}i.prototype.toString=function(){if(this[s].localtime){const t=this[s].nativeDate,e=-t.getTimezoneOffset(),n=Math.abs(e);return`${String(t.getFullYear()).padStart(4,"0")}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}T${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}${(e>=0?"+":"-")+String(Math.trunc(n/v)).padStart(2,"0")+":"+String(n%v).padStart(2,"0")}`}return this[s].nativeDate.toISOString()};i.prototype.valueOf=function(){return this[s].nativeDate.valueOf()};i.prototype.clone=function(...t){return new i(this,...t)};i.prototype.context=function(t){return p(t)?this.clone(t):{localtime:this[s].localtime,interpretAsDst:this[s].interpretAsDst}};i.prototype.nativeDate=function(){return new Date(this[s].nativeDate.getTime())};i.prototype.offset=function(){return this[s].localtime?-this[s].nativeDate.getTimezoneOffset():0};i.prototype.localtime=function(t){return p(t)?this.clone({localtime:t}):this[s].localtime};i.prototype.interpretAsDst=function(t){return p(t)?this.clone({interpretAsDst:t}):this[s].interpretAsDst};i.prototype.valid=function(){return this[s].valid()};i.prototype.numeric=function(){return this[s].nativeDate.getTime()};i.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day(),hour:this.hour(),minute:this.minute(),second:this.second(),millisecond:this.millisecond()}};i.prototype.toArray=function(){return[this.year(),this.month(),this.day(),this.hour(),this.minute(),this.second(),this.millisecond()]};i.prototype.toDate=function(...t){return new r(this.clone(...t))};i.prototype.asUtc=function(){return this.clone({localtime:!1})};i.prototype.asLocaltime=function(){return this.clone({localtime:!0})};i.prototype.year=function(t){return p(t)?this.clone({year:t}):this[s].getNative("FullYear")};i.prototype.month=function(t){return p(t)?this.clone({month:t}):this[s].getNative("Month")+1};i.prototype.day=function(t){return p(t)?this.clone({day:t}):this[s].getNative("Date")};i.prototype.hour=function(t){return p(t)?this.clone({hour:t}):this[s].getNative("Hours")};i.prototype.minute=function(t){return p(t)?this.clone({minute:t}):this[s].getNative("Minutes")};i.prototype.second=function(t){return p(t)?this.clone({second:t}):this[s].getNative("Seconds")};i.prototype.millisecond=function(t){return p(t)?this.clone({millisecond:t}):this[s].getNative("Milliseconds")};i.prototype.dayOfWeek=function(){return 1+(this[s].getNative("Day")-1+M)%M};i.prototype.dayOfYear=function(){const t=this.toDate();return 1+t-t.startOfYear()};i.prototype.weekOfYear=function(){const t=this.toDate(),e=t.day(t.day()-t.dayOfWeek()+T),n=e.startOfYear(),c=n.dayOfWeek()===T?n:n.day(1+(T-n.dayOfWeek()+M)%M);return 1+Math.ceil((e-c)/M)};i.prototype.yearOfWeek=function(){const t=this.toDate();return t.day(t.day()-t.dayOfWeek()+T).year()};i.prototype.isLeapYear=function(){const t=this.year();return t%4===0&&(t%100!==0||t%400===0)};i.prototype.hasDstInYear=function(){if(!this[s].localtime)return!1;const t=this.offset();return[3,6,9,12].map(e=>this.month(e).offset()).some(e=>e!==t)};i.prototype.isInDst=function(){return this[s].localtime?this.offset()===Math.max(...[3,6,9,12].map(t=>this.month(t).offset())):!1};i.prototype.isDstTransitionDay=function(){return this[s].localtime?this.minutesInDay()!==$:!1};i.prototype.minutesInDay=function(){if(!this[s].localtime)return $;const t=this.context({interpretAsDst:!0}).startOfDay(),e=t.plus({day:1}).startOfDay();return t.day()===e.day()?$:(e-t)/ot};i.prototype.daysInMonth=function(){const t=[31,28,31,30,31,30,31,31,30,31,30,31],e=this.month();return t[e-1]+(this.isLeapYear()&&e===2?1:0)};i.prototype.daysInYear=function(){return this.isLeapYear()?366:365};i.prototype.weeksInYear=function(){const t=this.toDate({month:12,day:31}),e=t.minus({year:1});return t.dayOfWeek()===T||e.dayOfWeek()===U?53:52};i.prototype.startOfYear=function(){return this.clone({month:1,day:1,hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfMonth=function(){return this.clone({day:1,hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfDay=function(){return this.clone({hour:0,minute:0,second:0,millisecond:0})};i.prototype.startOfHour=function(){return this.clone({minute:0,second:0,millisecond:0})};i.prototype.startOfMinute=function(){return this.clone({second:0,millisecond:0})};i.prototype.startOfSecond=function(){return this.clone({millisecond:0})};i.prototype.isSame=function(t){return+this==+t};i.prototype.isBefore=function(t){return this<t};i.prototype.isAfter=function(t){return this>t};i.prototype.isSameOrBefore=function(t){return this<=t};i.prototype.isSameOrAfter=function(t){return this>=t};i.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t};i.prototype.plus=function(...t){return J.call(this,1,...t)};i.prototype.minus=function(...t){return J.call(this,-1,...t)};function J(t,...e){var y,d;const n=e[0],c=e[1];if(Number.isFinite(n)&&!Number.isFinite(c))return this.clone(this.numeric()+n);let a=null;if(b(n)){if(!Y(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");a=n}else if(Number.isFinite(n)||Array.isArray(n)){const h=e.flat().filter(m=>Number.isSafeInteger(m));if(h.length!==e.flat().length)throw RangeError("Should be safe integers");if(h.length>7)throw RangeError("Too many numbers");a={year:e[0],month:e[1],day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]}}else throw TypeError();const o=this.nativeDate(),u=this[s].localtime?"":"UTC";if(w(a,"year")||w(a,"month")){const h=this.year()+t*((y=a.year)!=null?y:0),m=this.month()+t*((d=a.month)!=null?d:0),g=new Date(o.getTime());g[`set${u}FullYear`](h,m,0);const O=g[`get${u}Date`]();O<this.day()?o[`set${u}FullYear`](h,g[`get${u}Month`](),O):o[`set${u}FullYear`](h,m-1)}return w(a,"day")&&o[`set${u}Date`](o[`get${u}Date`]()+t*a.day),[["hour","Hours"],["minute","Minutes"],["second","Seconds"],["millisecond","Milliseconds"]].forEach(([h,m])=>{w(a,h)&&o[`setUTC${m}`](o[`getUTC${m}`]()+t*a[h])}),this.clone(G(this[s].interpretAsDst,o))}const l=Symbol("QronoDate.internal");function r(...t){if(!new.target)return new r(...t);const e=this[l]={datetime:null};let n=null;t[0]instanceof r&&(n=t.shift().toDatetime());const c=t[0],a=t[1];return Number.isFinite(c)&&!Number.isFinite(a)&&(t[0]=Math.floor(c)*E),n=n?n.clone(...t):A(...t),e.datetime=n.startOfDay(),this}r.prototype.toString=function(){return this[l].datetime.toString().substring(0,10)};r.prototype.valueOf=function(){return this[l].datetime/E};r.prototype.valid=function(){return this[l].datetime.valid()};r.prototype.clone=function(...t){return new r(this,...t)};r.prototype.toDatetime=function(){return A(this[l].datetime.toArray())};r.prototype.numeric=function(){return this[l].datetime.numeric()/E};r.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day()}};r.prototype.toArray=function(){return[this.year(),this.month(),this.day()]};r.prototype.startOfYear=function(){return new r(this[l].datetime.startOfYear())};r.prototype.startOfMonth=function(){return new r(this[l].datetime.startOfMonth())};r.prototype.startOfDay=function(){return this[l].datetime.clone()};["year","month","day"].forEach(t=>{r.prototype[t]=function(e){return p(e)?new r(this[l].datetime[t](e)):this[l].datetime[t]()}});["dayOfWeek","dayOfYear","weekOfYear","yearOfWeek","isLeapYear","daysInMonth","daysInYear","weeksInYear"].forEach(t=>{r.prototype[t]=function(){return this[l].datetime[t]()}});["minutesInDay","hasDstInYear","isDstTransitionDay"].forEach(t=>{r.prototype[t]=function(){return A({interpretAsDst:!0},this[l].datetime.toArray().slice(0,3))[t]()}});r.prototype.endOfYear=function(){return this.clone({month:12,day:31})};r.prototype.endOfMonth=function(){return this.clone({day:this.daysInMonth()})};r.prototype.isSame=function(t){return+this==+t};r.prototype.isBefore=function(t){return this<t};r.prototype.isAfter=function(t){return this>t};r.prototype.isSameOrBefore=function(t){return this<=t};r.prototype.isSameOrAfter=function(t){return this>=t};r.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t};r.prototype.plus=function(...t){return X.call(this,1,...t)};r.prototype.minus=function(...t){return X.call(this,-1,...t)};function X(t,...e){var u,y,d;const n=e[0],c=e[1],a=this[l].datetime;if(Number.isFinite(n)&&!Number.isFinite(c))return a.plus({day:t*n}).toDate();let o=null;if(b(n)&&Y(n))o={year:t*((u=n.year)!=null?u:0),month:t*((y=n.month)!=null?y:0),day:t*((d=n.day)!=null?d:0)};else if(Number.isFinite(n)){if(e.length>3)throw RangeError("Too many arguments");o={year:e[0],month:e[1],day:e[2]}}else if(Array.isArray(n)){if(n.length>3)throw RangeError("Too many elements");o={year:n[0],month:n[1],day:n[2]}}else throw TypeError();return a.plus(o).toDate()}exports.friday=Q;exports.monday=B;exports.qrono=A;exports.saturday=Z;exports.sunday=q;exports.thursday=T;exports.tuesday=z;exports.wednesday=U;
|
|
2
2
|
//# sourceMappingURL=qrono.cjs.map
|
package/dist/qrono.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrono.cjs","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else if (this.localtime) {\n this.nativeDate = asDst(this.interpretAsDst, native)\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth.getDate()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] *= millisecondsPerDay\n }\n source = (source ? source.clone(...args) : qrono(...args)).startOfDay()\n self.datetime = qrono({ localtime: false }, source.toObject())\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerHour","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","self","set","parse","valid","getNative","source","first","second","_a","values","v","name","baseDate","newDate","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qrono.cjs","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth[`get${utc}Date`]()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] = Math.floor(first) * millisecondsPerDay\n }\n source = source ? source.clone(...args) : qrono(...args)\n self.datetime = source.startOfDay()\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerHour","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","self","set","parse","valid","getNative","source","first","second","_a","values","v","name","baseDate","newDate","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"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"}
|
package/dist/qrono.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
var q = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var R = Object.getOwnPropertySymbols;
|
|
3
3
|
var V = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable;
|
|
4
|
-
var
|
|
4
|
+
var W = (t, e, n) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, A = (t, e) => {
|
|
5
5
|
for (var n in e || (e = {}))
|
|
6
|
-
V.call(e, n) &&
|
|
7
|
-
if (
|
|
8
|
-
for (var n of
|
|
9
|
-
G.call(e, n) &&
|
|
6
|
+
V.call(e, n) && W(t, n, e[n]);
|
|
7
|
+
if (R)
|
|
8
|
+
for (var n of R(e))
|
|
9
|
+
G.call(e, n) && W(t, n, e[n]);
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
const J = new Date(1915, 0, 1, 12, 0, 0, 0), M = 7,
|
|
12
|
+
const J = new Date(1915, 0, 1, 12, 0, 0, 0), M = 7, j = 24, v = 60, N = v * j, k = 60, X = k * v, _ = X * j, x = 1e3, K = k * x, $ = _ * x, tt = 1, et = 2, L = 3, T = 4, nt = 5, it = 6, ot = 7;
|
|
13
13
|
function w(t, ...e) {
|
|
14
14
|
return e.flat().some(t.hasOwnProperty, t);
|
|
15
15
|
}
|
|
@@ -25,13 +25,13 @@ function rt(t) {
|
|
|
25
25
|
function st(t) {
|
|
26
26
|
return typeof t == "string" || t instanceof String;
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function Y(t) {
|
|
29
29
|
return t !== null && typeof t == "object" && t.constructor === Object;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function B(t) {
|
|
32
32
|
return !isNaN(t.getTime());
|
|
33
33
|
}
|
|
34
|
-
function
|
|
34
|
+
function b(t) {
|
|
35
35
|
return w(t, [
|
|
36
36
|
"year",
|
|
37
37
|
"month",
|
|
@@ -42,7 +42,7 @@ function Y(t) {
|
|
|
42
42
|
"millisecond"
|
|
43
43
|
]);
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function z(t, e) {
|
|
46
46
|
const n = e.getTime(), c = new Date(n);
|
|
47
47
|
if (t)
|
|
48
48
|
return c;
|
|
@@ -58,32 +58,32 @@ function U(t, e) {
|
|
|
58
58
|
);
|
|
59
59
|
return y === p || y === n ? c : new Date(p);
|
|
60
60
|
}
|
|
61
|
-
const
|
|
61
|
+
const E = i;
|
|
62
62
|
i.date = r;
|
|
63
|
-
const
|
|
63
|
+
const D = {
|
|
64
64
|
localtime: !1,
|
|
65
65
|
interpretAsDst: !0
|
|
66
66
|
};
|
|
67
|
-
F(
|
|
67
|
+
F(D).forEach((t) => {
|
|
68
68
|
i[t] = function(e) {
|
|
69
|
-
return m(e) ? (
|
|
69
|
+
return m(e) ? (D[t] = e, this) : D[t];
|
|
70
70
|
};
|
|
71
71
|
});
|
|
72
72
|
i.context = function(t) {
|
|
73
|
-
return m(t) ? (F(
|
|
74
|
-
|
|
75
|
-
}), this) :
|
|
73
|
+
return m(t) ? (F(D).filter((e) => w(t, e)).forEach((e) => {
|
|
74
|
+
D[e] = t[e];
|
|
75
|
+
}), this) : A({}, D);
|
|
76
76
|
};
|
|
77
77
|
i.asUtc = function() {
|
|
78
|
-
return
|
|
78
|
+
return D.localtime = !1, this;
|
|
79
79
|
};
|
|
80
80
|
i.asLocaltime = function() {
|
|
81
|
-
return
|
|
81
|
+
return D.localtime = !0, this;
|
|
82
82
|
};
|
|
83
83
|
Object.assign(i, {
|
|
84
84
|
monday: tt,
|
|
85
85
|
tuesday: et,
|
|
86
|
-
wednesday:
|
|
86
|
+
wednesday: L,
|
|
87
87
|
thursday: T,
|
|
88
88
|
friday: nt,
|
|
89
89
|
saturday: it,
|
|
@@ -106,13 +106,13 @@ function i(...t) {
|
|
|
106
106
|
context: ut,
|
|
107
107
|
getNative: ct
|
|
108
108
|
};
|
|
109
|
-
if (e.context(
|
|
109
|
+
if (e.context(D), t[0] instanceof i) {
|
|
110
110
|
const o = t.shift();
|
|
111
111
|
F(e).forEach((u) => {
|
|
112
112
|
e[u] = o[u]();
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
Y(t[0]) && !b(t[0]) && e.context(t.shift());
|
|
116
116
|
const n = t[0], c = t[1];
|
|
117
117
|
if (n == null)
|
|
118
118
|
(a = e.nativeDate) != null || (e.nativeDate = /* @__PURE__ */ new Date());
|
|
@@ -120,8 +120,8 @@ function i(...t) {
|
|
|
120
120
|
e.nativeDate = new Date(n.getTime());
|
|
121
121
|
else if (st(n))
|
|
122
122
|
e.parse(n);
|
|
123
|
-
else if (
|
|
124
|
-
if (!
|
|
123
|
+
else if (Y(n)) {
|
|
124
|
+
if (!b(n))
|
|
125
125
|
throw RangeError(
|
|
126
126
|
"Missing time field (year, minute, day, hour, minute, second or millisecond)"
|
|
127
127
|
);
|
|
@@ -148,11 +148,11 @@ function i(...t) {
|
|
|
148
148
|
return this;
|
|
149
149
|
}
|
|
150
150
|
function at() {
|
|
151
|
-
return
|
|
151
|
+
return B(this.nativeDate);
|
|
152
152
|
}
|
|
153
153
|
function ut(t) {
|
|
154
154
|
if (t)
|
|
155
|
-
return F(
|
|
155
|
+
return F(D).filter((e) => w(t, e)).forEach((e) => {
|
|
156
156
|
this[e] = t[e];
|
|
157
157
|
}), this;
|
|
158
158
|
}
|
|
@@ -160,8 +160,8 @@ function ct(t) {
|
|
|
160
160
|
return this.nativeDate[`get${this.localtime ? "" : "UTC"}${t}`]();
|
|
161
161
|
}
|
|
162
162
|
function ht(t) {
|
|
163
|
-
var n, c, a, o, u, y, p, f, d,
|
|
164
|
-
const e =
|
|
163
|
+
var n, c, a, o, u, y, p, f, d, g, O, U, C, I, H, P;
|
|
164
|
+
const e = A({}, t);
|
|
165
165
|
if (e.month = e.month && e.month - 1, this.localtime) {
|
|
166
166
|
const h = (n = this.nativeDate) != null ? n : new Date(0, 0), S = new Date(J.getTime());
|
|
167
167
|
S.setFullYear(
|
|
@@ -173,18 +173,18 @@ function ht(t) {
|
|
|
173
173
|
(y = e.minute) != null ? y : h.getMinutes(),
|
|
174
174
|
(p = e.second) != null ? p : h.getSeconds(),
|
|
175
175
|
(f = e.millisecond) != null ? f : h.getMilliseconds()
|
|
176
|
-
), this.nativeDate =
|
|
176
|
+
), this.nativeDate = z(this.interpretAsDst, S);
|
|
177
177
|
} else {
|
|
178
178
|
const h = (d = this.nativeDate) != null ? d : /* @__PURE__ */ new Date(0), S = /* @__PURE__ */ new Date(0);
|
|
179
179
|
S.setUTCFullYear(
|
|
180
|
-
(
|
|
180
|
+
(g = e.year) != null ? g : h.getUTCFullYear(),
|
|
181
181
|
(O = e.month) != null ? O : h.getUTCMonth(),
|
|
182
|
-
(
|
|
182
|
+
(U = e.day) != null ? U : h.getUTCDate()
|
|
183
183
|
), S.setUTCHours(
|
|
184
|
-
(
|
|
185
|
-
(
|
|
186
|
-
(
|
|
187
|
-
(
|
|
184
|
+
(C = e.hour) != null ? C : h.getUTCHours(),
|
|
185
|
+
(I = e.minute) != null ? I : h.getUTCMinutes(),
|
|
186
|
+
(H = e.second) != null ? H : h.getUTCSeconds(),
|
|
187
|
+
(P = e.millisecond) != null ? P : h.getUTCMilliseconds()
|
|
188
188
|
), this.nativeDate = S;
|
|
189
189
|
}
|
|
190
190
|
return this;
|
|
@@ -209,12 +209,12 @@ function lt(t) {
|
|
|
209
209
|
+n[6] || 0,
|
|
210
210
|
+((O = n[7]) == null ? void 0 : O.padStart(3, "0")) || 0,
|
|
211
211
|
n[8]
|
|
212
|
-
],
|
|
213
|
-
if (!
|
|
212
|
+
], g = new Date(e);
|
|
213
|
+
if (!B(g))
|
|
214
214
|
throw RangeError(
|
|
215
215
|
`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
|
|
216
216
|
);
|
|
217
|
-
return d ? this.nativeDate =
|
|
217
|
+
return d ? this.nativeDate = g : this.set({ year: c, month: a, day: o, hour: u, minute: y, second: p, millisecond: f }), this;
|
|
218
218
|
}
|
|
219
219
|
i.prototype.toString = function() {
|
|
220
220
|
if (this[s].localtime) {
|
|
@@ -342,13 +342,13 @@ i.prototype.isInDst = function() {
|
|
|
342
342
|
return this[s].localtime ? this.offset() === Math.max(...[3, 6, 9, 12].map((t) => this.month(t).offset())) : !1;
|
|
343
343
|
};
|
|
344
344
|
i.prototype.isDstTransitionDay = function() {
|
|
345
|
-
return this[s].localtime ? this.minutesInDay() !==
|
|
345
|
+
return this[s].localtime ? this.minutesInDay() !== N : !1;
|
|
346
346
|
};
|
|
347
347
|
i.prototype.minutesInDay = function() {
|
|
348
348
|
if (!this[s].localtime)
|
|
349
|
-
return
|
|
349
|
+
return N;
|
|
350
350
|
const t = this.context({ interpretAsDst: !0 }).startOfDay(), e = t.plus({ day: 1 }).startOfDay();
|
|
351
|
-
return t.day() === e.day() ?
|
|
351
|
+
return t.day() === e.day() ? N : (e - t) / K;
|
|
352
352
|
};
|
|
353
353
|
i.prototype.daysInMonth = function() {
|
|
354
354
|
const t = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], e = this.month();
|
|
@@ -359,7 +359,7 @@ i.prototype.daysInYear = function() {
|
|
|
359
359
|
};
|
|
360
360
|
i.prototype.weeksInYear = function() {
|
|
361
361
|
const t = this.toDate({ month: 12, day: 31 }), e = t.minus({ year: 1 });
|
|
362
|
-
return t.dayOfWeek() === T || e.dayOfWeek() ===
|
|
362
|
+
return t.dayOfWeek() === T || e.dayOfWeek() === L ? 53 : 52;
|
|
363
363
|
};
|
|
364
364
|
i.prototype.startOfYear = function() {
|
|
365
365
|
return this.clone({
|
|
@@ -416,8 +416,8 @@ function Q(t, ...e) {
|
|
|
416
416
|
if (Number.isFinite(n) && !Number.isFinite(c))
|
|
417
417
|
return this.clone(this.numeric() + n);
|
|
418
418
|
let a = null;
|
|
419
|
-
if (
|
|
420
|
-
if (!
|
|
419
|
+
if (Y(n)) {
|
|
420
|
+
if (!b(n))
|
|
421
421
|
throw RangeError(
|
|
422
422
|
"Missing time field (year, minute, day, hour, minute, second or millisecond)"
|
|
423
423
|
);
|
|
@@ -441,10 +441,10 @@ function Q(t, ...e) {
|
|
|
441
441
|
throw TypeError();
|
|
442
442
|
const o = this.nativeDate(), u = this[s].localtime ? "" : "UTC";
|
|
443
443
|
if (w(a, "year") || w(a, "month")) {
|
|
444
|
-
const f = this.year() + t * ((y = a.year) != null ? y : 0), d = this.month() + t * ((p = a.month) != null ? p : 0),
|
|
445
|
-
|
|
446
|
-
const O =
|
|
447
|
-
O < this.day() ? o[`set${u}FullYear`](f,
|
|
444
|
+
const f = this.year() + t * ((y = a.year) != null ? y : 0), d = this.month() + t * ((p = a.month) != null ? p : 0), g = new Date(o.getTime());
|
|
445
|
+
g[`set${u}FullYear`](f, d, 0);
|
|
446
|
+
const O = g[`get${u}Date`]();
|
|
447
|
+
O < this.day() ? o[`set${u}FullYear`](f, g[`get${u}Month`](), O) : o[`set${u}FullYear`](f, d - 1);
|
|
448
448
|
}
|
|
449
449
|
return w(a, "day") && o[`set${u}Date`](o[`get${u}Date`]() + t * a.day), [
|
|
450
450
|
["hour", "Hours"],
|
|
@@ -455,7 +455,7 @@ function Q(t, ...e) {
|
|
|
455
455
|
w(a, f) && o[`setUTC${d}`](
|
|
456
456
|
o[`getUTC${d}`]() + t * a[f]
|
|
457
457
|
);
|
|
458
|
-
}), this.clone(
|
|
458
|
+
}), this.clone(z(this[s].interpretAsDst, o));
|
|
459
459
|
}
|
|
460
460
|
const l = /* @__PURE__ */ Symbol("QronoDate.internal");
|
|
461
461
|
function r(...t) {
|
|
@@ -467,7 +467,7 @@ function r(...t) {
|
|
|
467
467
|
let n = null;
|
|
468
468
|
t[0] instanceof r && (n = t.shift().toDatetime());
|
|
469
469
|
const c = t[0], a = t[1];
|
|
470
|
-
return Number.isFinite(c) && !Number.isFinite(a) && (t[0]
|
|
470
|
+
return Number.isFinite(c) && !Number.isFinite(a) && (t[0] = Math.floor(c) * $), n = n ? n.clone(...t) : E(...t), e.datetime = n.startOfDay(), this;
|
|
471
471
|
}
|
|
472
472
|
r.prototype.toString = function() {
|
|
473
473
|
return this[l].datetime.toString().substring(0, 10);
|
|
@@ -482,7 +482,7 @@ r.prototype.clone = function(...t) {
|
|
|
482
482
|
return new r(this, ...t);
|
|
483
483
|
};
|
|
484
484
|
r.prototype.toDatetime = function() {
|
|
485
|
-
return
|
|
485
|
+
return E(this[l].datetime.toArray());
|
|
486
486
|
};
|
|
487
487
|
r.prototype.numeric = function() {
|
|
488
488
|
return this[l].datetime.numeric() / $;
|
|
@@ -527,7 +527,7 @@ r.prototype.startOfDay = function() {
|
|
|
527
527
|
});
|
|
528
528
|
["minutesInDay", "hasDstInYear", "isDstTransitionDay"].forEach((t) => {
|
|
529
529
|
r.prototype[t] = function() {
|
|
530
|
-
return
|
|
530
|
+
return E(
|
|
531
531
|
{ interpretAsDst: !0 },
|
|
532
532
|
this[l].datetime.toArray().slice(0, 3)
|
|
533
533
|
)[t]();
|
|
@@ -569,7 +569,7 @@ function Z(t, ...e) {
|
|
|
569
569
|
if (Number.isFinite(n) && !Number.isFinite(c))
|
|
570
570
|
return a.plus({ day: t * n }).toDate();
|
|
571
571
|
let o = null;
|
|
572
|
-
if (
|
|
572
|
+
if (Y(n) && b(n))
|
|
573
573
|
o = {
|
|
574
574
|
year: t * ((u = n.year) != null ? u : 0),
|
|
575
575
|
month: t * ((y = n.month) != null ? y : 0),
|
|
@@ -590,11 +590,11 @@ function Z(t, ...e) {
|
|
|
590
590
|
export {
|
|
591
591
|
nt as friday,
|
|
592
592
|
tt as monday,
|
|
593
|
-
|
|
593
|
+
E as qrono,
|
|
594
594
|
it as saturday,
|
|
595
595
|
ot as sunday,
|
|
596
596
|
T as thursday,
|
|
597
597
|
et as tuesday,
|
|
598
|
-
|
|
598
|
+
L as wednesday
|
|
599
599
|
};
|
|
600
600
|
//# sourceMappingURL=qrono.js.map
|
package/dist/qrono.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrono.js","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else if (this.localtime) {\n this.nativeDate = asDst(this.interpretAsDst, native)\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth.getDate()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] *= millisecondsPerDay\n }\n source = (source ? source.clone(...args) : qrono(...args)).startOfDay()\n self.datetime = qrono({ localtime: false }, source.toObject())\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerHour","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","_a","self","set","parse","valid","getNative","source","first","second","values","v","name","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","baseDate","newDate","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qrono.js","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth[`get${utc}Date`]()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] = Math.floor(first) * millisecondsPerDay\n }\n source = source ? source.clone(...args) : qrono(...args)\n self.datetime = source.startOfDay()\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerHour","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","_a","self","set","parse","valid","getNative","source","first","second","values","v","name","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","baseDate","newDate","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"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"}
|
package/dist/qrono.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Qrono=(function(c){"use strict";var ft=Object.defineProperty;var K=Object.getOwnPropertySymbols;var ht=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var x=(c,g,h)=>g in c?ft(c,g,{enumerable:!0,configurable:!0,writable:!0,value:h}):c[g]=h,H=(c,g)=>{for(var h in g||(g={}))ht.call(g,h)&&x(c,h,g[h]);if(K)for(var h of K(g))lt.call(g,h)&&x(c,h,g[h]);return c};const g=new Date(1915,0,1,12,0,0,0),h=7,P=24,A=60,$=A*P,j=60,tt=j*A*P,R=1e3,et=j*R,U=tt*R,W=1,k=2,C=3,M=4,L=5,B=6,Q=7;function v(t,...e){return e.flat().some(t.hasOwnProperty,t)}function F(t){return Object.entries(t).filter(([,e])=>!nt(e)).map(([e])=>e)}function m(t){return t!==void 0}function nt(t){return t instanceof Function}function it(t){return typeof t=="string"||t instanceof String}function N(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function z(t){return!isNaN(t.getTime())}function E(t){return v(t,["year","month","day","hour","minute","second","millisecond"])}function I(t,e){const n=e.getTime(),f=new Date(n);if(t)return f;const a=new Date(n);a.setDate(e.getDate()+1);const o=new Date(n);o.setDate(e.getDate()-1);const u=a.getTimezoneOffset()-o.getTimezoneOffset();if(u===0)return f;const p=new Date(n).setMinutes(e.getMinutes()+u),D=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return p===D||p===n?f:new Date(D)}const Y=i;i.date=r;const S={localtime:!1,interpretAsDst:!0};F(S).forEach(t=>{i[t]=function(e){return m(e)?(S[t]=e,this):S[t]}}),i.context=function(t){return m(t)?(F(S).filter(e=>v(t,e)).forEach(e=>{S[e]=t[e]}),this):H({},S)},i.asUtc=function(){return S.localtime=!1,this},i.asLocaltime=function(){return S.localtime=!0,this},Object.assign(i,{monday:W,tuesday:k,wednesday:C,thursday:M,friday:L,saturday:B,sunday:Q});const s=Symbol("Qrono.internal");function i(...t){var a;if(!new.target)return new i(...t);const e=this[s]={nativeDate:null,localtime:!1,interpretAsDst:!1,set:at,parse:ct,valid:ot,context:rt,getNative:st};if(e.context(S),t[0]instanceof i){const o=t.shift();F(e).forEach(u=>{e[u]=o[u]()})}N(t[0])&&!E(t[0])&&e.context(t.shift());const n=t[0],f=t[1];if(n==null)(a=e.nativeDate)!=null||(e.nativeDate=new Date);else if(n instanceof Date)e.nativeDate=new Date(n.getTime());else if(it(n))e.parse(n);else if(N(n)){if(!E(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");e.set(n)}else if(Number.isFinite(n)&&!Number.isFinite(f))e.nativeDate=new Date(n);else if(Number.isFinite(n)||Array.isArray(n)){const o=t.flat().filter(u=>Number.isSafeInteger(u));if(o.length!==t.flat().length)throw RangeError("Should be safe integers");if(o.length>7)throw RangeError("Too many numbers");e.set({year:o[0],month:o[1],day:o[2],hour:o[3],minute:o[4],second:o[5],millisecond:o[6]})}else throw TypeError(`Invalid argument ${t}`);return this}function ot(){return z(this.nativeDate)}function rt(t){if(t)return F(S).filter(e=>v(t,e)).forEach(e=>{this[e]=t[e]}),this}function st(t){return this.nativeDate[`get${this.localtime?"":"UTC"}${t}`]()}function at(t){var n,f,a,o,u,p,D,d,O,w,T,V,G,J,X,_;const e=H({},t);if(e.month=e.month&&e.month-1,this.localtime){const l=(n=this.nativeDate)!=null?n:new Date(0,0),b=new Date(g.getTime());b.setFullYear((f=e.year)!=null?f:l.getFullYear(),(a=e.month)!=null?a:l.getMonth(),(o=e.day)!=null?o:l.getDate()),b.setHours((u=e.hour)!=null?u:l.getHours(),(p=e.minute)!=null?p:l.getMinutes(),(D=e.second)!=null?D:l.getSeconds(),(d=e.millisecond)!=null?d:l.getMilliseconds()),this.nativeDate=I(this.interpretAsDst,b)}else{const l=(O=this.nativeDate)!=null?O:new Date(0),b=new Date(0);b.setUTCFullYear((w=e.year)!=null?w:l.getUTCFullYear(),(T=e.month)!=null?T:l.getUTCMonth(),(V=e.day)!=null?V:l.getUTCDate()),b.setUTCHours((G=e.hour)!=null?G:l.getUTCHours(),(J=e.minute)!=null?J:l.getUTCMinutes(),(X=e.second)!=null?X:l.getUTCSeconds(),(_=e.millisecond)!=null?_:l.getUTCMilliseconds()),this.nativeDate=b}return this}const ut=new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");function ct(t){var T;const e=t.trim().toUpperCase(),n=e.match(ut);if(!n)throw RangeError(`Failed to parse '${t}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);const[f,a,o,u,p,D,d,O]=[+n[1],+n[2]||1,+n[3]||1,+n[4]||0,+n[5]||0,+n[6]||0,+((T=n[7])==null?void 0:T.padStart(3,"0"))||0,n[8]],w=new Date(e);if(!z(w))throw RangeError(`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);return O?this.nativeDate=w:this.localtime?this.nativeDate=I(this.interpretAsDst,w):this.set({year:f,month:a,day:o,hour:u,minute:p,second:D,millisecond:d}),this}i.prototype.toString=function(){if(this[s].localtime){const t=this[s].nativeDate,e=-t.getTimezoneOffset(),n=Math.abs(e);return`${String(t.getFullYear()).padStart(4,"0")}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}T${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}${(e>=0?"+":"-")+String(Math.trunc(n/A)).padStart(2,"0")+":"+String(n%A).padStart(2,"0")}`}return this[s].nativeDate.toISOString()},i.prototype.valueOf=function(){return this[s].nativeDate.valueOf()},i.prototype.clone=function(...t){return new i(this,...t)},i.prototype.context=function(t){return m(t)?this.clone(t):{localtime:this[s].localtime,interpretAsDst:this[s].interpretAsDst}},i.prototype.nativeDate=function(){return new Date(this[s].nativeDate.getTime())},i.prototype.offset=function(){return this[s].localtime?-this[s].nativeDate.getTimezoneOffset():0},i.prototype.localtime=function(t){return m(t)?this.clone({localtime:t}):this[s].localtime},i.prototype.interpretAsDst=function(t){return m(t)?this.clone({interpretAsDst:t}):this[s].interpretAsDst},i.prototype.valid=function(){return this[s].valid()},i.prototype.numeric=function(){return this[s].nativeDate.getTime()},i.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day(),hour:this.hour(),minute:this.minute(),second:this.second(),millisecond:this.millisecond()}},i.prototype.toArray=function(){return[this.year(),this.month(),this.day(),this.hour(),this.minute(),this.second(),this.millisecond()]},i.prototype.toDate=function(...t){return new r(this.clone(...t))},i.prototype.asUtc=function(){return this.clone({localtime:!1})},i.prototype.asLocaltime=function(){return this.clone({localtime:!0})},i.prototype.year=function(t){return m(t)?this.clone({year:t}):this[s].getNative("FullYear")},i.prototype.month=function(t){return m(t)?this.clone({month:t}):this[s].getNative("Month")+1},i.prototype.day=function(t){return m(t)?this.clone({day:t}):this[s].getNative("Date")},i.prototype.hour=function(t){return m(t)?this.clone({hour:t}):this[s].getNative("Hours")},i.prototype.minute=function(t){return m(t)?this.clone({minute:t}):this[s].getNative("Minutes")},i.prototype.second=function(t){return m(t)?this.clone({second:t}):this[s].getNative("Seconds")},i.prototype.millisecond=function(t){return m(t)?this.clone({millisecond:t}):this[s].getNative("Milliseconds")},i.prototype.dayOfWeek=function(){return 1+(this[s].getNative("Day")-1+h)%h},i.prototype.dayOfYear=function(){const t=this.toDate();return 1+t-t.startOfYear()},i.prototype.weekOfYear=function(){const t=this.toDate(),e=t.day(t.day()-t.dayOfWeek()+M),n=e.startOfYear(),f=n.dayOfWeek()===M?n:n.day(1+(M-n.dayOfWeek()+h)%h);return 1+Math.ceil((e-f)/h)},i.prototype.yearOfWeek=function(){const t=this.toDate();return t.day(t.day()-t.dayOfWeek()+M).year()},i.prototype.isLeapYear=function(){const t=this.year();return t%4===0&&(t%100!==0||t%400===0)},i.prototype.hasDstInYear=function(){if(!this[s].localtime)return!1;const t=this.offset();return[3,6,9,12].map(e=>this.month(e).offset()).some(e=>e!==t)},i.prototype.isInDst=function(){return this[s].localtime?this.offset()===Math.max(...[3,6,9,12].map(t=>this.month(t).offset())):!1},i.prototype.isDstTransitionDay=function(){return this[s].localtime?this.minutesInDay()!==$:!1},i.prototype.minutesInDay=function(){if(!this[s].localtime)return $;const t=this.context({interpretAsDst:!0}).startOfDay(),e=t.plus({day:1}).startOfDay();return t.day()===e.day()?$:(e-t)/et},i.prototype.daysInMonth=function(){const t=[31,28,31,30,31,30,31,31,30,31,30,31],e=this.month();return t[e-1]+(this.isLeapYear()&&e===2?1:0)},i.prototype.daysInYear=function(){return this.isLeapYear()?366:365},i.prototype.weeksInYear=function(){const t=this.toDate({month:12,day:31}),e=t.minus({year:1});return t.dayOfWeek()===M||e.dayOfWeek()===C?53:52},i.prototype.startOfYear=function(){return this.clone({month:1,day:1,hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfMonth=function(){return this.clone({day:1,hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfDay=function(){return this.clone({hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfHour=function(){return this.clone({minute:0,second:0,millisecond:0})},i.prototype.startOfMinute=function(){return this.clone({second:0,millisecond:0})},i.prototype.startOfSecond=function(){return this.clone({millisecond:0})},i.prototype.isSame=function(t){return+this==+t},i.prototype.isBefore=function(t){return this<t},i.prototype.isAfter=function(t){return this>t},i.prototype.isSameOrBefore=function(t){return this<=t},i.prototype.isSameOrAfter=function(t){return this>=t},i.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t},i.prototype.plus=function(...t){return Z.call(this,1,...t)},i.prototype.minus=function(...t){return Z.call(this,-1,...t)};function Z(t,...e){var p,D;const n=e[0],f=e[1];if(Number.isFinite(n)&&!Number.isFinite(f))return this.clone(this.numeric()+n);let a=null;if(N(n)){if(!E(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");a=n}else if(Number.isFinite(n)||Array.isArray(n)){const d=e.flat().filter(O=>Number.isSafeInteger(O));if(d.length!==e.flat().length)throw RangeError("Should be safe integers");if(d.length>7)throw RangeError("Too many numbers");a={year:e[0],month:e[1],day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]}}else throw TypeError();const o=this.nativeDate(),u=this[s].localtime?"":"UTC";if(v(a,"year")||v(a,"month")){const d=this.year()+t*((p=a.year)!=null?p:0),O=this.month()+t*((D=a.month)!=null?D:0),w=new Date(o.getTime());w[`set${u}FullYear`](d,O,0);const T=w.getDate();T<this.day()?o[`set${u}FullYear`](d,w[`get${u}Month`](),T):o[`set${u}FullYear`](d,O-1)}return v(a,"day")&&o[`set${u}Date`](o[`get${u}Date`]()+t*a.day),[["hour","Hours"],["minute","Minutes"],["second","Seconds"],["millisecond","Milliseconds"]].forEach(([d,O])=>{v(a,d)&&o[`setUTC${O}`](o[`getUTC${O}`]()+t*a[d])}),this.clone(I(this[s].interpretAsDst,o))}const y=Symbol("QronoDate.internal");function r(...t){if(!new.target)return new r(...t);const e=this[y]={datetime:null};let n=null;t[0]instanceof r&&(n=t.shift().toDatetime());const f=t[0],a=t[1];return Number.isFinite(f)&&!Number.isFinite(a)&&(t[0]*=U),n=(n?n.clone(...t):Y(...t)).startOfDay(),e.datetime=Y({localtime:!1},n.toObject()),this}r.prototype.toString=function(){return this[y].datetime.toString().substring(0,10)},r.prototype.valueOf=function(){return this[y].datetime/U},r.prototype.valid=function(){return this[y].datetime.valid()},r.prototype.clone=function(...t){return new r(this,...t)},r.prototype.toDatetime=function(){return Y(this[y].datetime.toArray())},r.prototype.numeric=function(){return this[y].datetime.numeric()/U},r.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day()}},r.prototype.toArray=function(){return[this.year(),this.month(),this.day()]},r.prototype.startOfYear=function(){return new r(this[y].datetime.startOfYear())},r.prototype.startOfMonth=function(){return new r(this[y].datetime.startOfMonth())},r.prototype.startOfDay=function(){return this[y].datetime.clone()},["year","month","day"].forEach(t=>{r.prototype[t]=function(e){return m(e)?new r(this[y].datetime[t](e)):this[y].datetime[t]()}}),["dayOfWeek","dayOfYear","weekOfYear","yearOfWeek","isLeapYear","daysInMonth","daysInYear","weeksInYear"].forEach(t=>{r.prototype[t]=function(){return this[y].datetime[t]()}}),["minutesInDay","hasDstInYear","isDstTransitionDay"].forEach(t=>{r.prototype[t]=function(){return Y({interpretAsDst:!0},this[y].datetime.toArray().slice(0,3))[t]()}}),r.prototype.endOfYear=function(){return this.clone({month:12,day:31})},r.prototype.endOfMonth=function(){return this.clone({day:this.daysInMonth()})},r.prototype.isSame=function(t){return+this==+t},r.prototype.isBefore=function(t){return this<t},r.prototype.isAfter=function(t){return this>t},r.prototype.isSameOrBefore=function(t){return this<=t},r.prototype.isSameOrAfter=function(t){return this>=t},r.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t},r.prototype.plus=function(...t){return q.call(this,1,...t)},r.prototype.minus=function(...t){return q.call(this,-1,...t)};function q(t,...e){var u,p,D;const n=e[0],f=e[1],a=this[y].datetime;if(Number.isFinite(n)&&!Number.isFinite(f))return a.plus({day:t*n}).toDate();let o=null;if(N(n)&&E(n))o={year:t*((u=n.year)!=null?u:0),month:t*((p=n.month)!=null?p:0),day:t*((D=n.day)!=null?D:0)};else if(Number.isFinite(n)){if(e.length>3)throw RangeError("Too many arguments");o={year:e[0],month:e[1],day:e[2]}}else if(Array.isArray(n)){if(n.length>3)throw RangeError("Too many elements");o={year:n[0],month:n[1],day:n[2]}}else throw TypeError();return a.plus(o).toDate()}return c.friday=L,c.monday=W,c.qrono=Y,c.saturday=B,c.sunday=Q,c.thursday=M,c.tuesday=k,c.wednesday=C,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c})({});
|
|
1
|
+
var Qrono=(function(f){"use strict";var ft=Object.defineProperty;var K=Object.getOwnPropertySymbols;var ht=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var x=(f,g,h)=>g in f?ft(f,g,{enumerable:!0,configurable:!0,writable:!0,value:h}):f[g]=h,I=(f,g)=>{for(var h in g||(g={}))ht.call(g,h)&&x(f,h,g[h]);if(K)for(var h of K(g))lt.call(g,h)&&x(f,h,g[h]);return f};const g=new Date(1915,0,1,12,0,0,0),h=7,H=24,Y=60,E=Y*H,P=60,tt=P*Y*H,R=1e3,et=P*R,U=tt*R,W=1,j=2,C=3,M=4,k=5,L=6,B=7;function v(t,...e){return e.flat().some(t.hasOwnProperty,t)}function F(t){return Object.entries(t).filter(([,e])=>!nt(e)).map(([e])=>e)}function m(t){return t!==void 0}function nt(t){return t instanceof Function}function it(t){return typeof t=="string"||t instanceof String}function A(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function Q(t){return!isNaN(t.getTime())}function N(t){return v(t,["year","month","day","hour","minute","second","millisecond"])}function z(t,e){const n=e.getTime(),c=new Date(n);if(t)return c;const a=new Date(n);a.setDate(e.getDate()+1);const o=new Date(n);o.setDate(e.getDate()-1);const u=a.getTimezoneOffset()-o.getTimezoneOffset();if(u===0)return c;const p=new Date(n).setMinutes(e.getMinutes()+u),D=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return p===D||p===n?c:new Date(D)}const $=i;i.date=r;const S={localtime:!1,interpretAsDst:!0};F(S).forEach(t=>{i[t]=function(e){return m(e)?(S[t]=e,this):S[t]}}),i.context=function(t){return m(t)?(F(S).filter(e=>v(t,e)).forEach(e=>{S[e]=t[e]}),this):I({},S)},i.asUtc=function(){return S.localtime=!1,this},i.asLocaltime=function(){return S.localtime=!0,this},Object.assign(i,{monday:W,tuesday:j,wednesday:C,thursday:M,friday:k,saturday:L,sunday:B});const s=Symbol("Qrono.internal");function i(...t){var a;if(!new.target)return new i(...t);const e=this[s]={nativeDate:null,localtime:!1,interpretAsDst:!1,set:at,parse:ct,valid:ot,context:rt,getNative:st};if(e.context(S),t[0]instanceof i){const o=t.shift();F(e).forEach(u=>{e[u]=o[u]()})}A(t[0])&&!N(t[0])&&e.context(t.shift());const n=t[0],c=t[1];if(n==null)(a=e.nativeDate)!=null||(e.nativeDate=new Date);else if(n instanceof Date)e.nativeDate=new Date(n.getTime());else if(it(n))e.parse(n);else if(A(n)){if(!N(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");e.set(n)}else if(Number.isFinite(n)&&!Number.isFinite(c))e.nativeDate=new Date(n);else if(Number.isFinite(n)||Array.isArray(n)){const o=t.flat().filter(u=>Number.isSafeInteger(u));if(o.length!==t.flat().length)throw RangeError("Should be safe integers");if(o.length>7)throw RangeError("Too many numbers");e.set({year:o[0],month:o[1],day:o[2],hour:o[3],minute:o[4],second:o[5],millisecond:o[6]})}else throw TypeError(`Invalid argument ${t}`);return this}function ot(){return Q(this.nativeDate)}function rt(t){if(t)return F(S).filter(e=>v(t,e)).forEach(e=>{this[e]=t[e]}),this}function st(t){return this.nativeDate[`get${this.localtime?"":"UTC"}${t}`]()}function at(t){var n,c,a,o,u,p,D,d,O,w,T,V,G,J,X,_;const e=I({},t);if(e.month=e.month&&e.month-1,this.localtime){const l=(n=this.nativeDate)!=null?n:new Date(0,0),b=new Date(g.getTime());b.setFullYear((c=e.year)!=null?c:l.getFullYear(),(a=e.month)!=null?a:l.getMonth(),(o=e.day)!=null?o:l.getDate()),b.setHours((u=e.hour)!=null?u:l.getHours(),(p=e.minute)!=null?p:l.getMinutes(),(D=e.second)!=null?D:l.getSeconds(),(d=e.millisecond)!=null?d:l.getMilliseconds()),this.nativeDate=z(this.interpretAsDst,b)}else{const l=(O=this.nativeDate)!=null?O:new Date(0),b=new Date(0);b.setUTCFullYear((w=e.year)!=null?w:l.getUTCFullYear(),(T=e.month)!=null?T:l.getUTCMonth(),(V=e.day)!=null?V:l.getUTCDate()),b.setUTCHours((G=e.hour)!=null?G:l.getUTCHours(),(J=e.minute)!=null?J:l.getUTCMinutes(),(X=e.second)!=null?X:l.getUTCSeconds(),(_=e.millisecond)!=null?_:l.getUTCMilliseconds()),this.nativeDate=b}return this}const ut=new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");function ct(t){var T;const e=t.trim().toUpperCase(),n=e.match(ut);if(!n)throw RangeError(`Failed to parse '${t}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);const[c,a,o,u,p,D,d,O]=[+n[1],+n[2]||1,+n[3]||1,+n[4]||0,+n[5]||0,+n[6]||0,+((T=n[7])==null?void 0:T.padStart(3,"0"))||0,n[8]],w=new Date(e);if(!Q(w))throw RangeError(`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);return O?this.nativeDate=w:this.set({year:c,month:a,day:o,hour:u,minute:p,second:D,millisecond:d}),this}i.prototype.toString=function(){if(this[s].localtime){const t=this[s].nativeDate,e=-t.getTimezoneOffset(),n=Math.abs(e);return`${String(t.getFullYear()).padStart(4,"0")}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}T${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}${(e>=0?"+":"-")+String(Math.trunc(n/Y)).padStart(2,"0")+":"+String(n%Y).padStart(2,"0")}`}return this[s].nativeDate.toISOString()},i.prototype.valueOf=function(){return this[s].nativeDate.valueOf()},i.prototype.clone=function(...t){return new i(this,...t)},i.prototype.context=function(t){return m(t)?this.clone(t):{localtime:this[s].localtime,interpretAsDst:this[s].interpretAsDst}},i.prototype.nativeDate=function(){return new Date(this[s].nativeDate.getTime())},i.prototype.offset=function(){return this[s].localtime?-this[s].nativeDate.getTimezoneOffset():0},i.prototype.localtime=function(t){return m(t)?this.clone({localtime:t}):this[s].localtime},i.prototype.interpretAsDst=function(t){return m(t)?this.clone({interpretAsDst:t}):this[s].interpretAsDst},i.prototype.valid=function(){return this[s].valid()},i.prototype.numeric=function(){return this[s].nativeDate.getTime()},i.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day(),hour:this.hour(),minute:this.minute(),second:this.second(),millisecond:this.millisecond()}},i.prototype.toArray=function(){return[this.year(),this.month(),this.day(),this.hour(),this.minute(),this.second(),this.millisecond()]},i.prototype.toDate=function(...t){return new r(this.clone(...t))},i.prototype.asUtc=function(){return this.clone({localtime:!1})},i.prototype.asLocaltime=function(){return this.clone({localtime:!0})},i.prototype.year=function(t){return m(t)?this.clone({year:t}):this[s].getNative("FullYear")},i.prototype.month=function(t){return m(t)?this.clone({month:t}):this[s].getNative("Month")+1},i.prototype.day=function(t){return m(t)?this.clone({day:t}):this[s].getNative("Date")},i.prototype.hour=function(t){return m(t)?this.clone({hour:t}):this[s].getNative("Hours")},i.prototype.minute=function(t){return m(t)?this.clone({minute:t}):this[s].getNative("Minutes")},i.prototype.second=function(t){return m(t)?this.clone({second:t}):this[s].getNative("Seconds")},i.prototype.millisecond=function(t){return m(t)?this.clone({millisecond:t}):this[s].getNative("Milliseconds")},i.prototype.dayOfWeek=function(){return 1+(this[s].getNative("Day")-1+h)%h},i.prototype.dayOfYear=function(){const t=this.toDate();return 1+t-t.startOfYear()},i.prototype.weekOfYear=function(){const t=this.toDate(),e=t.day(t.day()-t.dayOfWeek()+M),n=e.startOfYear(),c=n.dayOfWeek()===M?n:n.day(1+(M-n.dayOfWeek()+h)%h);return 1+Math.ceil((e-c)/h)},i.prototype.yearOfWeek=function(){const t=this.toDate();return t.day(t.day()-t.dayOfWeek()+M).year()},i.prototype.isLeapYear=function(){const t=this.year();return t%4===0&&(t%100!==0||t%400===0)},i.prototype.hasDstInYear=function(){if(!this[s].localtime)return!1;const t=this.offset();return[3,6,9,12].map(e=>this.month(e).offset()).some(e=>e!==t)},i.prototype.isInDst=function(){return this[s].localtime?this.offset()===Math.max(...[3,6,9,12].map(t=>this.month(t).offset())):!1},i.prototype.isDstTransitionDay=function(){return this[s].localtime?this.minutesInDay()!==E:!1},i.prototype.minutesInDay=function(){if(!this[s].localtime)return E;const t=this.context({interpretAsDst:!0}).startOfDay(),e=t.plus({day:1}).startOfDay();return t.day()===e.day()?E:(e-t)/et},i.prototype.daysInMonth=function(){const t=[31,28,31,30,31,30,31,31,30,31,30,31],e=this.month();return t[e-1]+(this.isLeapYear()&&e===2?1:0)},i.prototype.daysInYear=function(){return this.isLeapYear()?366:365},i.prototype.weeksInYear=function(){const t=this.toDate({month:12,day:31}),e=t.minus({year:1});return t.dayOfWeek()===M||e.dayOfWeek()===C?53:52},i.prototype.startOfYear=function(){return this.clone({month:1,day:1,hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfMonth=function(){return this.clone({day:1,hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfDay=function(){return this.clone({hour:0,minute:0,second:0,millisecond:0})},i.prototype.startOfHour=function(){return this.clone({minute:0,second:0,millisecond:0})},i.prototype.startOfMinute=function(){return this.clone({second:0,millisecond:0})},i.prototype.startOfSecond=function(){return this.clone({millisecond:0})},i.prototype.isSame=function(t){return+this==+t},i.prototype.isBefore=function(t){return this<t},i.prototype.isAfter=function(t){return this>t},i.prototype.isSameOrBefore=function(t){return this<=t},i.prototype.isSameOrAfter=function(t){return this>=t},i.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t},i.prototype.plus=function(...t){return Z.call(this,1,...t)},i.prototype.minus=function(...t){return Z.call(this,-1,...t)};function Z(t,...e){var p,D;const n=e[0],c=e[1];if(Number.isFinite(n)&&!Number.isFinite(c))return this.clone(this.numeric()+n);let a=null;if(A(n)){if(!N(n))throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");a=n}else if(Number.isFinite(n)||Array.isArray(n)){const d=e.flat().filter(O=>Number.isSafeInteger(O));if(d.length!==e.flat().length)throw RangeError("Should be safe integers");if(d.length>7)throw RangeError("Too many numbers");a={year:e[0],month:e[1],day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]}}else throw TypeError();const o=this.nativeDate(),u=this[s].localtime?"":"UTC";if(v(a,"year")||v(a,"month")){const d=this.year()+t*((p=a.year)!=null?p:0),O=this.month()+t*((D=a.month)!=null?D:0),w=new Date(o.getTime());w[`set${u}FullYear`](d,O,0);const T=w[`get${u}Date`]();T<this.day()?o[`set${u}FullYear`](d,w[`get${u}Month`](),T):o[`set${u}FullYear`](d,O-1)}return v(a,"day")&&o[`set${u}Date`](o[`get${u}Date`]()+t*a.day),[["hour","Hours"],["minute","Minutes"],["second","Seconds"],["millisecond","Milliseconds"]].forEach(([d,O])=>{v(a,d)&&o[`setUTC${O}`](o[`getUTC${O}`]()+t*a[d])}),this.clone(z(this[s].interpretAsDst,o))}const y=Symbol("QronoDate.internal");function r(...t){if(!new.target)return new r(...t);const e=this[y]={datetime:null};let n=null;t[0]instanceof r&&(n=t.shift().toDatetime());const c=t[0],a=t[1];return Number.isFinite(c)&&!Number.isFinite(a)&&(t[0]=Math.floor(c)*U),n=n?n.clone(...t):$(...t),e.datetime=n.startOfDay(),this}r.prototype.toString=function(){return this[y].datetime.toString().substring(0,10)},r.prototype.valueOf=function(){return this[y].datetime/U},r.prototype.valid=function(){return this[y].datetime.valid()},r.prototype.clone=function(...t){return new r(this,...t)},r.prototype.toDatetime=function(){return $(this[y].datetime.toArray())},r.prototype.numeric=function(){return this[y].datetime.numeric()/U},r.prototype.toObject=function(){return{year:this.year(),month:this.month(),day:this.day()}},r.prototype.toArray=function(){return[this.year(),this.month(),this.day()]},r.prototype.startOfYear=function(){return new r(this[y].datetime.startOfYear())},r.prototype.startOfMonth=function(){return new r(this[y].datetime.startOfMonth())},r.prototype.startOfDay=function(){return this[y].datetime.clone()},["year","month","day"].forEach(t=>{r.prototype[t]=function(e){return m(e)?new r(this[y].datetime[t](e)):this[y].datetime[t]()}}),["dayOfWeek","dayOfYear","weekOfYear","yearOfWeek","isLeapYear","daysInMonth","daysInYear","weeksInYear"].forEach(t=>{r.prototype[t]=function(){return this[y].datetime[t]()}}),["minutesInDay","hasDstInYear","isDstTransitionDay"].forEach(t=>{r.prototype[t]=function(){return $({interpretAsDst:!0},this[y].datetime.toArray().slice(0,3))[t]()}}),r.prototype.endOfYear=function(){return this.clone({month:12,day:31})},r.prototype.endOfMonth=function(){return this.clone({day:this.daysInMonth()})},r.prototype.isSame=function(t){return+this==+t},r.prototype.isBefore=function(t){return this<t},r.prototype.isAfter=function(t){return this>t},r.prototype.isSameOrBefore=function(t){return this<=t},r.prototype.isSameOrAfter=function(t){return this>=t},r.prototype.isBetween=function(t,e){return t<=this&&this<=e||e<=this&&this<=t},r.prototype.plus=function(...t){return q.call(this,1,...t)},r.prototype.minus=function(...t){return q.call(this,-1,...t)};function q(t,...e){var u,p,D;const n=e[0],c=e[1],a=this[y].datetime;if(Number.isFinite(n)&&!Number.isFinite(c))return a.plus({day:t*n}).toDate();let o=null;if(A(n)&&N(n))o={year:t*((u=n.year)!=null?u:0),month:t*((p=n.month)!=null?p:0),day:t*((D=n.day)!=null?D:0)};else if(Number.isFinite(n)){if(e.length>3)throw RangeError("Too many arguments");o={year:e[0],month:e[1],day:e[2]}}else if(Array.isArray(n)){if(n.length>3)throw RangeError("Too many elements");o={year:n[0],month:n[1],day:n[2]}}else throw TypeError();return a.plus(o).toDate()}return f.friday=k,f.monday=W,f.qrono=$,f.saturday=L,f.sunday=B,f.thursday=M,f.tuesday=j,f.wednesday=C,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),f})({});
|
|
2
2
|
//# sourceMappingURL=qrono.min.js.map
|
package/dist/qrono.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrono.min.js","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else if (this.localtime) {\n this.nativeDate = asDst(this.interpretAsDst, native)\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth.getDate()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] *= millisecondsPerDay\n }\n source = (source ? source.clone(...args) : qrono(...args)).startOfDay()\n self.datetime = qrono({ localtime: false }, source.toObject())\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","self","set","parse","valid","getNative","source","first","second","_a","values","v","name","baseDate","newDate","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qrono.min.js","sources":["../src/helpers.js","../src/qrono.js"],"sourcesContent":["export const epoch = new Date(0)\n\n/**\n * When creating or updating a local time, both `Date.setFullYear` and `Date.setHours` are used.\n * Noon is used as the initial reference point to avoid the time after `setFullYear`\n * from falling into an ambiguous DST period. Historically, DST transitions in all countries\n * have been scheduled around midnight, and it should be the same in the future.\n * The reason for selecting 1915 as the initial value is as follows.\n * Since DST was first established in 1916, the initial value should be set to a year prior to that.\n * If a year too far in the past is chosen, it may correspond to a period when time zones were not yet\n * precisely defined in some regions, which could result in unexpected timezone offsets.\n */\nexport const initialSafeDate = new Date(1915, 0, 1, 12, 0, 0, 0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has(object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields(object) {\n return Object.entries(object)\n .filter(([, value]) => !isFunction(value))\n .map(([key]) => key)\n}\n\nexport function given(arg) {\n return arg !== undefined\n}\n\nexport function isFunction(a) {\n return a instanceof Function\n}\n\nexport function isString(a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject(a) {\n return a !== null && typeof a === 'object' && a.constructor === Object\n}\n\nexport function isValidDate(date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField(object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField(object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField(object) {\n return has(object, [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ])\n}\n\n/**\n * Adjust a Date to respect the caller's interpretation of DST (Daylight Saving Time).\n *\n * - If `interpretAsDst` is true, the function returns a copy of the original `date`\n * unchanged. `Date` always treats the ambiguous time as DST.\n * - If `interpretAsDst` is false, the function will attempt to detect a nearby DST\n * offset change and adjust the moment in time so that the returned `Date` represents\n * the same nominal local fields but interpreted as the non-DST side of the\n * transition. This helps disambiguate ambiguous local times by moving to the\n * corresponding instant in UTC that matches the requested DST interpretation.\n */\nexport function asDst(interpretAsDst, date) {\n const numeric = date.getTime()\n const original = new Date(numeric)\n if (interpretAsDst) {\n return original\n }\n const nextDay = new Date(numeric)\n nextDay.setDate(date.getDate() + 1)\n const prevDay = new Date(numeric)\n prevDay.setDate(date.getDate() - 1)\n const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()\n if (adjust === 0) {\n return original\n }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(\n date.getUTCMinutes() + adjust\n )\n if (adjusted === adjustedUTC || adjusted === numeric) {\n return original\n }\n return new Date(adjustedUTC)\n}\n","/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n initialSafeDate,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n} from './helpers'\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\n\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n interpretAsDst: true,\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(Qrono, {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n})\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono(...args) {\n if (!new.target) {\n return new Qrono(...args)\n }\n const self = (this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n interpretAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative,\n })\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => {\n self[key] = source[key]()\n })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6],\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid() {\n return isValidDate(this.nativeDate)\n}\n\nfunction context(context) {\n if (!context) {\n return\n }\n fields(defaultContext)\n .filter(key => has(context, key))\n .forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative(name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set(values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n if (this.localtime) {\n const baseDate = this.nativeDate ?? new Date(0, 0)\n const newDate = new Date(initialSafeDate.getTime())\n newDate.setFullYear(\n args.year ?? baseDate.getFullYear(),\n args.month ?? baseDate.getMonth(),\n args.day ?? baseDate.getDate()\n )\n newDate.setHours(\n args.hour ?? baseDate.getHours(),\n args.minute ?? baseDate.getMinutes(),\n args.second ?? baseDate.getSeconds(),\n args.millisecond ?? baseDate.getMilliseconds()\n )\n this.nativeDate = asDst(this.interpretAsDst, newDate)\n } else {\n const baseDate = this.nativeDate ?? new Date(0)\n const newDate = new Date(0)\n newDate.setUTCFullYear(\n args.year ?? baseDate.getUTCFullYear(),\n args.month ?? baseDate.getUTCMonth(),\n args.day ?? baseDate.getUTCDate()\n )\n newDate.setUTCHours(\n args.hour ?? baseDate.getUTCHours(),\n args.minute ?? baseDate.getUTCMinutes(),\n args.second ?? baseDate.getUTCSeconds(),\n args.millisecond ?? baseDate.getUTCMilliseconds()\n )\n this.nativeDate = newDate\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse(str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1],\n +values[2] || 1,\n +values[3] || 1,\n +values[4] || 0,\n +values[5] || 0,\n +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8],\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')}-${String(\n t.getMonth() + 1\n ).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}T${String(\n t.getHours()\n ).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}:${String(\n t.getSeconds()\n ).padStart(2, '0')}.${String(t.getMilliseconds()).padStart(3, '0')}${\n (offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' +\n String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : {\n localtime: this[internal].localtime,\n interpretAsDst: this[internal].interpretAsDst,\n }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return this[internal].localtime\n ? -this[internal].nativeDate.getTimezoneOffset()\n : 0\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.interpretAsDst = function (arg) {\n return given(arg)\n ? this.clone({ interpretAsDst: arg })\n : this[internal].interpretAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond(),\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond(),\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return 1 + ((this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek)\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday =\n startOfYear.dayOfWeek() === thursday\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) {\n return false\n }\n const currentOffset = this.offset()\n return [3, 6, 9, 12]\n .map(month => this.month(month).offset())\n .some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) {\n return false\n }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) {\n return false\n }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) {\n return minutesPerDay\n }\n const startOfDay = this.context({ interpretAsDst: true }).startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (\n endOfYear.dayOfWeek() === thursday ||\n endOfLastYear.dayOfWeek() === wednesday\n ) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({ minute: 0, second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({ second: 0, millisecond: 0 })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({ millisecond: 0 })\n}\n\nQrono.prototype.isSame = function (another) {\n return +this === +another\n}\nQrono.prototype.isBefore = function (another) {\n return this < another\n}\nQrono.prototype.isAfter = function (another) {\n return this > another\n}\nQrono.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQrono.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError(\n 'Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6],\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth[`get${utc}Date`]()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n ;[\n ['hour', 'Hours'],\n ['minute', 'Minutes'],\n ['second', 'Seconds'],\n ['millisecond', 'Milliseconds'],\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].interpretAsDst, date))\n}\n\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate(...args) {\n if (!new.target) {\n return new QronoDate(...args)\n }\n const self = (this[internalDate] = {\n datetime: null,\n })\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] = Math.floor(first) * millisecondsPerDay\n }\n source = source ? source.clone(...args) : qrono(...args)\n self.datetime = source.startOfDay()\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.valid = function () {\n return this[internalDate].datetime.valid()\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n }\n}\n\nQronoDate.prototype.toArray = function () {\n return [this.year(), this.month(), this.day()]\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].datetime.startOfMonth())\n}\n\nQronoDate.prototype.startOfDay = function () {\n return this[internalDate].datetime.clone()\n}\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internalDate].datetime[field](value))\n }\n return this[internalDate].datetime[field]()\n }\n})\n;[\n 'dayOfWeek',\n 'dayOfYear',\n 'weekOfYear',\n 'yearOfWeek',\n 'isLeapYear',\n 'daysInMonth',\n 'daysInYear',\n 'weeksInYear',\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internalDate].datetime[method]()\n }\n})\n;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {\n QronoDate.prototype[method] = function () {\n return qrono(\n { interpretAsDst: true },\n this[internalDate].datetime.toArray().slice(0, 3)\n )[method]()\n }\n})\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.isSame = function (another) {\n return +this === +another\n}\nQronoDate.prototype.isBefore = function (another) {\n return this < another\n}\nQronoDate.prototype.isAfter = function (another) {\n return this > another\n}\nQronoDate.prototype.isSameOrBefore = function (another) {\n return this <= another\n}\nQronoDate.prototype.isSameOrAfter = function (another) {\n return this >= another\n}\nQronoDate.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\nQronoDate.prototype.plus = function (...args) {\n return plusDate.call(this, 1, ...args)\n}\n\nQronoDate.prototype.minus = function (...args) {\n return plusDate.call(this, -1, ...args)\n}\n\nfunction plusDate(sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n const datetime = this[internalDate].datetime\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return datetime.plus({ day: sign * arg0 }).toDate()\n }\n let timeFields = null\n if (isObject(arg0) && hasDatetimeField(arg0)) {\n timeFields = {\n year: sign * (arg0.year ?? 0),\n month: sign * (arg0.month ?? 0),\n day: sign * (arg0.day ?? 0),\n }\n } else if (Number.isFinite(arg0)) {\n if (args.length > 3) {\n throw RangeError('Too many arguments')\n }\n timeFields = { year: args[0], month: args[1], day: args[2] }\n } else if (Array.isArray(arg0)) {\n if (arg0.length > 3) {\n throw RangeError('Too many elements')\n }\n timeFields = { year: arg0[0], month: arg0[1], day: arg0[2] }\n } else {\n throw TypeError()\n }\n return datetime.plus(timeFields).toDate()\n}\n"],"names":["initialSafeDate","daysPerWeek","hoursPerDay","minutesPerHour","minutesPerDay","secondsPerMinute","secondsPerDay","millisecondsPerSecond","millisecondsPerMinute","millisecondsPerDay","monday","tuesday","wednesday","thursday","friday","saturday","sunday","has","object","keys","fields","value","isFunction","key","given","arg","a","isString","isObject","isValidDate","date","hasDatetimeField","asDst","interpretAsDst","numeric","original","nextDay","prevDay","adjust","adjusted","adjustedUTC","qrono","Qrono","QronoDate","defaultContext","context","__spreadValues","internal","args","self","set","parse","valid","getNative","source","first","second","_a","values","v","name","baseDate","newDate","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","parsePattern","str","text","year","month","day","hour","minute","millisecond","offset","native","offsetAbs","theThursday","startOfYear","firstThursday","currentOffset","startOfDay","days","endOfYear","endOfLastYear","another","b","plus","sign","arg0","arg1","timeFields","utc","endOfMonth","lastDay","nativeKey","internalDate","field","method","plusDate","datetime"],"mappings":"mYAYO,MAAMA,EAAkB,IAAI,KAAK,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,CAAC,EAElDC,EAAc,EACdC,EAAc,GAEdC,EAAiB,GACjBC,EAAgBD,EAAiBD,EAEjCG,EAAmB,GAEnBC,GADiBD,EAAmBF,EACHD,EAEjCK,EAAwB,IACxBC,GAAwBH,EAAmBE,EAE3CE,EAAqBH,GAAgBC,EAGrCG,EAAS,EACTC,EAAU,EACVC,EAAY,EACZC,EAAW,EACXC,EAAS,EACTC,EAAW,EACXC,EAAS,EAEf,SAASC,EAAIC,KAAWC,EAAM,CACnC,OAAOA,EAAK,KAAI,EAAG,KAAKD,EAAO,eAAgBA,CAAM,CACvD,CAEO,SAASE,EAAOF,EAAQ,CAC7B,OAAO,OAAO,QAAQA,CAAM,EACzB,OAAO,CAAC,CAAA,CAAGG,CAAK,IAAM,CAACC,GAAWD,CAAK,CAAC,EACxC,IAAI,CAAC,CAACE,CAAG,IAAMA,CAAG,CACvB,CAEO,SAASC,EAAMC,EAAK,CACzB,OAAOA,IAAQ,MACjB,CAEO,SAASH,GAAWI,EAAG,CAC5B,OAAOA,aAAa,QACtB,CAEO,SAASC,GAASD,EAAG,CAC1B,OAAO,OAAOA,GAAM,UAAYA,aAAa,MAC/C,CAEO,SAASE,EAASF,EAAG,CAC1B,OAAOA,IAAM,MAAQ,OAAOA,GAAM,UAAYA,EAAE,cAAgB,MAClE,CAEO,SAASG,EAAYC,EAAM,CAChC,MAAO,CAAC,MAAMA,EAAK,QAAO,CAAE,CAC9B,CAUO,SAASC,EAAiBb,EAAQ,CACvC,OAAOD,EAAIC,EAAQ,CACjB,OACA,QACA,MACA,OACA,SACA,SACA,aACJ,CAAG,CACH,CAaO,SAASc,EAAMC,EAAgBH,EAAM,CAC1C,MAAMI,EAAUJ,EAAK,QAAO,EACtBK,EAAW,IAAI,KAAKD,CAAO,EACjC,GAAID,EACF,OAAOE,EAET,MAAMC,EAAU,IAAI,KAAKF,CAAO,EAChCE,EAAQ,QAAQN,EAAK,QAAO,EAAK,CAAC,EAClC,MAAMO,EAAU,IAAI,KAAKH,CAAO,EAChCG,EAAQ,QAAQP,EAAK,QAAO,EAAK,CAAC,EAClC,MAAMQ,EAASF,EAAQ,kBAAiB,EAAKC,EAAQ,kBAAiB,EACtE,GAAIC,IAAW,EACb,OAAOH,EAET,MAAMI,EAAW,IAAI,KAAKL,CAAO,EAAE,WAAWJ,EAAK,WAAU,EAAKQ,CAAM,EAClEE,EAAc,IAAI,KAAKN,CAAO,EAAE,cACpCJ,EAAK,cAAa,EAAKQ,CAC3B,EACE,OAAIC,IAAaC,GAAeD,IAAaL,EACpCC,EAEF,IAAI,KAAKK,CAAW,CAC7B,CC7FK,MAACC,EAAQC,EAiBdA,EAAM,KAAOC,EAGb,MAAMC,EAAiB,CACrB,UAAW,GACX,eAAgB,EAClB,EAEAxB,EAAOwB,CAAc,EAAE,QAAQrB,GAAO,CACpCmB,EAAMnB,CAAG,EAAI,SAAUE,EAAK,CAC1B,OAAID,EAAMC,CAAG,GACXmB,EAAerB,CAAG,EAAIE,EACf,MAEFmB,EAAerB,CAAG,CAC3B,CACF,CAAC,EAEDmB,EAAM,QAAU,SAAUG,EAAS,CACjC,OAAIrB,EAAMqB,CAAO,GACfzB,EAAOwB,CAAc,EAClB,OAAOrB,GAAON,EAAI4B,EAAStB,CAAG,CAAC,EAC/B,QAAQA,GAAO,CACdqB,EAAerB,CAAG,EAAIsB,EAAQtB,CAAG,CACnC,CAAC,EACI,MAEFuB,EAAA,GAAKF,EACd,EAEAF,EAAM,MAAQ,UAAY,CACxB,OAAAE,EAAe,UAAY,GACpB,IACT,EAEAF,EAAM,YAAc,UAAY,CAC9B,OAAAE,EAAe,UAAY,GACpB,IACT,EAEA,OAAO,OAAOF,EAAO,CACnB,OAAAhC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,OAAAC,CACF,CAAC,EAKD,MAAM+B,EAAW,OAAO,gBAAgB,EAExC,SAASL,KAASM,EAAM,OACtB,GAAI,CAAC,WACH,OAAO,IAAIN,EAAM,GAAGM,CAAI,EAE1B,MAAMC,EAAQ,KAAKF,CAAQ,EAAI,CAE7B,WAAY,KACZ,UAAW,GACX,eAAgB,GAEhB,IAAAG,GACA,MAAAC,GACA,MAAAC,GACA,QAAAP,GACA,UAAAQ,EACJ,EAIE,GADAJ,EAAK,QAAQL,CAAc,EACvBI,EAAK,CAAC,YAAaN,EAAO,CAC5B,MAAMY,EAASN,EAAK,MAAK,EACzB5B,EAAO6B,CAAI,EAAE,QAAQ1B,GAAO,CAC1B0B,EAAK1B,CAAG,EAAI+B,EAAO/B,CAAG,EAAC,CACzB,CAAC,CACH,CACIK,EAASoB,EAAK,CAAC,CAAC,GAAK,CAACjB,EAAiBiB,EAAK,CAAC,CAAC,GAChDC,EAAK,QAAQD,EAAK,MAAK,CAAE,EAE3B,MAAMO,EAAQP,EAAK,CAAC,EACdQ,EAASR,EAAK,CAAC,EACrB,GAAIO,GAAS,MACXE,EAAAR,EAAK,aAAL,OAAAA,EAAK,WAAe,IAAI,cACfM,aAAiB,KAC1BN,EAAK,WAAa,IAAI,KAAKM,EAAM,QAAO,CAAE,UACjC5B,GAAS4B,CAAK,EACvBN,EAAK,MAAMM,CAAK,UACP3B,EAAS2B,CAAK,EAAG,CAC1B,GAAI,CAACxB,EAAiBwB,CAAK,EACzB,MAAM,WACJ,6EAER,EAEIN,EAAK,IAAIM,CAAK,CAChB,SAAW,OAAO,SAASA,CAAK,GAAK,CAAC,OAAO,SAASC,CAAM,EAC1DP,EAAK,WAAa,IAAI,KAAKM,CAAK,UACvB,OAAO,SAASA,CAAK,GAAK,MAAM,QAAQA,CAAK,EAAG,CACzD,MAAMG,EAASV,EAAK,KAAI,EAAG,OAAOW,GAAK,OAAO,cAAcA,CAAC,CAAC,EAC9D,GAAID,EAAO,SAAWV,EAAK,KAAI,EAAG,OAChC,MAAM,WAAW,yBAAyB,EAE5C,GAAIU,EAAO,OAAS,EAClB,MAAM,WAAW,kBAAkB,EAErCT,EAAK,IAAI,CACP,KAAMS,EAAO,CAAC,EACd,MAAOA,EAAO,CAAC,EACf,IAAKA,EAAO,CAAC,EACb,KAAMA,EAAO,CAAC,EACd,OAAQA,EAAO,CAAC,EAChB,OAAQA,EAAO,CAAC,EAChB,YAAaA,EAAO,CAAC,CAC3B,CAAK,CACH,KACE,OAAM,UAAU,oBAAoBV,CAAI,EAAE,EAE5C,OAAO,IACT,CAKA,SAASI,IAAQ,CACf,OAAOvB,EAAY,KAAK,UAAU,CACpC,CAEA,SAASgB,GAAQA,EAAS,CACxB,GAAKA,EAGL,OAAAzB,EAAOwB,CAAc,EAClB,OAAOrB,GAAON,EAAI4B,EAAStB,CAAG,CAAC,EAC/B,QAAQA,GAAO,CACd,KAAKA,CAAG,EAAIsB,EAAQtB,CAAG,CACzB,CAAC,EACI,IACT,CAEA,SAAS8B,GAAUO,EAAM,CACvB,OAAO,KAAK,WAAW,MAAM,KAAK,UAAY,GAAK,KAAK,GAAGA,CAAI,EAAE,EAAC,CACpE,CAEA,SAASV,GAAIQ,EAAQ,qCACnB,MAAMV,EAAOF,EAAA,GAAKY,GAElB,GADAV,EAAK,MAAQA,EAAK,OAASA,EAAK,MAAQ,EACpC,KAAK,UAAW,CAClB,MAAMa,GAAWJ,EAAA,KAAK,aAAL,KAAAA,EAAmB,IAAI,KAAK,EAAG,CAAC,EAC3CK,EAAU,IAAI,KAAK9D,EAAgB,QAAO,CAAE,EAClD8D,EAAQ,aACNC,EAAAf,EAAK,OAAL,KAAAe,EAAaF,EAAS,YAAW,GACjCG,EAAAhB,EAAK,QAAL,KAAAgB,EAAcH,EAAS,SAAQ,GAC/BI,EAAAjB,EAAK,MAAL,KAAAiB,EAAYJ,EAAS,QAAO,CAClC,EACIC,EAAQ,UACNI,EAAAlB,EAAK,OAAL,KAAAkB,EAAaL,EAAS,SAAQ,GAC9BM,EAAAnB,EAAK,SAAL,KAAAmB,EAAeN,EAAS,WAAU,GAClCO,EAAApB,EAAK,SAAL,KAAAoB,EAAeP,EAAS,WAAU,GAClCQ,EAAArB,EAAK,cAAL,KAAAqB,EAAoBR,EAAS,gBAAe,CAClD,EACI,KAAK,WAAa7B,EAAM,KAAK,eAAgB8B,CAAO,CACtD,KAAO,CACL,MAAMD,GAAWS,EAAA,KAAK,aAAL,KAAAA,EAAmB,IAAI,KAAK,CAAC,EACxCR,EAAU,IAAI,KAAK,CAAC,EAC1BA,EAAQ,gBACNS,EAAAvB,EAAK,OAAL,KAAAuB,EAAaV,EAAS,eAAc,GACpCW,EAAAxB,EAAK,QAAL,KAAAwB,EAAcX,EAAS,YAAW,GAClCY,EAAAzB,EAAK,MAAL,KAAAyB,EAAYZ,EAAS,WAAU,CACrC,EACIC,EAAQ,aACNY,EAAA1B,EAAK,OAAL,KAAA0B,EAAab,EAAS,YAAW,GACjCc,EAAA3B,EAAK,SAAL,KAAA2B,EAAed,EAAS,cAAa,GACrCe,EAAA5B,EAAK,SAAL,KAAA4B,EAAef,EAAS,cAAa,GACrCgB,EAAA7B,EAAK,cAAL,KAAA6B,EAAoBhB,EAAS,mBAAkB,CACrD,EACI,KAAK,WAAaC,CACpB,CACA,OAAO,IACT,CAEA,MAAMgB,GAAe,IAAI,OAEvB,+JAKF,EAEA,SAAS3B,GAAM4B,EAAK,OAClB,MAAMC,EAAOD,EAAI,KAAI,EAAG,YAAW,EAC7BrB,EAASsB,EAAK,MAAMF,EAAY,EACtC,GAAI,CAACpB,EACH,MAAM,WACJ,oBAAoBqB,CAAG,8EAE7B,EAEE,KAAM,CAACE,EAAMC,EAAOC,EAAKC,EAAMC,EAAQ7B,EAAQ8B,EAAaC,CAAM,EAAI,CACpE,CAAC7B,EAAO,CAAC,EACT,CAACA,EAAO,CAAC,GAAK,EACd,CAACA,EAAO,CAAC,GAAK,EACd,CAACA,EAAO,CAAC,GAAK,EACd,CAACA,EAAO,CAAC,GAAK,EACd,CAACA,EAAO,CAAC,GAAK,EACd,GAACD,EAAAC,EAAO,CAAC,IAAR,YAAAD,EAAW,SAAS,EAAG,OAAQ,EAChCC,EAAO,CAAC,CACZ,EACQ8B,EAAS,IAAI,KAAKR,CAAI,EAC5B,GAAI,CAACnD,EAAY2D,CAAM,EACrB,MAAM,WACJ,oBAAoBT,CAAG,sFAE7B,EAEE,OAAIQ,EACF,KAAK,WAAaC,EAElB,KAAK,IAAI,CAAE,KAAAP,EAAM,MAAAC,EAAO,IAAAC,EAAK,KAAAC,EAAM,OAAAC,EAAQ,OAAA7B,EAAQ,YAAA8B,CAAW,CAAE,EAE3D,IACT,CAMA5C,EAAM,UAAU,SAAW,UAAY,CACrC,GAAI,KAAKK,CAAQ,EAAE,UAAW,CAC5B,MAAM,EAAI,KAAKA,CAAQ,EAAE,WACnBwC,EAAS,CAAC,EAAE,kBAAiB,EAC7BE,EAAY,KAAK,IAAIF,CAAM,EACjC,MAAO,GAAG,OAAO,EAAE,YAAW,CAAE,EAAE,SAAS,EAAG,GAAG,CAAC,IAAI,OACpD,EAAE,SAAQ,EAAK,CACrB,EAAM,SAAS,EAAG,GAAG,CAAC,IAAI,OAAO,EAAE,QAAO,CAAE,EAAE,SAAS,EAAG,GAAG,CAAC,IAAI,OAC5D,EAAE,SAAQ,CAChB,EAAM,SAAS,EAAG,GAAG,CAAC,IAAI,OAAO,EAAE,WAAU,CAAE,EAAE,SAAS,EAAG,GAAG,CAAC,IAAI,OAC/D,EAAE,WAAU,CAClB,EAAM,SAAS,EAAG,GAAG,CAAC,IAAI,OAAO,EAAE,gBAAe,CAAE,EAAE,SAAS,EAAG,GAAG,CAAC,IAC/DA,GAAU,EAAI,IAAM,KACrB,OAAO,KAAK,MAAME,EAAYtF,CAAc,CAAC,EAAE,SAAS,EAAG,GAAG,EAC9D,IACA,OAAOsF,EAAYtF,CAAc,EAAE,SAAS,EAAG,GAAG,CACxD,EACE,CACA,OAAO,KAAK4C,CAAQ,EAAE,WAAW,YAAW,CAC9C,EAEAL,EAAM,UAAU,QAAU,UAAY,CACpC,OAAO,KAAKK,CAAQ,EAAE,WAAW,QAAO,CAC1C,EAEAL,EAAM,UAAU,MAAQ,YAAaM,EAAM,CACzC,OAAO,IAAIN,EAAM,KAAM,GAAGM,CAAI,CAChC,EAEAN,EAAM,UAAU,QAAU,SAAUG,EAAS,CAC3C,OAAOrB,EAAMqB,CAAO,EAChB,KAAK,MAAMA,CAAO,EAClB,CACE,UAAW,KAAKE,CAAQ,EAAE,UAC1B,eAAgB,KAAKA,CAAQ,EAAE,cACvC,CACA,EAEAL,EAAM,UAAU,WAAa,UAAY,CACvC,OAAO,IAAI,KAAK,KAAKK,CAAQ,EAAE,WAAW,QAAO,CAAE,CACrD,EAEAL,EAAM,UAAU,OAAS,UAAY,CACnC,OAAO,KAAKK,CAAQ,EAAE,UAClB,CAAC,KAAKA,CAAQ,EAAE,WAAW,kBAAiB,EAC5C,CACN,EAEAL,EAAM,UAAU,UAAY,SAAUjB,EAAK,CACzC,OAAOD,EAAMC,CAAG,EAAI,KAAK,MAAM,CAAE,UAAWA,CAAG,CAAE,EAAI,KAAKsB,CAAQ,EAAE,SACtE,EAEAL,EAAM,UAAU,eAAiB,SAAUjB,EAAK,CAC9C,OAAOD,EAAMC,CAAG,EACZ,KAAK,MAAM,CAAE,eAAgBA,CAAG,CAAE,EAClC,KAAKsB,CAAQ,EAAE,cACrB,EAEAL,EAAM,UAAU,MAAQ,UAAY,CAClC,OAAO,KAAKK,CAAQ,EAAE,MAAK,CAC7B,EAGAL,EAAM,UAAU,QAAU,UAAY,CACpC,OAAO,KAAKK,CAAQ,EAAE,WAAW,QAAO,CAC1C,EAEAL,EAAM,UAAU,SAAW,UAAY,CACrC,MAAO,CACL,KAAM,KAAK,KAAI,EACf,MAAO,KAAK,MAAK,EACjB,IAAK,KAAK,IAAG,EACb,KAAM,KAAK,KAAI,EACf,OAAQ,KAAK,OAAM,EACnB,OAAQ,KAAK,OAAM,EACnB,YAAa,KAAK,YAAW,CACjC,CACA,EAEAA,EAAM,UAAU,QAAU,UAAY,CACpC,MAAO,CACL,KAAK,KAAI,EACT,KAAK,MAAK,EACV,KAAK,IAAG,EACR,KAAK,KAAI,EACT,KAAK,OAAM,EACX,KAAK,OAAM,EACX,KAAK,YAAW,CACpB,CACA,EAEAA,EAAM,UAAU,OAAS,YAAaM,EAAM,CAC1C,OAAO,IAAIL,EAAU,KAAK,MAAM,GAAGK,CAAI,CAAC,CAC1C,EAGAN,EAAM,UAAU,MAAQ,UAAY,CAClC,OAAO,KAAK,MAAM,CAAE,UAAW,EAAK,CAAE,CACxC,EAEAA,EAAM,UAAU,YAAc,UAAY,CACxC,OAAO,KAAK,MAAM,CAAE,UAAW,EAAI,CAAE,CACvC,EAGAA,EAAM,UAAU,KAAO,SAAUrB,EAAO,CACtC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,KAAMA,CAAK,CAAE,EAC1B,KAAK0B,CAAQ,EAAE,UAAU,UAAU,CACzC,EAEAL,EAAM,UAAU,MAAQ,SAAUrB,EAAO,CACvC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,MAAOA,CAAK,CAAE,EAC3B,KAAK0B,CAAQ,EAAE,UAAU,OAAO,EAAI,CAC1C,EAEAL,EAAM,UAAU,IAAM,SAAUrB,EAAO,CACrC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,IAAKA,CAAK,CAAE,EACzB,KAAK0B,CAAQ,EAAE,UAAU,MAAM,CACrC,EAEAL,EAAM,UAAU,KAAO,SAAUrB,EAAO,CACtC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,KAAMA,CAAK,CAAE,EAC1B,KAAK0B,CAAQ,EAAE,UAAU,OAAO,CACtC,EAEAL,EAAM,UAAU,OAAS,SAAUrB,EAAO,CACxC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,OAAQA,CAAK,CAAE,EAC5B,KAAK0B,CAAQ,EAAE,UAAU,SAAS,CACxC,EAEAL,EAAM,UAAU,OAAS,SAAUrB,EAAO,CACxC,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,OAAQA,CAAK,CAAE,EAC5B,KAAK0B,CAAQ,EAAE,UAAU,SAAS,CACxC,EAEAL,EAAM,UAAU,YAAc,SAAUrB,EAAO,CAC7C,OAAOG,EAAMH,CAAK,EACd,KAAK,MAAM,CAAE,YAAaA,CAAK,CAAE,EACjC,KAAK0B,CAAQ,EAAE,UAAU,cAAc,CAC7C,EAGAL,EAAM,UAAU,UAAY,UAAY,CACtC,MAAO,IAAM,KAAKK,CAAQ,EAAE,UAAU,KAAK,EAAI,EAAI9C,GAAeA,CACpE,EAEAyC,EAAM,UAAU,UAAY,UAAY,CACtC,MAAMZ,EAAO,KAAK,OAAM,EACxB,MAAO,GAAIA,EAAOA,EAAK,YAAW,CACpC,EAEAY,EAAM,UAAU,WAAa,UAAY,CACvC,MAAMZ,EAAO,KAAK,OAAM,EAClB4D,EAAc5D,EAAK,IAAIA,EAAK,MAAQA,EAAK,UAAS,EAAKjB,CAAQ,EAC/D8E,EAAcD,EAAY,YAAW,EACrCE,EACJD,EAAY,UAAS,IAAO9E,EACxB8E,EACAA,EAAY,IACV,GAAM9E,EAAW8E,EAAY,UAAS,EAAK1F,GAAeA,CACpE,EACE,MAAO,GAAI,KAAK,MAAMyF,EAAcE,GAAiB3F,CAAW,CAClE,EAEAyC,EAAM,UAAU,WAAa,UAAY,CACvC,MAAMZ,EAAO,KAAK,OAAM,EACxB,OAAOA,EAAK,IAAIA,EAAK,IAAG,EAAKA,EAAK,UAAS,EAAKjB,CAAQ,EAAE,KAAI,CAChE,EAEA6B,EAAM,UAAU,WAAa,UAAY,CACvC,MAAMuC,EAAO,KAAK,KAAI,EACtB,OAAOA,EAAO,IAAM,IAAMA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,EAC/D,EAEAvC,EAAM,UAAU,aAAe,UAAY,CACzC,GAAI,CAAC,KAAKK,CAAQ,EAAE,UAClB,MAAO,GAET,MAAM8C,EAAgB,KAAK,OAAM,EACjC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAE,EAChB,IAAIX,GAAS,KAAK,MAAMA,CAAK,EAAE,OAAM,CAAE,EACvC,KAAKK,GAAUA,IAAWM,CAAa,CAC5C,EAEAnD,EAAM,UAAU,QAAU,UAAY,CACpC,OAAK,KAAKK,CAAQ,EAAE,UAIlB,KAAK,OAAM,IACX,KAAK,IAAI,GAAG,CAAC,EAAG,EAAG,EAAG,EAAE,EAAE,IAAImC,GAAS,KAAK,MAAMA,CAAK,EAAE,OAAM,CAAE,CAAC,EAJ3D,EAMX,EAEAxC,EAAM,UAAU,mBAAqB,UAAY,CAC/C,OAAK,KAAKK,CAAQ,EAAE,UAGb,KAAK,iBAAmB3C,EAFtB,EAGX,EAEAsC,EAAM,UAAU,aAAe,UAAY,CACzC,GAAI,CAAC,KAAKK,CAAQ,EAAE,UAClB,OAAO3C,EAET,MAAM0F,EAAa,KAAK,QAAQ,CAAE,eAAgB,EAAI,CAAE,EAAE,WAAU,EAC9D1D,EAAU0D,EAAW,KAAK,CAAE,IAAK,CAAC,CAAE,EAAE,WAAU,EACtD,OAAIA,EAAW,IAAG,IAAO1D,EAAQ,IAAG,EAC3BhC,GAEDgC,EAAU0D,GAActF,EAClC,EAEAkC,EAAM,UAAU,YAAc,UAAY,CACxC,MAAMqD,EAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACtDb,EAAQ,KAAK,MAAK,EACxB,OAAOa,EAAKb,EAAQ,CAAC,GAAK,KAAK,WAAU,GAAMA,IAAU,EAAI,EAAI,EACnE,EAEAxC,EAAM,UAAU,WAAa,UAAY,CACvC,OAAO,KAAK,WAAU,EAAK,IAAM,GACnC,EAEAA,EAAM,UAAU,YAAc,UAAY,CACxC,MAAMsD,EAAY,KAAK,OAAO,CAAE,MAAO,GAAI,IAAK,EAAE,CAAE,EAC9CC,EAAgBD,EAAU,MAAM,CAAE,KAAM,CAAC,CAAE,EACjD,OACEA,EAAU,UAAS,IAAOnF,GAC1BoF,EAAc,UAAS,IAAOrF,EAEvB,GAEF,EACT,EAEA8B,EAAM,UAAU,YAAc,UAAY,CACxC,OAAO,KAAK,MAAM,CAChB,MAAO,EACP,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,YAAa,CACjB,CAAG,CACH,EAEAA,EAAM,UAAU,aAAe,UAAY,CACzC,OAAO,KAAK,MAAM,CAAE,IAAK,EAAG,KAAM,EAAG,OAAQ,EAAG,OAAQ,EAAG,YAAa,CAAC,CAAE,CAC7E,EAEAA,EAAM,UAAU,WAAa,UAAY,CACvC,OAAO,KAAK,MAAM,CAAE,KAAM,EAAG,OAAQ,EAAG,OAAQ,EAAG,YAAa,CAAC,CAAE,CACrE,EAEAA,EAAM,UAAU,YAAc,UAAY,CACxC,OAAO,KAAK,MAAM,CAAE,OAAQ,EAAG,OAAQ,EAAG,YAAa,CAAC,CAAE,CAC5D,EAEAA,EAAM,UAAU,cAAgB,UAAY,CAC1C,OAAO,KAAK,MAAM,CAAE,OAAQ,EAAG,YAAa,CAAC,CAAE,CACjD,EAEAA,EAAM,UAAU,cAAgB,UAAY,CAC1C,OAAO,KAAK,MAAM,CAAE,YAAa,CAAC,CAAE,CACtC,EAEAA,EAAM,UAAU,OAAS,SAAUwD,EAAS,CAC1C,MAAO,CAAC,MAAS,CAACA,CACpB,EACAxD,EAAM,UAAU,SAAW,SAAUwD,EAAS,CAC5C,OAAO,KAAOA,CAChB,EACAxD,EAAM,UAAU,QAAU,SAAUwD,EAAS,CAC3C,OAAO,KAAOA,CAChB,EACAxD,EAAM,UAAU,eAAiB,SAAUwD,EAAS,CAClD,OAAO,MAAQA,CACjB,EACAxD,EAAM,UAAU,cAAgB,SAAUwD,EAAS,CACjD,OAAO,MAAQA,CACjB,EACAxD,EAAM,UAAU,UAAY,SAAUhB,EAAGyE,EAAG,CAC1C,OAAQzE,GAAK,MAAQ,MAAQyE,GAAOA,GAAK,MAAQ,MAAQzE,CAC3D,EAGAgB,EAAM,UAAU,KAAO,YAAaM,EAAM,CACxC,OAAOoD,EAAK,KAAK,KAAM,EAAG,GAAGpD,CAAI,CACnC,EAEAN,EAAM,UAAU,MAAQ,YAAaM,EAAM,CACzC,OAAOoD,EAAK,KAAK,KAAM,GAAI,GAAGpD,CAAI,CACpC,EAEA,SAASoD,EAAKC,KAASrD,EAAM,SAC3B,MAAMsD,EAAOtD,EAAK,CAAC,EACbuD,EAAOvD,EAAK,CAAC,EACnB,GAAI,OAAO,SAASsD,CAAI,GAAK,CAAC,OAAO,SAASC,CAAI,EAChD,OAAO,KAAK,MAAM,KAAK,QAAO,EAAKD,CAAI,EAEzC,IAAIE,EAAa,KACjB,GAAI5E,EAAS0E,CAAI,EAAG,CAClB,GAAI,CAACvE,EAAiBuE,CAAI,EACxB,MAAM,WACJ,6EAER,EAEIE,EAAaF,CACf,SAAW,OAAO,SAASA,CAAI,GAAK,MAAM,QAAQA,CAAI,EAAG,CACvD,MAAM5C,EAASV,EAAK,KAAI,EAAG,OAAOW,GAAK,OAAO,cAAcA,CAAC,CAAC,EAC9D,GAAID,EAAO,SAAWV,EAAK,KAAI,EAAG,OAChC,MAAM,WAAW,yBAAyB,EAE5C,GAAIU,EAAO,OAAS,EAClB,MAAM,WAAW,kBAAkB,EAErC8C,EAAa,CACX,KAAMxD,EAAK,CAAC,EACZ,MAAOA,EAAK,CAAC,EACb,IAAKA,EAAK,CAAC,EACX,KAAMA,EAAK,CAAC,EACZ,OAAQA,EAAK,CAAC,EACd,OAAQA,EAAK,CAAC,EACd,YAAaA,EAAK,CAAC,CACzB,CACE,KACE,OAAM,UAAS,EAEjB,MAAMlB,EAAO,KAAK,WAAU,EACtB2E,EAAM,KAAK1D,CAAQ,EAAE,UAAY,GAAK,MAC5C,GAAI9B,EAAIuF,EAAY,MAAM,GAAKvF,EAAIuF,EAAY,OAAO,EAAG,CACvD,MAAMvB,EAAO,KAAK,KAAI,EAAKoB,IAAQ5C,EAAA+C,EAAW,OAAX,KAAA/C,EAAmB,GAChDyB,EAAQ,KAAK,MAAK,EAAKmB,IAAQtC,EAAAyC,EAAW,QAAX,KAAAzC,EAAoB,GACnD2C,EAAa,IAAI,KAAK5E,EAAK,QAAO,CAAE,EAC1C4E,EAAW,MAAMD,CAAG,UAAU,EAAExB,EAAMC,EAAO,CAAC,EAC9C,MAAMyB,EAAUD,EAAW,MAAMD,CAAG,MAAM,EAAC,EACvCE,EAAU,KAAK,MACjB7E,EAAK,MAAM2E,CAAG,UAAU,EAAExB,EAAMyB,EAAW,MAAMD,CAAG,OAAO,EAAC,EAAIE,CAAO,EAEvE7E,EAAK,MAAM2E,CAAG,UAAU,EAAExB,EAAMC,EAAQ,CAAC,CAE7C,CACA,OAAIjE,EAAIuF,EAAY,KAAK,GACvB1E,EAAK,MAAM2E,CAAG,MAAM,EAAE3E,EAAK,MAAM2E,CAAG,MAAM,EAAC,EAAKJ,EAAOG,EAAW,GAAG,EAEtE,CACC,CAAC,OAAQ,OAAO,EAChB,CAAC,SAAU,SAAS,EACpB,CAAC,SAAU,SAAS,EACpB,CAAC,cAAe,cAAc,CAClC,EAAI,QAAQ,CAAC,CAACjF,EAAKqF,CAAS,IAAM,CAC1B3F,EAAIuF,EAAYjF,CAAG,GACrBO,EAAK,SAAS8E,CAAS,EAAE,EACvB9E,EAAK,SAAS8E,CAAS,EAAE,IAAMP,EAAOG,EAAWjF,CAAG,CAC5D,CAEE,CAAC,EACM,KAAK,MAAMS,EAAM,KAAKe,CAAQ,EAAE,eAAgBjB,CAAI,CAAC,CAC9D,CAKA,MAAM+E,EAAe,OAAO,oBAAoB,EAEhD,SAASlE,KAAaK,EAAM,CAC1B,GAAI,CAAC,WACH,OAAO,IAAIL,EAAU,GAAGK,CAAI,EAE9B,MAAMC,EAAQ,KAAK4D,CAAY,EAAI,CACjC,SAAU,IACd,EACE,IAAIvD,EAAS,KACTN,EAAK,CAAC,YAAaL,IACrBW,EAASN,EAAK,MAAK,EAAG,WAAU,GAElC,MAAMO,EAAQP,EAAK,CAAC,EACdQ,EAASR,EAAK,CAAC,EACrB,OAAI,OAAO,SAASO,CAAK,GAAK,CAAC,OAAO,SAASC,CAAM,IACnDR,EAAK,CAAC,EAAI,KAAK,MAAMO,CAAK,EAAI9C,GAEhC6C,EAASA,EAASA,EAAO,MAAM,GAAGN,CAAI,EAAIP,EAAM,GAAGO,CAAI,EACvDC,EAAK,SAAWK,EAAO,WAAU,EAC1B,IACT,CAEAX,EAAU,UAAU,SAAW,UAAY,CACzC,OAAO,KAAKkE,CAAY,EAAE,SAAS,WAAW,UAAU,EAAG,EAAE,CAC/D,EAEAlE,EAAU,UAAU,QAAU,UAAY,CACxC,OAAO,KAAKkE,CAAY,EAAE,SAAWpG,CACvC,EAEAkC,EAAU,UAAU,MAAQ,UAAY,CACtC,OAAO,KAAKkE,CAAY,EAAE,SAAS,MAAK,CAC1C,EAEAlE,EAAU,UAAU,MAAQ,YAAaK,EAAM,CAC7C,OAAO,IAAIL,EAAU,KAAM,GAAGK,CAAI,CACpC,EAEAL,EAAU,UAAU,WAAa,UAAY,CAC3C,OAAOF,EAAM,KAAKoE,CAAY,EAAE,SAAS,QAAO,CAAE,CACpD,EAEAlE,EAAU,UAAU,QAAU,UAAY,CACxC,OAAO,KAAKkE,CAAY,EAAE,SAAS,QAAO,EAAKpG,CACjD,EAEAkC,EAAU,UAAU,SAAW,UAAY,CACzC,MAAO,CACL,KAAM,KAAK,KAAI,EACf,MAAO,KAAK,MAAK,EACjB,IAAK,KAAK,IAAG,CACjB,CACA,EAEAA,EAAU,UAAU,QAAU,UAAY,CACxC,MAAO,CAAC,KAAK,KAAI,EAAI,KAAK,MAAK,EAAI,KAAK,IAAG,CAAE,CAC/C,EAEAA,EAAU,UAAU,YAAc,UAAY,CAC5C,OAAO,IAAIA,EAAU,KAAKkE,CAAY,EAAE,SAAS,YAAW,CAAE,CAChE,EAEAlE,EAAU,UAAU,aAAe,UAAY,CAC7C,OAAO,IAAIA,EAAU,KAAKkE,CAAY,EAAE,SAAS,aAAY,CAAE,CACjE,EAEAlE,EAAU,UAAU,WAAa,UAAY,CAC3C,OAAO,KAAKkE,CAAY,EAAE,SAAS,MAAK,CAC1C,EACC,CAAC,OAAQ,QAAS,KAAK,EAAE,QAAQC,GAAS,CACzCnE,EAAU,UAAUmE,CAAK,EAAI,SAAUzF,EAAO,CAC5C,OAAIG,EAAMH,CAAK,EACN,IAAIsB,EAAU,KAAKkE,CAAY,EAAE,SAASC,CAAK,EAAEzF,CAAK,CAAC,EAEzD,KAAKwF,CAAY,EAAE,SAASC,CAAK,EAAC,CAC3C,CACF,CAAC,EACA,CACC,YACA,YACA,aACA,aACA,aACA,cACA,aACA,aACF,EAAE,QAAQC,GAAU,CAClBpE,EAAU,UAAUoE,CAAM,EAAI,UAAY,CACxC,OAAO,KAAKF,CAAY,EAAE,SAASE,CAAM,EAAC,CAC5C,CACF,CAAC,EACA,CAAC,eAAgB,eAAgB,oBAAoB,EAAE,QAAQA,GAAU,CACxEpE,EAAU,UAAUoE,CAAM,EAAI,UAAY,CACxC,OAAOtE,EACL,CAAE,eAAgB,EAAI,EACtB,KAAKoE,CAAY,EAAE,SAAS,QAAO,EAAG,MAAM,EAAG,CAAC,CACtD,EAAME,CAAM,EAAC,CACX,CACF,CAAC,EAEDpE,EAAU,UAAU,UAAY,UAAY,CAC1C,OAAO,KAAK,MAAM,CAAE,MAAO,GAAI,IAAK,EAAE,CAAE,CAC1C,EAEAA,EAAU,UAAU,WAAa,UAAY,CAC3C,OAAO,KAAK,MAAM,CAAE,IAAK,KAAK,YAAW,CAAE,CAAE,CAC/C,EAEAA,EAAU,UAAU,OAAS,SAAUuD,EAAS,CAC9C,MAAO,CAAC,MAAS,CAACA,CACpB,EACAvD,EAAU,UAAU,SAAW,SAAUuD,EAAS,CAChD,OAAO,KAAOA,CAChB,EACAvD,EAAU,UAAU,QAAU,SAAUuD,EAAS,CAC/C,OAAO,KAAOA,CAChB,EACAvD,EAAU,UAAU,eAAiB,SAAUuD,EAAS,CACtD,OAAO,MAAQA,CACjB,EACAvD,EAAU,UAAU,cAAgB,SAAUuD,EAAS,CACrD,OAAO,MAAQA,CACjB,EACAvD,EAAU,UAAU,UAAY,SAAUjB,EAAGyE,EAAG,CAC9C,OAAQzE,GAAK,MAAQ,MAAQyE,GAAOA,GAAK,MAAQ,MAAQzE,CAC3D,EAEAiB,EAAU,UAAU,KAAO,YAAaK,EAAM,CAC5C,OAAOgE,EAAS,KAAK,KAAM,EAAG,GAAGhE,CAAI,CACvC,EAEAL,EAAU,UAAU,MAAQ,YAAaK,EAAM,CAC7C,OAAOgE,EAAS,KAAK,KAAM,GAAI,GAAGhE,CAAI,CACxC,EAEA,SAASgE,EAASX,KAASrD,EAAM,WAC/B,MAAMsD,EAAOtD,EAAK,CAAC,EACbuD,EAAOvD,EAAK,CAAC,EACbiE,EAAW,KAAKJ,CAAY,EAAE,SACpC,GAAI,OAAO,SAASP,CAAI,GAAK,CAAC,OAAO,SAASC,CAAI,EAChD,OAAOU,EAAS,KAAK,CAAE,IAAKZ,EAAOC,CAAI,CAAE,EAAE,OAAM,EAEnD,IAAIE,EAAa,KACjB,GAAI5E,EAAS0E,CAAI,GAAKvE,EAAiBuE,CAAI,EACzCE,EAAa,CACX,KAAMH,IAAQ5C,EAAA6C,EAAK,OAAL,KAAA7C,EAAa,GAC3B,MAAO4C,IAAQtC,EAAAuC,EAAK,QAAL,KAAAvC,EAAc,GAC7B,IAAKsC,IAAQrC,EAAAsC,EAAK,MAAL,KAAAtC,EAAY,EAC/B,UACa,OAAO,SAASsC,CAAI,EAAG,CAChC,GAAItD,EAAK,OAAS,EAChB,MAAM,WAAW,oBAAoB,EAEvCwD,EAAa,CAAE,KAAMxD,EAAK,CAAC,EAAG,MAAOA,EAAK,CAAC,EAAG,IAAKA,EAAK,CAAC,CAAC,CAC5D,SAAW,MAAM,QAAQsD,CAAI,EAAG,CAC9B,GAAIA,EAAK,OAAS,EAChB,MAAM,WAAW,mBAAmB,EAEtCE,EAAa,CAAE,KAAMF,EAAK,CAAC,EAAG,MAAOA,EAAK,CAAC,EAAG,IAAKA,EAAK,CAAC,CAAC,CAC5D,KACE,OAAM,UAAS,EAEjB,OAAOW,EAAS,KAAKT,CAAU,EAAE,OAAM,CACzC"}
|
package/package.json
CHANGED
package/src/qrono.js
CHANGED
|
@@ -264,8 +264,6 @@ function parse(str) {
|
|
|
264
264
|
}
|
|
265
265
|
if (offset) {
|
|
266
266
|
this.nativeDate = native
|
|
267
|
-
} else if (this.localtime) {
|
|
268
|
-
this.nativeDate = asDst(this.interpretAsDst, native)
|
|
269
267
|
} else {
|
|
270
268
|
this.set({ year, month, day, hour, minute, second, millisecond })
|
|
271
269
|
}
|
|
@@ -618,7 +616,7 @@ function plus(sign, ...args) {
|
|
|
618
616
|
const month = this.month() + sign * (timeFields.month ?? 0)
|
|
619
617
|
const endOfMonth = new Date(date.getTime())
|
|
620
618
|
endOfMonth[`set${utc}FullYear`](year, month, 0)
|
|
621
|
-
const lastDay = endOfMonth
|
|
619
|
+
const lastDay = endOfMonth[`get${utc}Date`]()
|
|
622
620
|
if (lastDay < this.day()) {
|
|
623
621
|
date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)
|
|
624
622
|
} else {
|
|
@@ -662,10 +660,10 @@ function QronoDate(...args) {
|
|
|
662
660
|
const first = args[0]
|
|
663
661
|
const second = args[1]
|
|
664
662
|
if (Number.isFinite(first) && !Number.isFinite(second)) {
|
|
665
|
-
args[0]
|
|
663
|
+
args[0] = Math.floor(first) * millisecondsPerDay
|
|
666
664
|
}
|
|
667
|
-
source =
|
|
668
|
-
self.datetime =
|
|
665
|
+
source = source ? source.clone(...args) : qrono(...args)
|
|
666
|
+
self.datetime = source.startOfDay()
|
|
669
667
|
return this
|
|
670
668
|
}
|
|
671
669
|
|