ts-time-utils 4.0.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +175 -30
  2. package/dist/{age.js → age.cjs} +14 -6
  3. package/dist/{calculate.js → calculate.cjs} +30 -18
  4. package/dist/{calendar.js → calendar.cjs} +80 -39
  5. package/dist/{calendars.js → calendars.cjs} +48 -23
  6. package/dist/{chain.js → chain.cjs} +41 -40
  7. package/dist/{compare.js → compare.cjs} +58 -28
  8. package/dist/constants.cjs +19 -0
  9. package/dist/{countdown.js → countdown.cjs} +16 -7
  10. package/dist/{cron.js → cron.cjs} +20 -9
  11. package/dist/{dateRange.js → dateRange.cjs} +42 -26
  12. package/dist/{duration.js → duration.cjs} +56 -44
  13. package/dist/esm/chain.js +0 -5
  14. package/dist/esm/finance.d.ts +236 -0
  15. package/dist/esm/finance.d.ts.map +1 -0
  16. package/dist/esm/finance.js +495 -0
  17. package/dist/esm/healthcare.d.ts +260 -0
  18. package/dist/esm/healthcare.d.ts.map +1 -0
  19. package/dist/esm/healthcare.js +447 -0
  20. package/dist/esm/index.d.ts +6 -0
  21. package/dist/esm/index.d.ts.map +1 -1
  22. package/dist/esm/index.js +6 -0
  23. package/dist/esm/naturalLanguage.d.ts +1 -3
  24. package/dist/esm/naturalLanguage.d.ts.map +1 -1
  25. package/dist/esm/naturalLanguage.js +9 -2
  26. package/dist/esm/plugins.d.ts +0 -6
  27. package/dist/esm/plugins.d.ts.map +1 -1
  28. package/dist/esm/plugins.js +36 -42
  29. package/dist/esm/recurrence.d.ts.map +1 -1
  30. package/dist/esm/recurrence.js +3 -5
  31. package/dist/esm/scheduling.d.ts +206 -0
  32. package/dist/esm/scheduling.d.ts.map +1 -0
  33. package/dist/esm/scheduling.js +329 -0
  34. package/dist/esm/timezone.d.ts +6 -1
  35. package/dist/esm/timezone.d.ts.map +1 -1
  36. package/dist/esm/timezone.js +106 -66
  37. package/dist/esm/types.d.ts +0 -4
  38. package/dist/esm/types.d.ts.map +1 -1
  39. package/dist/finance.cjs +512 -0
  40. package/dist/finance.d.ts +236 -0
  41. package/dist/finance.d.ts.map +1 -0
  42. package/dist/{fiscal.js → fiscal.cjs} +36 -17
  43. package/dist/{format.js → format.cjs} +83 -70
  44. package/dist/healthcare.cjs +462 -0
  45. package/dist/healthcare.d.ts +260 -0
  46. package/dist/healthcare.d.ts.map +1 -0
  47. package/dist/{holidays.js → holidays.cjs} +52 -25
  48. package/dist/index.cjs +595 -0
  49. package/dist/index.d.ts +6 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/{interval.js → interval.cjs} +24 -11
  52. package/dist/{iterate.js → iterate.cjs} +84 -41
  53. package/dist/{locale.js → locale.cjs} +54 -26
  54. package/dist/{naturalLanguage.js → naturalLanguage.cjs} +36 -23
  55. package/dist/naturalLanguage.d.ts +1 -3
  56. package/dist/naturalLanguage.d.ts.map +1 -1
  57. package/dist/{parse.js → parse.cjs} +24 -11
  58. package/dist/{performance.js → performance.cjs} +23 -10
  59. package/dist/{plugins.js → plugins.cjs} +48 -47
  60. package/dist/plugins.d.ts +0 -6
  61. package/dist/plugins.d.ts.map +1 -1
  62. package/dist/{precision.js → precision.cjs} +74 -37
  63. package/dist/{rangePresets.js → rangePresets.cjs} +40 -19
  64. package/dist/{recurrence.js → recurrence.cjs} +27 -21
  65. package/dist/recurrence.d.ts.map +1 -1
  66. package/dist/scheduling.cjs +344 -0
  67. package/dist/scheduling.d.ts +206 -0
  68. package/dist/scheduling.d.ts.map +1 -0
  69. package/dist/{serialize.js → serialize.cjs} +36 -17
  70. package/dist/{temporal.js → temporal.cjs} +28 -13
  71. package/dist/{timezone.js → timezone.cjs} +140 -82
  72. package/dist/timezone.d.ts +6 -1
  73. package/dist/timezone.d.ts.map +1 -1
  74. package/dist/{types.js → types.cjs} +9 -3
  75. package/dist/types.d.ts +0 -4
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/{validate.js → validate.cjs} +54 -26
  78. package/dist/{workingHours.js → workingHours.cjs} +36 -17
  79. package/package.json +52 -34
  80. package/dist/constants.js +0 -16
  81. package/dist/index.js +0 -66
