@master4n/temporal-transformer
Advanced tools
+212
| # Migrating from v1.x to v2.0 | ||
| `@master4n/temporal-transformer@2.0.0` swaps its internal date engine from `moment.js` + `moment-timezone` to [Luxon](https://moment.github.io/luxon/). The public API surface is **identical** — every function, type, error code, constant, and safe variant from v1.x still exists with the same signature. | ||
| What changed is **the format-string grammar**, the **default format**, and a handful of behavioral edge cases. This file enumerates each break and shows you the upgrade path. | ||
| --- | ||
| ## TL;DR — three steps | ||
| ```bash | ||
| # 1. Update the dependency | ||
| npm install @master4n/temporal-transformer@2 | ||
| # 2. Run the codemod on your source tree (this rewrites format strings) | ||
| npx @master4n/temporal-transformer-codemod ./src | ||
| # 3. Test. Most code now works unchanged. | ||
| ``` | ||
| If you cannot upgrade today, pin to v1.x: | ||
| ```bash | ||
| npm install @master4n/temporal-transformer@legacy | ||
| ``` | ||
| The `legacy` dist-tag points to `v1.4.0` (the last moment-backed release). Security backports continue on `v1.x-maintenance` for 12 months. | ||
| --- | ||
| ## Why v2.0? | ||
| | Metric | v1.x | v2.0 | | ||
| |---|---|---| | ||
| | Engine | moment + moment-timezone | luxon | | ||
| | Bundle size (min) | ~180 KB | ~71 KB | | ||
| | Maintenance status | moment is officially in maintenance mode | luxon is actively maintained by the same authors | | ||
| | TZ database source | bundled with moment-timezone | the runtime's `Intl` API | | ||
| | Default-output format | `YYYY-MM-DD HH:mm:ss.SSSSSS` (6-digit fractional fiction) | `yyyy-MM-dd HH:mm:ss.SSS` (3-digit, JS Date precision) | | ||
| --- | ||
| ## Breaking changes | ||
| ### B1 — Default format | ||
| | | | | ||
| |---|---| | ||
| | **v1.x** | `'YYYY-MM-DD HH:mm:ss.SSSSSS'` | | ||
| | **v2.0** | `'yyyy-MM-dd HH:mm:ss.SSS'` | | ||
| **Why:** JavaScript `Date` has millisecond precision. The 6-digit fractional was always `'000000'`. Luxon's `S` token caps at 3 digits, which matches the actual precision. | ||
| ```ts | ||
| convertEpoch(1622547800000).dateTimeInGMT | ||
| // v1.x: '2021-06-01 11:43:20.000000' | ||
| // v2.0: '2021-06-01 11:43:20.000' | ||
| ``` | ||
| If your code compares default-format output as a string, update the snapshot or pass the format explicitly. The codemod **does** translate the default format if it appears in your callers' code. | ||
| --- | ||
| ### B2 — Format token grammar | ||
| v1.x used **moment.js** tokens. v2.0 uses **Luxon** tokens. The library now rejects unknown tokens with `EpochError.FormatInvalid`. | ||
| Token translation table: | ||
| | moment v1.x | Luxon v2.0 | Meaning | | ||
| |---|---|---| | ||
| | `YYYY` | `yyyy` | 4-digit year | | ||
| | `YY` | `yy` | 2-digit year | | ||
| | `MM` | `MM` | 2-digit month — **unchanged** | | ||
| | `MMM` | `LLL` | Short month name (Jan) | | ||
| | `MMMM` | `LLLL` | Full month name (January) | | ||
| | `DD` | `dd` | 2-digit day of month | | ||
| | `D` | `d` | day of month | | ||
| | `dddd` | `cccc` | Full weekday name (Tuesday) | | ||
| | `ddd` | `ccc` | Short weekday name (Tue) | | ||
| | `HH` | `HH` | 24-hour (unchanged) | | ||
| | `hh` | `hh` | 12-hour (unchanged) | | ||
| | `mm` | `mm` | minute (unchanged) | | ||
| | `ss` | `ss` | second (unchanged) | | ||
| | `SSSSSS`, `SSSSS`, `SSSS` | `SSS` | Fractional seconds — capped at 3 | | ||
| | `SSS` | `SSS` | Fractional seconds (unchanged) | | ||
| | `A` | `a` | AM/PM | | ||
| | `Z` | `ZZ` | Offset like `+05:30` | | ||
| The codemod handles all entries in this table automatically. Run it once and your callers move to v2.0 syntax in one diff. | ||
| --- | ||
| ### B3 — Literal escape syntax | ||
| | | | | ||
| |---|---| | ||
| | **v1.x** | `[literal text]` | | ||
| | **v2.0** | `'literal text'` (single quotes; doubled to escape `'`) | | ||
| ```ts | ||
| // v1.x | ||
| convertEpochToTimezone(epoch, 'UTC', '[Date:] YYYY-MM-DD'); | ||
| // v2.0 | ||
| convertEpochToTimezone(epoch, 'UTC', "'Date:' yyyy-MM-dd"); | ||
| ``` | ||
| The codemod converts `[...]` → `'...'` and doubles any embedded apostrophes (`[don't]` → `'don''t'`). | ||
| --- | ||
| ### B4 — `getTimezoneList()` source | ||
| v1.x returned moment-timezone's bundled list (~597 zones). v2.0 returns the runtime's `Intl.supportedValuesOf('timeZone')` list (~419 zones on older Node ICU bundles) **plus a curated set of modern canonical IANA names** that older ICU still returns as legacy aliases (e.g. `Asia/Kolkata` is always present even when ICU only knows it as `Asia/Calcutta`). | ||
| **Impact:** If your code iterates the list to render a picker, the order and count differ. If your code validates user input against the list, well-known names still resolve via the secondary Luxon-backed check in `validTimezone`. | ||
| --- | ||
| ### B5 — DST ambiguous-time behavior | ||
| v1.x (moment) silently picked one interpretation for ambiguous local times (e.g. the "fall back" overlap when 02:30 happens twice). v2.0 (Luxon) throws on truly ambiguous parses. | ||
| If your code parses local times near DST transitions, wrap calls in `safeParseToEpoch` and handle the error case explicitly. | ||
| --- | ||
| ### B6 — Removed moment-only tokens | ||
| `X` (unix seconds), `x` (unix milliseconds), `Q` (quarter), `GGGG`, `gggg`, `W`, `WW`, `Wo`, and similar moment-only tokens are **not** in the v2.0 allowlist. They throw `EpochError.FormatInvalid`. | ||
| Use the dedicated API instead: | ||
| ```ts | ||
| // v1.x | ||
| convertEpochToTimezone(epoch, 'UTC', 'X') // '1622547800' | ||
| convertEpochToTimezone(epoch, 'UTC', 'x') // '1622547800000' | ||
| // v2.0 | ||
| parseToEpoch(input).epochInSeconds // 1622547800 | ||
| parseToEpoch(input).epochInMilliseconds // 1622547800000 | ||
| // or: | ||
| convertEpoch(epoch).epoch // original input preserved | ||
| ``` | ||
| The codemod **does not** auto-translate these — it leaves the format string unchanged and emits a stderr warning so you can decide what to do per call. | ||
| --- | ||
| ## What does NOT change | ||
| Everything else. As a sanity-check, all of the following stay identical between v1.x and v2.0: | ||
| - Every function signature | ||
| - Every TypeScript type (`EpochToDate`, `DateToEpoch`, `ParsedDuration`, `EpochNow`, `TimezoneOffset`, `Result<T>`) | ||
| - Every error code (`EpochError.*`) and the `EpochValidationError` class | ||
| - The auto-detect epoch unit logic (seconds/ms/µs/ns) | ||
| - The safe Result-style API (8 wrappers) | ||
| - `Object.freeze()` on every returned object | ||
| - Input length caps (`MAX_INPUT_STRING_LENGTH`, `MAX_FORMAT_STRING_LENGTH`) | ||
| - All security defenses (allowlist for `parseToEpoch` input, prototype-pollution defense, etc.) | ||
| - `EpochThreshold` magnitude boundaries | ||
| - Numeric output (`epochInSeconds`, `epochInMilliseconds`, `offsetMinutes`, etc.) | ||
| - `getRelativeTimeDifference` output strings (pure JS, never used moment) | ||
| - `formatDuration` output for any given millisecond input | ||
| If any of these change for your code, that's a bug — please file an issue. | ||
| --- | ||
| ## Codemod cheat sheet | ||
| ```bash | ||
| # Preview without modifying | ||
| npx @master4n/temporal-transformer-codemod --dry ./src | ||
| # Apply | ||
| npx @master4n/temporal-transformer-codemod ./src | ||
| # Multiple paths | ||
| npx @master4n/temporal-transformer-codemod ./src ./test ./scripts | ||
| ``` | ||
| The codemod rewrites format-string literals (StringLiteral / Literal AST nodes) inside calls to these functions: | ||
| - `convertEpoch(epoch, format)` | ||
| - `convertEpochToTimezone(epoch, tz, format)` | ||
| - `parseToEpoch(input, format, tz)` | ||
| - `safeConvertEpoch`, `safeConvertEpochToTimezone`, `safeParseToEpoch` | ||
| It does **not** rewrite: | ||
| - Dynamic format strings (template literals, identifier references) — those need a manual review. | ||
| - Format strings inside member-expression calls on objects that happen to have the same method name — only the bare identifier form is matched. | ||
| - `X`, `x`, `Q`, and other untranslatable tokens — these are left as-is with a stderr warning. | ||
| --- | ||
| ## Maintenance window for v1.x | ||
| | Tag | Version | Status | | ||
| |---|---|---| | ||
| | `latest` | `@master4n/temporal-transformer@2.x` | Active development | | ||
| | `legacy` | `@master4n/temporal-transformer@1.4.0` | Security-only backports until **2027-05-25** | | ||
| After the 12-month window the `legacy` tag will not receive further updates. | ||
| --- | ||
| ## Reporting issues | ||
| 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. |
@@ -13,2 +13,3 @@ export declare enum EpochError { | ||
| 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" | ||
@@ -15,0 +16,0 @@ } |
@@ -1,2 +0,2 @@ | ||
| "use strict";var o,e=require("moment-timezone");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;var c;exports.EpochError=void 0,(c=exports.EpochError||(exports.EpochError={})).UndefinedOrNull="Epoch Is Undefined Or Null",c.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",c.OutOfRange="Epoch Is Out Of The Valid Range",c.EpochUnit="Invalid Epoch Unit",c.Empty="Epoch Is Empty",c.DateError="Invalid Date Format Or Value",c.TimezoneError="Unknown Timezone",c.ParseError="Cannot Parse The Provided Date String",c.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",c.InputTooLong="Input String Exceeds Maximum Allowed Length",c.FormatTooLong="Format String Exceeds Maximum Allowed Length",c.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range";class a extends Error{constructor(o){super(o),this.name="EpochValidationError"}}function h(o){const e=function(o){if(null==o)throw new a(exports.EpochError.UndefinedOrNull);if("string"==typeof o){if(o.length>s)throw new a(exports.EpochError.InputTooLong);if(0===o.trim().length)throw new a(exports.EpochError.Empty);const e=Number(o);if(isNaN(e))throw new a(exports.EpochError.NotANumber);o=e}else if("number"!=typeof o)throw new a(exports.EpochError.NotANumber);if(!isFinite(o)||isNaN(o))throw new a(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 a(exports.EpochError.EpochUnit);n=Math.floor(e/1e6),i=exports.EpochUnit.NANO_SECONDS}return{epochUnit:i,epochInMilliseconds:n}}function p(o){if(!e.tz.names().includes(o))throw new a(exports.EpochError.TimezoneError)}function u(o){if(o.length>i)throw new a(exports.EpochError.FormatTooLong)}function f(o){return Object.freeze(o)}function E(o,t="YYYY-MM-DD HH:mm:ss.SSSSSS"){u(t);const{epochInMilliseconds:r,epochUnit:n}=h(o),s=e(r),i=e.tz.guess()||"UTC";return f({timezone:i,dateTime:s.tz(i).format(t),dateTimeInGMT:s.tz("Etc/GMT").format(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,c=s/365,a=e<0?" from now":" ago";if(t<=60)return`${Math.floor(t)} seconds${a}`;if(r<=60)return`${Math.floor(r)} minutes${a}`;if(n<=24)return`${Math.floor(n)} hours ${Math.floor(r%60)} minutes${a}`;if(s<=30)return`${Math.floor(s)} days ${Math.floor(n%24)} hours${a}`;if(i<=12)return`${Math.floor(i)} months ${Math.floor(s%30)} days${a}`;return`${Math.floor(c)} years ${Math.floor(s%365/30)} months${a}`}(r)})}function l(o,t=e.tz.guess()||"UTC"){!function(o){if(!e(o).isValid())throw new a(exports.EpochError.DateError)}(o),p(t);const r=e(o);return f({epochInSeconds:r.unix(),epochInMilliseconds:r.valueOf(),dateTimeInGMT:r.tz("Etc/GMT").format("YYYY-MM-DD HH:mm:ss"),dateTime:r.tz(t).format("YYYY-MM-DD HH:mm:ss"),timezone:t})}function d(o,t,r="YYYY-MM-DD HH:mm:ss.SSSSSS"){u(r),p(t);const{epochInMilliseconds:n}=h(o);return e(n).tz(t).format(r)}function m(o){return h(o).epochUnit}const M=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function x(o,t,r=e.tz.guess()||"UTC"){if(null==o||"string"!=typeof o)throw new a(exports.EpochError.ParseError);if(o.length>s)throw new a(exports.EpochError.InputTooLong);const n=o.trim();if(0===n.length)throw new a(exports.EpochError.ParseError);if(!M.test(n))throw new a(exports.EpochError.ParseError);void 0!==t&&u(t),p(r);const i=t?e.tz(o,t,!0,r):e.tz(o,e.ISO_8601,!0,r);if(!i.isValid())throw new a(exports.EpochError.ParseError);return f({epochInSeconds:i.unix(),epochInMilliseconds:i.valueOf(),dateTimeInGMT:i.clone().utc().format("YYYY-MM-DD HH:mm:ss"),dateTime:i.format("YYYY-MM-DD HH:mm:ss"),timezone:r})}function S(o,t){const{epochInMilliseconds:r}=h(o),{epochInMilliseconds:n}=h(t);if(r>n)throw new a(exports.EpochError.RangeError);return f(function(o,t){const r=t-o,n=e(o),s=e(t),i=s.diff(n,"years"),c=n.clone().add(i,"years"),a=s.diff(c,"months"),h=c.clone().add(a,"months"),p=s.diff(h,"days"),u=h.clone().add(p,"days"),f=s.diff(u,"hours"),E=u.clone().add(f,"hours"),l=s.diff(E,"minutes"),d=E.clone().add(l,"minutes"),m=s.diff(d,"seconds"),M=d.clone().add(m,"seconds");return{years:i,months:a,days:p,hours:f,minutes:l,seconds:m,milliseconds:s.diff(M,"milliseconds"),totalMilliseconds:r,humanReadable:[[i,"year"],[a,"month"],[p,"day"],[f,"hour"],[l,"minute"],[m,"second"]].filter((([o])=>o>0)).map((([o,e])=>`${o} ${e}${1!==o?"s":""}`)).join(", ")||"0 seconds"}}(r,n))}function N(o,t){p(o);const r=t?h(t).epochInMilliseconds:Date.now(),n=e(r).tz(o);return f({offset:n.format("Z"),offsetMinutes:n.utcOffset()})}function O(){const o=Date.now();if(!isFinite(o)||o<n||o>r)throw new a(exports.EpochError.ClockOutOfRange);let t;try{t=e.tz.guess()||"UTC"}catch{t="UTC"}return f({seconds:Math.floor(o/1e3),milliseconds:o,iso:new Date(o).toISOString(),timezone:t})}function w(o){try{return{ok:!0,value:o()}}catch(o){if(o instanceof a)return{ok:!1,error:o};throw o}}exports.EpochThreshold=t,exports.EpochValidationError=a,exports.MAX_EPOCH_MS=r,exports.MAX_FORMAT_STRING_LENGTH=i,exports.MAX_INPUT_STRING_LENGTH=s,exports.MIN_EPOCH_MS=n,exports.convertDateToEpoch=l,exports.convertEpoch=E,exports.convertEpochToTimezone=d,exports.formatDuration=function(o){const t=e.duration(Math.abs(o)),r=Math.floor(t.asYears()),n=t.months(),s=t.days(),i=t.hours(),c=t.minutes(),a=t.seconds(),h=[];return r>0&&h.push(`${r} year${1!==r?"s":""}`),n>0&&h.push(`${n} month${1!==n?"s":""}`),s>0&&h.push(`${s} day${1!==s?"s":""}`),i>0&&h.push(`${i} hour${1!==i?"s":""}`),c>0&&h.push(`${c} minute${1!==c?"s":""}`),a>0&&h.push(`${a} second${1!==a?"s":""}`),h.length>0?h.join(", "):"0 seconds"},exports.getDurationBetween=S,exports.getEpochNow=O,exports.getEpochUnit=m,exports.getTimezoneList=function(){return[...e.tz.names()]},exports.getTimezoneOffset=N,exports.isValidEpoch=function(o){try{return h(o),!0}catch{return!1}},exports.isValidTimezone=function(o){return e.tz.names().includes(o)},exports.parseToEpoch=x,exports.safeConvertDateToEpoch=function(o,e){return w((()=>l(o,e)))},exports.safeConvertEpoch=function(o,e){return w((()=>E(o,e)))},exports.safeConvertEpochToTimezone=function(o,e,t){return w((()=>d(o,e,t)))},exports.safeGetDurationBetween=function(o,e){return w((()=>S(o,e)))},exports.safeGetEpochNow=function(){return w((()=>O()))},exports.safeGetEpochUnit=function(o){return w((()=>m(o)))},exports.safeGetTimezoneOffset=function(o,e){return w((()=>N(o,e)))},exports.safeParseToEpoch=function(o,e,t){return w((()=>x(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=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)))}; | ||
| //# 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","EpochError","EpochValidationError","Error","constructor","message","super","this","name","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","moment","tz","names","includes","TimezoneError","assertFormatLength","format","FormatTooLong","freeze","o","Object","convertEpoch","date","guess","dateTime","dateTimeInGMT","relative","epochMillis","diffMillis","Date","now","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","getRelativeTimeDifference","convertDateToEpoch","isValid","DateError","validateMomentDate","dateMoment","epochInSeconds","unix","valueOf","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","ISO_8601","clone","utc","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","to","years","diff","afterYears","add","months","afterMonths","days","afterDays","hours","afterHours","minutes","afterMinutes","seconds","afterSeconds","milliseconds","totalMilliseconds","humanReadable","filter","v","map","label","join","parseDuration","getTimezoneOffset","ms","m","offset","offsetMinutes","utcOffset","getEpochNow","ClockOutOfRange","iso","toISOString","wrap","fn","ok","value","e","error","d","duration","asYears","segments","push"],"mappings":"iBAAYA,+BAAAA,QAAAA,eAAAA,GAAAA,EAAAA,QAAAA,YAAAA,kBAAS,CAAA,IACnB,QAAA,UACAA,EAAA,cAAA,eACAA,EAAA,cAAA,eACAA,EAAA,aAAA,cAGK,MAAMC,EAAiB,CAC5BC,QAAS,KACTC,cAAe,KACfC,cAAe,KACfC,aAAc,MA2DHC,EAAe,OACfC,GAAe,OAIfC,EAA0B,IAC1BC,EAA2B,IC5ExC,IAAYC,EAAAA,QAAAA,gBAAAA,GAAAA,EAAAA,QAAAA,aAAAA,mBAAU,CAAA,IACpB,gBAAA,6BACAA,EAAA,WAAA,wDACAA,EAAA,WAAA,kCACAA,EAAA,UAAA,qBACAA,EAAA,MAAA,iBACAA,EAAA,UAAA,+BACAA,EAAA,cAAA,mBACAA,EAAA,WAAA,wCACAA,EAAA,WAAA,iEACAA,EAAA,aAAA,8CACAA,EAAA,cAAA,+CACAA,EAAA,gBAAA,8DAGI,MAAOC,UAA6BC,MACxC,WAAAC,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,sBACd,EC8BI,SAAUC,EAAkCC,GAIhD,MAAMC,EA9CR,SAAuBD,GACrB,GAAIA,QACF,MAAM,IAAIR,EAAqBD,QAAAA,WAAWW,iBAG5C,GAAqB,iBAAVF,EAAoB,CAC7B,GAAIA,EAAMG,OAASd,EACjB,MAAM,IAAIG,EAAqBD,QAAAA,WAAWa,cAE5C,GAA4B,IAAxBJ,EAAMK,OAAOF,OACf,MAAM,IAAIX,EAAqBD,QAAAA,WAAWe,OAE5C,MAAMC,EAASC,OAAOR,GACtB,GAAIS,MAAMF,GACR,MAAM,IAAIf,EAAqBD,QAAAA,WAAWmB,YAE5CV,EAAQO,CACV,MAAO,GAAqB,iBAAVP,EAChB,MAAM,IAAIR,EAAqBD,QAAAA,WAAWmB,YAI5C,IAAKC,SAASX,IAAUS,MAAMT,GAC5B,MAAM,IAAIR,EAAqBD,QAAAA,WAAWmB,YAG5C,IAAKF,OAAOI,UAAUZ,GAAQ,CAC5B,MAAMa,EAAMb,EAAMc,WACZC,EAAWF,EAAIG,QAAQ,KAE7B,IAAiB,IAAbD,EAAiB,OAAOE,KAAKC,MAAMlB,GACvC,MAAMmB,EAAiBN,EAAIV,OAASY,EAAW,EAC/Cf,EAAQiB,KAAKC,MAAMlB,EAAQiB,KAAKG,IAAI,GAAID,GAC1C,CACA,OAAOnB,CACT,CAWqBqB,CAAcrB,GAC3BsB,EAAwBL,KAAKM,IAAItB,GACvC,IAAIuB,EACAC,EACJ,GAAIH,EAAgBxC,EAAeC,QACjCyC,EAAmC,IAAbvB,EACtBwB,EAAY5C,QAAAA,UAAUE,aACjB,GAAIuC,EAAgBxC,EAAeE,cACxCwC,EAAsBvB,EACtBwB,EAAY5C,QAAAA,UAAUG,mBACjB,GAAIsC,EAAgBxC,EAAeG,cACxCuC,EAAsBP,KAAKS,MAAMzB,EAAa,KAC9CwB,EAAY5C,QAAAA,UAAUI,kBACjB,MAAIqC,EAAgBxC,EAAeI,cAIxC,MAAM,IAAIM,EAAqBD,QAAAA,WAAWV,WAH1C2C,EAAsBP,KAAKS,MAAMzB,EAAa,KAC9CwB,EAAY5C,QAAAA,UAAUK,YAGxB,CAEA,MAAO,CACLuC,YACAD,sBAEJ,CAEM,SAAUG,EAAcC,GAE5B,IADuBC,EAAOC,GAAGC,QACbC,SAASJ,GAC3B,MAAM,IAAIpC,EAAqBD,QAAAA,WAAW0C,cAE9C,CC3DA,SAASC,EAAmBC,GAC1B,GAAIA,EAAOhC,OAASb,EAClB,MAAM,IAAIE,EAAqBD,QAAAA,WAAW6C,cAE9C,CAEA,SAASC,EAAyBC,GAChC,OAAOC,OAAOF,OAAOC,EACvB,UAEgBE,EACdxC,EACAmC,EAAiB,8BAEjBD,EAAmBC,GACnB,MAAMX,oBAAEA,EAAmBC,UAAEA,GAC3B1B,EAAkCC,GAC9ByC,EAAsBZ,EAAOL,GAC7BI,EAAWC,EAAOC,GAAGY,SAAW,MAKtC,OAAOL,EAAO,CAAET,WAAUe,SAJTF,EAAKX,GAAGF,GAAUO,OAAOA,GAINS,cAHdH,EAAKX,GAAG,WAAWK,OAAOA,GAGGV,YAAWzB,QAAO6C,SCrCjE,SAAoCC,GACxC,MACMC,EADoBC,KAAKC,MACQH,EAEjCI,EADgBjC,KAAKM,IAAIwB,GACK,IAC9BI,EAAcD,EAAc,GAC5BE,EAAYD,EAAc,GAC1BE,EAAWD,EAAY,GACvBE,EAAaD,EAAW,GACxBE,EAAYF,EAAW,IAGvBG,EADWT,EAAa,EACJ,YAAc,OAExC,GAAIG,GAAe,GACjB,MAAO,GAAGjC,KAAKS,MAAMwB,aAAuBM,IACvC,GAAIL,GAAe,GACxB,MAAO,GAAGlC,KAAKS,MAAMyB,aAAuBK,IACvC,GAAIJ,GAAa,GAGtB,MAAO,GAFOnC,KAAKS,MAAM0B,YACTnC,KAAKS,MAAMyB,EAAc,cACEK,IACtC,GAAIH,GAAY,GAGrB,MAAO,GAFMpC,KAAKS,MAAM2B,WACVpC,KAAKS,MAAM0B,EAAY,YACAI,IAChC,GAAIF,GAAc,GAGvB,MAAO,GAFQrC,KAAKS,MAAM4B,aACbrC,KAAKS,MAAM2B,EAAW,WACIG,IAIvC,MAAO,GAFOvC,KAAKS,MAAM6B,YACVtC,KAAKS,MAAO2B,EAAW,IAAO,aACJG,GAE7C,CDAmBC,CAA0BjC,IAG7C,CAEM,SAAUkC,EACdjB,EACAb,EAAmBC,EAAOC,GAAGY,SAAW,QCLpC,SAA6BD,GAEjC,IADmBZ,EAAOY,GACVkB,UACd,MAAM,IAAInE,EAAqBD,QAAAA,WAAWqE,UAE9C,CDEEC,CAAmBpB,GACnBd,EAAcC,GACd,MAAMkC,EAAajC,EAAOY,GAO1B,OAAOJ,EAAO,CACZ0B,eAPqBD,EAAWE,OAQhCxC,oBAP0BsC,EAAWG,UAQrCrB,cANoBkB,EAAWhC,GAAG,WAAWK,OAAO,uBAOpDQ,SANemB,EAAWhC,GAAGF,GAAUO,OAAO,uBAO9CP,YAEJ,CAEM,SAAUsC,EACdlE,EACA4B,EACAO,EAAiB,8BAEjBD,EAAmBC,GACnBR,EAAcC,GACd,MAAMJ,oBAAEA,GAAwBzB,EAAkCC,GAClE,OAAO6B,EAAOL,GAAqBM,GAAGF,GAAUO,OAAOA,EACzD,CAEM,SAAUgC,EAAanE,GAC3B,OAAOD,EAAkCC,GAAOyB,SAClD,CAIA,MAAM2C,EAAgB,+BAEhB,SAAUC,EACdC,EACAnC,EACAP,EAAmBC,EAAOC,GAAGY,SAAW,OAExC,GAAa,MAAT4B,GAAkC,iBAAVA,EAC1B,MAAM,IAAI9E,EAAqBD,QAAAA,WAAWgF,YAE5C,GAAID,EAAMnE,OAASd,EACjB,MAAM,IAAIG,EAAqBD,QAAAA,WAAWa,cAE5C,MAAMoE,EAAUF,EAAMjE,OACtB,GAAuB,IAAnBmE,EAAQrE,OACV,MAAM,IAAIX,EAAqBD,QAAAA,WAAWgF,YAE5C,IAAKH,EAAcK,KAAKD,GACtB,MAAM,IAAIhF,EAAqBD,QAAAA,WAAWgF,iBAE7BG,IAAXvC,GACFD,EAAmBC,GAErBR,EAAcC,GAEd,MAAMkC,EAAa3B,EACfN,EAAOC,GAAGwC,EAAOnC,GAAQ,EAAMP,GAC/BC,EAAOC,GAAGwC,EAAOzC,EAAO8C,UAAU,EAAM/C,GAC5C,IAAKkC,EAAWH,UACd,MAAM,IAAInE,EAAqBD,QAAAA,WAAWgF,YAE5C,OAAOlC,EAAO,CACZ0B,eAAgBD,EAAWE,OAC3BxC,oBAAqBsC,EAAWG,UAChCrB,cAAekB,EAAWc,QAAQC,MAAM1C,OAAO,uBAC/CQ,SAAUmB,EAAW3B,OAAO,uBAC5BP,YAEJ,CAEM,SAAUkD,EACdC,EACAC,GAEA,MAAQxD,oBAAqByD,GAAWlF,EAAkCgF,IAClEvD,oBAAqB0D,GAASnF,EAAkCiF,GACxE,GAAIC,EAASC,EACX,MAAM,IAAI1F,EAAqBD,QAAAA,WAAW4F,YAE5C,OAAO9C,EChEH,SAAwB4C,EAAgBC,GAC5C,MAAME,EAAUF,EAAOD,EACjBI,EAAOxD,EAAOoD,GACdK,EAAKzD,EAAOqD,GAEZK,EAAQD,EAAGE,KAAKH,EAAM,SACtBI,EAAaJ,EAAKT,QAAQc,IAAIH,EAAO,SACrCI,EAASL,EAAGE,KAAKC,EAAY,UAC7BG,EAAcH,EAAWb,QAAQc,IAAIC,EAAQ,UAC7CE,EAAOP,EAAGE,KAAKI,EAAa,QAC5BE,EAAYF,EAAYhB,QAAQc,IAAIG,EAAM,QAC1CE,EAAQT,EAAGE,KAAKM,EAAW,SAC3BE,EAAaF,EAAUlB,QAAQc,IAAIK,EAAO,SAC1CE,EAAUX,EAAGE,KAAKQ,EAAY,WAC9BE,EAAeF,EAAWpB,QAAQc,IAAIO,EAAS,WAC/CE,EAAUb,EAAGE,KAAKU,EAAc,WAChCE,EAAeF,EAAatB,QAAQc,IAAIS,EAAS,WAavD,MAAO,CAAEZ,QAAOI,SAAQE,OAAME,QAAOE,UAASE,UAASE,aAZlCf,EAAGE,KAAKY,EAAc,gBAY0BE,kBAAmBlB,EAASmB,cAV1D,CACrC,CAAChB,EAAO,QAAS,CAACI,EAAQ,SAAU,CAACE,EAAM,OAC3C,CAACE,EAAO,QAAS,CAACE,EAAS,UAAW,CAACE,EAAS,WAI7CK,QAAO,EAAEC,KAAOA,EAAI,IACpBC,KAAI,EAAED,EAAGE,KAAW,GAAGF,KAAKE,IAAc,IAANF,EAAU,IAAM,OACpDG,KAAK,OAAS,YAGrB,CDkCgBC,CAAc5B,EAAQC,GACtC,CAEM,SAAU4B,EACdlF,EACA5B,GAEA2B,EAAcC,GACd,MAAMmF,EAAK/G,EACPD,EAAkCC,GAAOwB,oBACzCwB,KAAKC,MACH+D,EAAInF,EAAOkF,GAAIjF,GAAGF,GACxB,OAAOS,EAAO,CAAE4E,OAAQD,EAAE7E,OAAO,KAAM+E,cAAeF,EAAEG,aAC1D,UAOgBC,IACd,MAAMf,EAAerD,KAAKC,MAC1B,IAAKtC,SAAS0F,IAAiBA,EAAejH,GAAgBiH,EAAelH,EAC3E,MAAM,IAAIK,EAAqBD,QAAAA,WAAW8H,iBAE5C,IAAIzF,EACJ,IACEA,EAAWC,EAAOC,GAAGY,SAAW,KAClC,CAAE,MACAd,EAAW,KACb,CACA,OAAOS,EAAO,CACZ8D,QAASlF,KAAKS,MAAM2E,EAAe,KACnCA,eACAiB,IAAK,IAAItE,KAAKqD,GAAckB,cAC5B3F,YAEJ,CE3JA,SAAS4F,EAAQC,GACf,IACE,MAAO,CAAEC,IAAI,EAAMC,MAAOF,IAC5B,CAAE,MAAOG,GACP,GAAIA,aAAapI,EAAsB,MAAO,CAAEkI,IAAI,EAAOG,MAAOD,GAClE,MAAMA,CACR,CACF,wRD2BM,SAAyBvB,GAC7B,MAAMyB,EAAIjG,EAAOkG,SAAS9G,KAAKM,IAAI8E,IAC7Bd,EAAQtE,KAAKS,MAAMoG,EAAEE,WACrBrC,EAASmC,EAAEnC,SACXE,EAAOiC,EAAEjC,OACTE,EAAQ+B,EAAE/B,QACVE,EAAU6B,EAAE7B,UACZE,EAAU2B,EAAE3B,UAEZ8B,EAAqB,GAQ3B,OAPI1C,EAAQ,GAAG0C,EAASC,KAAK,GAAG3C,SAAuB,IAAVA,EAAc,IAAM,MAC7DI,EAAS,GAAGsC,EAASC,KAAK,GAAGvC,UAA0B,IAAXA,EAAe,IAAM,MACjEE,EAAO,GAAGoC,EAASC,KAAK,GAAGrC,QAAoB,IAATA,EAAa,IAAM,MACzDE,EAAQ,GAAGkC,EAASC,KAAK,GAAGnC,SAAuB,IAAVA,EAAc,IAAM,MAC7DE,EAAU,GAAGgC,EAASC,KAAK,GAAGjC,WAA6B,IAAZA,EAAgB,IAAM,MACrEE,EAAU,GAAG8B,EAASC,KAAK,GAAG/B,WAA6B,IAAZA,EAAgB,IAAM,MAElE8B,EAAS9H,OAAS,EAAI8H,EAASrB,KAAK,MAAQ,WACrD,+GDmFE,MAAO,IAAI/E,EAAOC,GAAGC,QACvB,mDDvEM,SAAuB/B,GAC3B,IAEE,OADAD,EAAkCC,IAC3B,CACT,CAAE,MACA,OAAO,CACT,CACF,0BAEM,SAA0B4B,GAC9B,OAAOC,EAAOC,GAAGC,QAAQC,SAASJ,EACpC,wDG5DM,SACJa,EACAb,GAEA,OAAO4F,GAAK,IAAM9D,EAAmBjB,EAAMb,IAC7C,2BAZM,SACJ5B,EACAmC,GAEA,OAAOqF,GAAK,IAAMhF,EAAaxC,EAAOmC,IACxC,8CAUEnC,EACA4B,EACAO,GAEA,OAAOqF,GAAK,IAAMtD,EAAuBlE,EAAO4B,EAAUO,IAC5D,iCAUM,SACJ4C,EACAC,GAEA,OAAOwC,GAAK,IAAM1C,EAAmBC,EAAWC,IAClD,qCAUE,OAAOwC,GAAK,IAAMJ,KACpB,2BAEM,SACJpH,GAEA,OAAOwH,GAAK,IAAMrD,EAAanE,IACjC,gCAfM,SACJ4B,EACA5B,GAEA,OAAOwH,GAAK,IAAMV,EAAkBlF,EAAU5B,IAChD,oCAnBEsE,EACAnC,EACAP,GAEA,OAAO4F,GAAK,IAAMnD,EAAaC,EAAOnC,EAAQP,IAChD"} | ||
| {"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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"} |
@@ -1,2 +0,2 @@ | ||
| 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, } from './types/index.js'; | ||
| 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'; | ||
@@ -3,0 +3,0 @@ export { isValidEpoch, isValidTimezone } from './utils/validations.js'; |
@@ -55,2 +55,4 @@ export declare enum EpochUnit { | ||
| 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> = { | ||
@@ -57,0 +59,0 @@ ok: true; |
| import { ParsedDuration } from '../types/index.js'; | ||
| /** | ||
| * Relative time difference from current time. | ||
| * @param epochMillis | ||
| */ | ||
| export declare function getRelativeTimeDifference(epochMillis: number): string; | ||
@@ -7,0 +3,0 @@ export declare function validateMomentDate(date: any): void; |
| import { EpochUnit } from '../types/index.js'; | ||
| /** | ||
| * Detect the valid epoch unit. | ||
| * @param epoch | ||
| * @returns | ||
| */ | ||
| export declare function getEpochUnitAndEpochInMiliseconds(epoch: any): { | ||
@@ -8,0 +3,0 @@ epochUnit: EpochUnit; |
@@ -13,2 +13,3 @@ export declare enum EpochError { | ||
| 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" | ||
@@ -15,0 +16,0 @@ } |
+1
-1
@@ -1,2 +0,2 @@ | ||
| 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, } from './types/index.js'; | ||
| 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'; | ||
@@ -3,0 +3,0 @@ export { isValidEpoch, isValidTimezone } from './utils/validations.js'; |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import n from"moment-timezone";var e;!function(n){n.SECONDS="seconds",n.MILLI_SECONDS="milliseconds",n.MICRO_SECONDS="microseconds",n.NANO_SECONDS="nanoseconds"}(e||(e={}));const t={SECONDS:1e10,MILLI_SECONDS:1e13,MICRO_SECONDS:1e16,NANO_SECONDS:1e19},o=864e13,r=-864e13,s=256,i=256;var u;!function(n){n.UndefinedOrNull="Epoch Is Undefined Or Null",n.NotANumber="Epoch Is Not A Number Or Cannot Be Parsed As A Number",n.OutOfRange="Epoch Is Out Of The Valid Range",n.EpochUnit="Invalid Epoch Unit",n.Empty="Epoch Is Empty",n.DateError="Invalid Date Format Or Value",n.TimezoneError="Unknown Timezone",n.ParseError="Cannot Parse The Provided Date String",n.RangeError="Invalid Range: fromEpoch Must Be Less Than Or Equal To toEpoch",n.InputTooLong="Input String Exceeds Maximum Allowed Length",n.FormatTooLong="Format String Exceeds Maximum Allowed Length",n.ClockOutOfRange="System Clock Returned A Value Outside JavaScript Date Range"}(u||(u={}));class c extends Error{constructor(n){super(n),this.name="EpochValidationError"}}function a(n){const o=function(n){if(null==n)throw new c(u.UndefinedOrNull);if("string"==typeof n){if(n.length>s)throw new c(u.InputTooLong);if(0===n.trim().length)throw new c(u.Empty);const e=Number(n);if(isNaN(e))throw new c(u.NotANumber);n=e}else if("number"!=typeof n)throw new c(u.NotANumber);if(!isFinite(n)||isNaN(n))throw new c(u.NotANumber);if(!Number.isInteger(n)){const e=n.toString(),t=e.indexOf(".");if(-1===t)return Math.round(n);const o=e.length-t-1;n=Math.round(n*Math.pow(10,o))}return n}(n),r=Math.abs(o);let i,a;if(r<t.SECONDS)i=1e3*o,a=e.SECONDS;else if(r<t.MILLI_SECONDS)i=o,a=e.MILLI_SECONDS;else if(r<t.MICRO_SECONDS)i=Math.floor(o/1e3),a=e.MICRO_SECONDS;else{if(!(r<t.NANO_SECONDS))throw new c(u.EpochUnit);i=Math.floor(o/1e6),a=e.NANO_SECONDS}return{epochUnit:a,epochInMilliseconds:i}}function f(e){if(!n.tz.names().includes(e))throw new c(u.TimezoneError)}function h(n){try{return a(n),!0}catch{return!1}}function l(e){return n.tz.names().includes(e)}function d(e){const t=n.duration(Math.abs(e)),o=Math.floor(t.asYears()),r=t.months(),s=t.days(),i=t.hours(),u=t.minutes(),c=t.seconds(),a=[];return o>0&&a.push(`${o} year${1!==o?"s":""}`),r>0&&a.push(`${r} month${1!==r?"s":""}`),s>0&&a.push(`${s} day${1!==s?"s":""}`),i>0&&a.push(`${i} hour${1!==i?"s":""}`),u>0&&a.push(`${u} minute${1!==u?"s":""}`),c>0&&a.push(`${c} second${1!==c?"s":""}`),a.length>0?a.join(", "):"0 seconds"}function m(n){if(n.length>i)throw new c(u.FormatTooLong)}function M(n){return Object.freeze(n)}function S(e,t="YYYY-MM-DD HH:mm:ss.SSSSSS"){m(t);const{epochInMilliseconds:o,epochUnit:r}=a(e),s=n(o),i=n.tz.guess()||"UTC";return M({timezone:i,dateTime:s.tz(i).format(t),dateTimeInGMT:s.tz("Etc/GMT").format(t),epochUnit:r,epoch:e,relative:function(n){const e=Date.now()-n,t=Math.abs(e)/1e3,o=t/60,r=o/60,s=r/24,i=s/30,u=s/365,c=e<0?" from now":" ago";if(t<=60)return`${Math.floor(t)} seconds${c}`;if(o<=60)return`${Math.floor(o)} minutes${c}`;if(r<=24)return`${Math.floor(r)} hours ${Math.floor(o%60)} minutes${c}`;if(s<=30)return`${Math.floor(s)} days ${Math.floor(r%24)} hours${c}`;if(i<=12)return`${Math.floor(i)} months ${Math.floor(s%30)} days${c}`;return`${Math.floor(u)} years ${Math.floor(s%365/30)} months${c}`}(o)})}function p(e,t=n.tz.guess()||"UTC"){!function(e){if(!n(e).isValid())throw new c(u.DateError)}(e),f(t);const o=n(e);return M({epochInSeconds:o.unix(),epochInMilliseconds:o.valueOf(),dateTimeInGMT:o.tz("Etc/GMT").format("YYYY-MM-DD HH:mm:ss"),dateTime:o.tz(t).format("YYYY-MM-DD HH:mm:ss"),timezone:t})}function E(e,t,o="YYYY-MM-DD HH:mm:ss.SSSSSS"){m(o),f(t);const{epochInMilliseconds:r}=a(e);return n(r).tz(t).format(o)}function O(n){return a(n).epochUnit}const w=/^[0-9a-zA-Z\s\-\/:.TZ+,()]+$/;function N(e,t,o=n.tz.guess()||"UTC"){if(null==e||"string"!=typeof e)throw new c(u.ParseError);if(e.length>s)throw new c(u.InputTooLong);const r=e.trim();if(0===r.length)throw new c(u.ParseError);if(!w.test(r))throw new c(u.ParseError);void 0!==t&&m(t),f(o);const i=t?n.tz(e,t,!0,o):n.tz(e,n.ISO_8601,!0,o);if(!i.isValid())throw new c(u.ParseError);return M({epochInSeconds:i.unix(),epochInMilliseconds:i.valueOf(),dateTimeInGMT:i.clone().utc().format("YYYY-MM-DD HH:mm:ss"),dateTime:i.format("YYYY-MM-DD HH:mm:ss"),timezone:o})}function I(e,t){const{epochInMilliseconds:o}=a(e),{epochInMilliseconds:r}=a(t);if(o>r)throw new c(u.RangeError);return M(function(e,t){const o=t-e,r=n(e),s=n(t),i=s.diff(r,"years"),u=r.clone().add(i,"years"),c=s.diff(u,"months"),a=u.clone().add(c,"months"),f=s.diff(a,"days"),h=a.clone().add(f,"days"),l=s.diff(h,"hours"),d=h.clone().add(l,"hours"),m=s.diff(d,"minutes"),M=d.clone().add(m,"minutes"),S=s.diff(M,"seconds"),p=M.clone().add(S,"seconds");return{years:i,months:c,days:f,hours:l,minutes:m,seconds:S,milliseconds:s.diff(p,"milliseconds"),totalMilliseconds:o,humanReadable:[[i,"year"],[c,"month"],[f,"day"],[l,"hour"],[m,"minute"],[S,"second"]].filter((([n])=>n>0)).map((([n,e])=>`${n} ${e}${1!==n?"s":""}`)).join(", ")||"0 seconds"}}(o,r))}function D(e,t){f(e);const o=t?a(t).epochInMilliseconds:Date.now(),r=n(o).tz(e);return M({offset:r.format("Z"),offsetMinutes:r.utcOffset()})}function g(){return[...n.tz.names()]}function $(){const e=Date.now();if(!isFinite(e)||e<r||e>o)throw new c(u.ClockOutOfRange);let t;try{t=n.tz.guess()||"UTC"}catch{t="UTC"}return M({seconds:Math.floor(e/1e3),milliseconds:e,iso:new Date(e).toISOString(),timezone:t})}function C(n){try{return{ok:!0,value:n()}}catch(n){if(n instanceof c)return{ok:!1,error:n};throw n}}function T(n,e){return C((()=>S(n,e)))}function z(n,e){return C((()=>p(n,e)))}function Y(n,e,t){return C((()=>E(n,e,t)))}function y(n,e,t){return C((()=>N(n,e,t)))}function L(n,e){return C((()=>I(n,e)))}function U(n,e){return C((()=>D(n,e)))}function A(){return C((()=>$()))}function b(n){return C((()=>O(n)))}export{u as EpochError,t as EpochThreshold,e as EpochUnit,c as EpochValidationError,o as MAX_EPOCH_MS,i as MAX_FORMAT_STRING_LENGTH,s as MAX_INPUT_STRING_LENGTH,r as MIN_EPOCH_MS,p as convertDateToEpoch,S as convertEpoch,E as convertEpochToTimezone,d as formatDuration,I as getDurationBetween,$ as getEpochNow,O as getEpochUnit,g as getTimezoneList,D as getTimezoneOffset,h as isValidEpoch,l as isValidTimezone,N as parseToEpoch,z as safeConvertDateToEpoch,T as safeConvertEpoch,Y as safeConvertEpochToTimezone,L as safeGetDurationBetween,A as safeGetEpochNow,b as safeGetEpochUnit,U as safeGetTimezoneOffset,y 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>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}; | ||
| //# 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","EpochError","EpochValidationError","Error","constructor","message","super","this","name","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","moment","tz","names","includes","TimezoneError","isValidEpoch","isValidTimezone","formatDuration","milliseconds","d","duration","years","asYears","months","days","hours","minutes","seconds","segments","push","join","assertFormatLength","format","FormatTooLong","freeze","o","Object","convertEpoch","date","guess","dateTime","dateTimeInGMT","relative","epochMillis","diffMillis","Date","now","diffSeconds","diffMinutes","diffHours","diffDays","diffMonths","diffYears","suffix","getRelativeTimeDifference","convertDateToEpoch","isValid","DateError","validateMomentDate","dateMoment","epochInSeconds","unix","valueOf","convertEpochToTimezone","getEpochUnit","DATE_INPUT_RE","parseToEpoch","input","ParseError","trimmed","test","undefined","ISO_8601","clone","utc","getDurationBetween","fromEpoch","toEpoch","fromMs","toMs","RangeError","totalMs","from","to","diff","afterYears","add","afterMonths","afterDays","afterHours","afterMinutes","afterSeconds","totalMilliseconds","humanReadable","filter","v","map","label","parseDuration","getTimezoneOffset","ms","m","offset","offsetMinutes","utcOffset","getTimezoneList","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","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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"} |
@@ -55,2 +55,4 @@ export declare enum EpochUnit { | ||
| 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> = { | ||
@@ -57,0 +59,0 @@ ok: true; |
| import { ParsedDuration } from '../types/index.js'; | ||
| /** | ||
| * Relative time difference from current time. | ||
| * @param epochMillis | ||
| */ | ||
| export declare function getRelativeTimeDifference(epochMillis: number): string; | ||
@@ -7,0 +3,0 @@ export declare function validateMomentDate(date: any): void; |
| import { EpochUnit } from '../types/index.js'; | ||
| /** | ||
| * Detect the valid epoch unit. | ||
| * @param epoch | ||
| * @returns | ||
| */ | ||
| export declare function getEpochUnitAndEpochInMiliseconds(epoch: any): { | ||
@@ -8,0 +3,0 @@ epochUnit: EpochUnit; |
+4
-1
@@ -55,2 +55,4 @@ declare enum EpochUnit { | ||
| declare const MAX_FORMAT_STRING_LENGTH = 256; | ||
| declare const DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; | ||
| declare const SUPPORTED_FORMAT_TOKENS: ReadonlySet<string>; | ||
| type Result<T, E = Error> = { | ||
@@ -78,2 +80,3 @@ ok: true; | ||
| 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" | ||
@@ -109,2 +112,2 @@ } | ||
| export { 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, 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, 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 }; |
+13
-7
| { | ||
| "name": "@master4n/temporal-transformer", | ||
| "version": "1.3.0", | ||
| "description": "TypeScript library to convert epoch timestamps (seconds, milliseconds, microseconds, nanoseconds) to human-readable dates, parse date strings to epoch, compute durations, and handle timezone conversions.", | ||
| "version": "2.0.0", | ||
| "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.", | ||
| "main": "./commonjs/index.cjs", | ||
@@ -19,3 +19,4 @@ "module": "./esm/index.js", | ||
| "build": "npm run clean && rollup --config", | ||
| "test": "nx jest:test" | ||
| "test": "nx jest:test", | ||
| "test:golden": "TZ=UTC jest --testPathPattern='test/golden' --testPathIgnorePatterns='/node_modules/'" | ||
| }, | ||
@@ -35,3 +36,3 @@ "repository": { | ||
| "timezone-converter", | ||
| "moment-timezone", | ||
| "luxon", | ||
| "temporal", | ||
@@ -45,9 +46,13 @@ "transformer", | ||
| "typescript", | ||
| "iso-8601" | ||
| "iso-8601", | ||
| "moment-alternative", | ||
| "immutable-date" | ||
| ], | ||
| "engines": { | ||
| "node": ">=18.0.0" | ||
| }, | ||
| "author": "dwivna", | ||
| "license": "MIT", | ||
| "dependencies": { | ||
| "moment": "^2.30.1", | ||
| "moment-timezone": "^0.5.46" | ||
| "luxon": "^3.5.0" | ||
| }, | ||
@@ -67,2 +72,3 @@ "publishConfig": { | ||
| "@types/jest": "^29.5.14", | ||
| "@types/luxon": "^3.4.2", | ||
| "@types/node": "^22.0.0", | ||
@@ -69,0 +75,0 @@ "babel-jest": "^29.7.0", |
+29
-8
@@ -11,2 +11,4 @@ # @master4n/temporal-transformer | ||
| > **v2.0 is out.** Engine swapped from moment.js to [Luxon](https://moment.github.io/luxon/) — same API, ~60% smaller bundle (~71 KB vs ~180 KB), no maintenance-mode dependency. Upgrade with `npm i @master4n/temporal-transformer@2` and run `npx @master4n/temporal-transformer-codemod ./src` to migrate format strings automatically. See [MIGRATION.md](./MIGRATION.md). | ||
| --- | ||
@@ -42,6 +44,7 @@ | ||
| - **Timezone conversion** — format any epoch in any IANA timezone | ||
| - **Timezone utilities** — list all 600+ IANA timezones, get UTC offset for any zone | ||
| - **Timezone utilities** — list all available IANA timezones, get UTC offset for any zone | ||
| - **Result-style safe API** — every function has a `safeXxx` variant returning `{ ok, value | error }` instead of throwing | ||
| - **Safe predicates** — `isValidEpoch` / `isValidTimezone` that never throw | ||
| - **Frozen results** — returned objects are `Object.freeze()`'d to prevent downstream tampering | ||
| - **Token allowlist** — format strings are validated against a Luxon-token allowlist; typos throw `FormatInvalid` instead of silently producing garbage | ||
| - **Relative time** — "3 hours 15 minutes ago" / "2 days from now" | ||
@@ -51,2 +54,3 @@ - **Full TypeScript support** — strict types, enums, and interfaces exported | ||
| - **Hardened input validation** — DoS-capped string and format lengths, rejects HTML/XSS payloads, `Infinity`, `NaN`, prototype-pollution attempts, and clock-corruption edge cases | ||
| - **Powered by Luxon** — immutable, IANA-aware via the `Intl` API, no moment.js, Node 18+ | ||
@@ -96,3 +100,3 @@ --- | ||
| // Format an epoch in a specific timezone | ||
| const formatted = convertEpochToTimezone(1622547800000, 'Asia/Tokyo', 'YYYY-MM-DD HH:mm'); | ||
| const formatted = convertEpochToTimezone(1622547800000, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm'); | ||
| console.log(formatted); // "2021-06-02 02:43" | ||
@@ -125,3 +129,3 @@ | ||
| | `epoch` | `number` | — | Epoch value in any unit | | ||
| | `format` | `string` | `'YYYY-MM-DD HH:mm:ss.SSSSSS'`| [Moment.js format string](https://momentjs.com/docs/#/displaying/format/) | | ||
| | `format` | `string` | `'yyyy-MM-dd HH:mm:ss.SSS'` | [Luxon format token](https://moment.github.io/luxon/#/formatting?id=table-of-tokens) (validated against `SUPPORTED_FORMAT_TOKENS`) | | ||
@@ -131,3 +135,3 @@ **Returns:** [`EpochToDate`](#epochtodate) | ||
| ```typescript | ||
| const result = convertEpoch(1622547800000, 'YYYY-MM-DD'); | ||
| const result = convertEpoch(1622547800000, 'yyyy-MM-dd'); | ||
| // { epoch: 1622547800000, epochUnit: 'milliseconds', timezone: 'Asia/Kolkata', | ||
@@ -172,3 +176,3 @@ // dateTime: '2021-06-01', dateTimeInGMT: '2021-06-01', relative: '...' } | ||
| ```typescript | ||
| convertEpochToTimezone(1622547800000, 'America/Los_Angeles', 'YYYY-MM-DD HH:mm:ss'); | ||
| convertEpochToTimezone(1622547800000, 'America/Los_Angeles', 'yyyy-MM-dd HH:mm:ss'); | ||
| // "2021-06-01 10:43:20" | ||
@@ -222,6 +226,6 @@ | ||
| // Explicit format (strict mode — wrong format throws immediately) | ||
| parseToEpoch('25/12/2024', 'DD/MM/YYYY', 'Europe/London'); | ||
| parseToEpoch('25/12/2024', 'dd/MM/yyyy', 'Europe/London'); | ||
| // With timezone context | ||
| parseToEpoch('2024-12-25 09:00:00', 'YYYY-MM-DD HH:mm:ss', 'Asia/Kolkata'); | ||
| parseToEpoch('2024-12-25 09:00:00', 'yyyy-MM-dd HH:mm:ss', 'Asia/Kolkata'); | ||
| ``` | ||
@@ -589,3 +593,3 @@ | ||
| // User enters "25/12/2024" in a UK-locale date picker | ||
| const { epochInMilliseconds } = parseToEpoch('25/12/2024', 'DD/MM/YYYY', 'Europe/London'); | ||
| const { epochInMilliseconds } = parseToEpoch('25/12/2024', 'dd/MM/yyyy', 'Europe/London'); | ||
| ``` | ||
@@ -604,2 +608,19 @@ | ||
| ### 2.0.0 | ||
| - **Engine swap:** moment + moment-timezone → [Luxon](https://moment.github.io/luxon/). ~60% smaller bundle (~71 KB vs ~180 KB), no maintenance-mode dependency. | ||
| - **Breaking:** Format-string grammar is now Luxon syntax. Use `yyyy-MM-dd` instead of `YYYY-MM-DD`, `cccc` instead of `dddd`, `'literal'` instead of `[literal]`, and so on. Run the migration codemod: `npx @master4n/temporal-transformer-codemod ./src`. | ||
| - **Breaking:** Default format is now `'yyyy-MM-dd HH:mm:ss.SSS'` (was `'YYYY-MM-DD HH:mm:ss.SSSSSS'`). JS Date has millisecond precision; the 6-digit fractional was always zero-padded fiction. | ||
| - **New error:** `EpochError.FormatInvalid` — thrown when a format string contains a token outside the allowlist. Typos like `'YYYY'` (still moment syntax) now surface immediately instead of producing garbage output. | ||
| - **New exports:** `DEFAULT_FORMAT`, `SUPPORTED_FORMAT_TOKENS` (the runtime-enforced allowlist). | ||
| - **New companion package:** [`@master4n/temporal-transformer-codemod`](https://www.npmjs.com/package/@master4n/temporal-transformer-codemod) — one-shot CLI that rewrites moment-style format strings in your codebase. Handles greedy token matching, `[literal]` → `'literal'` escape conversion (with proper `''` escaping for embedded quotes), and emits warnings for tokens with no Luxon equivalent (`X`, `x`, `Q`). | ||
| - **Requirement:** Node 18+ (for `Intl.supportedValuesOf`). | ||
| - **Maintenance:** v1.x stays on npm under the `legacy` dist-tag; install with `npm i @master4n/temporal-transformer@legacy`. Security backports continue on `v1.x-maintenance` for 12 months. | ||
| See [MIGRATION.md](./MIGRATION.md) for the full upgrade guide. | ||
| ### 1.4.0 | ||
| - **Test infrastructure:** Added golden-test baseline (`test/golden/`) pinning v1.x behavior for the v2.0 parity gate. No runtime behavior changes. | ||
| ### 1.3.0 | ||
@@ -606,0 +627,0 @@ |
93146
21.3%1
-50%23
4.55%418
0.72%669
3.24%9
12.5%+ Added
+ Added
- Removed
- Removed
- Removed
- Removed