🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@master4n/temporal-transformer

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@master4n/temporal-transformer - npm Package Compare versions

Comparing version
2.0.0
to
2.0.1
+1
-1
commonjs/index.cjs

@@ -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,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 +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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"}

@@ -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 };

@@ -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.
{
"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

[![npm downloads](https://img.shields.io/npm/dm/%40master4n%2Ftemporal-transformer)](https://www.npmjs.com/package/@master4n/temporal-transformer)
[![CI](https://github.com/Master4Novice/temporal-transformer/actions/workflows/ci.yml/badge.svg)](https://github.com/Master4Novice/temporal-transformer/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/npm/l/%40master4n%2Ftemporal-transformer)](https://opensource.org/licenses/MIT)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue)](https://www.typescriptlang.org/)
[![Node](https://img.shields.io/node/v/%40master4n%2Ftemporal-transformer)](https://nodejs.org/)
[![Bundle](https://img.shields.io/bundlephobia/minzip/%40master4n%2Ftemporal-transformer)](https://bundlephobia.com/package/@master4n/temporal-transformer)
[![Treeshakeable](https://img.shields.io/badge/Treeshakeable-Partial-yellow)](#bundle-size-considerations)
[![Owner](https://img.shields.io/badge/Owner-Master4Novice-orange)](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;