package/dist/index.d.ts CHANGED
@@ -38,6 +38,12 @@ export { toHebrewDate, toIslamicDate, toBuddhistDate, toJapaneseDate, toPersianD
38
38
  export type { CalendarDate, HebrewDate, IslamicDate, BuddhistDate, JapaneseDate, PersianDate, ChineseDate, CalendarType } from './calendars.js';
39
39
  export { toPlainDate, toPlainTime, toPlainDateTime, toZonedDateTime, toInstant, createDuration as createTemporalDuration, parseDuration as parseTemporalDuration, nowInstant, nowPlainDateTime, nowPlainDate, nowPlainTime, nowZonedDateTime, fromTemporal } from './temporal.js';
40
40
  export type { PlainDate, PlainTime, PlainDateTime, ZonedDateTime, Instant, Duration as TemporalDuration, DurationLike, DurationUnit as TemporalDurationUnit } from './temporal.js';
41
+ export { isMarketOpen, isMarketHoliday, isTradingDay, getMarketHours, getMarketOpen, getMarketClose, getNextMarketOpen, getNextMarketClose, getSettlementDate, getTradeDateFromSettlement, eachTradingDay, countTradingDays, addTradingDays, getOptionsExpiration, MARKET_HOURS, US_MARKET_HOLIDAYS } from './finance.js';
42
+ export type { USMarket, MarketHours, OptionsExpirationType } from './finance.js';
43
+ export { generateSlots, generateSlotsForRange, getAvailableSlots, findNextAvailable, isSlotAvailable, findConflicts, hasConflict, addBuffer, removeBuffer, expandRecurringAvailability, mergeBookings, splitSlot, DEFAULT_SCHEDULING_CONFIG } from './scheduling.js';
44
+ export type { SchedulingConfig, Slot, Booking } from './scheduling.js';
41
45
  export { createNanosecondTimestamp, fromNanoseconds, dateToNanoseconds, nanosecondsToDate, addNanoseconds, subtractNanoseconds, compareNanoseconds, nowNanoseconds, formatNanoseconds, parseNanoseconds, createHighResDuration, addHighResDuration, subtractHighResDuration, highResDurationToMs, msToHighResDuration, toBigIntMs, fromBigIntMs, toBigIntSeconds, fromBigIntSeconds, addBigIntMs, subtractBigIntMs, diffBigIntMs, isInDSTGap, isInDSTOverlap, getDSTTransitionsInYear, resolveAmbiguousTime, ValidDate, ensureValidDate, parseValidDate, assertValidDate, LEAP_SECONDS, leapSecondsBetween, isNearLeapSecond, taiToUtc, utcToTai } from './precision.js';
42
46
  export type { NanosecondTimestamp, HighResDuration, DSTTransition } from './precision.js';
47
+ export { getMedicationTimes, getNextMedicationTime, parseMedicationFrequency, generateShiftSchedule, getShiftForTime, isOnShift, createOnCallRotation, getOnCallStaff, isWithinComplianceWindow, getComplianceDeadline, timeUntilDeadline, calculateRestBetweenShifts, MEDICATION_FREQUENCIES, SHIFT_DURATIONS, DEFAULT_MEDICATION_CONFIG } from './healthcare.js';
48
+ export type { MedicationFrequency, ShiftPattern, ShiftConfig, MedicationConfig, OnCallSlot } from './healthcare.js';
43
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,cAAc,EACd,OAAO,EACP,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,UAAU,EACX,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,SAAS,EACT,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,EACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,aAAa,EACb,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,UAAU,EACV,GAAG,EACH,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EAEZ,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EAEpB,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,cAAc,EACd,OAAO,EACP,cAAc,EACd,6BAA6B,EAC9B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC7G,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,IAAI,aAAa,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,SAAS,EACT,cAAc,IAAI,sBAAsB,EACxC,aAAa,IAAI,qBAAqB,EACtC,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,OAAO,EACP,QAAQ,IAAI,gBAAgB,EAC5B,YAAY,EACZ,YAAY,IAAI,oBAAoB,EACrC,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,21 @@
1
+ "use strict";
1
2
  /**
2
3
  * Interval utilities: operations on time intervals [start, end)
3
4
  */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createInterval = createInterval;
7
+ exports.isValidInterval = isValidInterval;
8
+ exports.intervalDuration = intervalDuration;
9
+ exports.intervalContains = intervalContains;
10
+ exports.intervalsOverlap = intervalsOverlap;
11
+ exports.intervalIntersection = intervalIntersection;
12
+ exports.mergeIntervals = mergeIntervals;
13
+ exports.subtractInterval = subtractInterval;
14
+ exports.splitIntervalByDay = splitIntervalByDay;
15
+ exports.totalIntervalCoverage = totalIntervalCoverage;
16
+ exports.normalizeIntervals = normalizeIntervals;
4
17
  /** Create an interval ensuring start <= end */
5
- export function createInterval(start, end) {
18
+ function createInterval(start, end) {
6
19
  const s = new Date(start);
7
20
  const e = new Date(end);
8
21
  if (isNaN(s.getTime()) || isNaN(e.getTime()) || s > e)
@@ -10,30 +23,30 @@ export function createInterval(start, end) {
10
23
  return { start: s, end: e };
11
24
  }
12
25
  /** Validate an object is a proper interval */
13
- export function isValidInterval(i) {
26
+ function isValidInterval(i) {
14
27
  return !!i && i.start instanceof Date && i.end instanceof Date && !isNaN(i.start) && !isNaN(i.end) && i.start <= i.end;
15
28
  }
16
29
  /** Duration of interval in ms */
17
- export function intervalDuration(i) {
30
+ function intervalDuration(i) {
18
31
  return i.end.getTime() - i.start.getTime();
19
32
  }
20
33
  /** Whether interval contains date (inclusive start, exclusive end) */
21
- export function intervalContains(i, date) {
34
+ function intervalContains(i, date) {
22
35
  const d = date instanceof Date ? date : new Date(date);
23
36
  return d >= i.start && d < i.end;
24
37
  }
25
38
  /** Whether two intervals overlap */
26
- export function intervalsOverlap(a, b) {
39
+ function intervalsOverlap(a, b) {
27
40
  return a.start < b.end && b.start < a.end;
28
41
  }
29
42
  /** Intersection of two intervals, or null */
30
- export function intervalIntersection(a, b) {
43
+ function intervalIntersection(a, b) {
31
44
  const start = a.start > b.start ? a.start : b.start;
32
45
  const end = a.end < b.end ? a.end : b.end;
33
46
  return start < end ? { start, end } : null;
34
47
  }
35
48
  /** Merge overlapping or touching intervals into a minimal set */
36
- export function mergeIntervals(intervals) {
49
+ function mergeIntervals(intervals) {
37
50
  if (intervals.length === 0)
38
51
  return [];
39
52
  const sorted = [...intervals].sort((a, b) => a.start.getTime() - b.start.getTime());
@@ -54,7 +67,7 @@ export function mergeIntervals(intervals) {
54
67
  return result;
55
68
  }
56
69
  /** Subtract interval b from a (can split into 0,1,2 intervals) */
57
- export function subtractInterval(a, b) {
70
+ function subtractInterval(a, b) {
58
71
  if (!intervalsOverlap(a, b))
59
72
  return [a];
60
73
  const parts = [];
@@ -65,7 +78,7 @@ export function subtractInterval(a, b) {
65
78
  return parts;
66
79
  }
67
80
  /** Split an interval into day-boundary intervals (UTC based) */
68
- export function splitIntervalByDay(i) {
81
+ function splitIntervalByDay(i) {
69
82
  const res = [];
70
83
  let cursor = new Date(i.start);
71
84
  while (cursor < i.end) {
@@ -77,10 +90,10 @@ export function splitIntervalByDay(i) {
77
90
  return res;
78
91
  }
79
92
  /** Total covered duration of possibly overlapping intervals */
80
- export function totalIntervalCoverage(intervals) {
93
+ function totalIntervalCoverage(intervals) {
81
94
  return mergeIntervals(intervals).reduce((sum, i) => sum + intervalDuration(i), 0);
82
95
  }
83
96
  /** Normalize array: filter invalid and merge */
84
- export function normalizeIntervals(intervals) {
97
+ function normalizeIntervals(intervals) {
85
98
  return mergeIntervals(intervals.filter(isValidInterval));
86
99
  }
@@ -1,6 +1,49 @@
1
+ "use strict";
1
2
  /**
2
3
  * @fileoverview Date iteration utilities for generating date sequences
3
4
  */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.eachDay = eachDay;
7
+ exports.eachWeekday = eachWeekday;
8
+ exports.eachWeekend = eachWeekend;
9
+ exports.eachWeek = eachWeek;
10
+ exports.eachMonth = eachMonth;
11
+ exports.eachQuarter = eachQuarter;
12
+ exports.eachYear = eachYear;
13
+ exports.eachHour = eachHour;
14
+ exports.eachMinute = eachMinute;
15
+ exports.eachDayOfWeek = eachDayOfWeek;
16
+ exports.eachInterval = eachInterval;
17
+ exports.countDays = countDays;
18
+ exports.countWeekdays = countWeekdays;
19
+ exports.countWeekendDays = countWeekendDays;
20
+ exports.countWeeks = countWeeks;
21
+ exports.countMonths = countMonths;
22
+ exports.iterateDates = iterateDates;
23
+ exports.iterateDays = iterateDays;
24
+ exports.iterateWeekdays = iterateWeekdays;
25
+ exports.iterateMonths = iterateMonths;
26
+ exports.filterDays = filterDays;
27
+ exports.eachMonthEnd = eachMonthEnd;
28
+ exports.eachNthDayOfMonth = eachNthDayOfMonth;
29
+ exports.eachWeekendOfMonth = eachWeekendOfMonth;
30
+ exports.eachWeekendOfYear = eachWeekendOfYear;
31
+ exports.previousDay = previousDay;
32
+ exports.nextDay = nextDay;
33
+ exports.previousSunday = previousSunday;
34
+ exports.previousMonday = previousMonday;
35
+ exports.previousTuesday = previousTuesday;
36
+ exports.previousWednesday = previousWednesday;
37
+ exports.previousThursday = previousThursday;
38
+ exports.previousFriday = previousFriday;
39
+ exports.previousSaturday = previousSaturday;
40
+ exports.nextSunday = nextSunday;
41
+ exports.nextMonday = nextMonday;
42
+ exports.nextTuesday = nextTuesday;
43
+ exports.nextWednesday = nextWednesday;
44
+ exports.nextThursday = nextThursday;
45
+ exports.nextFriday = nextFriday;
46
+ exports.nextSaturday = nextSaturday;
4
47
  /**
5
48
  * Generate an array of dates for each day in a range
6
49
  * @param start - Start date (inclusive)
@@ -10,7 +53,7 @@
10
53
  * eachDay(new Date('2024-01-01'), new Date('2024-01-05'))
11
54
  * // [Jan 1, Jan 2, Jan 3, Jan 4, Jan 5]
12
55
  */
13
- export function eachDay(start, end) {
56
+ function eachDay(start, end) {
14
57
  const result = [];
15
58
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
16
59
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -29,7 +72,7 @@ export function eachDay(start, end) {
29
72
  * eachWeekday(new Date('2024-01-01'), new Date('2024-01-07'))
30
73
  * // [Jan 1 (Mon), Jan 2 (Tue), Jan 3 (Wed), Jan 4 (Thu), Jan 5 (Fri)]
31
74
  */
32
- export function eachWeekday(start, end) {
75
+ function eachWeekday(start, end) {
33
76
  const result = [];
34
77
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
35
78
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -48,7 +91,7 @@ export function eachWeekday(start, end) {
48
91
  * @param end - End date (inclusive)
49
92
  * @returns Array of weekend dates
50
93
  */
51
- export function eachWeekend(start, end) {
94
+ function eachWeekend(start, end) {
52
95
  const result = [];
53
96
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
54
97
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -71,7 +114,7 @@ export function eachWeekend(start, end) {
71
114
  * eachWeek(new Date('2024-01-01'), new Date('2024-01-31'))
72
115
  * // [Jan 7, Jan 14, Jan 21, Jan 28] (Sundays)
73
116
  */
74
- export function eachWeek(start, end, weekStartsOn = 0) {
117
+ function eachWeek(start, end, weekStartsOn = 0) {
75
118
  const result = [];
76
119
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
77
120
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -95,7 +138,7 @@ export function eachWeek(start, end, weekStartsOn = 0) {
95
138
  * eachMonth(new Date('2024-01-15'), new Date('2024-04-15'))
96
139
  * // [Feb 1, Mar 1, Apr 1]
97
140
  */
98
- export function eachMonth(start, end) {
141
+ function eachMonth(start, end) {
99
142
  const result = [];
100
143
  const current = new Date(start.getFullYear(), start.getMonth() + 1, 1);
101
144
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -111,7 +154,7 @@ export function eachMonth(start, end) {
111
154
  * @param end - End date (inclusive)
112
155
  * @returns Array of quarter start dates
113
156
  */
114
- export function eachQuarter(start, end) {
157
+ function eachQuarter(start, end) {
115
158
  const result = [];
116
159
  // Start from beginning of next quarter after start date
117
160
  const startMonth = start.getMonth();
@@ -130,7 +173,7 @@ export function eachQuarter(start, end) {
130
173
  * @param end - End date (inclusive)
131
174
  * @returns Array of year start dates
132
175
  */
133
- export function eachYear(start, end) {
176
+ function eachYear(start, end) {
134
177
  const result = [];
135
178
  const startYear = start.getMonth() === 0 && start.getDate() === 1
136
179
  ? start.getFullYear()
@@ -151,7 +194,7 @@ export function eachYear(start, end) {
151
194
  * eachHour(new Date('2024-01-01T09:00'), new Date('2024-01-01T12:00'))
152
195
  * // [9:00, 10:00, 11:00, 12:00]
153
196
  */
154
- export function eachHour(start, end, step = 1) {
197
+ function eachHour(start, end, step = 1) {
155
198
  const result = [];
156
199
  const current = new Date(start);
157
200
  current.setMinutes(0, 0, 0);
@@ -171,7 +214,7 @@ export function eachHour(start, end, step = 1) {
171
214
  * eachMinute(new Date('2024-01-01T09:00'), new Date('2024-01-01T09:05'))
172
215
  * // [9:00, 9:01, 9:02, 9:03, 9:04, 9:05]
173
216
  */
174
- export function eachMinute(start, end, step = 1) {
217
+ function eachMinute(start, end, step = 1) {
175
218
  const result = [];
176
219
  const current = new Date(start);
177
220
  current.setSeconds(0, 0);
@@ -191,7 +234,7 @@ export function eachMinute(start, end, step = 1) {
191
234
  * eachDayOfWeek(new Date('2024-01-01'), new Date('2024-01-31'), 1)
192
235
  * // All Mondays in January 2024
193
236
  */
194
- export function eachDayOfWeek(start, end, dayOfWeek) {
237
+ function eachDayOfWeek(start, end, dayOfWeek) {
195
238
  const result = [];
196
239
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
197
240
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -215,7 +258,7 @@ export function eachDayOfWeek(start, end, dayOfWeek) {
215
258
  * eachInterval(start, end, { weeks: 2 }) // Every 2 weeks
216
259
  * eachInterval(start, end, { hours: 6 }) // Every 6 hours
217
260
  */
218
- export function eachInterval(start, end, interval) {
261
+ function eachInterval(start, end, interval) {
219
262
  const result = [];
220
263
  const current = new Date(start);
221
264
  while (current <= end) {
@@ -250,7 +293,7 @@ export function eachInterval(start, end, interval) {
250
293
  * @param end - End date (inclusive)
251
294
  * @returns Number of days
252
295
  */
253
- export function countDays(start, end) {
296
+ function countDays(start, end) {
254
297
  const startDay = new Date(start.getFullYear(), start.getMonth(), start.getDate());
255
298
  const endDay = new Date(end.getFullYear(), end.getMonth(), end.getDate());
256
299
  return Math.round((endDay.getTime() - startDay.getTime()) / 86400000) + 1;
@@ -261,7 +304,7 @@ export function countDays(start, end) {
261
304
  * @param end - End date (inclusive)
262
305
  * @returns Number of weekdays
263
306
  */
264
- export function countWeekdays(start, end) {
307
+ function countWeekdays(start, end) {
265
308
  return eachWeekday(start, end).length;
266
309
  }
267
310
  /**
@@ -270,7 +313,7 @@ export function countWeekdays(start, end) {
270
313
  * @param end - End date (inclusive)
271
314
  * @returns Number of weekend days
272
315
  */
273
- export function countWeekendDays(start, end) {
316
+ function countWeekendDays(start, end) {
274
317
  return eachWeekend(start, end).length;
275
318
  }
276
319
  /**
@@ -279,7 +322,7 @@ export function countWeekendDays(start, end) {
279
322
  * @param end - End date (inclusive)
280
323
  * @returns Number of weeks
281
324
  */
282
- export function countWeeks(start, end) {
325
+ function countWeeks(start, end) {
283
326
  const days = countDays(start, end);
284
327
  return Math.ceil(days / 7);
285
328
  }
@@ -289,7 +332,7 @@ export function countWeeks(start, end) {
289
332
  * @param end - End date (inclusive)
290
333
  * @returns Number of months (partial months count as 1)
291
334
  */
292
- export function countMonths(start, end) {
335
+ function countMonths(start, end) {
293
336
  const yearDiff = end.getFullYear() - start.getFullYear();
294
337
  const monthDiff = end.getMonth() - start.getMonth();
295
338
  return yearDiff * 12 + monthDiff + 1;
@@ -301,7 +344,7 @@ export function countMonths(start, end) {
301
344
  * @param step - Step function to advance the date
302
345
  * @yields Date objects
303
346
  */
304
- export function* iterateDates(start, end, step = (d) => d.setDate(d.getDate() + 1)) {
347
+ function* iterateDates(start, end, step = (d) => d.setDate(d.getDate() + 1)) {
305
348
  const current = new Date(start);
306
349
  while (current <= end) {
307
350
  yield new Date(current);
@@ -314,7 +357,7 @@ export function* iterateDates(start, end, step = (d) => d.setDate(d.getDate() +
314
357
  * @param end - End date
315
358
  * @yields Each day in the range
316
359
  */
317
- export function* iterateDays(start, end) {
360
+ function* iterateDays(start, end) {
318
361
  yield* iterateDates(start, end, (d) => d.setDate(d.getDate() + 1));
319
362
  }
320
363
  /**
@@ -323,7 +366,7 @@ export function* iterateDays(start, end) {
323
366
  * @param end - End date
324
367
  * @yields Each weekday in the range
325
368
  */
326
- export function* iterateWeekdays(start, end) {
369
+ function* iterateWeekdays(start, end) {
327
370
  const current = new Date(start.getFullYear(), start.getMonth(), start.getDate());
328
371
  while (current <= end) {
329
372
  const day = current.getDay();
@@ -339,7 +382,7 @@ export function* iterateWeekdays(start, end) {
339
382
  * @param end - End date
340
383
  * @yields First day of each month in the range
341
384
  */
342
- export function* iterateMonths(start, end) {
385
+ function* iterateMonths(start, end) {
343
386
  const current = new Date(start.getFullYear(), start.getMonth(), 1);
344
387
  while (current <= end) {
345
388
  yield new Date(current);
@@ -356,7 +399,7 @@ export function* iterateMonths(start, end) {
356
399
  * // Get all 15th days of each month
357
400
  * filterDays(start, end, d => d.getDate() === 15)
358
401
  */
359
- export function filterDays(start, end, filter) {
402
+ function filterDays(start, end, filter) {
360
403
  const result = [];
361
404
  for (const date of iterateDays(start, end)) {
362
405
  if (filter(date)) {
@@ -371,7 +414,7 @@ export function filterDays(start, end, filter) {
371
414
  * @param end - End date
372
415
  * @returns Array of last-of-month dates
373
416
  */
374
- export function eachMonthEnd(start, end) {
417
+ function eachMonthEnd(start, end) {
375
418
  const result = [];
376
419
  const current = new Date(start.getFullYear(), start.getMonth() + 1, 0);
377
420
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -392,7 +435,7 @@ export function eachMonthEnd(start, end) {
392
435
  * eachNthDayOfMonth(start, end, 15) // 15th of each month
393
436
  * eachNthDayOfMonth(start, end, 31) // Last day of short months, 31st otherwise
394
437
  */
395
- export function eachNthDayOfMonth(start, end, dayOfMonth) {
438
+ function eachNthDayOfMonth(start, end, dayOfMonth) {
396
439
  const result = [];
397
440
  let current = new Date(start.getFullYear(), start.getMonth(), 1);
398
441
  const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());
@@ -413,7 +456,7 @@ export function eachNthDayOfMonth(start, end, dayOfMonth) {
413
456
  * @param month - month (0-11)
414
457
  * @returns Array of weekend dates
415
458
  */
416
- export function eachWeekendOfMonth(year, month) {
459
+ function eachWeekendOfMonth(year, month) {
417
460
  const result = [];
418
461
  const daysInMonth = new Date(year, month + 1, 0).getDate();
419
462
  for (let day = 1; day <= daysInMonth; day++) {
@@ -430,7 +473,7 @@ export function eachWeekendOfMonth(year, month) {
430
473
  * @param year - year
431
474
  * @returns Array of weekend dates
432
475
  */
433
- export function eachWeekendOfYear(year) {
476
+ function eachWeekendOfYear(year) {
434
477
  const result = [];
435
478
  for (let month = 0; month < 12; month++) {
436
479
  result.push(...eachWeekendOfMonth(year, month));
@@ -443,7 +486,7 @@ export function eachWeekendOfYear(year) {
443
486
  * @param dayOfWeek - target day (0=Sunday, 6=Saturday)
444
487
  * @returns The previous occurrence (not including date itself)
445
488
  */
446
- export function previousDay(date, dayOfWeek) {
489
+ function previousDay(date, dayOfWeek) {
447
490
  const result = new Date(date);
448
491
  result.setHours(0, 0, 0, 0);
449
492
  const currentDay = result.getDay();
@@ -457,7 +500,7 @@ export function previousDay(date, dayOfWeek) {
457
500
  * @param dayOfWeek - target day (0=Sunday, 6=Saturday)
458
501
  * @returns The next occurrence (not including date itself)
459
502
  */
460
- export function nextDay(date, dayOfWeek) {
503
+ function nextDay(date, dayOfWeek) {
461
504
  const result = new Date(date);
462
505
  result.setHours(0, 0, 0, 0);
463
506
  const currentDay = result.getDay();
@@ -466,30 +509,30 @@ export function nextDay(date, dayOfWeek) {
466
509
  return result;
467
510
  }
468
511
  /** Get the previous Sunday */
469
- export function previousSunday(date) { return previousDay(date, 0); }
512
+ function previousSunday(date) { return previousDay(date, 0); }
470
513
  /** Get the previous Monday */
471
- export function previousMonday(date) { return previousDay(date, 1); }
514
+ function previousMonday(date) { return previousDay(date, 1); }
472
515
  /** Get the previous Tuesday */
473
- export function previousTuesday(date) { return previousDay(date, 2); }
516
+ function previousTuesday(date) { return previousDay(date, 2); }
474
517
  /** Get the previous Wednesday */
475
- export function previousWednesday(date) { return previousDay(date, 3); }
518
+ function previousWednesday(date) { return previousDay(date, 3); }
476
519
  /** Get the previous Thursday */
477
- export function previousThursday(date) { return previousDay(date, 4); }
520
+ function previousThursday(date) { return previousDay(date, 4); }
478
521
  /** Get the previous Friday */
479
- export function previousFriday(date) { return previousDay(date, 5); }
522
+ function previousFriday(date) { return previousDay(date, 5); }
480
523
  /** Get the previous Saturday */
481
- export function previousSaturday(date) { return previousDay(date, 6); }
524
+ function previousSaturday(date) { return previousDay(date, 6); }
482
525
  /** Get the next Sunday */
483
- export function nextSunday(date) { return nextDay(date, 0); }
526
+ function nextSunday(date) { return nextDay(date, 0); }
484
527
  /** Get the next Monday */
485
- export function nextMonday(date) { return nextDay(date, 1); }
528
+ function nextMonday(date) { return nextDay(date, 1); }
486
529
  /** Get the next Tuesday */
487
- export function nextTuesday(date) { return nextDay(date, 2); }
530
+ function nextTuesday(date) { return nextDay(date, 2); }
488
531
  /** Get the next Wednesday */
489
- export function nextWednesday(date) { return nextDay(date, 3); }
532
+ function nextWednesday(date) { return nextDay(date, 3); }
490
533
  /** Get the next Thursday */
491
- export function nextThursday(date) { return nextDay(date, 4); }
534
+ function nextThursday(date) { return nextDay(date, 4); }
492
535
  /** Get the next Friday */
493
- export function nextFriday(date) { return nextDay(date, 5); }
536
+ function nextFriday(date) { return nextDay(date, 5); }
494
537
  /** Get the next Saturday */
495
- export function nextSaturday(date) { return nextDay(date, 6); }
538
+ function nextSaturday(date) { return nextDay(date, 6); }