@stacksjs/datetime 0.66.0 → 0.68.0
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/index.js +1 -4
- package/package.json +4 -6
- package/dist/index.js.map +0 -27
- package/src/index.ts +0 -6
package/dist/index.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{useDateFormat as RG,useNow as LG}from"@stacksjs/utils";function d(G){const J=G.match(i);if(J){const Q=Number(J[2]);if(Q<1||Q>12)return!1;if(typeof J[3]!==void 0){const X=Number(J[3]);if(X<1||X>31)return!1}if(typeof J[4]!==void 0){const X=Number(J[4]);if(X<0||X>23)return!1}return!0}return!1}var i=/^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2})?$/;function VG(G){const J=G.match(i);if(J&&typeof J[4]==="undefined")return G+="T00:00:00";return G}function q(G){if(!G)G=new Date;if(G instanceof Date){const J=new Date(G);return J.setMilliseconds(0),J}if(G=G.trim(),d(G))return new Date(VG(G));throw new Error(`Non ISO 8601 compliant date (${G}).`)}function p(G){const J=q(G);return J.setDate(1),J.setMonth(J.getMonth()+1),J.setDate(0),J}function P(G){return p(G).getDate()}function D(G){if(/^[+-]\d{2}:\d{2}/.test(G))return 6;if(/^[+-]\d{4}/.test(G))return 5;throw new Error("Invalid offset format")}function E(G){if(G.type==="literal")G.value=G.value.normalize("NFKC");return G}function KG(G,J,Q,X=!1,K=null){const $=zG(G,J,Q,X),F=q(G);function _({partName:W,partValue:Z,token:b}){if(W==="literal")return Z;const C=$[W];if(W==="hour"&&b==="H")return C.replace(/^0/,"")||"0";if(["mm","ss","MM"].includes(b)&&C.length===1)return`0${C}`;if(W==="dayPeriod"){const N=x(F.getUTCHours()<12?"am":"pm",Q);return b==="A"?N.toUpperCase():N.toLowerCase()}if(W==="timeZoneName")return K!=null?K:o(-1*F.getTimezoneOffset(),b);return C}return J.map((W)=>{return{...W,value:_(W)}})}function zG(G,J,Q,X=!1){const K=q(G),$=J.filter((b)=>b.hour12),F=J.filter((b)=>!b.hour12),_=[],W=[];function Z(b,C=!1){const N=`${Q}-u-hc-${C?"h12":"h23"}`;if(_.push(...new Intl.DateTimeFormat(N,b.reduce((H,V)=>{if(V.partName==="literal")return H;if(X&&TG.includes(V.token))W.push(V);return Object.assign(H,V.option)},{timeZone:"UTC"})).formatToParts(K).map(E)),X&&W.length)for(let H of W){let V=[];switch(H.token){case"MMMM":V=new Intl.DateTimeFormat(N,{dateStyle:"long",timeZone:"UTC"}).formatToParts(K).map(E);break;case"MMM":V=new Intl.DateTimeFormat(N,{dateStyle:"medium",timeZone:"UTC"}).formatToParts(K).map(E);break}const T=V.find((Y)=>Y.type===H.partName),R=_.findIndex((Y)=>Y.type===H.partName);if(T&&R>-1)_[R]=T}}if($.length)Z($,!0);if(F.length)Z(F);return _.reduce((b,C)=>{return b[C.type]=C.value,b},{})}function o(G,J="Z"){const Q=String(Math.floor(Math.abs(G/60))).padStart(2,"0"),X=String(Math.abs(G%60)).padStart(2,"0"),K=G<0?"-":"+";if(J==="ZZ")return`${K}${Q}${X}`;return`${K}${Q}:${X}`}function QG(G,J){s(G,J);const[Q,X,K,$]=G.match(/([+-])([0-3][0-9]):?([0-6][0-9])/),F=Number(K)*60+Number($);return X==="+"?F:-F}function s(G,J="Z"){if(!((X)=>{switch(X){case"Z":return/^([+-])[0-3][0-9]:[0-6][0-9]$/.test(G);case"ZZ":return/^([+-])[0-3][0-9][0-6][0-9]$/.test(G)}})(J))throw new Error(`Invalid offset: ${G}`);return G}function XG(G){return M.concat(g).concat(h).sort((J,Q)=>J[0].length>Q[0].length?1:-1).reduce((J,Q)=>{return J.replace(Q[0],`\\${Q[0]}`)},G)}function wG(G){return["numeric","2-digit"].includes(G.partValue)}function $G(G){let J=void 0;for(let Q of G){if(Q.partName==="literal"&&!isNaN(parseFloat(Q.partValue)))throw new Error(`Numbers in format (${Q.partValue}).`);if(J&&J.partName!=="literal"&&Q.partName!=="literal"){if(!(J.token in L)&&!(Q.token in L)&&!(wG(J)&&Q.token.toLowerCase()==="a"))throw new Error(`Illegal adjacent tokens (${J.token}, ${Q.token})`)}J=Q}return G}function bG(G){if(typeof G==="string")return G.includes("ZZ")?"ZZ":"Z";return"time"in G&&G.time==="full"?"Z":"ZZ"}var v="1999-03-04T02:05:01.000Z",k=new Map,M=[["YYYY",{year:"numeric"}],["YY",{year:"2-digit"}],["MMMM",{month:"long"}],["MMM",{month:"short"}],["MM",{month:"2-digit"}],["M",{month:"numeric"}],["DD",{day:"2-digit"}],["D",{day:"numeric"}],["dddd",{weekday:"long"}],["ddd",{weekday:"short"}],["d",{weekday:"narrow"}],["mm",{minute:"2-digit"}],["m",{minute:"numeric"}],["ss",{second:"2-digit"}],["s",{second:"numeric"}],["ZZ",{timeZoneName:"long"}],["Z",{timeZoneName:"short"}]],g=[["HH",{hour:"2-digit"}],["H",{hour:"numeric"}]],h=[["hh",{hour:"2-digit"}],["h",{hour:"numeric"}],["a",{dayPeriod:"narrow"}],["A",{dayPeriod:"narrow"}]],L={DD:2,HH:2,MM:2,YY:2,YYYY:4,hh:2,mm:2,ss:2},TG=["MMMM","MMM","dddd","ddd"],I=new Map([...M,...g,...h].map((G)=>{return[G[0],G]})),n=new Map,j=["full","long","medium","short"],A=(G)=>String(G).padStart(2,"0"),c=(G)=>String(G).padStart(2,"0");function x(G,J){const Q=n.get(J);if(Q&&Q[G])return Q[G];const X=new Date(v);X.setUTCHours(G==="am"?5:20);const $=new Intl.DateTimeFormat(J,{timeStyle:"full",timeZone:"UTC",hour12:!0}).formatToParts(X).map(E).find((F)=>F.type==="dayPeriod");if($){const F=Q||{};return n.set(J,Object.assign(F,{[G]:$.value})),$.value}return G}function u(G,J="+00:00"){const Q=q(G),X=(()=>{switch(D(J)){case 5:return"ZZ";case 6:return"Z"}})(),K=QG(J,X);return new Date(Q.getTime()+K*1000*60)}function l(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function qG(G,J){const Q=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:J,hourCycle:"h23"}).formatToParts(G).map(E),X={};return Q.forEach((K)=>{X[K.type]=K.value}),new Date(`${X.year}-${X.month}-${X.day}T${X.hour}:${X.minute}:${X.second}Z`)}function S(G,J="UTC",Q="device",X="Z"){var K;Q=Q==="device"?(K=l())!=null?K:"utc":Q;const $=q(G),F=qG($,J),_=qG($,Q),W=Math.round((_.getTime()-F.getTime())/1000/60);return o(W,X)}function U(G,J){if(j.includes(G)||typeof G==="object")return EG(G,J);let Q=G,X=0;const K=(b)=>{if(!b[2])b[2]=new RegExp(`(.)?(${b[0]})`,"g");if(b[2].test(Q)){let C=0;return Q=Q.replace(b[2],(N,H,V)=>{if(H==="\\")return V;return`${typeof H==="string"?H:""}{!${C++?X:X++}!}`}),!!C}return!1};function $(b){const C=b.map((H)=>H.partName),N=new Set(C);if(C.length>N.size)throw new Error("Cannot reuse format tokens.");return b}function F(b,[C,N,H]){const V=Object.keys(N)[0],T=N[V];return{option:N,partName:V,partValue:T,token:C,pattern:H,hour12:b}}const _=M.filter(K).concat(g.filter(K)).map(F.bind(null,!1)),W=$(_.concat(h.filter(K).map(F.bind(null,!0)))),Z=/^\{!(\d+)!\}$/;return Q.split(/(\{!\d+!\})/).map((b)=>{const C=b.match(Z);if(C)return W[Number(C[1])];return{option:{literal:b},partName:"literal",partValue:b,token:b,pattern:new RegExp(""),hour12:!1}}).filter((b)=>!(b.partName==="literal"&&b.partValue===""))}function EG(G,J){const Q={timeZone:"UTC"};if(typeof G==="string")Q.dateStyle=G;else{if("date"in G)Q.dateStyle=G.date;if("time"in G)Q.timeStyle=G.time}const X=new Intl.DateTimeFormat(J,Q),K=X.formatToParts(new Date(v)).map(E),F=X.formatToParts(new Date("1999-04-05T23:05:01.000Z")).map(E).find((W)=>W.type==="hour"),_=F&&F.value==="23"?24:12;return K.map((W)=>{const Z=W.type,b=YG(W.type,W.value,J,W.type==="hour"?_:void 0,Q);if(b===void 0)return;const C=b[1][Z];if(!C)return;if(!b[2])b[2]=new RegExp(`${b[0]}`,"g");return{option:{[Z]:C},partName:Z,partValue:C,token:b[0],pattern:b[2],hour12:_===12}}).filter((W)=>!!W)}function YG(G,J,Q,X,K){const $=J.length,F=!isNaN(Number(J));let _;switch(G){case"year":return $===2?I.get("YY"):I.get("YYYY");case"month":if(F)return $===1?I.get("M"):I.get("MM");switch(_=CG(Q,G,J),_){case"long":return I.get("MMMM");default:return I.get("MMM")}case"day":return $===1?I.get("D"):I.get("DD");case"weekday":switch(_=CG(Q,G,J),_){case"narrow":return I.get("d");case"short":return I.get("ddd");default:return I.get("dddd")}case"hour":if(X===12)return $===1?I.get("h"):I.get("hh");return $===1?I.get("H"):I.get("HH");case"minute":return $===1?I.get("m"):I.get("mm");case"second":return $===1?I.get("s"):I.get("ss");case"dayPeriod":return/^[A-Z]+$/u.test(J)?I.get("A"):I.get("a");case"literal":return[J,{literal:J},new RegExp("")];case"timeZoneName":return K.timeStyle==="full"?I.get("Z"):I.get("ZZ");default:return}}function CG(G,J,Q){if(!k.has(G)){const K=new Date(v),$=[3,8,9,7,6,4,3],F=["weekday","month","dayPeriod"],_=["long","short","narrow"],W={};for(let Z=0;Z<12;Z++){if(K.setMonth(0+Z),Z in $)K.setDate($[Z]);K.setUTCHours(8+Z);for(let b of _){const C=new Intl.DateTimeFormat(G,F.reduce((N,H)=>Object.assign(N,{[H]:b}),{hour12:!0,timeZone:"UTC"})).formatToParts(K).map(E);if(b==="long"||b==="short"){const H=new Intl.DateTimeFormat(G,{dateStyle:b==="short"?"medium":"long",timeZone:"UTC"}).formatToParts(K).map(E).find((T)=>T.type==="month"),V=C.findIndex((T)=>T.type==="month");if(V>-1&&H)C[V]=H}C.forEach((N)=>{if(N.type==="literal")return;const H=N.type;W[H]=Object.assign(W[H]||{},{[N.value]:b})})}}k.set(G,W)}const X=k.get(G);return X?X[J][Q]:void 0}function r(G,J="+00:00"){const Q=J.slice(0,1)==="+";return u(G,J.replace(Q?"+":"-",Q?"-":"+"))}function FG(){return Intl.DateTimeFormat().resolvedOptions().locale}function B(G,J="long",Q="device",X=!1,K){let $,F;if(typeof G==="object"&&!(G instanceof Date))({date:G,format:J,locale:Q,genitive:X,partFilter:K,tz:$}=G);if(J==="ISO8601")return q(G).toISOString();if($)F=S(G,"utc",$,bG(J));if($!=null||($=l()),($==null?void 0:$.toLowerCase())!=="utc")G=r(G,S(G,$,"utc"));if(!Q||Q==="device")Q=FG();return KG(G,U(J,Q).filter(K!=null?K:()=>!0),Q,X,F).map((_)=>_.value).join("")}function e(G,J="en",Q=!1,X=()=>!0){return U(G,J).filter(X).reduce((K,$)=>K+=Q&&$.partName==="literal"?XG($.token):$.token,"").normalize("NFKC")}function a(G){const J=new Date().getFullYear(),Q=J%100,X=Math.floor(J/100),K=Number(G);return(X+(K>Q+20?-1:0))*100+K}function f(G,J="en",Q=!1){const X=(K,$)=>Array(K).fill("").map((F,_)=>`${$(_)}`);if(G==="M")return X(12,(K)=>K+1);if(G==="MM")return X(12,(K)=>{const $=K+1;return $<10?`0${$}`:$});if(G.startsWith("M"))return f("MM").map((K)=>B(`2000-${K}-05`,G,J,Q));if(G.startsWith("d"))return X(7,(K)=>`0${K+2}`).map((K)=>B(`2022-10-${K}`,G,J));if(G==="a")return[x("am",J).toLowerCase(),x("pm",J).toLowerCase()];if(G==="A")return[x("am",J).toUpperCase(),x("pm",J).toUpperCase()];if(G.startsWith("Y")){const K=new Date().getFullYear();return X(120,($)=>$+1).reduce(($,F)=>{if(F!=="120")$.push(B(`${K+Number(F)}-06-06`,G,J));return $.unshift(B(`${K-Number(F)}-06-06`,G,J)),$},[B(`${K}-06-06`,G,J)])}if(G.startsWith("D"))return X(31,(K)=>`${G==="DD"&&K<9?"0":""}${K+1}`);if(G.startsWith("H"))return X(24,(K)=>`${G==="HH"&&K<10?"0":""}${K}`);if(G.startsWith("h"))return X(12,(K)=>`${G==="hh"&&K<9?"0":""}${K+1}`);if(G.startsWith("m")||G.startsWith("s"))return X(60,(K)=>`${G.length>1&&K<10?"0":""}${K}`);return[]}function WG(G,J="ISO8601",Q="device"){let X=()=>!0,K,$="backward";if(typeof G==="object")({date:K,format:J="ISO8601",locale:Q="device",dateOverflow:$="backward",partFilter:X=()=>!0}=G);else K=G;if(!K)throw new Error("parse() requires a date string.");const F=()=>{throw new Error(`Date (${K}) does not match format (${e(J,Q)})`)};if(J==="ISO8601")return q(K);const _=j.includes(J)||typeof J==="object",W=$G(U(J,Q).filter(X));if(!W.length)throw new Error("parse() requires a pattern.");let Z;try{Z=_G(K,W)}catch{return F()}const b=new Date,C=new Map([["YYYY",b.getFullYear()],["MM",b.getMonth()+1],["DD",b.getDate()],["HH",0],["mm",0],["ss",0]]);let N=null,H="";Z.forEach((z)=>{if(z.partName==="literal")return;if(z.token===z.value)return F();const y=Number(z.value);if(C.has(z.token))C.set(z.token,y);else if(z.token==="YY")C.set("YYYY",a(z.value));else{const w=z.token;if(w.startsWith("d"))return;else if(w==="D")C.set("DD",y);else if(w==="H"||w.startsWith("h"))C.set("HH",y);else if(w==="M")C.set("MM",y);else if(w==="a"||w==="A")N=z.value.toLowerCase()===x("am",Q).toLowerCase();else if(w==="Z"||w==="ZZ")H=s(z.value,w);else{const JG=f(w,Q,_).indexOf(z.value);if(JG!==-1)switch(w){case"MMM":case"MMMM":C.set("MM",JG+1);break}}}});let V=C.get("HH")||0;if(N===!1)V+=V===12?0:12,C.set("HH",V===24?0:V);else if(N===!0&&V===12)C.set("HH",0);C.set("MM",(C.get("MM")||1)-1);let[T,R,Y,ZG,HG,NG]=Array.from(C.values());const t=P(new Date(`${c(T)}-${A(R+1)}-10`));if(t<Y&&$==="throw")throw new Error(`Invalid date ${c(T)}-${A(R+1)}-${A(Y)}`);Y=$==="backward"?Math.min(Y,t):Y;const IG=`${c(T)}-${A(R+1)}-${A(Y)}T${A(ZG)}:${A(HG)}:${A(NG)}${H}`,GG=new Date(IG);if(isFinite(+GG))return GG;return F()}function _G(G,J){let Q=0;const X=(_)=>[_[Q++],_[Q]];let K=0;const $=[];let F=void 0;do{const[_,W]=X(J);F=W;let Z=1;if(_.partName==="literal")Z=_.partValue.length;else if(_.partName==="timeZoneName")Z=D(G.substring(K));else if(_.token in L)Z=L[_.token];else if(W)if(W.partName==="literal"){if(Z=G.indexOf(W.partValue,K)-K,Z<0)throw new Error}else if(W.partName==="dayPeriod"){for(let b=1;b<=4;b++)if(isNaN(Number(G.charAt(K+b)))){Z=b;break}}else{const b=G.substring(K).search(/\d/);if(b!==-1)Z=K+b}else Z=G.length;$.push({..._,value:G.substring(K,K+Z)}),K+=Z}while(F);return $}var jX=LG,cX=RG;export{WG as parse,jX as now,B as format,cX as dateFormat};
|
|
3
|
-
|
|
4
|
-
//# debugId=310F9AAC525AB3B264756E2164756E21
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
import{useDateFormat as RG,useNow as LG}from"@stacksjs/utils";var i=/^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2})?$/;function d(G){let J=G.match(i);if(J){let Q=Number(J[2]);if(Q<1||Q>12)return!1;if(typeof J[3]!==void 0){let X=Number(J[3]);if(X<1||X>31)return!1}if(typeof J[4]!==void 0){let X=Number(J[4]);if(X<0||X>23)return!1}return!0}return!1}function VG(G){let J=G.match(i);if(J&&typeof J[4]==="undefined")return G+="T00:00:00";return G}function q(G){if(!G)G=new Date;if(G instanceof Date){let J=new Date(G);return J.setMilliseconds(0),J}if(G=G.trim(),d(G))return new Date(VG(G));throw new Error(`Non ISO 8601 compliant date (${G}).`)}function p(G){let J=q(G);return J.setDate(1),J.setMonth(J.getMonth()+1),J.setDate(0),J}function P(G){return p(G).getDate()}var v="1999-03-04T02:05:01.000Z",k=new Map,M=[["YYYY",{year:"numeric"}],["YY",{year:"2-digit"}],["MMMM",{month:"long"}],["MMM",{month:"short"}],["MM",{month:"2-digit"}],["M",{month:"numeric"}],["DD",{day:"2-digit"}],["D",{day:"numeric"}],["dddd",{weekday:"long"}],["ddd",{weekday:"short"}],["d",{weekday:"narrow"}],["mm",{minute:"2-digit"}],["m",{minute:"numeric"}],["ss",{second:"2-digit"}],["s",{second:"numeric"}],["ZZ",{timeZoneName:"long"}],["Z",{timeZoneName:"short"}]],g=[["HH",{hour:"2-digit"}],["H",{hour:"numeric"}]],h=[["hh",{hour:"2-digit"}],["h",{hour:"numeric"}],["a",{dayPeriod:"narrow"}],["A",{dayPeriod:"narrow"}]],L={DD:2,HH:2,MM:2,YY:2,YYYY:4,hh:2,mm:2,ss:2};function D(G){if(/^[+-]\d{2}:\d{2}/.test(G))return 6;if(/^[+-]\d{4}/.test(G))return 5;throw new Error("Invalid offset format")}var TG=["MMMM","MMM","dddd","ddd"],I=new Map([...M,...g,...h].map((G)=>{return[G[0],G]})),n=new Map,j=["full","long","medium","short"],A=(G)=>String(G).padStart(2,"0"),c=(G)=>String(G).padStart(2,"0");function E(G){if(G.type==="literal")G.value=G.value.normalize("NFKC");return G}function KG(G,J,Q,X=!1,K=null){let $=zG(G,J,Q,X),F=q(G);function _({partName:W,partValue:Z,token:b}){if(W==="literal")return Z;let C=$[W];if(W==="hour"&&b==="H")return C.replace(/^0/,"")||"0";if(["mm","ss","MM"].includes(b)&&C.length===1)return`0${C}`;if(W==="dayPeriod"){let N=x(F.getUTCHours()<12?"am":"pm",Q);return b==="A"?N.toUpperCase():N.toLowerCase()}if(W==="timeZoneName")return K!=null?K:o(-1*F.getTimezoneOffset(),b);return C}return J.map((W)=>{return{...W,value:_(W)}})}function zG(G,J,Q,X=!1){let K=q(G),$=J.filter((b)=>b.hour12),F=J.filter((b)=>!b.hour12),_=[],W=[];function Z(b,C=!1){let N=`${Q}-u-hc-${C?"h12":"h23"}`;if(_.push(...new Intl.DateTimeFormat(N,b.reduce((H,V)=>{if(V.partName==="literal")return H;if(X&&TG.includes(V.token))W.push(V);return Object.assign(H,V.option)},{timeZone:"UTC"})).formatToParts(K).map(E)),X&&W.length)for(let H of W){let V=[];switch(H.token){case"MMMM":V=new Intl.DateTimeFormat(N,{dateStyle:"long",timeZone:"UTC"}).formatToParts(K).map(E);break;case"MMM":V=new Intl.DateTimeFormat(N,{dateStyle:"medium",timeZone:"UTC"}).formatToParts(K).map(E);break}let T=V.find((Y)=>Y.type===H.partName),R=_.findIndex((Y)=>Y.type===H.partName);if(T&&R>-1)_[R]=T}}if($.length)Z($,!0);if(F.length)Z(F);return _.reduce((b,C)=>{return b[C.type]=C.value,b},{})}function o(G,J="Z"){let Q=String(Math.floor(Math.abs(G/60))).padStart(2,"0"),X=String(Math.abs(G%60)).padStart(2,"0"),K=G<0?"-":"+";if(J==="ZZ")return`${K}${Q}${X}`;return`${K}${Q}:${X}`}function QG(G,J){s(G,J);let[Q,X,K,$]=G.match(/([+-])([0-3][0-9]):?([0-6][0-9])/),F=Number(K)*60+Number($);return X==="+"?F:-F}function s(G,J="Z"){if(!((X)=>{switch(X){case"Z":return/^([+-])[0-3][0-9]:[0-6][0-9]$/.test(G);case"ZZ":return/^([+-])[0-3][0-9][0-6][0-9]$/.test(G)}})(J))throw new Error(`Invalid offset: ${G}`);return G}function XG(G){return M.concat(g).concat(h).sort((J,Q)=>J[0].length>Q[0].length?1:-1).reduce((J,Q)=>{return J.replace(Q[0],`\\${Q[0]}`)},G)}function wG(G){return["numeric","2-digit"].includes(G.partValue)}function $G(G){let J=void 0;for(let Q of G){if(Q.partName==="literal"&&!isNaN(parseFloat(Q.partValue)))throw new Error(`Numbers in format (${Q.partValue}).`);if(J&&J.partName!=="literal"&&Q.partName!=="literal"){if(!(J.token in L)&&!(Q.token in L)&&!(wG(J)&&Q.token.toLowerCase()==="a"))throw new Error(`Illegal adjacent tokens (${J.token}, ${Q.token})`)}J=Q}return G}function bG(G){if(typeof G==="string")return G.includes("ZZ")?"ZZ":"Z";return"time"in G&&G.time==="full"?"Z":"ZZ"}function x(G,J){let Q=n.get(J);if(Q&&Q[G])return Q[G];let X=new Date(v);X.setUTCHours(G==="am"?5:20);let $=new Intl.DateTimeFormat(J,{timeStyle:"full",timeZone:"UTC",hour12:!0}).formatToParts(X).map(E).find((F)=>F.type==="dayPeriod");if($){let F=Q||{};return n.set(J,Object.assign(F,{[G]:$.value})),$.value}return G}function u(G,J="+00:00"){let Q=q(G),X=(()=>{switch(D(J)){case 5:return"ZZ";case 6:return"Z"}})(),K=QG(J,X);return new Date(Q.getTime()+K*1000*60)}function l(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function qG(G,J){let Q=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:J,hourCycle:"h23"}).formatToParts(G).map(E),X={};return Q.forEach((K)=>{X[K.type]=K.value}),new Date(`${X.year}-${X.month}-${X.day}T${X.hour}:${X.minute}:${X.second}Z`)}function S(G,J="UTC",Q="device",X="Z"){var K;Q=Q==="device"?(K=l())!=null?K:"utc":Q;let $=q(G),F=qG($,J),_=qG($,Q),W=Math.round((_.getTime()-F.getTime())/1000/60);return o(W,X)}function U(G,J){if(j.includes(G)||typeof G==="object")return EG(G,J);let Q=G,X=0,K=(b)=>{if(!b[2])b[2]=new RegExp(`(.)?(${b[0]})`,"g");if(b[2].test(Q)){let C=0;return Q=Q.replace(b[2],(N,H,V)=>{if(H==="\\")return V;return`${typeof H==="string"?H:""}{!${C++?X:X++}!}`}),!!C}return!1};function $(b){let C=b.map((H)=>H.partName),N=new Set(C);if(C.length>N.size)throw new Error("Cannot reuse format tokens.");return b}function F(b,[C,N,H]){let V=Object.keys(N)[0],T=N[V];return{option:N,partName:V,partValue:T,token:C,pattern:H,hour12:b}}let _=M.filter(K).concat(g.filter(K)).map(F.bind(null,!1)),W=$(_.concat(h.filter(K).map(F.bind(null,!0)))),Z=/^\{!(\d+)!\}$/;return Q.split(/(\{!\d+!\})/).map((b)=>{let C=b.match(Z);if(C)return W[Number(C[1])];return{option:{literal:b},partName:"literal",partValue:b,token:b,pattern:new RegExp(""),hour12:!1}}).filter((b)=>!(b.partName==="literal"&&b.partValue===""))}function EG(G,J){let Q={timeZone:"UTC"};if(typeof G==="string")Q.dateStyle=G;else{if("date"in G)Q.dateStyle=G.date;if("time"in G)Q.timeStyle=G.time}let X=new Intl.DateTimeFormat(J,Q),K=X.formatToParts(new Date(v)).map(E),F=X.formatToParts(new Date("1999-04-05T23:05:01.000Z")).map(E).find((W)=>W.type==="hour"),_=F&&F.value==="23"?24:12;return K.map((W)=>{let Z=W.type,b=YG(W.type,W.value,J,W.type==="hour"?_:void 0,Q);if(b===void 0)return;let C=b[1][Z];if(!C)return;if(!b[2])b[2]=new RegExp(`${b[0]}`,"g");return{option:{[Z]:C},partName:Z,partValue:C,token:b[0],pattern:b[2],hour12:_===12}}).filter((W)=>!!W)}function YG(G,J,Q,X,K){let $=J.length,F=!isNaN(Number(J)),_;switch(G){case"year":return $===2?I.get("YY"):I.get("YYYY");case"month":if(F)return $===1?I.get("M"):I.get("MM");switch(_=CG(Q,G,J),_){case"long":return I.get("MMMM");default:return I.get("MMM")}case"day":return $===1?I.get("D"):I.get("DD");case"weekday":switch(_=CG(Q,G,J),_){case"narrow":return I.get("d");case"short":return I.get("ddd");default:return I.get("dddd")}case"hour":if(X===12)return $===1?I.get("h"):I.get("hh");return $===1?I.get("H"):I.get("HH");case"minute":return $===1?I.get("m"):I.get("mm");case"second":return $===1?I.get("s"):I.get("ss");case"dayPeriod":return/^[A-Z]+$/u.test(J)?I.get("A"):I.get("a");case"literal":return[J,{literal:J},new RegExp("")];case"timeZoneName":return K.timeStyle==="full"?I.get("Z"):I.get("ZZ");default:return}}function CG(G,J,Q){if(!k.has(G)){let K=new Date(v),$=[3,8,9,7,6,4,3],F=["weekday","month","dayPeriod"],_=["long","short","narrow"],W={};for(let Z=0;Z<12;Z++){if(K.setMonth(0+Z),Z in $)K.setDate($[Z]);K.setUTCHours(8+Z);for(let b of _){let C=new Intl.DateTimeFormat(G,F.reduce((N,H)=>Object.assign(N,{[H]:b}),{hour12:!0,timeZone:"UTC"})).formatToParts(K).map(E);if(b==="long"||b==="short"){let H=new Intl.DateTimeFormat(G,{dateStyle:b==="short"?"medium":"long",timeZone:"UTC"}).formatToParts(K).map(E).find((T)=>T.type==="month"),V=C.findIndex((T)=>T.type==="month");if(V>-1&&H)C[V]=H}C.forEach((N)=>{if(N.type==="literal")return;let H=N.type;W[H]=Object.assign(W[H]||{},{[N.value]:b})})}}k.set(G,W)}let X=k.get(G);return X?X[J][Q]:void 0}function r(G,J="+00:00"){let Q=J.slice(0,1)==="+";return u(G,J.replace(Q?"+":"-",Q?"-":"+"))}function FG(){return Intl.DateTimeFormat().resolvedOptions().locale}function B(G,J="long",Q="device",X=!1,K){let $,F;if(typeof G==="object"&&!(G instanceof Date))({date:G,format:J,locale:Q,genitive:X,partFilter:K,tz:$}=G);if(J==="ISO8601")return q(G).toISOString();if($)F=S(G,"utc",$,bG(J));if($!=null||($=l()),($==null?void 0:$.toLowerCase())!=="utc")G=r(G,S(G,$,"utc"));if(!Q||Q==="device")Q=FG();return KG(G,U(J,Q).filter(K!=null?K:()=>!0),Q,X,F).map((_)=>_.value).join("")}function e(G,J="en",Q=!1,X=()=>!0){return U(G,J).filter(X).reduce((K,$)=>K+=Q&&$.partName==="literal"?XG($.token):$.token,"").normalize("NFKC")}function a(G){let J=new Date().getFullYear(),Q=J%100,X=Math.floor(J/100),K=Number(G);return(X+(K>Q+20?-1:0))*100+K}function f(G,J="en",Q=!1){let X=(K,$)=>Array(K).fill("").map((F,_)=>`${$(_)}`);if(G==="M")return X(12,(K)=>K+1);if(G==="MM")return X(12,(K)=>{let $=K+1;return $<10?`0${$}`:$});if(G.startsWith("M"))return f("MM").map((K)=>B(`2000-${K}-05`,G,J,Q));if(G.startsWith("d"))return X(7,(K)=>`0${K+2}`).map((K)=>B(`2022-10-${K}`,G,J));if(G==="a")return[x("am",J).toLowerCase(),x("pm",J).toLowerCase()];if(G==="A")return[x("am",J).toUpperCase(),x("pm",J).toUpperCase()];if(G.startsWith("Y")){let K=new Date().getFullYear();return X(120,($)=>$+1).reduce(($,F)=>{if(F!=="120")$.push(B(`${K+Number(F)}-06-06`,G,J));return $.unshift(B(`${K-Number(F)}-06-06`,G,J)),$},[B(`${K}-06-06`,G,J)])}if(G.startsWith("D"))return X(31,(K)=>`${G==="DD"&&K<9?"0":""}${K+1}`);if(G.startsWith("H"))return X(24,(K)=>`${G==="HH"&&K<10?"0":""}${K}`);if(G.startsWith("h"))return X(12,(K)=>`${G==="hh"&&K<9?"0":""}${K+1}`);if(G.startsWith("m")||G.startsWith("s"))return X(60,(K)=>`${G.length>1&&K<10?"0":""}${K}`);return[]}function WG(G,J="ISO8601",Q="device"){let X=()=>!0,K,$="backward";if(typeof G==="object")({date:K,format:J="ISO8601",locale:Q="device",dateOverflow:$="backward",partFilter:X=()=>!0}=G);else K=G;if(!K)throw new Error("parse() requires a date string.");let F=()=>{throw new Error(`Date (${K}) does not match format (${e(J,Q)})`)};if(J==="ISO8601")return q(K);let _=j.includes(J)||typeof J==="object",W=$G(U(J,Q).filter(X));if(!W.length)throw new Error("parse() requires a pattern.");let Z;try{Z=_G(K,W)}catch{return F()}let b=new Date,C=new Map([["YYYY",b.getFullYear()],["MM",b.getMonth()+1],["DD",b.getDate()],["HH",0],["mm",0],["ss",0]]),N=null,H="";Z.forEach((z)=>{if(z.partName==="literal")return;if(z.token===z.value)return F();let y=Number(z.value);if(C.has(z.token))C.set(z.token,y);else if(z.token==="YY")C.set("YYYY",a(z.value));else{let w=z.token;if(w.startsWith("d"))return;else if(w==="D")C.set("DD",y);else if(w==="H"||w.startsWith("h"))C.set("HH",y);else if(w==="M")C.set("MM",y);else if(w==="a"||w==="A")N=z.value.toLowerCase()===x("am",Q).toLowerCase();else if(w==="Z"||w==="ZZ")H=s(z.value,w);else{let JG=f(w,Q,_).indexOf(z.value);if(JG!==-1)switch(w){case"MMM":case"MMMM":C.set("MM",JG+1);break}}}});let V=C.get("HH")||0;if(N===!1)V+=V===12?0:12,C.set("HH",V===24?0:V);else if(N===!0&&V===12)C.set("HH",0);C.set("MM",(C.get("MM")||1)-1);let[T,R,Y,ZG,HG,NG]=Array.from(C.values()),t=P(new Date(`${c(T)}-${A(R+1)}-10`));if(t<Y&&$==="throw")throw new Error(`Invalid date ${c(T)}-${A(R+1)}-${A(Y)}`);Y=$==="backward"?Math.min(Y,t):Y;let IG=`${c(T)}-${A(R+1)}-${A(Y)}T${A(ZG)}:${A(HG)}:${A(NG)}${H}`,GG=new Date(IG);if(isFinite(+GG))return GG;return F()}function _G(G,J){let Q=0,X=(_)=>[_[Q++],_[Q]],K=0,$=[],F=void 0;do{let[_,W]=X(J);F=W;let Z=1;if(_.partName==="literal")Z=_.partValue.length;else if(_.partName==="timeZoneName")Z=D(G.substring(K));else if(_.token in L)Z=L[_.token];else if(W)if(W.partName==="literal"){if(Z=G.indexOf(W.partValue,K)-K,Z<0)throw new Error}else if(W.partName==="dayPeriod"){for(let b=1;b<=4;b++)if(isNaN(Number(G.charAt(K+b)))){Z=b;break}}else{let b=G.substring(K).search(/\d/);if(b!==-1)Z=K+b}else Z=G.length;$.push({..._,value:G.substring(K,K+Z)}),K+=Z}while(F);return $}var jX=LG,cX=RG;export{WG as parse,jX as now,B as format,cX as dateFormat};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacksjs/datetime",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.68.0",
|
|
5
5
|
"description": "The Stacks datetime helpers.",
|
|
6
6
|
"author": "Chris Breuer",
|
|
7
7
|
"contributors": ["Chris Breuer <chris@stacksjs.org>"],
|
|
@@ -19,17 +19,15 @@
|
|
|
19
19
|
"keywords": ["datetime", "date", "time", "helpers", "composables", "stacks"],
|
|
20
20
|
"exports": {
|
|
21
21
|
".": {
|
|
22
|
-
"bun": "./src/index.ts",
|
|
23
22
|
"import": "./dist/index.js"
|
|
24
23
|
},
|
|
25
24
|
"./*": {
|
|
26
|
-
"bun": "./src/*",
|
|
27
25
|
"import": "./dist/*"
|
|
28
26
|
}
|
|
29
27
|
},
|
|
30
28
|
"module": "dist/index.js",
|
|
31
29
|
"types": "dist/index.d.ts",
|
|
32
|
-
"files": ["README.md", "dist"
|
|
30
|
+
"files": ["README.md", "dist"],
|
|
33
31
|
"scripts": {
|
|
34
32
|
"build": "bun build.ts",
|
|
35
33
|
"typecheck": "bun tsc --noEmit",
|
|
@@ -37,9 +35,9 @@
|
|
|
37
35
|
},
|
|
38
36
|
"dependencies": {
|
|
39
37
|
"@formkit/tempo": "^0.1.2",
|
|
40
|
-
"@stacksjs/utils": "0.
|
|
38
|
+
"@stacksjs/utils": "0.67.0"
|
|
41
39
|
},
|
|
42
40
|
"devDependencies": {
|
|
43
|
-
"@stacksjs/development": "0.
|
|
41
|
+
"@stacksjs/development": "0.67.0"
|
|
44
42
|
}
|
|
45
43
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../../../../../node_modules/@formkit/tempo/dist/iso8601.mjs", "../../../../../node_modules/@formkit/tempo/dist/date.mjs", "../../../../../node_modules/@formkit/tempo/dist/monthEnd.mjs", "../../../../../node_modules/@formkit/tempo/dist/monthDays.mjs", "../../../../../node_modules/@formkit/tempo/dist/common.mjs", "../../../../../node_modules/@formkit/tempo/dist/ap.mjs", "../../../../../node_modules/@formkit/tempo/dist/applyOffset.mjs", "../../../../../node_modules/@formkit/tempo/dist/deviceTZ.mjs", "../../../../../node_modules/@formkit/tempo/dist/offset.mjs", "../../../../../node_modules/@formkit/tempo/dist/parts.mjs", "../../../../../node_modules/@formkit/tempo/dist/removeOffset.mjs", "../../../../../node_modules/@formkit/tempo/dist/deviceLocale.mjs", "../../../../../node_modules/@formkit/tempo/dist/format.mjs", "../../../../../node_modules/@formkit/tempo/dist/formatStr.mjs", "../../../../../node_modules/@formkit/tempo/dist/fourDigitYear.mjs", "../../../../../node_modules/@formkit/tempo/dist/range.mjs", "../../../../../node_modules/@formkit/tempo/dist/parse.mjs"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { useDateFormat, useNow } from '@stacksjs/utils'\n\nexport const now: typeof useNow = useNow\nexport const dateFormat: typeof useDateFormat = useDateFormat\n\nexport { format, parse } from '@formkit/tempo'\n",
|
|
6
|
-
"// src/iso8601.ts\nvar iso8601Match = /^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\\.[0-9]+)?(Z|(?:\\+|\\-)[0-9]{2}:?[0-9]{2})?$/;\nfunction iso8601(date) {\n const matches = date.match(iso8601Match);\n if (matches) {\n const month = Number(matches[2]);\n if (month < 1 || month > 12)\n return false;\n if (typeof matches[3] !== void 0) {\n const date2 = Number(matches[3]);\n if (date2 < 1 || date2 > 31)\n return false;\n }\n if (typeof matches[4] !== void 0) {\n const hours = Number(matches[4]);\n if (hours < 0 || hours > 23)\n return false;\n }\n return true;\n }\n return false;\n}\nexport {\n iso8601,\n iso8601Match\n};\n//# sourceMappingURL=iso8601.mjs.map",
|
|
7
|
-
"// src/date.ts\nimport { iso8601, iso8601Match } from \"./iso8601.mjs\";\nfunction normalize(date2) {\n const matches = date2.match(iso8601Match);\n if (matches && typeof matches[4] === \"undefined\") {\n return date2 += \"T00:00:00\";\n }\n return date2;\n}\nfunction date(date2) {\n if (!date2) {\n date2 = /* @__PURE__ */ new Date();\n }\n if (date2 instanceof Date) {\n const d = new Date(date2);\n d.setMilliseconds(0);\n return d;\n }\n date2 = date2.trim();\n if (iso8601(date2)) {\n return new Date(normalize(date2));\n }\n throw new Error(`Non ISO 8601 compliant date (${date2}).`);\n}\nexport {\n date\n};\n//# sourceMappingURL=date.mjs.map",
|
|
8
|
-
"// src/monthEnd.ts\nimport { date } from \"./date.mjs\";\nfunction monthEnd(inputDate) {\n const d = date(inputDate);\n d.setDate(1);\n d.setMonth(d.getMonth() + 1);\n d.setDate(0);\n return d;\n}\nexport {\n monthEnd\n};\n//# sourceMappingURL=monthEnd.mjs.map",
|
|
9
|
-
"// src/monthDays.ts\nimport { monthEnd } from \"./monthEnd.mjs\";\nfunction monthDays(inputDate) {\n const d = monthEnd(inputDate);\n return d.getDate();\n}\nexport {\n monthDays\n};\n//# sourceMappingURL=monthDays.mjs.map",
|
|
10
|
-
"// src/common.ts\nimport { date } from \"./date.mjs\";\nimport { ap } from \"./ap.mjs\";\nvar specDate = \"1999-03-04T02:05:01.000Z\";\nvar memoParts = /* @__PURE__ */ new Map();\nvar clockAgnostic = [\n [\"YYYY\", { year: \"numeric\" }],\n [\"YY\", { year: \"2-digit\" }],\n [\"MMMM\", { month: \"long\" }],\n [\"MMM\", { month: \"short\" }],\n [\"MM\", { month: \"2-digit\" }],\n [\"M\", { month: \"numeric\" }],\n [\"DD\", { day: \"2-digit\" }],\n [\"D\", { day: \"numeric\" }],\n [\"dddd\", { weekday: \"long\" }],\n [\"ddd\", { weekday: \"short\" }],\n [\"d\", { weekday: \"narrow\" }],\n [\"mm\", { minute: \"2-digit\" }],\n [\"m\", { minute: \"numeric\" }],\n [\"ss\", { second: \"2-digit\" }],\n [\"s\", { second: \"numeric\" }],\n [\"ZZ\", { timeZoneName: \"long\" }],\n [\"Z\", { timeZoneName: \"short\" }]\n];\nvar clock24 = [\n [\"HH\", { hour: \"2-digit\" }],\n [\"H\", { hour: \"numeric\" }]\n];\nvar clock12 = [\n [\"hh\", { hour: \"2-digit\" }],\n [\"h\", { hour: \"numeric\" }],\n [\"a\", { dayPeriod: \"narrow\" }],\n [\"A\", { dayPeriod: \"narrow\" }]\n];\nvar fixedLength = {\n DD: 2,\n HH: 2,\n MM: 2,\n YY: 2,\n YYYY: 4,\n hh: 2,\n mm: 2,\n ss: 2\n};\nfunction fixedLengthByOffset(offsetString) {\n if (/^[+-]\\d{2}:\\d{2}/.test(offsetString)) {\n return 6;\n }\n if (/^[+-]\\d{4}/.test(offsetString)) {\n return 5;\n }\n throw new Error(\"Invalid offset format\");\n}\nvar genitiveTokens = [\"MMMM\", \"MMM\", \"dddd\", \"ddd\"];\nvar tokens = /* @__PURE__ */ new Map(\n /* @__PURE__ */ [...clockAgnostic, ...clock24, ...clock12].map((format) => {\n return [format[0], format];\n })\n);\nvar dayPeriodMap = /* @__PURE__ */ new Map();\nvar styles = [\n \"full\",\n \"long\",\n \"medium\",\n \"short\"\n];\nvar two = (n) => String(n).padStart(2, \"0\");\nvar four = (n) => String(n).padStart(2, \"0\");\nfunction normStr(part) {\n if (part.type === \"literal\") {\n part.value = part.value.normalize(\"NFKC\");\n }\n return part;\n}\nfunction fill(inputDate, parts, locale, genitive = false, offset = null) {\n const partMap = createPartMap(inputDate, parts, locale, genitive);\n const d = date(inputDate);\n function value({ partName, partValue, token }) {\n if (partName === \"literal\")\n return partValue;\n const value2 = partMap[partName];\n if (partName === \"hour\" && token === \"H\") {\n return value2.replace(/^0/, \"\") || \"0\";\n }\n if ([\"mm\", \"ss\", \"MM\"].includes(token) && value2.length === 1) {\n return `0${value2}`;\n }\n if (partName === \"dayPeriod\") {\n const p = ap(d.getUTCHours() < 12 ? \"am\" : \"pm\", locale);\n return token === \"A\" ? p.toUpperCase() : p.toLowerCase();\n }\n if (partName === \"timeZoneName\") {\n return offset != null ? offset : minsToOffset(-1 * d.getTimezoneOffset(), token);\n }\n return value2;\n }\n return parts.map((part) => {\n return {\n ...part,\n value: value(part)\n };\n });\n}\nfunction createPartMap(inputDate, parts, locale, genitive = false) {\n const d = date(inputDate);\n const hour12 = parts.filter((part) => part.hour12);\n const hour24 = parts.filter((part) => !part.hour12);\n const valueParts = [];\n const genitiveParts = [];\n function addValues(requestedParts, hour122 = false) {\n const preciseLocale = `${locale}-u-hc-${hour122 ? \"h12\" : \"h23\"}`;\n valueParts.push(\n ...new Intl.DateTimeFormat(\n preciseLocale,\n requestedParts.reduce(\n (options, part) => {\n if (part.partName === \"literal\")\n return options;\n if (genitive && genitiveTokens.includes(part.token)) {\n genitiveParts.push(part);\n }\n return Object.assign(options, part.option);\n },\n { timeZone: \"UTC\" }\n )\n ).formatToParts(d).map(normStr)\n );\n if (genitive && genitiveParts.length) {\n for (const part of genitiveParts) {\n let formattedParts = [];\n switch (part.token) {\n case \"MMMM\":\n formattedParts = new Intl.DateTimeFormat(preciseLocale, {\n dateStyle: \"long\",\n timeZone: \"UTC\"\n }).formatToParts(d).map(normStr);\n break;\n case \"MMM\":\n formattedParts = new Intl.DateTimeFormat(preciseLocale, {\n dateStyle: \"medium\",\n timeZone: \"UTC\"\n }).formatToParts(d).map(normStr);\n break;\n }\n const genitiveFormattedPart = formattedParts.find(\n (p) => p.type === part.partName\n );\n const index = valueParts.findIndex((p) => p.type === part.partName);\n if (genitiveFormattedPart && index > -1) {\n valueParts[index] = genitiveFormattedPart;\n }\n }\n }\n }\n if (hour12.length)\n addValues(hour12, true);\n if (hour24.length)\n addValues(hour24);\n return valueParts.reduce((map, part) => {\n map[part.type] = part.value;\n return map;\n }, {});\n}\nfunction minsToOffset(timeDiffInMins, token = \"Z\") {\n const hours = String(Math.floor(Math.abs(timeDiffInMins / 60))).padStart(\n 2,\n \"0\"\n );\n const mins = String(Math.abs(timeDiffInMins % 60)).padStart(2, \"0\");\n const sign = timeDiffInMins < 0 ? \"-\" : \"+\";\n if (token === \"ZZ\") {\n return `${sign}${hours}${mins}`;\n }\n return `${sign}${hours}:${mins}`;\n}\nfunction offsetToMins(offset, token) {\n validOffset(offset, token);\n const [_, sign, hours, mins] = offset.match(\n /([+-])([0-3][0-9]):?([0-6][0-9])/\n );\n const offsetInMins = Number(hours) * 60 + Number(mins);\n return sign === \"+\" ? offsetInMins : -offsetInMins;\n}\nfunction validOffset(offset, token = \"Z\") {\n const valid = ((token2) => {\n switch (token2) {\n case \"Z\":\n return /^([+-])[0-3][0-9]:[0-6][0-9]$/.test(offset);\n case \"ZZ\":\n return /^([+-])[0-3][0-9][0-6][0-9]$/.test(offset);\n }\n })(token);\n if (!valid)\n throw new Error(`Invalid offset: ${offset}`);\n return offset;\n}\nfunction escapeTokens(str) {\n return clockAgnostic.concat(clock24).concat(clock12).sort((a, b) => a[0].length > b[0].length ? 1 : -1).reduce((target, part) => {\n return target.replace(part[0], `\\\\${part[0]}`);\n }, str);\n}\nfunction isNumeric(part) {\n return [\"numeric\", \"2-digit\"].includes(part.partValue);\n}\nfunction validate(parts) {\n let lastPart = void 0;\n for (const part of parts) {\n if (part.partName === \"literal\" && !isNaN(parseFloat(part.partValue))) {\n throw new Error(`Numbers in format (${part.partValue}).`);\n }\n if (lastPart && lastPart.partName !== \"literal\" && part.partName !== \"literal\") {\n if (!(lastPart.token in fixedLength) && !(part.token in fixedLength) && !(isNumeric(lastPart) && part.token.toLowerCase() === \"a\")) {\n throw new Error(\n `Illegal adjacent tokens (${lastPart.token}, ${part.token})`\n );\n }\n }\n lastPart = part;\n }\n return parts;\n}\nfunction getOffsetFormat(format) {\n if (typeof format === \"string\") {\n return format.includes(\"ZZ\") ? \"ZZ\" : \"Z\";\n }\n return \"time\" in format && format.time === \"full\" ? \"Z\" : \"ZZ\";\n}\nexport {\n clock12,\n clock24,\n clockAgnostic,\n dayPeriodMap,\n escapeTokens,\n fill,\n fixedLength,\n fixedLengthByOffset,\n four,\n genitiveTokens,\n getOffsetFormat,\n isNumeric,\n memoParts,\n minsToOffset,\n normStr,\n offsetToMins,\n specDate,\n styles,\n tokens,\n two,\n validOffset,\n validate\n};\n//# sourceMappingURL=common.mjs.map",
|
|
11
|
-
"// src/ap.ts\nimport { dayPeriodMap, specDate, normStr } from \"./common.mjs\";\nfunction ap(ampm, locale) {\n const l = dayPeriodMap.get(locale);\n if (l && l[ampm])\n return l[ampm];\n const specimen = new Date(specDate);\n specimen.setUTCHours(ampm === \"am\" ? 5 : 20);\n const subparts = new Intl.DateTimeFormat(locale, {\n timeStyle: \"full\",\n timeZone: \"UTC\",\n hour12: true\n }).formatToParts(specimen).map(normStr);\n const period = subparts.find((part) => part.type === \"dayPeriod\");\n if (period) {\n const localePeriods = l || {};\n dayPeriodMap.set(\n locale,\n Object.assign(localePeriods, { [ampm]: period.value })\n );\n return period.value;\n }\n return ampm;\n}\nexport {\n ap\n};\n//# sourceMappingURL=ap.mjs.map",
|
|
12
|
-
"// src/applyOffset.ts\nimport { date } from \"./date.mjs\";\nimport { fixedLengthByOffset, offsetToMins } from \"./common.mjs\";\nfunction applyOffset(dateInput, offset = \"+00:00\") {\n const d = date(dateInput);\n const token = (() => {\n switch (fixedLengthByOffset(offset)) {\n case 5:\n return \"ZZ\";\n case 6:\n return \"Z\";\n }\n })();\n const timeDiffInMins = offsetToMins(offset, token);\n return new Date(d.getTime() + timeDiffInMins * 1e3 * 60);\n}\nexport {\n applyOffset\n};\n//# sourceMappingURL=applyOffset.mjs.map",
|
|
13
|
-
"// src/deviceTZ.ts\nfunction deviceTZ() {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\nexport {\n deviceTZ\n};\n//# sourceMappingURL=deviceTZ.mjs.map",
|
|
14
|
-
"// src/offset.ts\nimport { date } from \"./date.mjs\";\nimport { normStr, minsToOffset } from \"./common.mjs\";\nimport { deviceTZ } from \"./deviceTZ.mjs\";\nfunction relativeTime(d, timeZone) {\n const utcParts = new Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone,\n hourCycle: \"h23\"\n }).formatToParts(d).map(normStr);\n const parts = {};\n utcParts.forEach((part) => {\n parts[part.type] = part.value;\n });\n return /* @__PURE__ */ new Date(\n `${parts.year}-${parts.month}-${parts.day}T${parts.hour}:${parts.minute}:${parts.second}Z`\n );\n}\nfunction offset(utcTime, tzA = \"UTC\", tzB = \"device\", timeZoneToken = \"Z\") {\n var _a;\n tzB = tzB === \"device\" ? (_a = deviceTZ()) != null ? _a : \"utc\" : tzB;\n const d = date(utcTime);\n const timeA = relativeTime(d, tzA);\n const timeB = relativeTime(d, tzB);\n const timeDiffInMins = Math.round(\n (timeB.getTime() - timeA.getTime()) / 1e3 / 60\n );\n return minsToOffset(timeDiffInMins, timeZoneToken);\n}\nexport {\n offset\n};\n//# sourceMappingURL=offset.mjs.map",
|
|
15
|
-
"// src/parts.ts\nimport {\n styles,\n normStr,\n tokens,\n memoParts,\n clockAgnostic,\n clock24,\n specDate,\n clock12\n} from \"./common.mjs\";\nfunction parts(format, locale) {\n if (styles.includes(format) || typeof format === \"object\") {\n return styleParts(format, locale);\n }\n let f = format;\n let match = 0;\n const testPattern = (pattern) => {\n if (!pattern[2])\n pattern[2] = new RegExp(`(.)?(${pattern[0]})`, \"g\");\n if (pattern[2].test(f)) {\n let didAdd = 0;\n f = f.replace(pattern[2], (_, prefix, actualMatch) => {\n if (prefix === \"\\\\\")\n return actualMatch;\n return `${typeof prefix === \"string\" ? prefix : \"\"}{!${didAdd++ ? match : match++}!}`;\n });\n return !!didAdd;\n }\n return false;\n };\n function validate(patterns) {\n const parts3 = patterns.map((part) => part.partName);\n const deduped = new Set(parts3);\n if (parts3.length > deduped.size) {\n throw new Error(`Cannot reuse format tokens.`);\n }\n return patterns;\n }\n function createPart(hour12, [token, option, exp]) {\n const partName = Object.keys(option)[0];\n const partValue = option[partName];\n return {\n option,\n partName,\n partValue,\n token,\n pattern: exp,\n hour12\n };\n }\n const found24Patterns = clockAgnostic.filter(testPattern).concat(clock24.filter(testPattern)).map(createPart.bind(null, false));\n const parts2 = validate(\n found24Patterns.concat(\n clock12.filter(testPattern).map(createPart.bind(null, true))\n )\n );\n const extractIndex = /^\\{!(\\d+)!\\}$/;\n return f.split(/(\\{!\\d+!\\})/).map((match2) => {\n const hasIndex = match2.match(extractIndex);\n if (hasIndex) {\n return parts2[Number(hasIndex[1])];\n }\n return {\n option: { literal: match2 },\n partName: \"literal\",\n partValue: match2,\n token: match2,\n pattern: new RegExp(\"\"),\n hour12: false\n };\n }).filter((part) => !(part.partName === \"literal\" && part.partValue === \"\"));\n}\nfunction styleParts(format, locale) {\n const options = {\n timeZone: \"UTC\"\n };\n if (typeof format === \"string\") {\n options.dateStyle = format;\n } else {\n if (\"date\" in format)\n options.dateStyle = format.date;\n if (\"time\" in format)\n options.timeStyle = format.time;\n }\n const formatter = new Intl.DateTimeFormat(locale, options);\n const segments = formatter.formatToParts(new Date(specDate)).map(normStr);\n const hourTypeSegments = formatter.formatToParts(/* @__PURE__ */ new Date(\"1999-04-05T23:05:01.000Z\")).map(normStr);\n const hourPart = hourTypeSegments.find((segment) => segment.type === \"hour\");\n const hourType = hourPart && hourPart.value === \"23\" ? 24 : 12;\n return segments.map((part) => {\n const partName = part.type;\n const formatPattern = guessPattern(\n part.type,\n part.value,\n locale,\n part.type === \"hour\" ? hourType : void 0,\n options\n );\n if (formatPattern === void 0)\n return;\n const partValue = formatPattern[1][partName];\n if (!partValue)\n return;\n if (!formatPattern[2])\n formatPattern[2] = new RegExp(`${formatPattern[0]}`, \"g\");\n return {\n option: { [partName]: partValue },\n partName,\n partValue,\n token: formatPattern[0],\n pattern: formatPattern[2],\n hour12: hourType === 12\n };\n }).filter((part) => !!part);\n}\nfunction guessPattern(partName, partValue, locale, hour, options) {\n const l = partValue.length;\n const n = !isNaN(Number(partValue));\n let style;\n switch (partName) {\n case \"year\":\n return l === 2 ? tokens.get(\"YY\") : tokens.get(\"YYYY\");\n case \"month\":\n if (n)\n return l === 1 ? tokens.get(\"M\") : tokens.get(\"MM\");\n style = partStyle(locale, partName, partValue);\n switch (style) {\n case \"long\":\n return tokens.get(\"MMMM\");\n default:\n return tokens.get(\"MMM\");\n }\n case \"day\":\n return l === 1 ? tokens.get(\"D\") : tokens.get(\"DD\");\n case \"weekday\":\n style = partStyle(locale, partName, partValue);\n switch (style) {\n case \"narrow\":\n return tokens.get(\"d\");\n case \"short\":\n return tokens.get(\"ddd\");\n default:\n return tokens.get(\"dddd\");\n }\n case \"hour\":\n if (hour === 12)\n return l === 1 ? tokens.get(\"h\") : tokens.get(\"hh\");\n return l === 1 ? tokens.get(\"H\") : tokens.get(\"HH\");\n case \"minute\":\n return l === 1 ? tokens.get(\"m\") : tokens.get(\"mm\");\n case \"second\":\n return l === 1 ? tokens.get(\"s\") : tokens.get(\"ss\");\n case \"dayPeriod\":\n return /^[A-Z]+$/u.test(partValue) ? tokens.get(\"A\") : tokens.get(\"a\");\n case \"literal\":\n return [partValue, { literal: partValue }, new RegExp(\"\")];\n case \"timeZoneName\":\n return options.timeStyle === \"full\" ? tokens.get(\"Z\") : tokens.get(\"ZZ\");\n default:\n return void 0;\n }\n}\nfunction partStyle(locale, part, value) {\n if (!memoParts.has(locale)) {\n const date = new Date(specDate);\n const weekdays = [3, 8, 9, 7, 6, 4, 3];\n const parts2 = [\"weekday\", \"month\", \"dayPeriod\"];\n const partStyles = [\"long\", \"short\", \"narrow\"];\n const formats2 = {};\n for (let i = 0; i < 12; i++) {\n date.setMonth(0 + i);\n if (i in weekdays)\n date.setDate(weekdays[i]);\n date.setUTCHours(8 + i);\n for (const style of partStyles) {\n const segments = new Intl.DateTimeFormat(\n locale,\n parts2.reduce(\n (options, part2) => Object.assign(options, { [part2]: style }),\n { hour12: true, timeZone: \"UTC\" }\n )\n ).formatToParts(date).map(normStr);\n if (style === \"long\" || style === \"short\") {\n const genitiveFormattedParts = new Intl.DateTimeFormat(locale, {\n dateStyle: style === \"short\" ? \"medium\" : \"long\",\n timeZone: \"UTC\"\n }).formatToParts(date).map(normStr);\n const genitiveMonth = genitiveFormattedParts.find(\n (part2) => part2.type === \"month\"\n );\n const index = segments.findIndex((part2) => part2.type === \"month\");\n if (index > -1 && genitiveMonth)\n segments[index] = genitiveMonth;\n }\n segments.forEach((part2) => {\n if (part2.type === \"literal\")\n return;\n const type = part2.type;\n formats2[type] = Object.assign(formats2[type] || {}, {\n [part2.value]: style\n });\n });\n }\n }\n memoParts.set(locale, formats2);\n }\n const formats = memoParts.get(locale);\n return formats ? formats[part][value] : void 0;\n}\nexport {\n parts\n};\n//# sourceMappingURL=parts.mjs.map",
|
|
16
|
-
"// src/removeOffset.ts\nimport { applyOffset } from \"./applyOffset.mjs\";\nfunction removeOffset(dateInput, offset = \"+00:00\") {\n const positive = offset.slice(0, 1) === \"+\";\n return applyOffset(\n dateInput,\n offset.replace(positive ? \"+\" : \"-\", positive ? \"-\" : \"+\")\n );\n}\nexport {\n removeOffset\n};\n//# sourceMappingURL=removeOffset.mjs.map",
|
|
17
|
-
"// src/deviceLocale.ts\nfunction deviceLocale() {\n return Intl.DateTimeFormat().resolvedOptions().locale;\n}\nexport {\n deviceLocale\n};\n//# sourceMappingURL=deviceLocale.mjs.map",
|
|
18
|
-
"// src/format.ts\nimport { date } from \"./date.mjs\";\nimport { parts } from \"./parts.mjs\";\nimport { fill, getOffsetFormat } from \"./common.mjs\";\nimport { offset } from \"./offset.mjs\";\nimport { removeOffset } from \"./removeOffset.mjs\";\nimport { deviceLocale } from \"./deviceLocale.mjs\";\nimport { deviceTZ } from \"./deviceTZ.mjs\";\nfunction format(inputDateOrOptions, format2 = \"long\", locale = \"device\", genitive = false, partFilter) {\n let tz, forceOffset;\n if (typeof inputDateOrOptions === \"object\" && !(inputDateOrOptions instanceof Date)) {\n ;\n ({\n date: inputDateOrOptions,\n format: format2,\n locale,\n genitive,\n partFilter,\n tz\n } = inputDateOrOptions);\n }\n if (format2 === \"ISO8601\")\n return date(inputDateOrOptions).toISOString();\n if (tz) {\n forceOffset = offset(inputDateOrOptions, \"utc\", tz, getOffsetFormat(format2));\n }\n tz != null ? tz : tz = deviceTZ();\n if ((tz == null ? void 0 : tz.toLowerCase()) !== \"utc\") {\n inputDateOrOptions = removeOffset(\n inputDateOrOptions,\n offset(inputDateOrOptions, tz, \"utc\")\n );\n }\n if (!locale || locale === \"device\") {\n locale = deviceLocale();\n }\n return fill(\n inputDateOrOptions,\n parts(format2, locale).filter(partFilter != null ? partFilter : () => true),\n locale,\n genitive,\n forceOffset\n ).map((p) => p.value).join(\"\");\n}\nexport {\n format\n};\n//# sourceMappingURL=format.mjs.map",
|
|
19
|
-
"// src/formatStr.ts\nimport { parts } from \"./parts.mjs\";\nimport { escapeTokens } from \"./common.mjs\";\nfunction formatStr(format, locale = \"en\", escapeLiterals = false, filterParts = () => true) {\n return parts(format, locale).filter(filterParts).reduce(\n (f, p) => f += escapeLiterals && p.partName === \"literal\" ? escapeTokens(p.token) : p.token,\n \"\"\n ).normalize(\"NFKC\");\n}\nexport {\n formatStr\n};\n//# sourceMappingURL=formatStr.mjs.map",
|
|
20
|
-
"// src/fourDigitYear.ts\nfunction fourDigitYear(value) {\n const y = (/* @__PURE__ */ new Date()).getFullYear();\n const currentYear = y % 100;\n const century = Math.floor(y / 100);\n const parsedYear = Number(value);\n return (century + (parsedYear > currentYear + 20 ? -1 : 0)) * 100 + parsedYear;\n}\nexport {\n fourDigitYear\n};\n//# sourceMappingURL=fourDigitYear.mjs.map",
|
|
21
|
-
"// src/range.ts\nimport { format } from \"./format.mjs\";\nimport { ap } from \"./ap.mjs\";\nfunction range(token, locale = \"en\", genitive = false) {\n const r = (n, c) => Array(n).fill(\"\").map((_, i) => `${c(i)}`);\n if (token === \"M\")\n return r(12, (i) => i + 1);\n if (token === \"MM\")\n return r(12, (i) => {\n const m = i + 1;\n return m < 10 ? `0${m}` : m;\n });\n if (token.startsWith(\"M\"))\n return range(\"MM\").map(\n (m) => format(`2000-${m}-05`, token, locale, genitive)\n );\n if (token.startsWith(\"d\"))\n return r(7, (i) => `0${i + 2}`).map(\n (d) => format(`2022-10-${d}`, token, locale)\n );\n if (token === \"a\")\n return [ap(\"am\", locale).toLowerCase(), ap(\"pm\", locale).toLowerCase()];\n if (token === \"A\")\n return [ap(\"am\", locale).toUpperCase(), ap(\"pm\", locale).toUpperCase()];\n if (token.startsWith(\"Y\")) {\n const year = (/* @__PURE__ */ new Date()).getFullYear();\n return r(120, (i) => i + 1).reduce(\n (ranges, i) => {\n if (i !== \"120\")\n ranges.push(format(`${year + Number(i)}-06-06`, token, locale));\n ranges.unshift(format(`${year - Number(i)}-06-06`, token, locale));\n return ranges;\n },\n [format(`${year}-06-06`, token, locale)]\n );\n }\n if (token.startsWith(\"D\"))\n return r(31, (i) => `${token === \"DD\" && i < 9 ? \"0\" : \"\"}${i + 1}`);\n if (token.startsWith(\"H\"))\n return r(24, (i) => `${token === \"HH\" && i < 10 ? \"0\" : \"\"}${i}`);\n if (token.startsWith(\"h\"))\n return r(12, (i) => `${token === \"hh\" && i < 9 ? \"0\" : \"\"}${i + 1}`);\n if (token.startsWith(\"m\") || token.startsWith(\"s\"))\n return r(60, (i) => `${token.length > 1 && i < 10 ? \"0\" : \"\"}${i}`);\n return [];\n}\nexport {\n range\n};\n//# sourceMappingURL=range.mjs.map",
|
|
22
|
-
"// src/parse.ts\nimport { date } from \"./date.mjs\";\nimport { validate, styles, fixedLength, four, two, validOffset, fixedLengthByOffset } from \"./common.mjs\";\nimport { formatStr } from \"./formatStr.mjs\";\nimport { fourDigitYear } from \"./fourDigitYear.mjs\";\nimport { ap } from \"./ap.mjs\";\nimport { range } from \"./range.mjs\";\nimport { monthDays } from \"./monthDays.mjs\";\nimport { parts } from \"./parts.mjs\";\nfunction parse(dateStrOrOptions, format = \"ISO8601\", locale = \"device\") {\n let partFilter = () => true;\n let dateStr;\n let dateOverflow = \"backward\";\n if (typeof dateStrOrOptions === \"object\") {\n ;\n ({\n date: dateStr,\n format = \"ISO8601\",\n locale = \"device\",\n dateOverflow = \"backward\",\n partFilter = () => true\n } = dateStrOrOptions);\n } else {\n dateStr = dateStrOrOptions;\n }\n if (!dateStr)\n throw new Error(\"parse() requires a date string.\");\n const invalid = () => {\n throw new Error(\n `Date (${dateStr}) does not match format (${formatStr(format, locale)})`\n );\n };\n if (format === \"ISO8601\")\n return date(dateStr);\n const genitive = styles.includes(format) || typeof format === \"object\";\n const formatParts = validate(parts(format, locale).filter(partFilter));\n if (!formatParts.length)\n throw new Error(\"parse() requires a pattern.\");\n let parsedParts;\n try {\n parsedParts = parseParts(dateStr, formatParts);\n } catch {\n return invalid();\n }\n const now = /* @__PURE__ */ new Date();\n const parsed = /* @__PURE__ */ new Map([\n [\"YYYY\", now.getFullYear()],\n [\"MM\", now.getMonth() + 1],\n [\"DD\", now.getDate()],\n [\"HH\", 0],\n [\"mm\", 0],\n [\"ss\", 0]\n ]);\n let a = null;\n let offset = \"\";\n parsedParts.forEach((part) => {\n if (part.partName === \"literal\")\n return;\n if (part.token === part.value)\n return invalid();\n const v = Number(part.value);\n if (parsed.has(part.token)) {\n parsed.set(part.token, v);\n } else if (part.token === \"YY\") {\n parsed.set(\"YYYY\", fourDigitYear(part.value));\n } else {\n const t = part.token;\n if (t.startsWith(\"d\")) {\n return;\n } else if (t === \"D\") {\n parsed.set(\"DD\", v);\n } else if (t === \"H\" || t.startsWith(\"h\")) {\n parsed.set(\"HH\", v);\n } else if (t === \"M\") {\n parsed.set(\"MM\", v);\n } else if (t === \"a\" || t === \"A\") {\n a = part.value.toLowerCase() === ap(\"am\", locale).toLowerCase();\n } else if (t === \"Z\" || t === \"ZZ\") {\n offset = validOffset(part.value, t);\n } else {\n const values = range(t, locale, genitive);\n const index = values.indexOf(part.value);\n if (index !== -1) {\n switch (t) {\n case \"MMM\":\n case \"MMMM\":\n parsed.set(\"MM\", index + 1);\n break;\n }\n }\n }\n }\n });\n let hours = parsed.get(\"HH\") || 0;\n if (a === false) {\n hours += hours === 12 ? 0 : 12;\n parsed.set(\"HH\", hours === 24 ? 0 : hours);\n } else if (a === true && hours === 12) {\n parsed.set(\"HH\", 0);\n }\n parsed.set(\"MM\", (parsed.get(\"MM\") || 1) - 1);\n let [Y, M, D, h, m, s] = Array.from(parsed.values());\n const maxDaysInMonth = monthDays(/* @__PURE__ */ new Date(`${four(Y)}-${two(M + 1)}-10`));\n if (maxDaysInMonth < D && dateOverflow === \"throw\")\n throw new Error(`Invalid date ${four(Y)}-${two(M + 1)}-${two(D)}`);\n D = dateOverflow === \"backward\" ? Math.min(D, maxDaysInMonth) : D;\n const isoString = `${four(Y)}-${two(M + 1)}-${two(D)}T${two(h)}:${two(\n m\n )}:${two(s)}${offset}`;\n const d = new Date(isoString);\n if (isFinite(+d))\n return d;\n return invalid();\n}\nfunction parseParts(dateStr, formatParts) {\n let i = 0;\n const advance = (parts2) => [\n parts2[i++],\n parts2[i]\n ];\n let pos = 0;\n const parsed = [];\n let n = void 0;\n do {\n const [current, next] = advance(formatParts);\n n = next;\n let len = 1;\n if (current.partName === \"literal\") {\n len = current.partValue.length;\n } else if (current.partName === \"timeZoneName\") {\n len = fixedLengthByOffset(dateStr.substring(pos));\n } else if (current.token in fixedLength) {\n len = fixedLength[current.token];\n } else if (next) {\n if (next.partName === \"literal\") {\n len = dateStr.indexOf(next.partValue, pos) - pos;\n if (len < 0)\n throw new Error();\n } else if (next.partName === \"dayPeriod\") {\n for (let i2 = 1; i2 <= 4; i2++) {\n if (isNaN(Number(dateStr.charAt(pos + i2)))) {\n len = i2;\n break;\n }\n }\n } else {\n const nextChar = dateStr.substring(pos).search(/\\d/);\n if (nextChar !== -1)\n len = pos + nextChar;\n }\n } else {\n len = dateStr.length;\n }\n parsed.push({ ...current, value: dateStr.substring(pos, pos + len) });\n pos += len;\n } while (n);\n return parsed;\n}\nexport {\n parse,\n parseParts\n};\n//# sourceMappingURL=parse.mjs.map"
|
|
23
|
-
],
|
|
24
|
-
"mappings": "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",
|
|
25
|
-
"debugId": "310F9AAC525AB3B264756E2164756E21",
|
|
26
|
-
"names": []
|
|
27
|
-
}
|