qrono 1.0.1 → 1.0.3
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 +54 -69
- 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 +2 -2
- package/src/helpers.js +10 -7
- package/src/qrono.js +10 -27
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,L=24,v=60,E=v*L,x=60,nt=x*v,it=nt*L,B=1e3,ot=x*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 A(t){return Object.entries(t).filter(([,e])=>!rt(e)).map(([e])=>e)}function m(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 G(t){return!isNaN(t.getTime())}function Y(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 f=new Date(n).setMinutes(e.getMinutes()+u),d=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return f===d||u<0&&f===n||u>0&&f!==n?c:new Date(d)}const F=i;i.date=r;const g={localtime:!1,interpretAsDst:!0};A(g).forEach(t=>{i[t]=function(e){return m(e)?(g[t]=e,this):g[t]}});i.context=function(t){return m(t)?(A(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();A(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 G(this.nativeDate)}function ut(t){if(t)return A(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,f,d,l,p,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(),(f=e.minute)!=null?f:h.getMinutes(),(d=e.second)!=null?d:h.getSeconds(),(l=e.millisecond)!=null?l:h.getMilliseconds()),this.nativeDate=C(this.interpretAsDst,S)}else{const h=(p=this.nativeDate)!=null?p: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,f,d,l,p]=[+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 p?this.nativeDate=D:this.localtime?this.nativeDate=C(this.interpretAsDst,D):this.set({year:c,month:a,day:o,hour:u,minute:f,second:d,millisecond:l}),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 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+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.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 f,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 l=e.flat().filter(p=>Number.isSafeInteger(p));if(l.length!==e.flat().length)throw RangeError("Should be safe integers");if(l.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 l=this.year()+t*((f=a.year)!=null?f:0),p=this.month()+t*((d=a.month)!=null?d:0),D=new Date(o.getTime());D[`set${u}FullYear`](l,p,0);const O=D.getDate();O<this.day()?o[`set${u}FullYear`](l,D[`get${u}Month`](),O):o[`set${u}FullYear`](l,p-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(([l,p])=>{w(a,l)&&o[`setUTC${p}`](o[`getUTC${p}`]()+t*a[l])}),this.clone(C(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]*=$),n=(n?n.clone(...t):F(...t)).startOfDay(),e.datetime=F({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/$};r.prototype.valid=function(){return this[y].datetime.valid()};r.prototype.clone=function(...t){return new r(this,...t)};r.prototype.toDatetime=function(){return F(this[y].datetime.toArray())};r.prototype.numeric=function(){return this[y].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[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 this[y].datetime.localtime(!0)[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,f,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(b(n)&&Y(n))o={year:t*((u=n.year)!=null?u:0),month:t*((f=n.month)!=null?f: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=F;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 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;
|
|
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) { return original }\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) { return original }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(date.getUTCMinutes() + adjust)\n if (adjusted === adjustedUTC || (\n (adjust < 0 && adjusted === numeric) ||\n (adjust > 0 && adjusted !== numeric)\n )) {\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.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({\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({\n millisecond: 0,\n })\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 this[internalDate].datetime.localtime(true)[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 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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"}
|
package/dist/qrono.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var q = Object.defineProperty;
|
|
2
2
|
var W = Object.getOwnPropertySymbols;
|
|
3
3
|
var V = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable;
|
|
4
|
-
var j = (t, e, n) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n,
|
|
4
|
+
var j = (t, e, n) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, N = (t, e) => {
|
|
5
5
|
for (var n in e || (e = {}))
|
|
6
6
|
V.call(e, n) && j(t, n, e[n]);
|
|
7
7
|
if (W)
|
|
@@ -9,7 +9,7 @@ var j = (t, e, n) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writab
|
|
|
9
9
|
G.call(e, n) && j(t, n, e[n]);
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
const J = new Date(1915, 0, 1, 12, 0, 0, 0), M = 7, k = 24, v = 60,
|
|
12
|
+
const J = new Date(1915, 0, 1, 12, 0, 0, 0), M = 7, k = 24, v = 60, E = v * k, x = 60, X = x * v, _ = X * k, L = 1e3, K = x * L, $ = _ * L, tt = 1, et = 2, B = 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
|
}
|
|
@@ -53,10 +53,12 @@ function U(t, e) {
|
|
|
53
53
|
const u = a.getTimezoneOffset() - o.getTimezoneOffset();
|
|
54
54
|
if (u === 0)
|
|
55
55
|
return c;
|
|
56
|
-
const
|
|
57
|
-
|
|
56
|
+
const y = new Date(n).setMinutes(e.getMinutes() + u), p = new Date(n).setUTCMinutes(
|
|
57
|
+
e.getUTCMinutes() + u
|
|
58
|
+
);
|
|
59
|
+
return y === p || y === n ? c : new Date(p);
|
|
58
60
|
}
|
|
59
|
-
const
|
|
61
|
+
const A = i;
|
|
60
62
|
i.date = r;
|
|
61
63
|
const g = {
|
|
62
64
|
localtime: !1,
|
|
@@ -70,7 +72,7 @@ F(g).forEach((t) => {
|
|
|
70
72
|
i.context = function(t) {
|
|
71
73
|
return m(t) ? (F(g).filter((e) => w(t, e)).forEach((e) => {
|
|
72
74
|
g[e] = t[e];
|
|
73
|
-
}), this) :
|
|
75
|
+
}), this) : N({}, g);
|
|
74
76
|
};
|
|
75
77
|
i.asUtc = function() {
|
|
76
78
|
return g.localtime = !1, this;
|
|
@@ -158,8 +160,8 @@ function ct(t) {
|
|
|
158
160
|
return this.nativeDate[`get${this.localtime ? "" : "UTC"}${t}`]();
|
|
159
161
|
}
|
|
160
162
|
function ht(t) {
|
|
161
|
-
var n, c, a, o, u,
|
|
162
|
-
const e =
|
|
163
|
+
var n, c, a, o, u, y, p, f, d, D, O, C, I, H, P, R;
|
|
164
|
+
const e = N({}, t);
|
|
163
165
|
if (e.month = e.month && e.month - 1, this.localtime) {
|
|
164
166
|
const h = (n = this.nativeDate) != null ? n : new Date(0, 0), S = new Date(J.getTime());
|
|
165
167
|
S.setFullYear(
|
|
@@ -168,9 +170,9 @@ function ht(t) {
|
|
|
168
170
|
(o = e.day) != null ? o : h.getDate()
|
|
169
171
|
), S.setHours(
|
|
170
172
|
(u = e.hour) != null ? u : h.getHours(),
|
|
171
|
-
(
|
|
173
|
+
(y = e.minute) != null ? y : h.getMinutes(),
|
|
172
174
|
(p = e.second) != null ? p : h.getSeconds(),
|
|
173
|
-
(
|
|
175
|
+
(f = e.millisecond) != null ? f : h.getMilliseconds()
|
|
174
176
|
), this.nativeDate = U(this.interpretAsDst, S);
|
|
175
177
|
} else {
|
|
176
178
|
const h = (d = this.nativeDate) != null ? d : /* @__PURE__ */ new Date(0), S = /* @__PURE__ */ new Date(0);
|
|
@@ -198,7 +200,7 @@ function lt(t) {
|
|
|
198
200
|
throw RangeError(
|
|
199
201
|
`Failed to parse '${t}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
|
|
200
202
|
);
|
|
201
|
-
const [c, a, o, u,
|
|
203
|
+
const [c, a, o, u, y, p, f, d] = [
|
|
202
204
|
+n[1],
|
|
203
205
|
+n[2] || 1,
|
|
204
206
|
+n[3] || 1,
|
|
@@ -212,7 +214,7 @@ function lt(t) {
|
|
|
212
214
|
throw RangeError(
|
|
213
215
|
`Failed to parse '${t}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
|
|
214
216
|
);
|
|
215
|
-
return d ? this.nativeDate = D : this.localtime ? this.nativeDate = U(this.interpretAsDst, D) : this.set({ year: c, month: a, day: o, hour: u, minute:
|
|
217
|
+
return d ? this.nativeDate = D : this.localtime ? this.nativeDate = U(this.interpretAsDst, D) : this.set({ year: c, month: a, day: o, hour: u, minute: y, second: p, millisecond: f }), this;
|
|
216
218
|
}
|
|
217
219
|
i.prototype.toString = function() {
|
|
218
220
|
if (this[s].localtime) {
|
|
@@ -340,13 +342,13 @@ i.prototype.isInDst = function() {
|
|
|
340
342
|
return this[s].localtime ? this.offset() === Math.max(...[3, 6, 9, 12].map((t) => this.month(t).offset())) : !1;
|
|
341
343
|
};
|
|
342
344
|
i.prototype.isDstTransitionDay = function() {
|
|
343
|
-
return this[s].localtime ? this.minutesInDay() !==
|
|
345
|
+
return this[s].localtime ? this.minutesInDay() !== E : !1;
|
|
344
346
|
};
|
|
345
347
|
i.prototype.minutesInDay = function() {
|
|
346
348
|
if (!this[s].localtime)
|
|
347
|
-
return
|
|
348
|
-
const t = this.startOfDay(), e = t.plus({ day: 1 }).startOfDay();
|
|
349
|
-
return t.day() === e.day() ?
|
|
349
|
+
return E;
|
|
350
|
+
const t = this.context({ interpretAsDst: !0 }).startOfDay(), e = t.plus({ day: 1 }).startOfDay();
|
|
351
|
+
return t.day() === e.day() ? E : (e - t) / K;
|
|
350
352
|
};
|
|
351
353
|
i.prototype.daysInMonth = function() {
|
|
352
354
|
const t = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], e = this.month();
|
|
@@ -370,39 +372,19 @@ i.prototype.startOfYear = function() {
|
|
|
370
372
|
});
|
|
371
373
|
};
|
|
372
374
|
i.prototype.startOfMonth = function() {
|
|
373
|
-
return this.clone({
|
|
374
|
-
day: 1,
|
|
375
|
-
hour: 0,
|
|
376
|
-
minute: 0,
|
|
377
|
-
second: 0,
|
|
378
|
-
millisecond: 0
|
|
379
|
-
});
|
|
375
|
+
return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 });
|
|
380
376
|
};
|
|
381
377
|
i.prototype.startOfDay = function() {
|
|
382
|
-
return this.clone({
|
|
383
|
-
hour: 0,
|
|
384
|
-
minute: 0,
|
|
385
|
-
second: 0,
|
|
386
|
-
millisecond: 0
|
|
387
|
-
});
|
|
378
|
+
return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 });
|
|
388
379
|
};
|
|
389
380
|
i.prototype.startOfHour = function() {
|
|
390
|
-
return this.clone({
|
|
391
|
-
minute: 0,
|
|
392
|
-
second: 0,
|
|
393
|
-
millisecond: 0
|
|
394
|
-
});
|
|
381
|
+
return this.clone({ minute: 0, second: 0, millisecond: 0 });
|
|
395
382
|
};
|
|
396
383
|
i.prototype.startOfMinute = function() {
|
|
397
|
-
return this.clone({
|
|
398
|
-
second: 0,
|
|
399
|
-
millisecond: 0
|
|
400
|
-
});
|
|
384
|
+
return this.clone({ second: 0, millisecond: 0 });
|
|
401
385
|
};
|
|
402
386
|
i.prototype.startOfSecond = function() {
|
|
403
|
-
return this.clone({
|
|
404
|
-
millisecond: 0
|
|
405
|
-
});
|
|
387
|
+
return this.clone({ millisecond: 0 });
|
|
406
388
|
};
|
|
407
389
|
i.prototype.isSame = function(t) {
|
|
408
390
|
return +this == +t;
|
|
@@ -429,7 +411,7 @@ i.prototype.minus = function(...t) {
|
|
|
429
411
|
return Q.call(this, -1, ...t);
|
|
430
412
|
};
|
|
431
413
|
function Q(t, ...e) {
|
|
432
|
-
var
|
|
414
|
+
var y, p;
|
|
433
415
|
const n = e[0], c = e[1];
|
|
434
416
|
if (Number.isFinite(n) && !Number.isFinite(c))
|
|
435
417
|
return this.clone(this.numeric() + n);
|
|
@@ -441,10 +423,10 @@ function Q(t, ...e) {
|
|
|
441
423
|
);
|
|
442
424
|
a = n;
|
|
443
425
|
} else if (Number.isFinite(n) || Array.isArray(n)) {
|
|
444
|
-
const
|
|
445
|
-
if (
|
|
426
|
+
const f = e.flat().filter((d) => Number.isSafeInteger(d));
|
|
427
|
+
if (f.length !== e.flat().length)
|
|
446
428
|
throw RangeError("Should be safe integers");
|
|
447
|
-
if (
|
|
429
|
+
if (f.length > 7)
|
|
448
430
|
throw RangeError("Too many numbers");
|
|
449
431
|
a = {
|
|
450
432
|
year: e[0],
|
|
@@ -459,51 +441,51 @@ function Q(t, ...e) {
|
|
|
459
441
|
throw TypeError();
|
|
460
442
|
const o = this.nativeDate(), u = this[s].localtime ? "" : "UTC";
|
|
461
443
|
if (w(a, "year") || w(a, "month")) {
|
|
462
|
-
const
|
|
463
|
-
D[`set${u}FullYear`](
|
|
444
|
+
const f = this.year() + t * ((y = a.year) != null ? y : 0), d = this.month() + t * ((p = a.month) != null ? p : 0), D = new Date(o.getTime());
|
|
445
|
+
D[`set${u}FullYear`](f, d, 0);
|
|
464
446
|
const O = D.getDate();
|
|
465
|
-
O < this.day() ? o[`set${u}FullYear`](
|
|
447
|
+
O < this.day() ? o[`set${u}FullYear`](f, D[`get${u}Month`](), O) : o[`set${u}FullYear`](f, d - 1);
|
|
466
448
|
}
|
|
467
449
|
return w(a, "day") && o[`set${u}Date`](o[`get${u}Date`]() + t * a.day), [
|
|
468
450
|
["hour", "Hours"],
|
|
469
451
|
["minute", "Minutes"],
|
|
470
452
|
["second", "Seconds"],
|
|
471
453
|
["millisecond", "Milliseconds"]
|
|
472
|
-
].forEach(([
|
|
473
|
-
w(a,
|
|
474
|
-
o[`getUTC${d}`]() + t * a[
|
|
454
|
+
].forEach(([f, d]) => {
|
|
455
|
+
w(a, f) && o[`setUTC${d}`](
|
|
456
|
+
o[`getUTC${d}`]() + t * a[f]
|
|
475
457
|
);
|
|
476
458
|
}), this.clone(U(this[s].interpretAsDst, o));
|
|
477
459
|
}
|
|
478
|
-
const
|
|
460
|
+
const l = /* @__PURE__ */ Symbol("QronoDate.internal");
|
|
479
461
|
function r(...t) {
|
|
480
462
|
if (!new.target)
|
|
481
463
|
return new r(...t);
|
|
482
|
-
const e = this[
|
|
464
|
+
const e = this[l] = {
|
|
483
465
|
datetime: null
|
|
484
466
|
};
|
|
485
467
|
let n = null;
|
|
486
468
|
t[0] instanceof r && (n = t.shift().toDatetime());
|
|
487
469
|
const c = t[0], a = t[1];
|
|
488
|
-
return Number.isFinite(c) && !Number.isFinite(a) && (t[0] *= $), n = (n ? n.clone(...t) :
|
|
470
|
+
return Number.isFinite(c) && !Number.isFinite(a) && (t[0] *= $), n = (n ? n.clone(...t) : A(...t)).startOfDay(), e.datetime = A({ localtime: !1 }, n.toObject()), this;
|
|
489
471
|
}
|
|
490
472
|
r.prototype.toString = function() {
|
|
491
|
-
return this[
|
|
473
|
+
return this[l].datetime.toString().substring(0, 10);
|
|
492
474
|
};
|
|
493
475
|
r.prototype.valueOf = function() {
|
|
494
|
-
return this[
|
|
476
|
+
return this[l].datetime / $;
|
|
495
477
|
};
|
|
496
478
|
r.prototype.valid = function() {
|
|
497
|
-
return this[
|
|
479
|
+
return this[l].datetime.valid();
|
|
498
480
|
};
|
|
499
481
|
r.prototype.clone = function(...t) {
|
|
500
482
|
return new r(this, ...t);
|
|
501
483
|
};
|
|
502
484
|
r.prototype.toDatetime = function() {
|
|
503
|
-
return
|
|
485
|
+
return A(this[l].datetime.toArray());
|
|
504
486
|
};
|
|
505
487
|
r.prototype.numeric = function() {
|
|
506
|
-
return this[
|
|
488
|
+
return this[l].datetime.numeric() / $;
|
|
507
489
|
};
|
|
508
490
|
r.prototype.toObject = function() {
|
|
509
491
|
return {
|
|
@@ -516,17 +498,17 @@ r.prototype.toArray = function() {
|
|
|
516
498
|
return [this.year(), this.month(), this.day()];
|
|
517
499
|
};
|
|
518
500
|
r.prototype.startOfYear = function() {
|
|
519
|
-
return new r(this[
|
|
501
|
+
return new r(this[l].datetime.startOfYear());
|
|
520
502
|
};
|
|
521
503
|
r.prototype.startOfMonth = function() {
|
|
522
|
-
return new r(this[
|
|
504
|
+
return new r(this[l].datetime.startOfMonth());
|
|
523
505
|
};
|
|
524
506
|
r.prototype.startOfDay = function() {
|
|
525
|
-
return this[
|
|
507
|
+
return this[l].datetime.clone();
|
|
526
508
|
};
|
|
527
509
|
["year", "month", "day"].forEach((t) => {
|
|
528
510
|
r.prototype[t] = function(e) {
|
|
529
|
-
return m(e) ? new r(this[
|
|
511
|
+
return m(e) ? new r(this[l].datetime[t](e)) : this[l].datetime[t]();
|
|
530
512
|
};
|
|
531
513
|
});
|
|
532
514
|
[
|
|
@@ -540,12 +522,15 @@ r.prototype.startOfDay = function() {
|
|
|
540
522
|
"weeksInYear"
|
|
541
523
|
].forEach((t) => {
|
|
542
524
|
r.prototype[t] = function() {
|
|
543
|
-
return this[
|
|
525
|
+
return this[l].datetime[t]();
|
|
544
526
|
};
|
|
545
527
|
});
|
|
546
528
|
["minutesInDay", "hasDstInYear", "isDstTransitionDay"].forEach((t) => {
|
|
547
529
|
r.prototype[t] = function() {
|
|
548
|
-
return
|
|
530
|
+
return A(
|
|
531
|
+
{ interpretAsDst: !0 },
|
|
532
|
+
this[l].datetime.toArray().slice(0, 3)
|
|
533
|
+
)[t]();
|
|
549
534
|
};
|
|
550
535
|
});
|
|
551
536
|
r.prototype.endOfYear = function() {
|
|
@@ -579,15 +564,15 @@ r.prototype.minus = function(...t) {
|
|
|
579
564
|
return Z.call(this, -1, ...t);
|
|
580
565
|
};
|
|
581
566
|
function Z(t, ...e) {
|
|
582
|
-
var u,
|
|
583
|
-
const n = e[0], c = e[1], a = this[
|
|
567
|
+
var u, y, p;
|
|
568
|
+
const n = e[0], c = e[1], a = this[l].datetime;
|
|
584
569
|
if (Number.isFinite(n) && !Number.isFinite(c))
|
|
585
570
|
return a.plus({ day: t * n }).toDate();
|
|
586
571
|
let o = null;
|
|
587
572
|
if (b(n) && Y(n))
|
|
588
573
|
o = {
|
|
589
574
|
year: t * ((u = n.year) != null ? u : 0),
|
|
590
|
-
month: t * ((
|
|
575
|
+
month: t * ((y = n.month) != null ? y : 0),
|
|
591
576
|
day: t * ((p = n.day) != null ? p : 0)
|
|
592
577
|
};
|
|
593
578
|
else if (Number.isFinite(n)) {
|
|
@@ -605,7 +590,7 @@ function Z(t, ...e) {
|
|
|
605
590
|
export {
|
|
606
591
|
nt as friday,
|
|
607
592
|
tt as monday,
|
|
608
|
-
|
|
593
|
+
A as qrono,
|
|
609
594
|
it as saturday,
|
|
610
595
|
ot as sunday,
|
|
611
596
|
T as thursday,
|
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) { return original }\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) { return original }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(date.getUTCMinutes() + adjust)\n if (adjusted === adjustedUTC || (\n (adjust < 0 && adjusted === numeric) ||\n (adjust > 0 && adjusted !== numeric)\n )) {\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.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({\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({\n millisecond: 0,\n })\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 this[internalDate].datetime.localtime(true)[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 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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"}
|
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,Y=60,$=Y*P,j=60,tt=j*Y*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 p(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 z(t){return!isNaN(t.getTime())}function N(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 d=new Date(n).setMinutes(e.getMinutes()+u),D=new Date(n).setUTCMinutes(e.getUTCMinutes()+u);return d===D||u<0&&d===n||u>0&&d!==n?f:new Date(D)}const E=i;i.date=r;const S={localtime:!1,interpretAsDst:!0};F(S).forEach(t=>{i[t]=function(e){return p(e)?(S[t]=e,this):S[t]}}),i.context=function(t){return p(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]()})}A(t[0])&&!N(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(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(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,d,D,m,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(),(d=e.minute)!=null?d:l.getMinutes(),(D=e.second)!=null?D:l.getSeconds(),(m=e.millisecond)!=null?m: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,d,D,m,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:d,second:D,millisecond:m}),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 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+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.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 d,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(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 m=e.flat().filter(O=>Number.isSafeInteger(O));if(m.length!==e.flat().length)throw RangeError("Should be safe integers");if(m.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 m=this.year()+t*((d=a.year)!=null?d:0),O=this.month()+t*((D=a.month)!=null?D:0),w=new Date(o.getTime());w[`set${u}FullYear`](m,O,0);const T=w.getDate();T<this.day()?o[`set${u}FullYear`](m,w[`get${u}Month`](),T):o[`set${u}FullYear`](m,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(([m,O])=>{v(a,m)&&o[`setUTC${O}`](o[`getUTC${O}`]()+t*a[m])}),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):E(...t)).startOfDay(),e.datetime=E({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 E(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 p(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 this[y].datetime.localtime(!0)[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,d,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(A(n)&&N(n))o={year:t*((u=n.year)!=null?u:0),month:t*((d=n.month)!=null?d: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=E,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(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})({});
|
|
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) { return original }\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) { return original }\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(date.getUTCMinutes() + adjust)\n if (adjusted === adjustedUTC || (\n (adjust < 0 && adjusted === numeric) ||\n (adjust > 0 && adjusted !== numeric)\n )) {\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.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({\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({\n minute: 0,\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({\n second: 0,\n millisecond: 0,\n })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({\n millisecond: 0,\n })\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 this[internalDate].datetime.localtime(true)[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 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qrono",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description":
|
|
5
5
|
"A 4kB JavaScript date library with 100+ APIs and strict DST guarantees.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"jsdeliver": "dist/qrono.min.js",
|
|
30
30
|
"types": "types/qrono.d.ts",
|
|
31
31
|
"scripts": {
|
|
32
|
-
"prepare": "husky && npm run lint && npm run build",
|
|
32
|
+
"prepare": "husky && npm run format && npm run lint && npm run build",
|
|
33
33
|
"postpublish": "jsr publish --no-provenance",
|
|
34
34
|
"lint": "oxlint ./src ./tests",
|
|
35
35
|
"lint:fix": "oxlint --fix ./src ./tests && prettier --write .",
|
package/src/helpers.js
CHANGED
|
@@ -100,19 +100,22 @@ export function hasDatetimeField(object) {
|
|
|
100
100
|
export function asDst(interpretAsDst, date) {
|
|
101
101
|
const numeric = date.getTime()
|
|
102
102
|
const original = new Date(numeric)
|
|
103
|
-
if (interpretAsDst) {
|
|
103
|
+
if (interpretAsDst) {
|
|
104
|
+
return original
|
|
105
|
+
}
|
|
104
106
|
const nextDay = new Date(numeric)
|
|
105
107
|
nextDay.setDate(date.getDate() + 1)
|
|
106
108
|
const prevDay = new Date(numeric)
|
|
107
109
|
prevDay.setDate(date.getDate() - 1)
|
|
108
110
|
const adjust = nextDay.getTimezoneOffset() - prevDay.getTimezoneOffset()
|
|
109
|
-
if (adjust === 0) {
|
|
111
|
+
if (adjust === 0) {
|
|
112
|
+
return original
|
|
113
|
+
}
|
|
110
114
|
const adjusted = new Date(numeric).setMinutes(date.getMinutes() + adjust)
|
|
111
|
-
const adjustedUTC = new Date(numeric).setUTCMinutes(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
)) {
|
|
115
|
+
const adjustedUTC = new Date(numeric).setUTCMinutes(
|
|
116
|
+
date.getUTCMinutes() + adjust
|
|
117
|
+
)
|
|
118
|
+
if (adjusted === adjustedUTC || adjusted === numeric) {
|
|
116
119
|
return original
|
|
117
120
|
}
|
|
118
121
|
return new Date(adjustedUTC)
|
package/src/qrono.js
CHANGED
|
@@ -487,7 +487,7 @@ Qrono.prototype.minutesInDay = function () {
|
|
|
487
487
|
if (!this[internal].localtime) {
|
|
488
488
|
return minutesPerDay
|
|
489
489
|
}
|
|
490
|
-
const startOfDay = this.startOfDay()
|
|
490
|
+
const startOfDay = this.context({ interpretAsDst: true }).startOfDay()
|
|
491
491
|
const nextDay = startOfDay.plus({ day: 1 }).startOfDay()
|
|
492
492
|
if (startOfDay.day() === nextDay.day()) {
|
|
493
493
|
return minutesPerDay
|
|
@@ -529,43 +529,23 @@ Qrono.prototype.startOfYear = function () {
|
|
|
529
529
|
}
|
|
530
530
|
|
|
531
531
|
Qrono.prototype.startOfMonth = function () {
|
|
532
|
-
return this.clone({
|
|
533
|
-
day: 1,
|
|
534
|
-
hour: 0,
|
|
535
|
-
minute: 0,
|
|
536
|
-
second: 0,
|
|
537
|
-
millisecond: 0,
|
|
538
|
-
})
|
|
532
|
+
return this.clone({ day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 })
|
|
539
533
|
}
|
|
540
534
|
|
|
541
535
|
Qrono.prototype.startOfDay = function () {
|
|
542
|
-
return this.clone({
|
|
543
|
-
hour: 0,
|
|
544
|
-
minute: 0,
|
|
545
|
-
second: 0,
|
|
546
|
-
millisecond: 0,
|
|
547
|
-
})
|
|
536
|
+
return this.clone({ hour: 0, minute: 0, second: 0, millisecond: 0 })
|
|
548
537
|
}
|
|
549
538
|
|
|
550
539
|
Qrono.prototype.startOfHour = function () {
|
|
551
|
-
return this.clone({
|
|
552
|
-
minute: 0,
|
|
553
|
-
second: 0,
|
|
554
|
-
millisecond: 0,
|
|
555
|
-
})
|
|
540
|
+
return this.clone({ minute: 0, second: 0, millisecond: 0 })
|
|
556
541
|
}
|
|
557
542
|
|
|
558
543
|
Qrono.prototype.startOfMinute = function () {
|
|
559
|
-
return this.clone({
|
|
560
|
-
second: 0,
|
|
561
|
-
millisecond: 0,
|
|
562
|
-
})
|
|
544
|
+
return this.clone({ second: 0, millisecond: 0 })
|
|
563
545
|
}
|
|
564
546
|
|
|
565
547
|
Qrono.prototype.startOfSecond = function () {
|
|
566
|
-
return this.clone({
|
|
567
|
-
millisecond: 0,
|
|
568
|
-
})
|
|
548
|
+
return this.clone({ millisecond: 0 })
|
|
569
549
|
}
|
|
570
550
|
|
|
571
551
|
Qrono.prototype.isSame = function (another) {
|
|
@@ -760,7 +740,10 @@ QronoDate.prototype.startOfDay = function () {
|
|
|
760
740
|
})
|
|
761
741
|
;['minutesInDay', 'hasDstInYear', 'isDstTransitionDay'].forEach(method => {
|
|
762
742
|
QronoDate.prototype[method] = function () {
|
|
763
|
-
return
|
|
743
|
+
return qrono(
|
|
744
|
+
{ interpretAsDst: true },
|
|
745
|
+
this[internalDate].datetime.toArray().slice(0, 3)
|
|
746
|
+
)[method]()
|
|
764
747
|
}
|
|
765
748
|
})
|
|
766
749
|
|