@master4n/temporal-transformer
Advanced tools
@@ -1,2 +0,2 @@ | ||
| "use strict";var o,e=require("luxon");exports.EpochUnit=void 0,(o=exports.EpochUnit||(exports.EpochUnit={})).SECONDS="seconds",o.MILLI_SECONDS="milliseconds",o.MICRO_SECONDS="microseconds",o.NANO_SECONDS="nanoseconds";const t={SECONDS:1e10,MILLI_SECONDS:1e13,MICRO_SECONDS:1e16,NANO_SECONDS:1e19},r=864e13,n=-864e13,s=256,i=256,a="yyyy-MM-dd HH:mm:ss.SSS",c=new Set(["yyyy","yy","y","M","MM","MMM","MMMM","L","LL","LLL","LLLL","d","dd","c","cc","ccc","cccc","E","EE","EEE","EEEE","H","HH","h","hh","a","m","mm","s","ss","S","SSS","Z","ZZ","ZZZ","ZZZZ","ZZZZZ","z","o","ooo","q","qq","W","WW"]);var h;exports.EpochError=void 0,(h=exports.EpochError||(exports.EpochError={})).UndefinedOrNull="Epoch Is Undefined Or Null",h.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",h.OutOfRange="Epoch Is Out Of The Valid Range",h.EpochUnit="Invalid Epoch Unit",h.Empty="Epoch Is Empty",h.DateError="Invalid Date Format Or Value",h.TimezoneError="Unknown Timezone",h.ParseError="Cannot Parse The Provided Date String",h.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",h.InputTooLong="Input String Exceeds Maximum Allowed Length",h.FormatTooLong="Format String Exceeds Maximum Allowed Length",h.FormatInvalid="Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)",h.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range";class p extends Error{constructor(o){super(o),this.name="EpochValidationError"}}let u=null;function f(){if(null===u){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];u=new Set([...o,"UTC","Etc/GMT","Etc/UTC","GMT"])}return u}function l(o){const e=function(o){if(null==o)throw new p(exports.EpochError.UndefinedOrNull);if("string"==typeof o){if(o.length>s)throw new p(exports.EpochError.InputTooLong);if(0===o.trim().length)throw new p(exports.EpochError.Empty);const e=Number(o);if(isNaN(e))throw new p(exports.EpochError.NotANumber);o=e}else if("number"!=typeof o)throw new p(exports.EpochError.NotANumber);if(!isFinite(o)||isNaN(o))throw new p(exports.EpochError.NotANumber);if(!Number.isInteger(o)){const e=o.toString(),t=e.indexOf(".");if(-1===t)return Math.round(o);const r=e.length-t-1;o=Math.round(o*Math.pow(10,r))}return o}(o),r=Math.abs(e);let n,i;if(r<t.SECONDS)n=1e3*e,i=exports.EpochUnit.SECONDS;else if(r<t.MILLI_SECONDS)n=e,i=exports.EpochUnit.MILLI_SECONDS;else if(r<t.MICRO_SECONDS)n=Math.floor(e/1e3),i=exports.EpochUnit.MICRO_SECONDS;else{if(!(r<t.NANO_SECONDS))throw new p(exports.EpochError.EpochUnit);n=Math.floor(e/1e6),i=exports.EpochUnit.NANO_SECONDS}return{epochUnit:i,epochInMilliseconds:n}}function E(o){if(!f().has(o)){if(!e.DateTime.now().setZone(o).isValid)throw new p(exports.EpochError.TimezoneError);f().add(o)}}function m(o){if(o.length>i)throw new p(exports.EpochError.FormatTooLong);const e=o.replace(/'[^']*'/g,"").match(/([a-zA-Z])\1*/g)||[];for(const o of e)if(!c.has(o))throw new p(exports.EpochError.FormatInvalid)}function d(o){return Object.freeze(o)}function M(){return e.DateTime.local().zoneName??"UTC"}function T(o,t=a){m(t);const{epochInMilliseconds:r,epochUnit:n}=l(o),s=M();return d({timezone:s,dateTime:e.DateTime.fromMillis(r,{zone:s}).toFormat(t),dateTimeInGMT:e.DateTime.fromMillis(r,{zone:"UTC"}).toFormat(t),epochUnit:n,epoch:o,relative:function(o){const e=Date.now()-o,t=Math.abs(e)/1e3,r=t/60,n=r/60,s=n/24,i=s/30,a=s/365,c=e<0?" from now":" ago";if(t<=60)return`${Math.floor(t)} seconds${c}`;if(r<=60)return`${Math.floor(r)} minutes${c}`;if(n<=24)return`${Math.floor(n)} hours ${Math.floor(r%60)} minutes${c}`;if(s<=30)return`${Math.floor(s)} days ${Math.floor(n%24)} hours${c}`;if(i<=12)return`${Math.floor(i)} months ${Math.floor(s%30)} days${c}`;return`${Math.floor(a)} years ${Math.floor(s%365/30)} months${c}`}(r)})}function S(o,t=M()){!function(o){if(!(o instanceof Date))throw new p(exports.EpochError.DateError);if(!e.DateTime.fromJSDate(o).isValid)throw new p(exports.EpochError.DateError)}(o),E(t);const r=e.DateTime.fromJSDate(o),n=r.toMillis();return d({epochInSeconds:Math.floor(n/1e3),epochInMilliseconds:n,dateTimeInGMT:r.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:r.setZone(t).toFormat("yyyy-MM-dd HH:mm:ss"),timezone:t})}function x(o,t,r=a){m(r),E(t);const{epochInMilliseconds:n}=l(o);return e.DateTime.fromMillis(n,{zone:t}).toFormat(r)}function O(o){return l(o).epochUnit}const y=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function w(o,t,r=M()){if(null==o||"string"!=typeof o)throw new p(exports.EpochError.ParseError);if(o.length>s)throw new p(exports.EpochError.InputTooLong);const n=o.trim();if(0===n.length)throw new p(exports.EpochError.ParseError);if(!y.test(n))throw new p(exports.EpochError.ParseError);void 0!==t&&m(t),E(r);const i=t?e.DateTime.fromFormat(o,t,{zone:r}):e.DateTime.fromISO(o,{zone:r});if(!i.isValid)throw new p(exports.EpochError.ParseError);return d({epochInSeconds:Math.floor(i.toMillis()/1e3),epochInMilliseconds:i.toMillis(),dateTimeInGMT:i.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:i.toFormat("yyyy-MM-dd HH:mm:ss"),timezone:r})}function N(o,t){const{epochInMilliseconds:r}=l(o),{epochInMilliseconds:n}=l(t);if(r>n)throw new p(exports.EpochError.RangeError);return d(function(o,t){const r=t-o,n=e.DateTime.fromMillis(o,{zone:"utc"}),s=e.DateTime.fromMillis(t,{zone:"utc"}).diff(n,["years","months","days","hours","minutes","seconds","milliseconds"]).toObject(),i=Math.floor(s.years??0),a=Math.floor(s.months??0),c=Math.floor(s.days??0),h=Math.floor(s.hours??0),p=Math.floor(s.minutes??0),u=Math.floor(s.seconds??0);return{years:i,months:a,days:c,hours:h,minutes:p,seconds:u,milliseconds:Math.floor(s.milliseconds??0),totalMilliseconds:r,humanReadable:[[i,"year"],[a,"month"],[c,"day"],[h,"hour"],[p,"minute"],[u,"second"]].filter((([o])=>o>0)).map((([o,e])=>`${o} ${e}${1!==o?"s":""}`)).join(", ")||"0 seconds"}}(r,n))}function I(o,t){E(o);const r=t?l(t).epochInMilliseconds:Date.now(),n=e.DateTime.fromMillis(r,{zone:o});return d({offset:n.toFormat("ZZ"),offsetMinutes:n.offset})}const D=["Asia/Kolkata","Asia/Ho_Chi_Minh","Asia/Yangon","Europe/Kyiv","Africa/Asmara","Atlantic/Faroe","Pacific/Pohnpei","Pacific/Chuuk","America/Indiana/Indianapolis","America/Atikokan"];function g(){const o=Date.now();if(!isFinite(o)||o<n||o>r)throw new p(exports.EpochError.ClockOutOfRange);return d({seconds:Math.floor(o/1e3),milliseconds:o,iso:new Date(o).toISOString(),timezone:M()})}function C(o){try{return{ok:!0,value:o()}}catch(o){if(o instanceof p)return{ok:!1,error:o};throw o}}exports.DEFAULT_FORMAT=a,exports.EpochThreshold=t,exports.EpochValidationError=p,exports.MAX_EPOCH_MS=r,exports.MAX_FORMAT_STRING_LENGTH=i,exports.MAX_INPUT_STRING_LENGTH=s,exports.MIN_EPOCH_MS=n,exports.SUPPORTED_FORMAT_TOKENS=c,exports.convertDateToEpoch=S,exports.convertEpoch=T,exports.convertEpochToTimezone=x,exports.formatDuration=function(o){const t=Math.abs(o),r=e.Duration.fromMillis(t).shiftTo("years","months","days","hours","minutes","seconds"),n=Math.floor(r.years),s=Math.floor(r.months),i=Math.floor(r.days),a=Math.floor(r.hours),c=Math.floor(r.minutes),h=Math.floor(r.seconds),p=[];return n>0&&p.push(`${n} year${1!==n?"s":""}`),s>0&&p.push(`${s} month${1!==s?"s":""}`),i>0&&p.push(`${i} day${1!==i?"s":""}`),a>0&&p.push(`${a} hour${1!==a?"s":""}`),c>0&&p.push(`${c} minute${1!==c?"s":""}`),h>0&&p.push(`${h} second${1!==h?"s":""}`),p.length>0?p.join(", "):"0 seconds"},exports.getDurationBetween=N,exports.getEpochNow=g,exports.getEpochUnit=O,exports.getTimezoneList=function(){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];return[...new Set([...o,...D,"UTC"])]},exports.getTimezoneOffset=I,exports.isValidEpoch=function(o){try{return l(o),!0}catch{return!1}},exports.isValidTimezone=function(o){try{return E(o),!0}catch{return!1}},exports.parseToEpoch=w,exports.safeConvertDateToEpoch=function(o,e){return C((()=>S(o,e)))},exports.safeConvertEpoch=function(o,e){return C((()=>T(o,e)))},exports.safeConvertEpochToTimezone=function(o,e,t){return C((()=>x(o,e,t)))},exports.safeGetDurationBetween=function(o,e){return C((()=>N(o,e)))},exports.safeGetEpochNow=function(){return C((()=>g()))},exports.safeGetEpochUnit=function(o){return C((()=>O(o)))},exports.safeGetTimezoneOffset=function(o,e){return C((()=>I(o,e)))},exports.safeParseToEpoch=function(o,e,t){return C((()=>w(o,e,t)))}; | ||
| "use strict";var o,e=require("luxon");exports.EpochUnit=void 0,(o=exports.EpochUnit||(exports.EpochUnit={})).SECONDS="seconds",o.MILLI_SECONDS="milliseconds",o.MICRO_SECONDS="microseconds",o.NANO_SECONDS="nanoseconds";const t={SECONDS:1e10,MILLI_SECONDS:1e13,MICRO_SECONDS:1e16,NANO_SECONDS:1e19},r=864e13,n=-864e13,s="yyyy-MM-dd HH:mm:ss.SSS",i=new Set(["yyyy","yy","y","M","MM","MMM","MMMM","L","LL","LLL","LLLL","d","dd","c","cc","ccc","cccc","E","EE","EEE","EEEE","H","HH","h","hh","a","m","mm","s","ss","S","SSS","Z","ZZ","ZZZ","ZZZZ","ZZZZZ","z","o","ooo","q","qq","W","WW"]);var a;exports.EpochError=void 0,(a=exports.EpochError||(exports.EpochError={})).UndefinedOrNull="Epoch Is Undefined Or Null",a.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",a.OutOfRange="Epoch Is Out Of The Valid Range",a.EpochUnit="Invalid Epoch Unit",a.Empty="Epoch Is Empty",a.DateError="Invalid Date Format Or Value",a.TimezoneError="Unknown Timezone",a.ParseError="Cannot Parse The Provided Date String",a.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",a.InputTooLong="Input String Exceeds Maximum Allowed Length",a.FormatTooLong="Format String Exceeds Maximum Allowed Length",a.FormatInvalid="Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)",a.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range";class c extends Error{constructor(o){super(o),this.name="EpochValidationError"}}let h=null;function p(){if(null===h){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];h=new Set([...o,"UTC","Etc/GMT","Etc/UTC","GMT"])}return h}function u(o){const e=function(o){if(null==o)throw new c(exports.EpochError.UndefinedOrNull);if("string"==typeof o){if(o.length>256)throw new c(exports.EpochError.InputTooLong);if(0===o.trim().length)throw new c(exports.EpochError.Empty);const e=Number(o);if(isNaN(e))throw new c(exports.EpochError.NotANumber);o=e}else if("number"!=typeof o)throw new c(exports.EpochError.NotANumber);if(!isFinite(o)||isNaN(o))throw new c(exports.EpochError.NotANumber);if(!Number.isInteger(o)){const e=o.toString(),t=e.indexOf(".");if(-1===t)return Math.round(o);const r=e.length-t-1;o=Math.round(o*Math.pow(10,r))}return o}(o),r=Math.abs(e);let n,s;if(r<t.SECONDS)n=1e3*e,s=exports.EpochUnit.SECONDS;else if(r<t.MILLI_SECONDS)n=e,s=exports.EpochUnit.MILLI_SECONDS;else if(r<t.MICRO_SECONDS)n=Math.floor(e/1e3),s=exports.EpochUnit.MICRO_SECONDS;else{if(!(r<t.NANO_SECONDS))throw new c(exports.EpochError.EpochUnit);n=Math.floor(e/1e6),s=exports.EpochUnit.NANO_SECONDS}return{epochUnit:s,epochInMilliseconds:n}}function f(o){if(!p().has(o)){if(!e.DateTime.now().setZone(o).isValid)throw new c(exports.EpochError.TimezoneError);p().add(o)}}function l(o,e){return`${o} ${e}${1===o?"":"s"}`}function E(o){if(o.length>256)throw new c(exports.EpochError.FormatTooLong);const e=o.replace(/'[^']*'/g,"").match(/([a-zA-Z])\1*/g)||[];for(const o of e)if(!i.has(o))throw new c(exports.EpochError.FormatInvalid)}function m(o){return Object.freeze(o)}function d(){return e.DateTime.local().zoneName??"UTC"}function M(o,t=s){E(t);const{epochInMilliseconds:r,epochUnit:n}=u(o),i=d();return m({timezone:i,dateTime:e.DateTime.fromMillis(r,{zone:i}).toFormat(t),dateTimeInGMT:e.DateTime.fromMillis(r,{zone:"UTC"}).toFormat(t),epochUnit:n,epoch:o,relative:function(o){const e=Date.now()-o,t=Math.abs(e)/1e3,r=t/60,n=r/60,s=n/24,i=s/30,a=s/365,c=e<0?" from now":" ago";if(t<60)return`${l(Math.floor(t),"second")}${c}`;if(r<60)return`${l(Math.floor(r),"minute")}${c}`;if(n<24){const o=Math.floor(n),e=Math.floor(r%60);return`${l(o,"hour")} ${l(e,"minute")}${c}`}if(s<30){const o=Math.floor(s),e=Math.floor(n%24);return`${l(o,"day")} ${l(e,"hour")}${c}`}if(i<12){const o=Math.floor(i),e=Math.floor(s%30);return`${l(o,"month")} ${l(e,"day")}${c}`}{const o=Math.floor(a),e=Math.min(11,Math.floor(s%365/30));return`${l(o,"year")} ${l(e,"month")}${c}`}}(r)})}function T(o,t=d()){!function(o){if(!(o instanceof Date))throw new c(exports.EpochError.DateError);if(!e.DateTime.fromJSDate(o).isValid)throw new c(exports.EpochError.DateError)}(o),f(t);const r=e.DateTime.fromJSDate(o),n=r.toMillis();return m({epochInSeconds:Math.floor(n/1e3),epochInMilliseconds:n,dateTimeInGMT:r.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:r.setZone(t).toFormat("yyyy-MM-dd HH:mm:ss"),timezone:t})}function S(o,t,r=s){E(r),f(t);const{epochInMilliseconds:n}=u(o);return e.DateTime.fromMillis(n,{zone:t}).toFormat(r)}function x(o){return u(o).epochUnit}const O=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function y(o,t,r=d()){if(null==o||"string"!=typeof o)throw new c(exports.EpochError.ParseError);if(o.length>256)throw new c(exports.EpochError.InputTooLong);const n=o.trim();if(0===n.length)throw new c(exports.EpochError.ParseError);if(!O.test(n))throw new c(exports.EpochError.ParseError);void 0!==t&&E(t),f(r);const s=t?e.DateTime.fromFormat(o,t,{zone:r}):e.DateTime.fromISO(o,{zone:r});if(!s.isValid)throw new c(exports.EpochError.ParseError);return m({epochInSeconds:Math.floor(s.toMillis()/1e3),epochInMilliseconds:s.toMillis(),dateTimeInGMT:s.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:s.toFormat("yyyy-MM-dd HH:mm:ss"),timezone:r})}function w(o,t){const{epochInMilliseconds:r}=u(o),{epochInMilliseconds:n}=u(t);if(r>n)throw new c(exports.EpochError.RangeError);return m(function(o,t){const r=t-o,n=e.DateTime.fromMillis(o,{zone:"utc"}),s=e.DateTime.fromMillis(t,{zone:"utc"}).diff(n,["years","months","days","hours","minutes","seconds","milliseconds"]).toObject(),i=Math.floor(s.years??0),a=Math.floor(s.months??0),c=Math.floor(s.days??0),h=Math.floor(s.hours??0),p=Math.floor(s.minutes??0),u=Math.floor(s.seconds??0);return{years:i,months:a,days:c,hours:h,minutes:p,seconds:u,milliseconds:Math.floor(s.milliseconds??0),totalMilliseconds:r,humanReadable:[[i,"year"],[a,"month"],[c,"day"],[h,"hour"],[p,"minute"],[u,"second"]].filter(([o])=>o>0).map(([o,e])=>`${o} ${e}${1!==o?"s":""}`).join(", ")||"0 seconds"}}(r,n))}function N(o,t){f(o);const r=t?u(t).epochInMilliseconds:Date.now(),n=e.DateTime.fromMillis(r,{zone:o});return m({offset:n.toFormat("ZZ"),offsetMinutes:n.offset})}const I=["Asia/Kolkata","Asia/Ho_Chi_Minh","Asia/Yangon","Europe/Kyiv","Africa/Asmara","Atlantic/Faroe","Pacific/Pohnpei","Pacific/Chuuk","America/Indiana/Indianapolis","America/Atikokan"];function D(){const o=Date.now();if(!isFinite(o)||o<n||o>r)throw new c(exports.EpochError.ClockOutOfRange);return m({seconds:Math.floor(o/1e3),milliseconds:o,iso:new Date(o).toISOString(),timezone:d()})}function g(o){try{return{ok:!0,value:o()}}catch(o){if(o instanceof c)return{ok:!1,error:o};throw o}}exports.DEFAULT_FORMAT=s,exports.EpochThreshold=t,exports.EpochValidationError=c,exports.MAX_EPOCH_MS=r,exports.MAX_FORMAT_STRING_LENGTH=256,exports.MAX_INPUT_STRING_LENGTH=256,exports.MIN_EPOCH_MS=n,exports.SUPPORTED_FORMAT_TOKENS=i,exports.convertDateToEpoch=T,exports.convertEpoch=M,exports.convertEpochToTimezone=S,exports.formatDuration=function(o){const t=Math.abs(o),r=e.Duration.fromMillis(t).shiftTo("years","months","days","hours","minutes","seconds"),n=Math.floor(r.years),s=Math.floor(r.months),i=Math.floor(r.days),a=Math.floor(r.hours),c=Math.floor(r.minutes),h=Math.floor(r.seconds),p=[];return n>0&&p.push(`${n} year${1!==n?"s":""}`),s>0&&p.push(`${s} month${1!==s?"s":""}`),i>0&&p.push(`${i} day${1!==i?"s":""}`),a>0&&p.push(`${a} hour${1!==a?"s":""}`),c>0&&p.push(`${c} minute${1!==c?"s":""}`),h>0&&p.push(`${h} second${1!==h?"s":""}`),p.length>0?p.join(", "):"0 seconds"},exports.getDurationBetween=w,exports.getEpochNow=D,exports.getEpochUnit=x,exports.getTimezoneList=function(){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];return[...new Set([...o,...I,"UTC"])]},exports.getTimezoneOffset=N,exports.isValidEpoch=function(o){try{return u(o),!0}catch{return!1}},exports.isValidTimezone=function(o){try{return f(o),!0}catch{return!1}},exports.parseToEpoch=y,exports.safeConvertDateToEpoch=function(o,e){return g(()=>T(o,e))},exports.safeConvertEpoch=function(o,e){return g(()=>M(o,e))},exports.safeConvertEpochToTimezone=function(o,e,t){return g(()=>S(o,e,t))},exports.safeGetDurationBetween=function(o,e){return g(()=>w(o,e))},exports.safeGetEpochNow=function(){return g(()=>D())},exports.safeGetEpochUnit=function(o){return g(()=>x(o))},exports.safeGetTimezoneOffset=function(o,e){return g(()=>N(o,e))},exports.safeParseToEpoch=function(o,e,t){return g(()=>y(o,e,t))}; | ||
| //# sourceMappingURL=index.cjs.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.cjs","sources":["../../src/types/index.ts","../../src/errors/EpochValidationError.ts","../../src/utils/validations.ts","../../src/epoch/convertor.ts","../../src/utils/utility.ts","../../src/epoch/safe.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["EpochUnit","EpochThreshold","SECONDS","MILLI_SECONDS","MICRO_SECONDS","NANO_SECONDS","MAX_EPOCH_MS","MIN_EPOCH_MS","MAX_INPUT_STRING_LENGTH","MAX_FORMAT_STRING_LENGTH","DEFAULT_FORMAT","SUPPORTED_FORMAT_TOKENS","Set","EpochError","EpochValidationError","Error","constructor","message","super","this","name","TZ_SET","timezoneSet","list","Intl","supportedValuesOf","getEpochUnitAndEpochInMiliseconds","epoch","validEpoch","UndefinedOrNull","length","InputTooLong","trim","Empty","parsed","Number","isNaN","NotANumber","isFinite","isInteger","str","toString","dotIndex","indexOf","Math","round","fractionLength","pow","validateEpoch","absoluteEpoch","abs","epochInMilliseconds","epochUnit","floor","validTimezone","timezone","has","DateTime","now","setZone","isValid","TimezoneError","add","assertFormatValid","format","FormatTooLong","tokens","replace","match","token","FormatInvalid","freeze","o","Object","localZone","local","zoneName","convertEpoch","dateTime","fromMillis","zone","toFormat","dateTimeInGMT","relative","epochMillis","diffMillis","Date","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","getRelativeTimeDifference","convertDateToEpoch","date","DateError","fromJSDate","validateMomentDate","dt","toMillis","epochInSeconds","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","fromFormat","fromISO","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","diff","toObject","years","months","days","hours","minutes","seconds","milliseconds","totalMilliseconds","humanReadable","filter","v","map","label","join","parseDuration","getTimezoneOffset","ms","offset","offsetMinutes","MODERN_CANONICAL_ZONES","getEpochNow","ClockOutOfRange","iso","toISOString","wrap","fn","ok","value","e","error","d","Duration","shiftTo","segments","push","intlList"],"mappings":"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"} | ||
| {"version":3,"file":"index.cjs","sources":["../../src/types/index.ts","../../src/errors/EpochValidationError.ts","../../src/utils/validations.ts","../../src/utils/utility.ts","../../src/epoch/convertor.ts","../../src/epoch/safe.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["EpochUnit","EpochThreshold","SECONDS","MILLI_SECONDS","MICRO_SECONDS","NANO_SECONDS","MAX_EPOCH_MS","MIN_EPOCH_MS","DEFAULT_FORMAT","SUPPORTED_FORMAT_TOKENS","Set","EpochError","EpochValidationError","Error","constructor","message","super","this","name","TZ_SET","timezoneSet","list","Intl","supportedValuesOf","getEpochUnitAndEpochInMiliseconds","epoch","validEpoch","UndefinedOrNull","length","InputTooLong","trim","Empty","parsed","Number","isNaN","NotANumber","isFinite","isInteger","str","toString","dotIndex","indexOf","Math","round","fractionLength","pow","validateEpoch","absoluteEpoch","abs","epochInMilliseconds","epochUnit","floor","validTimezone","timezone","has","DateTime","now","setZone","isValid","TimezoneError","add","plural","n","label","assertFormatValid","format","FormatTooLong","tokens","replace","match","token","FormatInvalid","freeze","o","Object","localZone","local","zoneName","convertEpoch","dateTime","fromMillis","zone","toFormat","dateTimeInGMT","relative","epochMillis","diffMillis","Date","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","hours","minutes","days","months","years","min","getRelativeTimeDifference","convertDateToEpoch","date","DateError","fromJSDate","validateMomentDate","dt","toMillis","epochInSeconds","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","fromFormat","fromISO","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","diff","toObject","seconds","milliseconds","totalMilliseconds","humanReadable","filter","v","map","join","parseDuration","getTimezoneOffset","ms","offset","offsetMinutes","MODERN_CANONICAL_ZONES","getEpochNow","ClockOutOfRange","iso","toISOString","wrap","fn","ok","value","e","error","d","Duration","shiftTo","segments","push","intlList"],"mappings":"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"} |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import{DateTime as o,Duration as n}from"luxon";var t;!function(o){o.SECONDS="seconds",o.MILLI_SECONDS="milliseconds",o.MICRO_SECONDS="microseconds",o.NANO_SECONDS="nanoseconds"}(t||(t={}));const e={SECONDS:1e10,MILLI_SECONDS:1e13,MICRO_SECONDS:1e16,NANO_SECONDS:1e19},r=864e13,i=-864e13,s=256,a=256,c="yyyy-MM-dd HH:mm:ss.SSS",u=new Set(["yyyy","yy","y","M","MM","MMM","MMMM","L","LL","LLL","LLLL","d","dd","c","cc","ccc","cccc","E","EE","EEE","EEEE","H","HH","h","hh","a","m","mm","s","ss","S","SSS","Z","ZZ","ZZZ","ZZZZ","ZZZZZ","z","o","ooo","q","qq","W","WW"]);var f;!function(o){o.UndefinedOrNull="Epoch Is Undefined Or Null",o.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",o.OutOfRange="Epoch Is Out Of The Valid Range",o.EpochUnit="Invalid Epoch Unit",o.Empty="Epoch Is Empty",o.DateError="Invalid Date Format Or Value",o.TimezoneError="Unknown Timezone",o.ParseError="Cannot Parse The Provided Date String",o.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",o.InputTooLong="Input String Exceeds Maximum Allowed Length",o.FormatTooLong="Format String Exceeds Maximum Allowed Length",o.FormatInvalid="Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)",o.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range"}(f||(f={}));class l extends Error{constructor(o){super(o),this.name="EpochValidationError"}}let h=null;function m(){if(null===h){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];h=new Set([...o,"UTC","Etc/GMT","Etc/UTC","GMT"])}return h}function d(o){const n=function(o){if(null==o)throw new l(f.UndefinedOrNull);if("string"==typeof o){if(o.length>s)throw new l(f.InputTooLong);if(0===o.trim().length)throw new l(f.Empty);const n=Number(o);if(isNaN(n))throw new l(f.NotANumber);o=n}else if("number"!=typeof o)throw new l(f.NotANumber);if(!isFinite(o)||isNaN(o))throw new l(f.NotANumber);if(!Number.isInteger(o)){const n=o.toString(),t=n.indexOf(".");if(-1===t)return Math.round(o);const e=n.length-t-1;o=Math.round(o*Math.pow(10,e))}return o}(o),r=Math.abs(n);let i,a;if(r<e.SECONDS)i=1e3*n,a=t.SECONDS;else if(r<e.MILLI_SECONDS)i=n,a=t.MILLI_SECONDS;else if(r<e.MICRO_SECONDS)i=Math.floor(n/1e3),a=t.MICRO_SECONDS;else{if(!(r<e.NANO_SECONDS))throw new l(f.EpochUnit);i=Math.floor(n/1e6),a=t.NANO_SECONDS}return{epochUnit:a,epochInMilliseconds:i}}function M(n){if(!m().has(n)){if(!o.now().setZone(n).isValid)throw new l(f.TimezoneError);m().add(n)}}function p(o){try{return d(o),!0}catch{return!1}}function E(o){try{return M(o),!0}catch{return!1}}function S(o){const t=Math.abs(o),e=n.fromMillis(t).shiftTo("years","months","days","hours","minutes","seconds"),r=Math.floor(e.years),i=Math.floor(e.months),s=Math.floor(e.days),a=Math.floor(e.hours),c=Math.floor(e.minutes),u=Math.floor(e.seconds),f=[];return r>0&&f.push(`${r} year${1!==r?"s":""}`),i>0&&f.push(`${i} month${1!==i?"s":""}`),s>0&&f.push(`${s} day${1!==s?"s":""}`),a>0&&f.push(`${a} hour${1!==a?"s":""}`),c>0&&f.push(`${c} minute${1!==c?"s":""}`),u>0&&f.push(`${u} second${1!==u?"s":""}`),f.length>0?f.join(", "):"0 seconds"}function y(o){if(o.length>a)throw new l(f.FormatTooLong);const n=o.replace(/'[^']*'/g,"").match(/([a-zA-Z])\1*/g)||[];for(const o of n)if(!u.has(o))throw new l(f.FormatInvalid)}function w(o){return Object.freeze(o)}function O(){return o.local().zoneName??"UTC"}function I(n,t=c){y(t);const{epochInMilliseconds:e,epochUnit:r}=d(n),i=O();return w({timezone:i,dateTime:o.fromMillis(e,{zone:i}).toFormat(t),dateTimeInGMT:o.fromMillis(e,{zone:"UTC"}).toFormat(t),epochUnit:r,epoch:n,relative:function(o){const n=Date.now()-o,t=Math.abs(n)/1e3,e=t/60,r=e/60,i=r/24,s=i/30,a=i/365,c=n<0?" from now":" ago";if(t<=60)return`${Math.floor(t)} seconds${c}`;if(e<=60)return`${Math.floor(e)} minutes${c}`;if(r<=24)return`${Math.floor(r)} hours ${Math.floor(e%60)} minutes${c}`;if(i<=30)return`${Math.floor(i)} days ${Math.floor(r%24)} hours${c}`;if(s<=12)return`${Math.floor(s)} months ${Math.floor(i%30)} days${c}`;return`${Math.floor(a)} years ${Math.floor(i%365/30)} months${c}`}(e)})}function N(n,t=O()){!function(n){if(!(n instanceof Date))throw new l(f.DateError);if(!o.fromJSDate(n).isValid)throw new l(f.DateError)}(n),M(t);const e=o.fromJSDate(n),r=e.toMillis();return w({epochInSeconds:Math.floor(r/1e3),epochInMilliseconds:r,dateTimeInGMT:e.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:e.setZone(t).toFormat("yyyy-MM-dd HH:mm:ss"),timezone:t})}function T(n,t,e=c){y(e),M(t);const{epochInMilliseconds:r}=d(n);return o.fromMillis(r,{zone:t}).toFormat(e)}function g(o){return d(o).epochUnit}const C=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function $(n,t,e=O()){if(null==n||"string"!=typeof n)throw new l(f.ParseError);if(n.length>s)throw new l(f.InputTooLong);const r=n.trim();if(0===r.length)throw new l(f.ParseError);if(!C.test(r))throw new l(f.ParseError);void 0!==t&&y(t),M(e);const i=t?o.fromFormat(n,t,{zone:e}):o.fromISO(n,{zone:e});if(!i.isValid)throw new l(f.ParseError);return w({epochInSeconds:Math.floor(i.toMillis()/1e3),epochInMilliseconds:i.toMillis(),dateTimeInGMT:i.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:i.toFormat("yyyy-MM-dd HH:mm:ss"),timezone:e})}function D(n,t){const{epochInMilliseconds:e}=d(n),{epochInMilliseconds:r}=d(t);if(e>r)throw new l(f.RangeError);return w(function(n,t){const e=t-n,r=o.fromMillis(n,{zone:"utc"}),i=o.fromMillis(t,{zone:"utc"}).diff(r,["years","months","days","hours","minutes","seconds","milliseconds"]).toObject(),s=Math.floor(i.years??0),a=Math.floor(i.months??0),c=Math.floor(i.days??0),u=Math.floor(i.hours??0),f=Math.floor(i.minutes??0),l=Math.floor(i.seconds??0);return{years:s,months:a,days:c,hours:u,minutes:f,seconds:l,milliseconds:Math.floor(i.milliseconds??0),totalMilliseconds:e,humanReadable:[[s,"year"],[a,"month"],[c,"day"],[u,"hour"],[f,"minute"],[l,"second"]].filter((([o])=>o>0)).map((([o,n])=>`${o} ${n}${1!==o?"s":""}`)).join(", ")||"0 seconds"}}(e,r))}function A(n,t){M(n);const e=t?d(t).epochInMilliseconds:Date.now(),r=o.fromMillis(e,{zone:n});return w({offset:r.toFormat("ZZ"),offsetMinutes:r.offset})}const L=["Asia/Kolkata","Asia/Ho_Chi_Minh","Asia/Yangon","Europe/Kyiv","Africa/Asmara","Atlantic/Faroe","Pacific/Pohnpei","Pacific/Chuuk","America/Indiana/Indianapolis","America/Atikokan"];function Z(){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];return[...new Set([...o,...L,"UTC"])]}function z(){const o=Date.now();if(!isFinite(o)||o<i||o>r)throw new l(f.ClockOutOfRange);return w({seconds:Math.floor(o/1e3),milliseconds:o,iso:new Date(o).toISOString(),timezone:O()})}function F(o){try{return{ok:!0,value:o()}}catch(o){if(o instanceof l)return{ok:!1,error:o};throw o}}function U(o,n){return F((()=>I(o,n)))}function R(o,n){return F((()=>N(o,n)))}function _(o,n,t){return F((()=>T(o,n,t)))}function b(o,n,t){return F((()=>$(o,n,t)))}function H(o,n){return F((()=>D(o,n)))}function v(o,n){return F((()=>A(o,n)))}function P(){return F((()=>z()))}function k(o){return F((()=>g(o)))}export{c as DEFAULT_FORMAT,f as EpochError,e as EpochThreshold,t as EpochUnit,l as EpochValidationError,r as MAX_EPOCH_MS,a as MAX_FORMAT_STRING_LENGTH,s as MAX_INPUT_STRING_LENGTH,i as MIN_EPOCH_MS,u as SUPPORTED_FORMAT_TOKENS,N as convertDateToEpoch,I as convertEpoch,T as convertEpochToTimezone,S as formatDuration,D as getDurationBetween,z as getEpochNow,g as getEpochUnit,Z as getTimezoneList,A as getTimezoneOffset,p as isValidEpoch,E as isValidTimezone,$ as parseToEpoch,R as safeConvertDateToEpoch,U as safeConvertEpoch,_ as safeConvertEpochToTimezone,H as safeGetDurationBetween,P as safeGetEpochNow,k as safeGetEpochUnit,v as safeGetTimezoneOffset,b as safeParseToEpoch}; | ||
| import{DateTime as o,Duration as n}from"luxon";var t;!function(o){o.SECONDS="seconds",o.MILLI_SECONDS="milliseconds",o.MICRO_SECONDS="microseconds",o.NANO_SECONDS="nanoseconds"}(t||(t={}));const e={SECONDS:1e10,MILLI_SECONDS:1e13,MICRO_SECONDS:1e16,NANO_SECONDS:1e19},r=864e13,i=-864e13,s=256,a=256,c="yyyy-MM-dd HH:mm:ss.SSS",u=new Set(["yyyy","yy","y","M","MM","MMM","MMMM","L","LL","LLL","LLLL","d","dd","c","cc","ccc","cccc","E","EE","EEE","EEEE","H","HH","h","hh","a","m","mm","s","ss","S","SSS","Z","ZZ","ZZZ","ZZZZ","ZZZZZ","z","o","ooo","q","qq","W","WW"]);var f;!function(o){o.UndefinedOrNull="Epoch Is Undefined Or Null",o.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",o.OutOfRange="Epoch Is Out Of The Valid Range",o.EpochUnit="Invalid Epoch Unit",o.Empty="Epoch Is Empty",o.DateError="Invalid Date Format Or Value",o.TimezoneError="Unknown Timezone",o.ParseError="Cannot Parse The Provided Date String",o.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",o.InputTooLong="Input String Exceeds Maximum Allowed Length",o.FormatTooLong="Format String Exceeds Maximum Allowed Length",o.FormatInvalid="Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)",o.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range"}(f||(f={}));class l extends Error{constructor(o){super(o),this.name="EpochValidationError"}}let h=null;function m(){if(null===h){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];h=new Set([...o,"UTC","Etc/GMT","Etc/UTC","GMT"])}return h}function d(o){const n=function(o){if(null==o)throw new l(f.UndefinedOrNull);if("string"==typeof o){if(o.length>256)throw new l(f.InputTooLong);if(0===o.trim().length)throw new l(f.Empty);const n=Number(o);if(isNaN(n))throw new l(f.NotANumber);o=n}else if("number"!=typeof o)throw new l(f.NotANumber);if(!isFinite(o)||isNaN(o))throw new l(f.NotANumber);if(!Number.isInteger(o)){const n=o.toString(),t=n.indexOf(".");if(-1===t)return Math.round(o);const e=n.length-t-1;o=Math.round(o*Math.pow(10,e))}return o}(o),r=Math.abs(n);let i,s;if(r<e.SECONDS)i=1e3*n,s=t.SECONDS;else if(r<e.MILLI_SECONDS)i=n,s=t.MILLI_SECONDS;else if(r<e.MICRO_SECONDS)i=Math.floor(n/1e3),s=t.MICRO_SECONDS;else{if(!(r<e.NANO_SECONDS))throw new l(f.EpochUnit);i=Math.floor(n/1e6),s=t.NANO_SECONDS}return{epochUnit:s,epochInMilliseconds:i}}function M(n){if(!m().has(n)){if(!o.now().setZone(n).isValid)throw new l(f.TimezoneError);m().add(n)}}function p(o){try{return d(o),!0}catch{return!1}}function E(o){try{return M(o),!0}catch{return!1}}function S(o,n){return`${o} ${n}${1===o?"":"s"}`}function y(o){const t=Math.abs(o),e=n.fromMillis(t).shiftTo("years","months","days","hours","minutes","seconds"),r=Math.floor(e.years),i=Math.floor(e.months),s=Math.floor(e.days),a=Math.floor(e.hours),c=Math.floor(e.minutes),u=Math.floor(e.seconds),f=[];return r>0&&f.push(`${r} year${1!==r?"s":""}`),i>0&&f.push(`${i} month${1!==i?"s":""}`),s>0&&f.push(`${s} day${1!==s?"s":""}`),a>0&&f.push(`${a} hour${1!==a?"s":""}`),c>0&&f.push(`${c} minute${1!==c?"s":""}`),u>0&&f.push(`${u} second${1!==u?"s":""}`),f.length>0?f.join(", "):"0 seconds"}function w(o){if(o.length>256)throw new l(f.FormatTooLong);const n=o.replace(/'[^']*'/g,"").match(/([a-zA-Z])\1*/g)||[];for(const o of n)if(!u.has(o))throw new l(f.FormatInvalid)}function O(o){return Object.freeze(o)}function I(){return o.local().zoneName??"UTC"}function N(n,t=c){w(t);const{epochInMilliseconds:e,epochUnit:r}=d(n),i=I();return O({timezone:i,dateTime:o.fromMillis(e,{zone:i}).toFormat(t),dateTimeInGMT:o.fromMillis(e,{zone:"UTC"}).toFormat(t),epochUnit:r,epoch:n,relative:function(o){const n=Date.now()-o,t=Math.abs(n)/1e3,e=t/60,r=e/60,i=r/24,s=i/30,a=i/365,c=n<0?" from now":" ago";if(t<60)return`${S(Math.floor(t),"second")}${c}`;if(e<60)return`${S(Math.floor(e),"minute")}${c}`;if(r<24){const o=Math.floor(r),n=Math.floor(e%60);return`${S(o,"hour")} ${S(n,"minute")}${c}`}if(i<30){const o=Math.floor(i),n=Math.floor(r%24);return`${S(o,"day")} ${S(n,"hour")}${c}`}if(s<12){const o=Math.floor(s),n=Math.floor(i%30);return`${S(o,"month")} ${S(n,"day")}${c}`}{const o=Math.floor(a),n=Math.min(11,Math.floor(i%365/30));return`${S(o,"year")} ${S(n,"month")}${c}`}}(e)})}function T(n,t=I()){!function(n){if(!(n instanceof Date))throw new l(f.DateError);if(!o.fromJSDate(n).isValid)throw new l(f.DateError)}(n),M(t);const e=o.fromJSDate(n),r=e.toMillis();return O({epochInSeconds:Math.floor(r/1e3),epochInMilliseconds:r,dateTimeInGMT:e.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:e.setZone(t).toFormat("yyyy-MM-dd HH:mm:ss"),timezone:t})}function g(n,t,e=c){w(e),M(t);const{epochInMilliseconds:r}=d(n);return o.fromMillis(r,{zone:t}).toFormat(e)}function C(o){return d(o).epochUnit}const $=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function D(n,t,e=I()){if(null==n||"string"!=typeof n)throw new l(f.ParseError);if(n.length>256)throw new l(f.InputTooLong);const r=n.trim();if(0===r.length)throw new l(f.ParseError);if(!$.test(r))throw new l(f.ParseError);void 0!==t&&w(t),M(e);const i=t?o.fromFormat(n,t,{zone:e}):o.fromISO(n,{zone:e});if(!i.isValid)throw new l(f.ParseError);return O({epochInSeconds:Math.floor(i.toMillis()/1e3),epochInMilliseconds:i.toMillis(),dateTimeInGMT:i.setZone("UTC").toFormat("yyyy-MM-dd HH:mm:ss"),dateTime:i.toFormat("yyyy-MM-dd HH:mm:ss"),timezone:e})}function A(n,t){const{epochInMilliseconds:e}=d(n),{epochInMilliseconds:r}=d(t);if(e>r)throw new l(f.RangeError);return O(function(n,t){const e=t-n,r=o.fromMillis(n,{zone:"utc"}),i=o.fromMillis(t,{zone:"utc"}).diff(r,["years","months","days","hours","minutes","seconds","milliseconds"]).toObject(),s=Math.floor(i.years??0),a=Math.floor(i.months??0),c=Math.floor(i.days??0),u=Math.floor(i.hours??0),f=Math.floor(i.minutes??0),l=Math.floor(i.seconds??0);return{years:s,months:a,days:c,hours:u,minutes:f,seconds:l,milliseconds:Math.floor(i.milliseconds??0),totalMilliseconds:e,humanReadable:[[s,"year"],[a,"month"],[c,"day"],[u,"hour"],[f,"minute"],[l,"second"]].filter(([o])=>o>0).map(([o,n])=>`${o} ${n}${1!==o?"s":""}`).join(", ")||"0 seconds"}}(e,r))}function L(n,t){M(n);const e=t?d(t).epochInMilliseconds:Date.now(),r=o.fromMillis(e,{zone:n});return O({offset:r.toFormat("ZZ"),offsetMinutes:r.offset})}const Z=["Asia/Kolkata","Asia/Ho_Chi_Minh","Asia/Yangon","Europe/Kyiv","Africa/Asmara","Atlantic/Faroe","Pacific/Pohnpei","Pacific/Chuuk","America/Indiana/Indianapolis","America/Atikokan"];function z(){const o="function"==typeof Intl.supportedValuesOf?Intl.supportedValuesOf("timeZone"):[];return[...new Set([...o,...Z,"UTC"])]}function F(){const o=Date.now();if(!isFinite(o)||o<i||o>r)throw new l(f.ClockOutOfRange);return O({seconds:Math.floor(o/1e3),milliseconds:o,iso:new Date(o).toISOString(),timezone:I()})}function U(o){try{return{ok:!0,value:o()}}catch(o){if(o instanceof l)return{ok:!1,error:o};throw o}}function R(o,n){return U(()=>N(o,n))}function _(o,n){return U(()=>T(o,n))}function b(o,n,t){return U(()=>g(o,n,t))}function H(o,n,t){return U(()=>D(o,n,t))}function v(o,n){return U(()=>A(o,n))}function P(o,n){return U(()=>L(o,n))}function k(){return U(()=>F())}function V(o){return U(()=>C(o))}export{c as DEFAULT_FORMAT,f as EpochError,e as EpochThreshold,t as EpochUnit,l as EpochValidationError,r as MAX_EPOCH_MS,a as MAX_FORMAT_STRING_LENGTH,s as MAX_INPUT_STRING_LENGTH,i as MIN_EPOCH_MS,u as SUPPORTED_FORMAT_TOKENS,T as convertDateToEpoch,N as convertEpoch,g as convertEpochToTimezone,y as formatDuration,A as getDurationBetween,F as getEpochNow,C as getEpochUnit,z as getTimezoneList,L as getTimezoneOffset,p as isValidEpoch,E as isValidTimezone,D as parseToEpoch,_ as safeConvertDateToEpoch,R as safeConvertEpoch,b as safeConvertEpochToTimezone,v as safeGetDurationBetween,k as safeGetEpochNow,V as safeGetEpochUnit,P as safeGetTimezoneOffset,H as safeParseToEpoch}; | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../../src/types/index.ts","../../src/errors/EpochValidationError.ts","../../src/utils/validations.ts","../../src/utils/utility.ts","../../src/epoch/convertor.ts","../../src/epoch/safe.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["EpochUnit","EpochThreshold","SECONDS","MILLI_SECONDS","MICRO_SECONDS","NANO_SECONDS","MAX_EPOCH_MS","MIN_EPOCH_MS","MAX_INPUT_STRING_LENGTH","MAX_FORMAT_STRING_LENGTH","DEFAULT_FORMAT","SUPPORTED_FORMAT_TOKENS","Set","EpochError","EpochValidationError","Error","constructor","message","super","this","name","TZ_SET","timezoneSet","list","Intl","supportedValuesOf","getEpochUnitAndEpochInMiliseconds","epoch","validEpoch","UndefinedOrNull","length","InputTooLong","trim","Empty","parsed","Number","isNaN","NotANumber","isFinite","isInteger","str","toString","dotIndex","indexOf","Math","round","fractionLength","pow","validateEpoch","absoluteEpoch","abs","epochInMilliseconds","epochUnit","floor","validTimezone","timezone","has","DateTime","now","setZone","isValid","TimezoneError","add","isValidEpoch","isValidTimezone","formatDuration","milliseconds","d","Duration","fromMillis","shiftTo","years","months","days","hours","minutes","seconds","segments","push","join","assertFormatValid","format","FormatTooLong","tokens","replace","match","token","FormatInvalid","freeze","o","Object","localZone","local","zoneName","convertEpoch","dateTime","zone","toFormat","dateTimeInGMT","relative","epochMillis","diffMillis","Date","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","getRelativeTimeDifference","convertDateToEpoch","date","DateError","fromJSDate","validateMomentDate","dt","toMillis","epochInSeconds","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","fromFormat","fromISO","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","diff","toObject","totalMilliseconds","humanReadable","filter","v","map","label","parseDuration","getTimezoneOffset","ms","offset","offsetMinutes","MODERN_CANONICAL_ZONES","getTimezoneList","intlList","getEpochNow","ClockOutOfRange","iso","toISOString","wrap","fn","ok","value","e","error","safeConvertEpoch","safeConvertDateToEpoch","safeConvertEpochToTimezone","safeParseToEpoch","safeGetDurationBetween","safeGetTimezoneOffset","safeGetEpochNow","safeGetEpochUnit"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../../src/types/index.ts","../../src/errors/EpochValidationError.ts","../../src/utils/validations.ts","../../src/utils/utility.ts","../../src/epoch/convertor.ts","../../src/epoch/safe.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["EpochUnit","EpochThreshold","SECONDS","MILLI_SECONDS","MICRO_SECONDS","NANO_SECONDS","MAX_EPOCH_MS","MIN_EPOCH_MS","MAX_INPUT_STRING_LENGTH","MAX_FORMAT_STRING_LENGTH","DEFAULT_FORMAT","SUPPORTED_FORMAT_TOKENS","Set","EpochError","EpochValidationError","Error","constructor","message","super","this","name","TZ_SET","timezoneSet","list","Intl","supportedValuesOf","getEpochUnitAndEpochInMiliseconds","epoch","validEpoch","UndefinedOrNull","length","InputTooLong","trim","Empty","parsed","Number","isNaN","NotANumber","isFinite","isInteger","str","toString","dotIndex","indexOf","Math","round","fractionLength","pow","validateEpoch","absoluteEpoch","abs","epochInMilliseconds","epochUnit","floor","validTimezone","timezone","has","DateTime","now","setZone","isValid","TimezoneError","add","isValidEpoch","isValidTimezone","plural","n","label","formatDuration","milliseconds","d","Duration","fromMillis","shiftTo","years","months","days","hours","minutes","seconds","segments","push","join","assertFormatValid","format","FormatTooLong","tokens","replace","match","token","FormatInvalid","freeze","o","Object","localZone","local","zoneName","convertEpoch","dateTime","zone","toFormat","dateTimeInGMT","relative","epochMillis","diffMillis","Date","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","min","getRelativeTimeDifference","convertDateToEpoch","date","DateError","fromJSDate","validateMomentDate","dt","toMillis","epochInSeconds","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","fromFormat","fromISO","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","diff","toObject","totalMilliseconds","humanReadable","filter","v","map","parseDuration","getTimezoneOffset","ms","offset","offsetMinutes","MODERN_CANONICAL_ZONES","getTimezoneList","intlList","getEpochNow","ClockOutOfRange","iso","toISOString","wrap","fn","ok","value","e","error","safeConvertEpoch","safeConvertDateToEpoch","safeConvertEpochToTimezone","safeParseToEpoch","safeGetDurationBetween","safeGetTimezoneOffset","safeGetEpochNow","safeGetEpochUnit"],"mappings":"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"} |
+207
-1
@@ -86,26 +86,232 @@ declare enum EpochUnit { | ||
| /** | ||
| * Safe predicate: returns `true` if the input is a recognized epoch | ||
| * value in any supported unit, `false` otherwise. Never throws. | ||
| * | ||
| * Use this for cheap input validation when you don't need the Result-style API. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * isValidEpoch(1622547800000); // true | ||
| * isValidEpoch(null); // false | ||
| * isValidEpoch(Infinity); // false | ||
| * isValidEpoch('not a num'); // false | ||
| * ``` | ||
| */ | ||
| declare function isValidEpoch(epoch: unknown): boolean; | ||
| /** | ||
| * Safe predicate: returns `true` if the timezone is a recognized IANA name, | ||
| * `false` otherwise. Never throws. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * isValidTimezone('UTC'); // true | ||
| * isValidTimezone('Asia/Kolkata'); // true | ||
| * isValidTimezone('Fake/Zone'); // false | ||
| * ``` | ||
| */ | ||
| declare function isValidTimezone(timezone: string): boolean; | ||
| /** | ||
| * Render a duration (in milliseconds) as a human-readable string. | ||
| * Pluralizes correctly ("1 second" vs "2 seconds") and omits zero parts. | ||
| * Sub-second durations fall back to `"0 seconds"`. Negative input is | ||
| * treated as positive (absolute value). | ||
| * | ||
| * @param milliseconds - Duration in milliseconds. | ||
| * @returns A pluralization-aware string like `"1 hour, 1 minute, 1 second"`. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * formatDuration(3661000); // "1 hour, 1 minute, 1 second" | ||
| * formatDuration(86400000); // "1 day" | ||
| * formatDuration(500); // "0 seconds" (below 1s resolution) | ||
| * ``` | ||
| */ | ||
| declare function formatDuration(milliseconds: number): string; | ||
| /** | ||
| * Convert an epoch timestamp (any unit) to a human-readable date in the | ||
| * caller's local timezone and GMT, with relative-time context. | ||
| * | ||
| * **Unique feature:** the unit (seconds / milliseconds / microseconds / | ||
| * nanoseconds) is auto-detected from the magnitude — you do not need to | ||
| * tell the library which unit your value is in. | ||
| * | ||
| * @param epoch - Epoch value in any unit (seconds, ms, µs, or ns). | ||
| * @param format - Optional Luxon format string. Defaults to {@link DEFAULT_FORMAT}. | ||
| * Must contain only tokens from {@link SUPPORTED_FORMAT_TOKENS}; | ||
| * unknown tokens throw {@link EpochError.FormatInvalid}. | ||
| * | ||
| * @returns Frozen {@link EpochToDate} object with both local and GMT renderings. | ||
| * | ||
| * @throws {EpochValidationError} If the input is null, undefined, NaN, Infinity, | ||
| * a non-numeric string, or outside the recognized epoch magnitude range. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * convertEpoch(1622547800); // auto-detects: seconds | ||
| * convertEpoch(1622547800000); // auto-detects: milliseconds | ||
| * convertEpoch(1622547800000, 'yyyy-MM-dd HH:mm:ss'); | ||
| * ``` | ||
| */ | ||
| declare function convertEpoch(epoch: number, format?: string): EpochToDate; | ||
| /** | ||
| * Convert a JavaScript `Date` object to epoch values in the given timezone. | ||
| * | ||
| * @param date - Any valid `Date` instance. | ||
| * @param timezone - Optional IANA timezone (e.g. `"America/New_York"`). | ||
| * Defaults to the runtime's local timezone. | ||
| * @returns Frozen {@link DateToEpoch} with both epoch and human-readable forms. | ||
| * @throws {EpochValidationError} For invalid dates or unknown timezones. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * convertDateToEpoch(new Date(), 'Asia/Kolkata'); | ||
| * ``` | ||
| */ | ||
| declare function convertDateToEpoch(date: Date, timezone?: string): DateToEpoch; | ||
| /** | ||
| * Format an epoch value in a specific IANA timezone. Auto-detects epoch unit. | ||
| * | ||
| * @param epoch - Epoch in any unit (s / ms / µs / ns). | ||
| * @param timezone - IANA timezone, e.g. `"Asia/Tokyo"`. | ||
| * @param format - Optional Luxon format string. Defaults to {@link DEFAULT_FORMAT}. | ||
| * @returns The formatted date as a string. | ||
| * @throws {EpochValidationError} For invalid epoch, timezone, or format token. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * convertEpochToTimezone(1622547800000, 'America/Los_Angeles', 'yyyy-MM-dd HH:mm:ss'); | ||
| * // "2021-06-01 04:43:20" | ||
| * ``` | ||
| */ | ||
| declare function convertEpochToTimezone(epoch: number, timezone: string, format?: string): string; | ||
| /** | ||
| * Auto-detect the unit of an epoch value (seconds / milliseconds / | ||
| * microseconds / nanoseconds) without performing the full conversion. | ||
| * Useful for routing logic: classify the input once, then process with | ||
| * a hot-path implementation. | ||
| * | ||
| * @param epoch - Numeric or numeric-string epoch value. | ||
| * @returns The detected {@link EpochUnit}. | ||
| * @throws {EpochValidationError} On invalid or out-of-range input. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * getEpochUnit(1622547800); // EpochUnit.SECONDS | ||
| * getEpochUnit(1622547800000); // EpochUnit.MILLI_SECONDS | ||
| * getEpochUnit(1622547800000000); // EpochUnit.MICRO_SECONDS | ||
| * getEpochUnit(1622547800000000000); // EpochUnit.NANO_SECONDS | ||
| * ``` | ||
| */ | ||
| declare function getEpochUnit(epoch: number | string): EpochUnit; | ||
| /** | ||
| * Parse a date string into epoch values, with strict timezone-aware parsing. | ||
| * | ||
| * Security: the input is character-allowlisted before being passed to Luxon | ||
| * (rejects HTML / XSS / shell metacharacters), capped at | ||
| * {@link MAX_INPUT_STRING_LENGTH} characters, and parsed in strict mode | ||
| * (no silent `Date()` fallback). | ||
| * | ||
| * @param input - Date string to parse. | ||
| * @param format - Optional Luxon format. If omitted, strict ISO 8601 is used. | ||
| * @param timezone - IANA timezone used to interpret the input. Defaults to local. | ||
| * @returns Frozen {@link DateToEpoch} with both epoch and human-readable forms. | ||
| * @throws {EpochValidationError} {@link EpochError.ParseError} for unparseable | ||
| * input, {@link EpochError.InputTooLong} for inputs exceeding the length cap, | ||
| * {@link EpochError.TimezoneError} for an unknown timezone, or | ||
| * {@link EpochError.FormatInvalid} for an unsupported format token. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * parseToEpoch('2024-12-25T00:00:00Z'); // ISO 8601 auto | ||
| * parseToEpoch('25/12/2024', 'dd/MM/yyyy', 'Europe/London'); // strict format | ||
| * ``` | ||
| */ | ||
| declare function parseToEpoch(input: string, format?: string, timezone?: string): DateToEpoch; | ||
| /** | ||
| * Compute the calendar-accurate duration between two epochs. | ||
| * | ||
| * Years, months, days etc. are computed via Luxon's calendar-aware diff — | ||
| * not by dividing milliseconds. Both epochs auto-detect their unit. | ||
| * | ||
| * @throws {EpochValidationError} {@link EpochError.RangeError} when | ||
| * `fromEpoch > toEpoch`. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * const d = getDurationBetween(1609459200000, 1622547800000); | ||
| * d.humanReadable; // "5 months, 11 hours, 43 minutes, 20 seconds" | ||
| * ``` | ||
| */ | ||
| declare function getDurationBetween(fromEpoch: number, toEpoch: number): ParsedDuration; | ||
| /** | ||
| * Get the UTC offset for an IANA timezone, DST-aware. | ||
| * | ||
| * @param timezone - IANA timezone name. | ||
| * @param epoch - Optional epoch (any unit) for a specific point in time. | ||
| * When omitted, uses the current moment. | ||
| * @returns Frozen {@link TimezoneOffset} with both string and minute forms. | ||
| * @throws {EpochValidationError} For unknown timezones. | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * getTimezoneOffset('Asia/Kolkata'); // { offset: '+05:30', offsetMinutes: 330 } | ||
| * getTimezoneOffset('America/New_York'); // varies by DST | ||
| * getTimezoneOffset('America/New_York', someEpoch); // DST as of that instant | ||
| * ``` | ||
| */ | ||
| declare function getTimezoneOffset(timezone: string, epoch?: number): TimezoneOffset; | ||
| /** | ||
| * Returns a defensive copy of the supported IANA timezone names. The list is | ||
| * sourced from `Intl.supportedValuesOf('timeZone')` augmented with modern | ||
| * canonical names that older ICU bundles still return as legacy aliases. | ||
| * | ||
| * @returns A fresh array — safe to mutate without affecting subsequent calls. | ||
| */ | ||
| declare function getTimezoneList(): string[]; | ||
| /** | ||
| * Returns the current moment as epoch values plus ISO 8601 string and the | ||
| * detected local timezone. | ||
| * | ||
| * @returns Frozen {@link EpochNow} with seconds, milliseconds, ISO, timezone. | ||
| * @throws {EpochValidationError} {@link EpochError.ClockOutOfRange} if the | ||
| * system clock returns a value outside `±MAX_EPOCH_MS` — guards against | ||
| * clock corruption / sandbox edge cases. | ||
| */ | ||
| declare function getEpochNow(): EpochNow; | ||
| /** | ||
| * Result-style variant of {@link convertEpoch}. Never throws for validation | ||
| * errors — returns `{ ok: false, error }` instead. Ideal for handling | ||
| * untrusted input (API endpoints, form data, batch jobs). | ||
| * | ||
| * @example | ||
| * ```ts | ||
| * const r = safeConvertEpoch(req.body.timestamp); | ||
| * if (r.ok) { | ||
| * console.log(r.value.dateTime); | ||
| * } else { | ||
| * res.status(400).json({ error: r.error.message }); | ||
| * } | ||
| * ``` | ||
| */ | ||
| declare function safeConvertEpoch(epoch: number, format?: string): Result<EpochToDate, EpochValidationError>; | ||
| /** Result-style variant of {@link convertDateToEpoch}. Never throws for validation errors. */ | ||
| declare function safeConvertDateToEpoch(date: Date, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| /** Result-style variant of {@link convertEpochToTimezone}. Never throws for validation errors. */ | ||
| declare function safeConvertEpochToTimezone(epoch: number, timezone: string, format?: string): Result<string, EpochValidationError>; | ||
| /** Result-style variant of {@link parseToEpoch}. Never throws for validation errors. */ | ||
| declare function safeParseToEpoch(input: string, format?: string, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| /** Result-style variant of {@link getDurationBetween}. Never throws for validation errors. */ | ||
| declare function safeGetDurationBetween(fromEpoch: number, toEpoch: number): Result<ParsedDuration, EpochValidationError>; | ||
| /** Result-style variant of {@link getTimezoneOffset}. Never throws for validation errors. */ | ||
| declare function safeGetTimezoneOffset(timezone: string, epoch?: number): Result<TimezoneOffset, EpochValidationError>; | ||
| /** Result-style variant of {@link getEpochNow}. Never throws for clock-corruption errors. */ | ||
| declare function safeGetEpochNow(): Result<EpochNow, EpochValidationError>; | ||
| /** Result-style variant of {@link getEpochUnit}. Never throws for validation errors. */ | ||
| declare function safeGetEpochUnit(epoch: number | string): Result<EpochUnit, EpochValidationError>; | ||
| export { DEFAULT_FORMAT, type DateToEpoch, type DurationUnit, EpochError, type EpochNow, EpochThreshold, type EpochToDate, EpochUnit, EpochValidationError, MAX_EPOCH_MS, MAX_FORMAT_STRING_LENGTH, MAX_INPUT_STRING_LENGTH, MIN_EPOCH_MS, type ParsedDuration, type Result, SUPPORTED_FORMAT_TOKENS, type StartEndUnit, type TimezoneOffset, convertDateToEpoch, convertEpoch, convertEpochToTimezone, formatDuration, getDurationBetween, getEpochNow, getEpochUnit, getTimezoneList, getTimezoneOffset, isValidEpoch, isValidTimezone, parseToEpoch, safeConvertDateToEpoch, safeConvertEpoch, safeConvertEpochToTimezone, safeGetDurationBetween, safeGetEpochNow, safeGetEpochUnit, safeGetTimezoneOffset, safeParseToEpoch }; | ||
| export { DEFAULT_FORMAT, EpochError, EpochThreshold, EpochUnit, EpochValidationError, MAX_EPOCH_MS, MAX_FORMAT_STRING_LENGTH, MAX_INPUT_STRING_LENGTH, MIN_EPOCH_MS, SUPPORTED_FORMAT_TOKENS, convertDateToEpoch, convertEpoch, convertEpochToTimezone, formatDuration, getDurationBetween, getEpochNow, getEpochUnit, getTimezoneList, getTimezoneOffset, isValidEpoch, isValidTimezone, parseToEpoch, safeConvertDateToEpoch, safeConvertEpoch, safeConvertEpochToTimezone, safeGetDurationBetween, safeGetEpochNow, safeGetEpochUnit, safeGetTimezoneOffset, safeParseToEpoch }; | ||
| export type { DateToEpoch, DurationUnit, EpochNow, EpochToDate, ParsedDuration, Result, StartEndUnit, TimezoneOffset }; |
+1
-1
@@ -212,2 +212,2 @@ # Migrating from v1.x to v2.0 | ||
| If the codemod miscompiles a format string, or v2.0 breaks something not listed here, open an issue at [github.com/Master4Novice/common/issues](https://github.com/Master4Novice/common/issues) with a minimal repro. | ||
| If the codemod miscompiles a format string, or v2.0 breaks something not listed here, open an issue at [github.com/Master4Novice/temporal-transformer/issues](https://github.com/Master4Novice/temporal-transformer/issues) with a minimal repro. |
+7
-27
| { | ||
| "name": "@master4n/temporal-transformer", | ||
| "version": "2.0.0", | ||
| "version": "2.0.1", | ||
| "description": "TypeScript library to convert epoch timestamps (seconds, milliseconds, microseconds, nanoseconds) to human-readable dates, parse date strings to epoch, compute calendar-accurate durations, and handle IANA timezones. Powered by Luxon — small bundle, immutable, no moment.js.", | ||
@@ -14,14 +14,10 @@ "main": "./commonjs/index.cjs", | ||
| }, | ||
| "scripts": { | ||
| "clean": "rimraf dist", | ||
| "lint": "eslint src/**/*.ts", | ||
| "format": "prettier --write src/**/*.ts", | ||
| "build": "npm run clean && rollup --config", | ||
| "test": "nx jest:test", | ||
| "test:golden": "TZ=UTC jest --testPathPattern='test/golden' --testPathIgnorePatterns='/node_modules/'" | ||
| }, | ||
| "repository": { | ||
| "type": "git", | ||
| "url": "git+https://github.com/Master4Novice/common.git" | ||
| "url": "git+https://github.com/Master4Novice/temporal-transformer.git" | ||
| }, | ||
| "bugs": { | ||
| "url": "https://github.com/Master4Novice/temporal-transformer/issues" | ||
| }, | ||
| "homepage": "https://github.com/Master4Novice/temporal-transformer#readme", | ||
| "keywords": [ | ||
@@ -57,6 +53,2 @@ "epoch", | ||
| }, | ||
| "publishConfig": { | ||
| "directory": "dist", | ||
| "access": "public" | ||
| }, | ||
| "contributors": [ | ||
@@ -66,15 +58,3 @@ { | ||
| } | ||
| ], | ||
| "devDependencies": { | ||
| "@babel/preset-env": "^7.26.0", | ||
| "@babel/preset-typescript": "^7.26.0", | ||
| "@types/jest": "^29.5.14", | ||
| "@types/luxon": "^3.4.2", | ||
| "@types/node": "^22.0.0", | ||
| "babel-jest": "^29.7.0", | ||
| "jest": "^29.7.0", | ||
| "ts-jest": "^29.3.0", | ||
| "typescript": "^5.8.3" | ||
| }, | ||
| "gitHead": "4efbfe6b5967b5aed3aae79794c4da3d67ecf118" | ||
| ] | ||
| } |
+80
-12
@@ -5,4 +5,8 @@ # @master4n/temporal-transformer | ||
| [](https://www.npmjs.com/package/@master4n/temporal-transformer) | ||
| [](https://github.com/Master4Novice/temporal-transformer/actions/workflows/ci.yml) | ||
| [](https://opensource.org/licenses/MIT) | ||
| [](https://www.typescriptlang.org/) | ||
| [](https://nodejs.org/) | ||
| [](https://bundlephobia.com/package/@master4n/temporal-transformer) | ||
| [](#bundle-size-considerations) | ||
| [](https://github.com/Master4Novice) | ||
@@ -29,6 +33,7 @@ | ||
| // No idea what unit this is? No problem. | ||
| convertEpoch(1622547800); // seconds → "2021-06-01 23:13:20" | ||
| convertEpoch(1622547800000); // millis → "2021-06-01 23:13:20" | ||
| convertEpoch(1622547800000000); // micros → "2021-06-01 23:13:20" | ||
| convertEpoch(1622547800000000000); // nanos → "2021-06-01 23:13:20" | ||
| // (All four resolve to the same instant — 2021-06-01T11:43:20Z. Display below in IST for illustration.) | ||
| convertEpoch(1622547800).dateTime; // seconds → "2021-06-01 17:13:20.000" | ||
| convertEpoch(1622547800000).dateTime; // millis → "2021-06-01 17:13:20.000" | ||
| convertEpoch(1622547800000000).dateTime; // micros → "2021-06-01 17:13:20.000" | ||
| convertEpoch(1622547800000000000).dateTime; // nanos → "2021-06-01 17:13:20.000" | ||
| ``` | ||
@@ -84,6 +89,6 @@ | ||
| const result = convertEpoch(1622547800000); | ||
| console.log(result.dateTime); // "2021-06-01 23:13:20.000000" (local TZ) | ||
| console.log(result.dateTimeInGMT); // "2021-06-01 17:43:20.000000" | ||
| console.log(result.dateTime); // e.g. "2021-06-01 17:13:20.000" (your local TZ — IST shown) | ||
| console.log(result.dateTimeInGMT); // "2021-06-01 11:43:20.000" | ||
| console.log(result.epochUnit); // "milliseconds" | ||
| console.log(result.relative); // "3 years 11 months ago" | ||
| console.log(result.relative); // e.g. "4 years 11 months ago" | ||
@@ -174,6 +179,6 @@ // Convert a Date object to epoch values | ||
| convertEpochToTimezone(1622547800000, 'America/Los_Angeles', 'yyyy-MM-dd HH:mm:ss'); | ||
| // "2021-06-01 10:43:20" | ||
| // "2021-06-01 04:43:20" (PDT, UTC−7 in June) | ||
| convertEpochToTimezone(1622547800000, 'Asia/Tokyo'); | ||
| // "2021-06-02 02:43:20.000000" | ||
| // "2021-06-01 20:43:20.000" (JST, UTC+9) | ||
| ``` | ||
@@ -211,3 +216,3 @@ | ||
| | `input` | `string` | — | Date string to parse | | ||
| | `format` | `string` or `undefined` | Auto (ISO 8601) | [Moment.js format string](https://momentjs.com/docs/#/parsing/string-format/) | | ||
| | `format` | `string` or `undefined` | Auto (ISO 8601) | [Luxon format token](https://moment.github.io/luxon/#/parsing?id=table-of-tokens-1) (validated against `SUPPORTED_FORMAT_TOKENS`) | | ||
| | `timezone` | `string` | System local timezone | IANA timezone to interpret the date in | | ||
@@ -555,6 +560,60 @@ | ||
| If you discover a security issue, please open a private advisory on [github.com/Master4Novice/common/security](https://github.com/Master4Novice/common/security/advisories) rather than a public issue. | ||
| If you discover a security issue, please open a private advisory on [github.com/Master4Novice/temporal-transformer/security](https://github.com/Master4Novice/temporal-transformer/security/advisories) rather than a public issue. See [SECURITY.md](./SECURITY.md) for the full policy. | ||
| --- | ||
| ## Benchmarks | ||
| Real numbers, run yourself with `npm run bench`. See [bench/RESULTS.md](./bench/RESULTS.md) for the full report. Headline on Node 24 / Apple Silicon: | ||
| | Operation | Native JS | Raw Luxon | This library | Library overhead | | ||
| |---|---:|---:|---:|---:| | ||
| | `getEpochUnit` (auto-detect) | — | — | **170M ops/s** | the unique feature is essentially free | | ||
| | `isValidEpoch` (safe predicate) | 227M ops/s | — | **167M ops/s** | 1.4× — JIT-friendly | | ||
| | `convertEpochToTimezone` | — | 183K ops/s | **168K ops/s** | 1.1× — thin wrapper | | ||
| | `getDurationBetween` (calendar) | — | 87K ops/s | **92K ops/s** | actually faster than raw Luxon diff | | ||
| | `parseToEpoch` (ISO + allowlist) | 7.76M ops/s | 603K ops/s | **219K ops/s** | 35× over native (security cost) | | ||
| | `convertEpoch` (dual-TZ + relative) | 2.08M ops/s | 527K ops/s | **25K ops/s** | 82× — does dual-TZ format + relative time | | ||
| ### What these numbers mean for your code | ||
| | Use case | Verdict | | ||
| |---|---| | ||
| | Backend ingest / API endpoints (10K req/s) | Imperceptible. Use freely. | | ||
| | Per-request formatting (handful of calls) | Network/DB latency dominates by 1000×. | | ||
| | Batch processing 100K+ rows/second | `convertEpoch` is hot — use `getEpochUnit` once to determine units, then loop with raw `Date`. | | ||
| | Frontend display | Imperceptible. | | ||
| **Bottom line:** This library is a *validation + ergonomics layer*. Its job is to be correct (auto-detect, security guards, frozen results, Result API) — not to be the fastest format-string emitter. The auto-detect itself is essentially free; the cost is the dual-output convenience and the safety checks. | ||
| --- | ||
| ## Comparison with other date libraries | ||
| | Feature | `temporal-transformer` | `moment.js` | `dayjs` | `date-fns` | `luxon` | Native `Date` | | ||
| |---|---|---|---|---|---|---| | ||
| | **Auto-detect epoch unit** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | ||
| | **Result-style safe API** (`{ok, value\|error}`) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | ||
| | **Frozen results** (immutable by construction) | ✅ | ❌ | ✅ | ✅ | ✅ | n/a | | ||
| | **Input length DoS caps** | ✅ | ❌ | ❌ | ❌ | ❌ | n/a | | ||
| | **Format-token allowlist** (rejects typos) | ✅ | ❌ | ❌ | ❌ | ❌ | n/a | | ||
| | **HTML/XSS payload rejection in parse** | ✅ | ❌ | ❌ | ❌ | ❌ | n/a | | ||
| | **IANA timezone support** | ✅ (Intl) | ✅ (bundled) | plugin | plugin | ✅ (Intl) | partial | | ||
| | **TypeScript-first** | ✅ | ❌ (`@types/moment`) | ✅ | ✅ | ✅ | ✅ | | ||
| | **Tree-shakeable** | partial | ❌ | ✅ | ✅ | partial | n/a | | ||
| | **Min+gzip size** | ~25 KB + Luxon | ~290 KB w/tz | ~7 KB | ~13 KB (modular) | ~71 KB | 0 | | ||
| | **Maintenance status** | active | maintenance-only | active | active | active | spec | | ||
| | **Best for** | Ingesting untrusted, mixed-unit epochs | Legacy codebases | Lightweight client bundles | Functional/modular use | Heavy timezone work | Trivial / known-format use | | ||
| ### When to pick what | ||
| - **Pick `temporal-transformer`** if you process timestamps where the unit isn't known up front, or you handle untrusted input and want the safe Result API. | ||
| - **Pick `dayjs`** if bundle size is paramount and you don't need timezone-aware parsing. | ||
| - **Pick `date-fns`** if you want a treeshakeable, functional API and you control the input. | ||
| - **Pick `luxon` directly** if you already know your epoch unit and need raw speed for timezone formatting at scale. | ||
| - **Pick `Date` directly** if your input is always milliseconds, you don't care about timezones beyond UTC, and you live by `toISOString()`. | ||
| - **Pick `moment`** only if you're maintaining an existing codebase that depends on it. | ||
| --- | ||
| ## Common Recipes | ||
@@ -605,2 +664,11 @@ | ||
| ### 2.0.1 | ||
| - **Docs:** Repository, homepage, and bug-tracker URLs now point at the new public single-package repos at [Master4Novice/temporal-transformer](https://github.com/Master4Novice/temporal-transformer) and [Master4Novice/temporal-transformer-codemod](https://github.com/Master4Novice/temporal-transformer-codemod) (previously pointed at a private monorepo). | ||
| - **Docs:** Added benchmark suite (`npm run bench`) with results published in [bench/RESULTS.md](./bench/RESULTS.md). Headline: `getEpochUnit` ~170M ops/s, `getDurationBetween` slightly faster than raw Luxon diff, `convertEpoch` 82× slower than raw `Date.toISOString()` (cost of dual-TZ + relative-time). | ||
| - **Docs:** New comparison matrix vs moment / dayjs / date-fns / luxon / native `Date` with explicit "when to pick what" guidance. | ||
| - **Docs:** Added `SECURITY.md`, `CONTRIBUTING.md`, GitHub issue & PR templates. | ||
| - **CI:** Workflow now runs on Ubuntu/macOS/Windows × Node 18/20/22/24. | ||
| - **No code changes** — behavior identical to v2.0.0. | ||
| ### 2.0.0 | ||
@@ -667,3 +735,3 @@ | ||
| Issues and PRs are welcome at [github.com/Master4Novice/common](https://github.com/Master4Novice/common). | ||
| Issues and PRs are welcome at [github.com/Master4Novice/temporal-transformer](https://github.com/Master4Novice/temporal-transformer). The companion codemod lives at [github.com/Master4Novice/temporal-transformer-codemod](https://github.com/Master4Novice/temporal-transformer-codemod). | ||
@@ -670,0 +738,0 @@ ## Credits |
| import { formatDuration } from '../utils/utility.js'; | ||
| import { EpochToDate, DateToEpoch, ParsedDuration, EpochNow, TimezoneOffset, EpochUnit } from '../types/index.js'; | ||
| export declare function convertEpoch(epoch: number, format?: string): EpochToDate; | ||
| export declare function convertDateToEpoch(date: Date, timezone?: string): DateToEpoch; | ||
| export declare function convertEpochToTimezone(epoch: number, timezone: string, format?: string): string; | ||
| export declare function getEpochUnit(epoch: number | string): EpochUnit; | ||
| export declare function parseToEpoch(input: string, format?: string, timezone?: string): DateToEpoch; | ||
| export declare function getDurationBetween(fromEpoch: number, toEpoch: number): ParsedDuration; | ||
| export declare function getTimezoneOffset(timezone: string, epoch?: number): TimezoneOffset; | ||
| export declare function getTimezoneList(): string[]; | ||
| export declare function getEpochNow(): EpochNow; | ||
| export { formatDuration }; |
| import { EpochValidationError } from '../errors/EpochValidationError.js'; | ||
| import { EpochToDate, DateToEpoch, ParsedDuration, TimezoneOffset, EpochNow, EpochUnit, Result } from '../types/index.js'; | ||
| export declare function safeConvertEpoch(epoch: number, format?: string): Result<EpochToDate, EpochValidationError>; | ||
| export declare function safeConvertDateToEpoch(date: Date, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| export declare function safeConvertEpochToTimezone(epoch: number, timezone: string, format?: string): Result<string, EpochValidationError>; | ||
| export declare function safeParseToEpoch(input: string, format?: string, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| export declare function safeGetDurationBetween(fromEpoch: number, toEpoch: number): Result<ParsedDuration, EpochValidationError>; | ||
| export declare function safeGetTimezoneOffset(timezone: string, epoch?: number): Result<TimezoneOffset, EpochValidationError>; | ||
| export declare function safeGetEpochNow(): Result<EpochNow, EpochValidationError>; | ||
| export declare function safeGetEpochUnit(epoch: number | string): Result<EpochUnit, EpochValidationError>; |
| export declare enum EpochError { | ||
| UndefinedOrNull = "Epoch Is Undefined Or Null", | ||
| NotANumber = "Epoch Is Not A Number Or Cannot Be Parsed As A Number", | ||
| OutOfRange = "Epoch Is Out Of The Valid Range", | ||
| EpochUnit = "Invalid Epoch Unit", | ||
| Empty = "Epoch Is Empty", | ||
| DateError = "Invalid Date Format Or Value", | ||
| TimezoneError = "Unknown Timezone", | ||
| ParseError = "Cannot Parse The Provided Date String", | ||
| RangeError = "Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch", | ||
| InputTooLong = "Input String Exceeds Maximum Allowed Length", | ||
| FormatTooLong = "Format String Exceeds Maximum Allowed Length", | ||
| FormatInvalid = "Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)", | ||
| ClockOutOfRange = "System Clock Returned A Value Outside JavaScript Date Range" | ||
| } | ||
| export declare class EpochValidationError extends Error { | ||
| constructor(message: EpochError); | ||
| } |
| export { EpochToDate, DateToEpoch, EpochUnit, EpochThreshold, DurationUnit, StartEndUnit, ParsedDuration, EpochNow, TimezoneOffset, Result, MAX_EPOCH_MS, MIN_EPOCH_MS, MAX_INPUT_STRING_LENGTH, MAX_FORMAT_STRING_LENGTH, DEFAULT_FORMAT, SUPPORTED_FORMAT_TOKENS, } from './types/index.js'; | ||
| export { EpochError, EpochValidationError } from './errors/EpochValidationError.js'; | ||
| export { isValidEpoch, isValidTimezone } from './utils/validations.js'; | ||
| export * from './epoch/convertor.js'; | ||
| export * from './epoch/safe.js'; |
| export declare enum EpochUnit { | ||
| SECONDS = "seconds", | ||
| MILLI_SECONDS = "milliseconds", | ||
| MICRO_SECONDS = "microseconds", | ||
| NANO_SECONDS = "nanoseconds" | ||
| } | ||
| export declare const EpochThreshold: { | ||
| SECONDS: number; | ||
| MILLI_SECONDS: number; | ||
| MICRO_SECONDS: number; | ||
| NANO_SECONDS: number; | ||
| }; | ||
| export type DurationUnit = 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds' | 'milliseconds'; | ||
| export type StartEndUnit = 'day' | 'week' | 'month' | 'year'; | ||
| export interface EpochToDate { | ||
| epoch: number; | ||
| epochUnit: string; | ||
| timezone: string; | ||
| dateTime: string; | ||
| dateTimeInGMT: string; | ||
| relative: string; | ||
| } | ||
| export interface DateToEpoch { | ||
| epochInSeconds: number; | ||
| epochInMilliseconds: number; | ||
| timezone: string; | ||
| dateTime: string; | ||
| dateTimeInGMT: string; | ||
| } | ||
| export interface ParsedDuration { | ||
| years: number; | ||
| months: number; | ||
| days: number; | ||
| hours: number; | ||
| minutes: number; | ||
| seconds: number; | ||
| milliseconds: number; | ||
| totalMilliseconds: number; | ||
| humanReadable: string; | ||
| } | ||
| export interface EpochNow { | ||
| seconds: number; | ||
| milliseconds: number; | ||
| iso: string; | ||
| timezone: string; | ||
| } | ||
| export interface TimezoneOffset { | ||
| offset: string; | ||
| offsetMinutes: number; | ||
| } | ||
| export declare const MAX_EPOCH_MS = 8640000000000000; | ||
| export declare const MIN_EPOCH_MS = -8640000000000000; | ||
| export declare const MAX_INPUT_STRING_LENGTH = 256; | ||
| export declare const MAX_FORMAT_STRING_LENGTH = 256; | ||
| export declare const DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; | ||
| export declare const SUPPORTED_FORMAT_TOKENS: ReadonlySet<string>; | ||
| export type Result<T, E = Error> = { | ||
| ok: true; | ||
| value: T; | ||
| error?: never; | ||
| } | { | ||
| ok: false; | ||
| value?: never; | ||
| error: E; | ||
| }; |
| import { ParsedDuration } from '../types/index.js'; | ||
| export declare function getRelativeTimeDifference(epochMillis: number): string; | ||
| export declare function validateMomentDate(date: any): void; | ||
| export declare function formatDuration(milliseconds: number): string; | ||
| export declare function parseDuration(fromMs: number, toMs: number): ParsedDuration; |
| import { EpochUnit } from '../types/index.js'; | ||
| export declare function getEpochUnitAndEpochInMiliseconds(epoch: any): { | ||
| epochUnit: EpochUnit; | ||
| epochInMilliseconds: number; | ||
| }; | ||
| export declare function validTimezone(timezone: string): void; | ||
| export declare function isValidEpoch(epoch: unknown): boolean; | ||
| export declare function isValidTimezone(timezone: string): boolean; |
| import { formatDuration } from '../utils/utility.js'; | ||
| import { EpochToDate, DateToEpoch, ParsedDuration, EpochNow, TimezoneOffset, EpochUnit } from '../types/index.js'; | ||
| export declare function convertEpoch(epoch: number, format?: string): EpochToDate; | ||
| export declare function convertDateToEpoch(date: Date, timezone?: string): DateToEpoch; | ||
| export declare function convertEpochToTimezone(epoch: number, timezone: string, format?: string): string; | ||
| export declare function getEpochUnit(epoch: number | string): EpochUnit; | ||
| export declare function parseToEpoch(input: string, format?: string, timezone?: string): DateToEpoch; | ||
| export declare function getDurationBetween(fromEpoch: number, toEpoch: number): ParsedDuration; | ||
| export declare function getTimezoneOffset(timezone: string, epoch?: number): TimezoneOffset; | ||
| export declare function getTimezoneList(): string[]; | ||
| export declare function getEpochNow(): EpochNow; | ||
| export { formatDuration }; |
| import { EpochValidationError } from '../errors/EpochValidationError.js'; | ||
| import { EpochToDate, DateToEpoch, ParsedDuration, TimezoneOffset, EpochNow, EpochUnit, Result } from '../types/index.js'; | ||
| export declare function safeConvertEpoch(epoch: number, format?: string): Result<EpochToDate, EpochValidationError>; | ||
| export declare function safeConvertDateToEpoch(date: Date, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| export declare function safeConvertEpochToTimezone(epoch: number, timezone: string, format?: string): Result<string, EpochValidationError>; | ||
| export declare function safeParseToEpoch(input: string, format?: string, timezone?: string): Result<DateToEpoch, EpochValidationError>; | ||
| export declare function safeGetDurationBetween(fromEpoch: number, toEpoch: number): Result<ParsedDuration, EpochValidationError>; | ||
| export declare function safeGetTimezoneOffset(timezone: string, epoch?: number): Result<TimezoneOffset, EpochValidationError>; | ||
| export declare function safeGetEpochNow(): Result<EpochNow, EpochValidationError>; | ||
| export declare function safeGetEpochUnit(epoch: number | string): Result<EpochUnit, EpochValidationError>; |
| export declare enum EpochError { | ||
| UndefinedOrNull = "Epoch Is Undefined Or Null", | ||
| NotANumber = "Epoch Is Not A Number Or Cannot Be Parsed As A Number", | ||
| OutOfRange = "Epoch Is Out Of The Valid Range", | ||
| EpochUnit = "Invalid Epoch Unit", | ||
| Empty = "Epoch Is Empty", | ||
| DateError = "Invalid Date Format Or Value", | ||
| TimezoneError = "Unknown Timezone", | ||
| ParseError = "Cannot Parse The Provided Date String", | ||
| RangeError = "Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch", | ||
| InputTooLong = "Input String Exceeds Maximum Allowed Length", | ||
| FormatTooLong = "Format String Exceeds Maximum Allowed Length", | ||
| FormatInvalid = "Format String Contains An Unsupported Token (See Supported Luxon Tokens In SUPPORTED_FORMAT_TOKENS)", | ||
| ClockOutOfRange = "System Clock Returned A Value Outside JavaScript Date Range" | ||
| } | ||
| export declare class EpochValidationError extends Error { | ||
| constructor(message: EpochError); | ||
| } |
| export { EpochToDate, DateToEpoch, EpochUnit, EpochThreshold, DurationUnit, StartEndUnit, ParsedDuration, EpochNow, TimezoneOffset, Result, MAX_EPOCH_MS, MIN_EPOCH_MS, MAX_INPUT_STRING_LENGTH, MAX_FORMAT_STRING_LENGTH, DEFAULT_FORMAT, SUPPORTED_FORMAT_TOKENS, } from './types/index.js'; | ||
| export { EpochError, EpochValidationError } from './errors/EpochValidationError.js'; | ||
| export { isValidEpoch, isValidTimezone } from './utils/validations.js'; | ||
| export * from './epoch/convertor.js'; | ||
| export * from './epoch/safe.js'; |
| export declare enum EpochUnit { | ||
| SECONDS = "seconds", | ||
| MILLI_SECONDS = "milliseconds", | ||
| MICRO_SECONDS = "microseconds", | ||
| NANO_SECONDS = "nanoseconds" | ||
| } | ||
| export declare const EpochThreshold: { | ||
| SECONDS: number; | ||
| MILLI_SECONDS: number; | ||
| MICRO_SECONDS: number; | ||
| NANO_SECONDS: number; | ||
| }; | ||
| export type DurationUnit = 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds' | 'milliseconds'; | ||
| export type StartEndUnit = 'day' | 'week' | 'month' | 'year'; | ||
| export interface EpochToDate { | ||
| epoch: number; | ||
| epochUnit: string; | ||
| timezone: string; | ||
| dateTime: string; | ||
| dateTimeInGMT: string; | ||
| relative: string; | ||
| } | ||
| export interface DateToEpoch { | ||
| epochInSeconds: number; | ||
| epochInMilliseconds: number; | ||
| timezone: string; | ||
| dateTime: string; | ||
| dateTimeInGMT: string; | ||
| } | ||
| export interface ParsedDuration { | ||
| years: number; | ||
| months: number; | ||
| days: number; | ||
| hours: number; | ||
| minutes: number; | ||
| seconds: number; | ||
| milliseconds: number; | ||
| totalMilliseconds: number; | ||
| humanReadable: string; | ||
| } | ||
| export interface EpochNow { | ||
| seconds: number; | ||
| milliseconds: number; | ||
| iso: string; | ||
| timezone: string; | ||
| } | ||
| export interface TimezoneOffset { | ||
| offset: string; | ||
| offsetMinutes: number; | ||
| } | ||
| export declare const MAX_EPOCH_MS = 8640000000000000; | ||
| export declare const MIN_EPOCH_MS = -8640000000000000; | ||
| export declare const MAX_INPUT_STRING_LENGTH = 256; | ||
| export declare const MAX_FORMAT_STRING_LENGTH = 256; | ||
| export declare const DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; | ||
| export declare const SUPPORTED_FORMAT_TOKENS: ReadonlySet<string>; | ||
| export type Result<T, E = Error> = { | ||
| ok: true; | ||
| value: T; | ||
| error?: never; | ||
| } | { | ||
| ok: false; | ||
| value?: never; | ||
| error: E; | ||
| }; |
| import { ParsedDuration } from '../types/index.js'; | ||
| export declare function getRelativeTimeDifference(epochMillis: number): string; | ||
| export declare function validateMomentDate(date: any): void; | ||
| export declare function formatDuration(milliseconds: number): string; | ||
| export declare function parseDuration(fromMs: number, toMs: number): ParsedDuration; |
| import { EpochUnit } from '../types/index.js'; | ||
| export declare function getEpochUnitAndEpochInMiliseconds(epoch: any): { | ||
| epochUnit: EpochUnit; | ||
| epochInMilliseconds: number; | ||
| }; | ||
| export declare function validTimezone(timezone: string): void; | ||
| export declare function isValidEpoch(epoch: unknown): boolean; | ||
| export declare function isValidTimezone(timezone: string): boolean; |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
No website
QualityPackage does not have a website.
95511
2.54%0
-100%0
-100%737
10.16%9
-60.87%377
-9.81%1
Infinity%