@choksheak/ts-utils 0.2.9 → 0.3.1

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 (315) hide show
  1. package/README.md +2 -0
  2. package/{arrayBuffer.js → arrayBuffer.cjs} +0 -1
  3. package/arrayBuffer.d.mts +10 -0
  4. package/arrayBuffer.d.ts +4 -2
  5. package/arrayBuffer.min.cjs +2 -0
  6. package/arrayBuffer.min.cjs.map +1 -0
  7. package/arrayBuffer.min.mjs +2 -0
  8. package/{arrayBuffer.js.map → arrayBuffer.min.mjs.map} +1 -1
  9. package/arrayBuffer.mjs +14 -0
  10. package/{assert.js → assert.cjs} +0 -1
  11. package/assert.d.mts +7 -0
  12. package/assert.d.ts +3 -1
  13. package/assert.min.cjs +2 -0
  14. package/assert.min.cjs.map +1 -0
  15. package/assert.min.mjs +2 -0
  16. package/{assert.js.map → assert.min.mjs.map} +1 -1
  17. package/assert.mjs +11 -0
  18. package/{average.js → average.cjs} +0 -1
  19. package/average.d.mts +7 -0
  20. package/average.d.ts +3 -1
  21. package/average.min.cjs +2 -0
  22. package/{average.js.map → average.min.cjs.map} +1 -1
  23. package/average.min.mjs +2 -0
  24. package/average.min.mjs.map +1 -0
  25. package/average.mjs +20 -0
  26. package/{base64Url.js → base64Url.cjs} +0 -1
  27. package/base64Url.d.mts +10 -0
  28. package/base64Url.d.ts +4 -2
  29. package/base64Url.min.cjs +2 -0
  30. package/base64Url.min.cjs.map +1 -0
  31. package/base64Url.min.mjs +2 -0
  32. package/{base64Url.js.map → base64Url.min.mjs.map} +1 -1
  33. package/base64Url.mjs +14 -0
  34. package/{dateTimeStr.js → dateTimeStr.cjs} +0 -1
  35. package/dateTimeStr.d.mts +85 -0
  36. package/dateTimeStr.d.ts +15 -13
  37. package/dateTimeStr.min.cjs +2 -0
  38. package/dateTimeStr.min.cjs.map +1 -0
  39. package/dateTimeStr.min.mjs +2 -0
  40. package/{dateTimeStr.js.map → dateTimeStr.min.mjs.map} +1 -1
  41. package/dateTimeStr.mjs +83 -0
  42. package/{duration.js → duration.cjs} +9 -11
  43. package/duration.d.mts +78 -0
  44. package/duration.d.ts +15 -13
  45. package/duration.min.cjs +2 -0
  46. package/duration.min.cjs.map +1 -0
  47. package/duration.min.mjs +2 -0
  48. package/duration.min.mjs.map +1 -0
  49. package/duration.mjs +154 -0
  50. package/{isEmpty.js → isEmpty.cjs} +0 -1
  51. package/isEmpty.d.mts +6 -0
  52. package/isEmpty.d.ts +3 -1
  53. package/isEmpty.min.cjs +2 -0
  54. package/isEmpty.min.cjs.map +1 -0
  55. package/isEmpty.min.mjs +2 -0
  56. package/{isEmpty.js.map → isEmpty.min.mjs.map} +1 -1
  57. package/isEmpty.mjs +22 -0
  58. package/iterators.cjs +34 -0
  59. package/iterators.d.mts +4 -0
  60. package/iterators.d.ts +4 -0
  61. package/iterators.min.cjs +2 -0
  62. package/iterators.min.cjs.map +1 -0
  63. package/iterators.min.mjs +2 -0
  64. package/iterators.min.mjs.map +1 -0
  65. package/iterators.mjs +9 -0
  66. package/kvStore.cjs +365 -0
  67. package/kvStore.d.mts +139 -0
  68. package/kvStore.d.ts +95 -50
  69. package/kvStore.min.cjs +2 -0
  70. package/kvStore.min.cjs.map +1 -0
  71. package/kvStore.min.mjs +2 -0
  72. package/kvStore.min.mjs.map +1 -0
  73. package/kvStore.mjs +333 -0
  74. package/localStore.cjs +267 -0
  75. package/localStore.d.mts +119 -0
  76. package/localStore.d.ts +119 -0
  77. package/localStore.min.cjs +2 -0
  78. package/localStore.min.cjs.map +1 -0
  79. package/localStore.min.mjs +2 -0
  80. package/localStore.min.mjs.map +1 -0
  81. package/localStore.mjs +235 -0
  82. package/{logging.js → logging.cjs} +0 -1
  83. package/logging.d.mts +4 -0
  84. package/logging.d.ts +4 -2
  85. package/logging.min.cjs +2 -0
  86. package/logging.min.cjs.map +1 -0
  87. package/logging.min.mjs +2 -0
  88. package/{logging.js.map → logging.min.mjs.map} +1 -1
  89. package/logging.mjs +21 -0
  90. package/{nonEmpty.js → nonEmpty.cjs} +0 -1
  91. package/nonEmpty.d.mts +10 -0
  92. package/nonEmpty.d.ts +3 -1
  93. package/nonEmpty.min.cjs +2 -0
  94. package/{nonEmpty.js.map → nonEmpty.min.cjs.map} +1 -1
  95. package/nonEmpty.min.mjs +2 -0
  96. package/nonEmpty.min.mjs.map +1 -0
  97. package/nonEmpty.mjs +30 -0
  98. package/{nonNil.js → nonNil.cjs} +0 -1
  99. package/{src/nonNil.ts → nonNil.d.mts} +3 -6
  100. package/nonNil.d.ts +3 -1
  101. package/nonNil.min.cjs +2 -0
  102. package/nonNil.min.cjs.map +1 -0
  103. package/nonNil.min.mjs +2 -0
  104. package/{nonNil.js.map → nonNil.min.mjs.map} +1 -1
  105. package/nonNil.mjs +10 -0
  106. package/package.json +447 -24
  107. package/{round.js → round.cjs} +0 -1
  108. package/{src/round.ts → round.d.mts} +4 -8
  109. package/round.d.ts +4 -2
  110. package/round.min.cjs +2 -0
  111. package/round.min.cjs.map +1 -0
  112. package/round.min.mjs +2 -0
  113. package/{round.js.map → round.min.mjs.map} +1 -1
  114. package/round.mjs +12 -0
  115. package/{safeBtoa.js → safeBtoa.cjs} +0 -1
  116. package/safeBtoa.d.mts +6 -0
  117. package/safeBtoa.d.ts +3 -1
  118. package/safeBtoa.min.cjs +2 -0
  119. package/safeBtoa.min.cjs.map +1 -0
  120. package/safeBtoa.min.mjs +2 -0
  121. package/{safeBtoa.js.map → safeBtoa.min.mjs.map} +1 -1
  122. package/safeBtoa.mjs +9 -0
  123. package/{safeParseFloat.js → safeParseFloat.cjs} +0 -1
  124. package/safeParseFloat.d.mts +6 -0
  125. package/safeParseFloat.d.ts +3 -1
  126. package/safeParseFloat.min.cjs +2 -0
  127. package/safeParseFloat.min.cjs.map +1 -0
  128. package/safeParseFloat.min.mjs +2 -0
  129. package/{safeParseFloat.js.map → safeParseFloat.min.mjs.map} +1 -1
  130. package/safeParseFloat.mjs +8 -0
  131. package/{safeParseInt.js → safeParseInt.cjs} +0 -1
  132. package/safeParseInt.d.mts +6 -0
  133. package/safeParseInt.d.ts +3 -1
  134. package/safeParseInt.min.cjs +2 -0
  135. package/safeParseInt.min.cjs.map +1 -0
  136. package/safeParseInt.min.mjs +2 -0
  137. package/{safeParseInt.js.map → safeParseInt.min.mjs.map} +1 -1
  138. package/safeParseInt.mjs +8 -0
  139. package/sha256.cjs +35 -0
  140. package/sha256.d.mts +6 -0
  141. package/sha256.d.ts +3 -1
  142. package/sha256.min.cjs +2 -0
  143. package/sha256.min.cjs.map +1 -0
  144. package/sha256.min.mjs +2 -0
  145. package/{sha256.js.map → sha256.min.mjs.map} +1 -1
  146. package/sha256.mjs +10 -0
  147. package/{sleep.js → sleep.cjs} +0 -1
  148. package/{src/sleep.ts → sleep.d.mts} +3 -3
  149. package/sleep.d.ts +3 -1
  150. package/sleep.min.cjs +2 -0
  151. package/sleep.min.cjs.map +1 -0
  152. package/sleep.min.mjs +2 -0
  153. package/{sleep.js.map → sleep.min.mjs.map} +1 -1
  154. package/sleep.mjs +7 -0
  155. package/storageAdapter.cjs +18 -0
  156. package/storageAdapter.d.mts +33 -0
  157. package/storageAdapter.d.ts +33 -0
  158. package/storageAdapter.min.cjs +2 -0
  159. package/storageAdapter.min.cjs.map +1 -0
  160. package/storageAdapter.min.mjs +1 -0
  161. package/storageAdapter.min.mjs.map +1 -0
  162. package/storageAdapter.mjs +0 -0
  163. package/{sum.js → sum.cjs} +0 -1
  164. package/sum.d.mts +7 -0
  165. package/sum.d.ts +3 -1
  166. package/sum.min.cjs +2 -0
  167. package/sum.min.cjs.map +1 -0
  168. package/sum.min.mjs +2 -0
  169. package/{sum.js.map → sum.min.mjs.map} +1 -1
  170. package/sum.mjs +13 -0
  171. package/{timeConstants.js → timeConstants.cjs} +0 -1
  172. package/timeConstants.d.mts +20 -0
  173. package/timeConstants.d.ts +16 -14
  174. package/timeConstants.min.cjs +2 -0
  175. package/timeConstants.min.cjs.map +1 -0
  176. package/timeConstants.min.mjs +2 -0
  177. package/{timeConstants.js.map → timeConstants.min.mjs.map} +1 -1
  178. package/timeConstants.mjs +31 -0
  179. package/{timer.js → timer.cjs} +6 -6
  180. package/timer.d.mts +13 -0
  181. package/timer.d.ts +4 -2
  182. package/timer.min.cjs +2 -0
  183. package/timer.min.cjs.map +1 -0
  184. package/timer.min.mjs +2 -0
  185. package/timer.min.mjs.map +1 -0
  186. package/timer.mjs +161 -0
  187. package/docs/.nojekyll +0 -1
  188. package/docs/assets/hierarchy.js +0 -1
  189. package/docs/assets/highlight.css +0 -22
  190. package/docs/assets/icons.js +0 -18
  191. package/docs/assets/icons.svg +0 -1
  192. package/docs/assets/main.js +0 -60
  193. package/docs/assets/navigation.js +0 -1
  194. package/docs/assets/search.js +0 -1
  195. package/docs/assets/style.css +0 -1640
  196. package/docs/classes/kvStore.KVStore.html +0 -26
  197. package/docs/classes/kvStore.KVStoreField.html +0 -7
  198. package/docs/classes/timer.Timer.html +0 -8
  199. package/docs/functions/arrayBuffer.arrayBufferToBase64.html +0 -2
  200. package/docs/functions/arrayBuffer.arrayBufferToHex.html +0 -2
  201. package/docs/functions/assert.assert.html +0 -3
  202. package/docs/functions/average.average.html +0 -3
  203. package/docs/functions/base64Url.base64ToBase64URL.html +0 -2
  204. package/docs/functions/base64Url.base64UrlToBase64.html +0 -2
  205. package/docs/functions/dateTimeStr.getDisplayDateTime.html +0 -3
  206. package/docs/functions/dateTimeStr.getLongMonthNameOneIndexed.html +0 -4
  207. package/docs/functions/dateTimeStr.getLongMonthNameZeroIndexed.html +0 -4
  208. package/docs/functions/dateTimeStr.getShortMonthNameOneIndexed.html +0 -4
  209. package/docs/functions/dateTimeStr.getShortMonthNameZeroIndexed.html +0 -4
  210. package/docs/functions/dateTimeStr.hhMm.html +0 -4
  211. package/docs/functions/dateTimeStr.hhMmSs.html +0 -4
  212. package/docs/functions/dateTimeStr.hhMmSsMs.html +0 -5
  213. package/docs/functions/dateTimeStr.toDate.html +0 -4
  214. package/docs/functions/dateTimeStr.tzShort.html +0 -4
  215. package/docs/functions/dateTimeStr.yyyyMm.html +0 -4
  216. package/docs/functions/dateTimeStr.yyyyMmDd.html +0 -4
  217. package/docs/functions/duration.durationOrMsToMs.html +0 -2
  218. package/docs/functions/duration.durationToMs.html +0 -2
  219. package/docs/functions/duration.elapsed.html +0 -2
  220. package/docs/functions/duration.formatDuration.html +0 -4
  221. package/docs/functions/duration.msToDuration.html +0 -5
  222. package/docs/functions/duration.readableDuration.html +0 -4
  223. package/docs/functions/isEmpty.isEmpty.html +0 -2
  224. package/docs/functions/kvStore.kvStoreItem.html +0 -2
  225. package/docs/functions/localStorageCache.storeItem.html +0 -15
  226. package/docs/functions/logging.capLength.html +0 -1
  227. package/docs/functions/logging.stringify.html +0 -1
  228. package/docs/functions/nonEmpty.nonEmpty.html +0 -5
  229. package/docs/functions/nonNil.nonNil.html +0 -5
  230. package/docs/functions/round.round.html +0 -5
  231. package/docs/functions/round.roundS.html +0 -3
  232. package/docs/functions/safeBtoa.safeBtoa.html +0 -2
  233. package/docs/functions/safeParseFloat.safeParseFloat.html +0 -2
  234. package/docs/functions/safeParseInt.safeParseInt.html +0 -2
  235. package/docs/functions/sha256.sha256.html +0 -2
  236. package/docs/functions/sleep.sleep.html +0 -3
  237. package/docs/functions/sum.sum.html +0 -3
  238. package/docs/functions/timer.timer.html +0 -2
  239. package/docs/hierarchy.html +0 -1
  240. package/docs/index.html +0 -4
  241. package/docs/modules/arrayBuffer.html +0 -1
  242. package/docs/modules/assert.html +0 -1
  243. package/docs/modules/average.html +0 -1
  244. package/docs/modules/base64Url.html +0 -1
  245. package/docs/modules/dateTimeStr.html +0 -1
  246. package/docs/modules/duration.html +0 -1
  247. package/docs/modules/isEmpty.html +0 -1
  248. package/docs/modules/kvStore.html +0 -1
  249. package/docs/modules/localStorageCache.html +0 -1
  250. package/docs/modules/logging.html +0 -1
  251. package/docs/modules/nonEmpty.html +0 -1
  252. package/docs/modules/nonNil.html +0 -1
  253. package/docs/modules/round.html +0 -1
  254. package/docs/modules/safeBtoa.html +0 -1
  255. package/docs/modules/safeParseFloat.html +0 -1
  256. package/docs/modules/safeParseInt.html +0 -1
  257. package/docs/modules/sha256.html +0 -1
  258. package/docs/modules/sleep.html +0 -1
  259. package/docs/modules/sum.html +0 -1
  260. package/docs/modules/timeConstants.html +0 -1
  261. package/docs/modules/timer.html +0 -1
  262. package/docs/modules.html +0 -1
  263. package/docs/types/dateTimeStr.AnyDateTime.html +0 -1
  264. package/docs/types/duration.Duration.html +0 -6
  265. package/docs/types/duration.DurationStyle.html +0 -6
  266. package/docs/types/duration.DurationSuffixMap.html +0 -6
  267. package/docs/types/duration.DurationSuffixType.html +0 -1
  268. package/docs/types/duration.DurationType.html +0 -2
  269. package/docs/types/localStorageCache.StoredItem.html +0 -4
  270. package/docs/variables/duration.DURATION_STYLE_SUFFIX_MAP.html +0 -1
  271. package/docs/variables/duration.DURATION_TYPE_SEQUENCE.html +0 -2
  272. package/docs/variables/kvStore.DEFAULT_EXPIRY_DELTA_MS.html +0 -2
  273. package/docs/variables/kvStore.GC_INTERVAL_MS.html +0 -2
  274. package/docs/variables/kvStore.MILLIS_PER_DAY.html +0 -2
  275. package/docs/variables/kvStore.kvStore.html +0 -3
  276. package/docs/variables/timeConstants.HOURS_PER_DAY.html +0 -1
  277. package/docs/variables/timeConstants.HOURS_PER_WEEK.html +0 -1
  278. package/docs/variables/timeConstants.MINUTES_PER_DAY.html +0 -1
  279. package/docs/variables/timeConstants.MINUTES_PER_HOUR.html +0 -1
  280. package/docs/variables/timeConstants.MINUTES_PER_WEEK.html +0 -1
  281. package/docs/variables/timeConstants.MS_PER_DAY.html +0 -1
  282. package/docs/variables/timeConstants.MS_PER_HOUR.html +0 -1
  283. package/docs/variables/timeConstants.MS_PER_MINUTE.html +0 -1
  284. package/docs/variables/timeConstants.MS_PER_SECOND.html +0 -3
  285. package/docs/variables/timeConstants.MS_PER_WEEK.html +0 -1
  286. package/docs/variables/timeConstants.SECONDS_PER_DAY.html +0 -1
  287. package/docs/variables/timeConstants.SECONDS_PER_HOUR.html +0 -1
  288. package/docs/variables/timeConstants.SECONDS_PER_MINUTE.html +0 -1
  289. package/docs/variables/timeConstants.SECONDS_PER_WEEK.html +0 -1
  290. package/duration.js.map +0 -1
  291. package/kvStore.js +0 -383
  292. package/kvStore.js.map +0 -1
  293. package/localStorageCache.d.ts +0 -55
  294. package/localStorageCache.js +0 -121
  295. package/localStorageCache.js.map +0 -1
  296. package/sha256.js +0 -58
  297. package/src/arrayBuffer.ts +0 -29
  298. package/src/assert.ts +0 -14
  299. package/src/average.ts +0 -13
  300. package/src/base64Url.ts +0 -20
  301. package/src/dateTimeStr.ts +0 -184
  302. package/src/duration.ts +0 -260
  303. package/src/isEmpty.ts +0 -32
  304. package/src/kvStore.ts +0 -444
  305. package/src/localStorageCache.ts +0 -121
  306. package/src/logging.ts +0 -26
  307. package/src/nonEmpty.ts +0 -18
  308. package/src/safeBtoa.ts +0 -15
  309. package/src/safeParseFloat.ts +0 -10
  310. package/src/safeParseInt.ts +0 -10
  311. package/src/sha256.ts +0 -13
  312. package/src/sum.ts +0 -17
  313. package/src/timeConstants.ts +0 -22
  314. package/src/timer.ts +0 -33
  315. package/timer.js.map +0 -1
@@ -0,0 +1,83 @@
1
+ // src/dateTimeStr.ts
2
+ function isAllDigits(str) {
3
+ return /^\d+$/.test(str);
4
+ }
5
+ function toDate(ts) {
6
+ if (typeof ts === "number") {
7
+ if (ts < 1e11) {
8
+ return new Date(ts * 1e3);
9
+ }
10
+ return new Date(ts);
11
+ }
12
+ if (typeof ts === "string") {
13
+ if (isAllDigits(ts)) {
14
+ return toDate(Number(ts));
15
+ }
16
+ return new Date(ts);
17
+ }
18
+ return ts;
19
+ }
20
+ function yyyyMm(dt = /* @__PURE__ */ new Date(), separator = "-") {
21
+ const yr = dt.getFullYear();
22
+ const mth = dt.getMonth() + 1;
23
+ return yr + separator + (mth < 10 ? "0" + mth : mth);
24
+ }
25
+ function yyyyMmDd(dt = /* @__PURE__ */ new Date(), separator = "-") {
26
+ const day = dt.getDate();
27
+ return yyyyMm(dt, separator) + separator + (day < 10 ? "0" + day : day);
28
+ }
29
+ function hhMm(dt = /* @__PURE__ */ new Date(), separator = ":") {
30
+ const hr = dt.getHours();
31
+ const min = dt.getMinutes();
32
+ return (hr < 10 ? "0" + hr : hr) + separator + (min < 10 ? "0" + min : min);
33
+ }
34
+ function hhMmSs(dt = /* @__PURE__ */ new Date(), separator = ":") {
35
+ const sec = dt.getSeconds();
36
+ return hhMm(dt, separator) + separator + (sec < 10 ? "0" + sec : sec);
37
+ }
38
+ function hhMmSsMs(dt = /* @__PURE__ */ new Date(), timeSeparator = ":", msSeparator = ".") {
39
+ const ms = dt.getMilliseconds();
40
+ return hhMmSs(dt, timeSeparator) + msSeparator + (ms < 10 ? "00" + ms : ms < 100 ? "0" + ms : ms);
41
+ }
42
+ function tzShort(dt = /* @__PURE__ */ new Date()) {
43
+ if (dt.getTimezoneOffset() === 0) {
44
+ return "Z";
45
+ }
46
+ const tzHours = dt.getTimezoneOffset() / 60;
47
+ return tzHours >= 0 ? "+" + tzHours : String(tzHours);
48
+ }
49
+ function getLongMonthNameZeroIndexed(month, locales = "default") {
50
+ return new Date(2024, month, 15).toLocaleString(locales, {
51
+ month: "long"
52
+ });
53
+ }
54
+ function getLongMonthNameOneIndexed(month, locales = "default") {
55
+ return getLongMonthNameZeroIndexed(month - 1, locales);
56
+ }
57
+ function getShortMonthNameZeroIndexed(month, locales = "default") {
58
+ return new Date(2e3, month, 15).toLocaleString(locales, {
59
+ month: "short"
60
+ });
61
+ }
62
+ function getShortMonthNameOneIndexed(month, locales = "default") {
63
+ return getShortMonthNameZeroIndexed(month - 1, locales);
64
+ }
65
+ function getDisplayDateTime(ts) {
66
+ const iso = toDate(ts).toISOString();
67
+ const noMs = iso.slice(0, 19) + "Z";
68
+ return noMs.replace("T", " ");
69
+ }
70
+ export {
71
+ getDisplayDateTime,
72
+ getLongMonthNameOneIndexed,
73
+ getLongMonthNameZeroIndexed,
74
+ getShortMonthNameOneIndexed,
75
+ getShortMonthNameZeroIndexed,
76
+ hhMm,
77
+ hhMmSs,
78
+ hhMmSsMs,
79
+ toDate,
80
+ tzShort,
81
+ yyyyMm,
82
+ yyyyMmDd
83
+ };
@@ -96,7 +96,7 @@ function getDurationTypeSeparator(style) {
96
96
  }
97
97
  function msToDuration(ms, durationTypeForZero) {
98
98
  if (ms === 0) {
99
- durationTypeForZero = durationTypeForZero != null ? durationTypeForZero : "milliseconds";
99
+ durationTypeForZero = durationTypeForZero ?? "milliseconds";
100
100
  return { [durationTypeForZero]: 0 };
101
101
  }
102
102
  const duration = {};
@@ -137,19 +137,18 @@ function msToDuration(ms, durationTypeForZero) {
137
137
  return duration;
138
138
  }
139
139
  function durationToMs(duration) {
140
- var _a, _b, _c, _d, _e;
141
- const daysMs = ((_a = duration.days) != null ? _a : 0) * MS_PER_DAY;
142
- const hoursMs = ((_b = duration.hours) != null ? _b : 0) * MS_PER_HOUR;
143
- const minsMs = ((_c = duration.minutes) != null ? _c : 0) * MS_PER_MINUTE;
144
- const secsMs = ((_d = duration.seconds) != null ? _d : 0) * MS_PER_SECOND;
145
- const msMs = (_e = duration.milliseconds) != null ? _e : 0;
140
+ const daysMs = (duration.days ?? 0) * MS_PER_DAY;
141
+ const hoursMs = (duration.hours ?? 0) * MS_PER_HOUR;
142
+ const minsMs = (duration.minutes ?? 0) * MS_PER_MINUTE;
143
+ const secsMs = (duration.seconds ?? 0) * MS_PER_SECOND;
144
+ const msMs = duration.milliseconds ?? 0;
146
145
  return daysMs + hoursMs + minsMs + secsMs + msMs;
147
146
  }
148
147
  function durationOrMsToMs(duration) {
149
148
  return typeof duration === "number" ? duration : durationToMs(duration);
150
149
  }
151
150
  function formatDuration(duration, style) {
152
- style = style != null ? style : "short";
151
+ style = style ?? "short";
153
152
  const stylePlural = getDurationStyleForPlural(style);
154
153
  const space = getValueAndUnitSeparator(style);
155
154
  const a = [];
@@ -164,8 +163,8 @@ function formatDuration(duration, style) {
164
163
  return a.join(separator);
165
164
  }
166
165
  function readableDuration(ms, options) {
167
- const duration = msToDuration(ms, options == null ? void 0 : options.durationTypeForZero);
168
- return formatDuration(duration, options == null ? void 0 : options.style);
166
+ const duration = msToDuration(ms, options?.durationTypeForZero);
167
+ return formatDuration(duration, options?.style);
169
168
  }
170
169
  function elapsed(ms) {
171
170
  if (ms > MS_PER_MINUTE) {
@@ -187,4 +186,3 @@ function elapsed(ms) {
187
186
  msToDuration,
188
187
  readableDuration
189
188
  });
190
- //# sourceMappingURL=duration.js.map
package/duration.d.mts ADDED
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Bunch of miscellaneous constants and utility functions related to handling
3
+ * date and time durations.
4
+ *
5
+ * Note that month and year do not have fixed durations, and hence are excluded
6
+ * from this file. Weeks have fixed durations, but are excluded because we
7
+ * use days as the max duration supported.
8
+ */
9
+ type Duration = {
10
+ days?: number;
11
+ hours?: number;
12
+ minutes?: number;
13
+ seconds?: number;
14
+ milliseconds?: number;
15
+ };
16
+ /**
17
+ * One of: days, hours, minutes, seconds, milliseconds
18
+ */
19
+ type DurationType = keyof Duration;
20
+ /**
21
+ * Order in which the duration type appears in the duration string.
22
+ */
23
+ declare const DURATION_TYPE_SEQUENCE: DurationType[];
24
+ /**
25
+ * Follows the same format as Intl.DurationFormat.prototype.format().
26
+ *
27
+ * Short: 1 yr, 2 mths, 3 wks, 3 days, 4 hr, 5 min, 6 sec, 7 ms, 8 μs, 9 ns
28
+ * Long: 1 year, 2 months, 3 weeks, 3 days, 4 hours, 5 minutes, 6 seconds,
29
+ * 7 milliseconds, 8 microseconds, 9 nanoseconds
30
+ * Narrow: 1y 2mo 3w 3d 4h 5m 6s 7ms 8μs 9ns
31
+ */
32
+ type DurationStyle = "short" | "long" | "narrow";
33
+ type DurationSuffixMap = {
34
+ short: string;
35
+ shorts: string;
36
+ long: string;
37
+ longs: string;
38
+ narrow: string;
39
+ };
40
+ type DurationSuffixType = keyof DurationSuffixMap;
41
+ declare const DURATION_STYLE_SUFFIX_MAP: Record<DurationType, DurationSuffixMap>;
42
+ /**
43
+ * Convert a milliseconds duration into a Duration object. If the given ms is
44
+ * zero, then return an object with a single field of zero with duration type
45
+ * of durationTypeForZero.
46
+ *
47
+ * @param durationTypeForZero Defaults to 'milliseconds'
48
+ */
49
+ declare function msToDuration(ms: number, durationTypeForZero?: DurationType): Duration;
50
+ /**
51
+ * Returns the number of milliseconds for the given duration.
52
+ */
53
+ declare function durationToMs(duration: Duration): number;
54
+ /**
55
+ * Convenience function to return a duration given an ms or Duration.
56
+ */
57
+ declare function durationOrMsToMs(duration: number | Duration): number;
58
+ /**
59
+ * Format a given Duration object into a string. If the object has no fields,
60
+ * then returns an empty string.
61
+ *
62
+ * @param style Defaults to 'short'
63
+ */
64
+ declare function formatDuration(duration: Duration, style?: DurationStyle): string;
65
+ /**
66
+ * Convert a millisecond duration into a human-readable duration string.
67
+ *
68
+ * @param options.durationTypeForZero - Defaults to 'milliseconds'
69
+ * @param options.style - Defaults to 'short'
70
+ */
71
+ declare function readableDuration(ms: number, options?: {
72
+ durationTypeForZero?: DurationType;
73
+ style?: DurationStyle;
74
+ }): string;
75
+ /** A shortened duration string useful for logging timings. */
76
+ declare function elapsed(ms: number): string;
77
+
78
+ export { DURATION_STYLE_SUFFIX_MAP, DURATION_TYPE_SEQUENCE, type Duration, type DurationStyle, type DurationSuffixMap, type DurationSuffixType, type DurationType, durationOrMsToMs, durationToMs, elapsed, formatDuration, msToDuration, readableDuration };
package/duration.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * from this file. Weeks have fixed durations, but are excluded because we
7
7
  * use days as the max duration supported.
8
8
  */
9
- export type Duration = {
9
+ type Duration = {
10
10
  days?: number;
11
11
  hours?: number;
12
12
  minutes?: number;
@@ -16,11 +16,11 @@ export type Duration = {
16
16
  /**
17
17
  * One of: days, hours, minutes, seconds, milliseconds
18
18
  */
19
- export type DurationType = keyof Duration;
19
+ type DurationType = keyof Duration;
20
20
  /**
21
21
  * Order in which the duration type appears in the duration string.
22
22
  */
23
- export declare const DURATION_TYPE_SEQUENCE: DurationType[];
23
+ declare const DURATION_TYPE_SEQUENCE: DurationType[];
24
24
  /**
25
25
  * Follows the same format as Intl.DurationFormat.prototype.format().
26
26
  *
@@ -29,16 +29,16 @@ export declare const DURATION_TYPE_SEQUENCE: DurationType[];
29
29
  * 7 milliseconds, 8 microseconds, 9 nanoseconds
30
30
  * Narrow: 1y 2mo 3w 3d 4h 5m 6s 7ms 8μs 9ns
31
31
  */
32
- export type DurationStyle = "short" | "long" | "narrow";
33
- export type DurationSuffixMap = {
32
+ type DurationStyle = "short" | "long" | "narrow";
33
+ type DurationSuffixMap = {
34
34
  short: string;
35
35
  shorts: string;
36
36
  long: string;
37
37
  longs: string;
38
38
  narrow: string;
39
39
  };
40
- export type DurationSuffixType = keyof DurationSuffixMap;
41
- export declare const DURATION_STYLE_SUFFIX_MAP: Record<DurationType, DurationSuffixMap>;
40
+ type DurationSuffixType = keyof DurationSuffixMap;
41
+ declare const DURATION_STYLE_SUFFIX_MAP: Record<DurationType, DurationSuffixMap>;
42
42
  /**
43
43
  * Convert a milliseconds duration into a Duration object. If the given ms is
44
44
  * zero, then return an object with a single field of zero with duration type
@@ -46,31 +46,33 @@ export declare const DURATION_STYLE_SUFFIX_MAP: Record<DurationType, DurationSuf
46
46
  *
47
47
  * @param durationTypeForZero Defaults to 'milliseconds'
48
48
  */
49
- export declare function msToDuration(ms: number, durationTypeForZero?: DurationType): Duration;
49
+ declare function msToDuration(ms: number, durationTypeForZero?: DurationType): Duration;
50
50
  /**
51
51
  * Returns the number of milliseconds for the given duration.
52
52
  */
53
- export declare function durationToMs(duration: Duration): number;
53
+ declare function durationToMs(duration: Duration): number;
54
54
  /**
55
55
  * Convenience function to return a duration given an ms or Duration.
56
56
  */
57
- export declare function durationOrMsToMs(duration: number | Duration): number;
57
+ declare function durationOrMsToMs(duration: number | Duration): number;
58
58
  /**
59
59
  * Format a given Duration object into a string. If the object has no fields,
60
60
  * then returns an empty string.
61
61
  *
62
62
  * @param style Defaults to 'short'
63
63
  */
64
- export declare function formatDuration(duration: Duration, style?: DurationStyle): string;
64
+ declare function formatDuration(duration: Duration, style?: DurationStyle): string;
65
65
  /**
66
66
  * Convert a millisecond duration into a human-readable duration string.
67
67
  *
68
68
  * @param options.durationTypeForZero - Defaults to 'milliseconds'
69
69
  * @param options.style - Defaults to 'short'
70
70
  */
71
- export declare function readableDuration(ms: number, options?: {
71
+ declare function readableDuration(ms: number, options?: {
72
72
  durationTypeForZero?: DurationType;
73
73
  style?: DurationStyle;
74
74
  }): string;
75
75
  /** A shortened duration string useful for logging timings. */
76
- export declare function elapsed(ms: number): string;
76
+ declare function elapsed(ms: number): string;
77
+
78
+ export { DURATION_STYLE_SUFFIX_MAP, DURATION_TYPE_SEQUENCE, type Duration, type DurationStyle, type DurationSuffixMap, type DurationSuffixType, type DurationType, durationOrMsToMs, durationToMs, elapsed, formatDuration, msToDuration, readableDuration };
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var P=(o,n)=>{for(var t in n)c(o,t,{get:n[t],enumerable:!0})},T=(o,n,t,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of y(n))!g.call(o,r)&&r!==t&&c(o,r,{get:()=>n[r],enumerable:!(e=R(n,r))||e.enumerable});return o};var U=o=>T(c({},"__esModule",{value:!0}),o);var H={};P(H,{DURATION_STYLE_SUFFIX_MAP:()=>D,DURATION_TYPE_SEQUENCE:()=>S,durationOrMsToMs:()=>w,durationToMs:()=>x,elapsed:()=>C,formatDuration:()=>M,msToDuration:()=>m,readableDuration:()=>d});module.exports=U(H);var S=["days","hours","minutes","seconds","milliseconds"],D={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function b(o){return o=="short"?"shorts":o==="long"?"longs":o}function I(o){return o==="narrow"?"":" "}function A(o){return o==="narrow"?" ":", "}function m(o,n){if(o===0)return n=n??"milliseconds",{[n]:0};let t={};for(let e=0;e<1;e++){let r=Math.floor(o/1e3),u=o-r*1e3;if(u>0&&(t.milliseconds=u),r===0)break;let i=Math.floor(r/60);if(r-=i*60,r>0&&(t.seconds=r),i===0)break;let s=Math.floor(i/60);if(i-=s*60,i>0&&(t.minutes=i),s===0)break;let a=Math.floor(s/24);s-=a*24,s>0&&(t.hours=s),a>0&&(t.days=a)}return t}function x(o){let n=(o.days??0)*864e5,t=(o.hours??0)*36e5,e=(o.minutes??0)*6e4,r=(o.seconds??0)*1e3,u=o.milliseconds??0;return n+t+e+r+u}function w(o){return typeof o=="number"?o:x(o)}function M(o,n){n=n??"short";let t=b(n),e=I(n),r=[];for(let i of S){let s=o[i];if(s===void 0)continue;let a=D[i],h=s===1?a[n]:a[t];r.push(s+e+h)}let u=A(n);return r.join(u)}function d(o,n){let t=m(o,n?.durationTypeForZero);return M(t,n?.style)}function C(o){return o>6e4?d(o):o>100?`${(o/1e3).toFixed(3)}s`:o+"ms"}0&&(module.exports={DURATION_STYLE_SUFFIX_MAP,DURATION_TYPE_SEQUENCE,durationOrMsToMs,durationToMs,elapsed,formatDuration,msToDuration,readableDuration});
2
+ //# sourceMappingURL=duration.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/duration.ts"],"sourcesContent":["/**\n * Bunch of miscellaneous constants and utility functions related to handling\n * date and time durations.\n *\n * Note that month and year do not have fixed durations, and hence are excluded\n * from this file. Weeks have fixed durations, but are excluded because we\n * use days as the max duration supported.\n */\n\nimport {\n HOURS_PER_DAY,\n MINUTES_PER_HOUR,\n MS_PER_DAY,\n MS_PER_HOUR,\n MS_PER_MINUTE,\n MS_PER_SECOND,\n SECONDS_PER_MINUTE,\n} from \"./timeConstants\";\n\nexport type Duration = {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\n/**\n * One of: days, hours, minutes, seconds, milliseconds\n */\nexport type DurationType = keyof Duration;\n\n/**\n * Order in which the duration type appears in the duration string.\n */\nexport const DURATION_TYPE_SEQUENCE: DurationType[] = [\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\n/**\n * Follows the same format as Intl.DurationFormat.prototype.format().\n *\n * Short: 1 yr, 2 mths, 3 wks, 3 days, 4 hr, 5 min, 6 sec, 7 ms, 8 μs, 9 ns\n * Long: 1 year, 2 months, 3 weeks, 3 days, 4 hours, 5 minutes, 6 seconds,\n * 7 milliseconds, 8 microseconds, 9 nanoseconds\n * Narrow: 1y 2mo 3w 3d 4h 5m 6s 7ms 8μs 9ns\n */\nexport type DurationStyle = \"short\" | \"long\" | \"narrow\";\n\nexport type DurationSuffixMap = {\n short: string;\n shorts: string;\n long: string;\n longs: string;\n narrow: string;\n};\n\nexport type DurationSuffixType = keyof DurationSuffixMap;\n\nexport const DURATION_STYLE_SUFFIX_MAP: Record<\n DurationType,\n DurationSuffixMap\n> = {\n days: {\n short: \"day\",\n shorts: \"days\",\n long: \"day\",\n longs: \"days\",\n narrow: \"d\",\n },\n hours: {\n short: \"hr\",\n shorts: \"hrs\",\n long: \"hour\",\n longs: \"hours\",\n narrow: \"h\",\n },\n minutes: {\n short: \"min\",\n shorts: \"mins\",\n long: \"minute\",\n longs: \"minutes\",\n narrow: \"m\",\n },\n seconds: {\n short: \"sec\",\n shorts: \"secs\",\n long: \"second\",\n longs: \"seconds\",\n narrow: \"s\",\n },\n milliseconds: {\n short: \"ms\",\n shorts: \"ms\",\n long: \"millisecond\",\n longs: \"milliseconds\",\n narrow: \"ms\",\n },\n};\n\nfunction getDurationStyleForPlural(style: DurationStyle): DurationSuffixType {\n return style == \"short\" ? \"shorts\" : style === \"long\" ? \"longs\" : style;\n}\n\nfunction getValueAndUnitSeparator(style: DurationStyle): string {\n return style === \"narrow\" ? \"\" : \" \";\n}\n\nfunction getDurationTypeSeparator(style: DurationStyle): string {\n return style === \"narrow\" ? \" \" : \", \";\n}\n\n/**\n * Convert a milliseconds duration into a Duration object. If the given ms is\n * zero, then return an object with a single field of zero with duration type\n * of durationTypeForZero.\n *\n * @param durationTypeForZero Defaults to 'milliseconds'\n */\nexport function msToDuration(\n ms: number,\n durationTypeForZero?: DurationType,\n): Duration {\n if (ms === 0) {\n durationTypeForZero = durationTypeForZero ?? \"milliseconds\";\n return { [durationTypeForZero]: 0 };\n }\n\n const duration: Duration = {};\n\n for (let i = 0; i < 1; i++) {\n let seconds = Math.floor(ms / MS_PER_SECOND);\n const millis = ms - seconds * MS_PER_SECOND;\n\n if (millis > 0) {\n duration[\"milliseconds\"] = millis;\n }\n\n if (seconds === 0) {\n break;\n }\n\n let minutes = Math.floor(seconds / SECONDS_PER_MINUTE);\n seconds -= minutes * SECONDS_PER_MINUTE;\n\n if (seconds > 0) {\n duration[\"seconds\"] = seconds;\n }\n\n if (minutes === 0) {\n break;\n }\n\n let hours = Math.floor(minutes / MINUTES_PER_HOUR);\n minutes -= hours * MINUTES_PER_HOUR;\n\n if (minutes > 0) {\n duration[\"minutes\"] = minutes;\n }\n\n if (hours === 0) {\n break;\n }\n\n const days = Math.floor(hours / HOURS_PER_DAY);\n hours -= days * HOURS_PER_DAY;\n\n if (hours > 0) {\n duration[\"hours\"] = hours;\n }\n\n if (days > 0) {\n duration[\"days\"] = days;\n }\n }\n\n return duration;\n}\n\n/**\n * Returns the number of milliseconds for the given duration.\n */\nexport function durationToMs(duration: Duration): number {\n const daysMs = (duration.days ?? 0) * MS_PER_DAY;\n const hoursMs = (duration.hours ?? 0) * MS_PER_HOUR;\n const minsMs = (duration.minutes ?? 0) * MS_PER_MINUTE;\n const secsMs = (duration.seconds ?? 0) * MS_PER_SECOND;\n const msMs = duration.milliseconds ?? 0;\n\n return daysMs + hoursMs + minsMs + secsMs + msMs;\n}\n\n/**\n * Convenience function to return a duration given an ms or Duration.\n */\nexport function durationOrMsToMs(duration: number | Duration): number {\n return typeof duration === \"number\" ? duration : durationToMs(duration);\n}\n\n/**\n * Format a given Duration object into a string. If the object has no fields,\n * then returns an empty string.\n *\n * @param style Defaults to 'short'\n */\nexport function formatDuration(duration: Duration, style?: DurationStyle) {\n style = style ?? \"short\";\n const stylePlural = getDurationStyleForPlural(style);\n\n const space = getValueAndUnitSeparator(style);\n\n const a: string[] = [];\n\n for (const unit of DURATION_TYPE_SEQUENCE) {\n const value = duration[unit];\n if (value === undefined) continue;\n\n const suffixMap = DURATION_STYLE_SUFFIX_MAP[unit];\n const suffix = value === 1 ? suffixMap[style] : suffixMap[stylePlural];\n a.push(value + space + suffix);\n }\n\n const separator = getDurationTypeSeparator(style);\n return a.join(separator);\n}\n\n/**\n * Convert a millisecond duration into a human-readable duration string.\n *\n * @param options.durationTypeForZero - Defaults to 'milliseconds'\n * @param options.style - Defaults to 'short'\n */\nexport function readableDuration(\n ms: number,\n options?: { durationTypeForZero?: DurationType; style?: DurationStyle },\n): string {\n const duration = msToDuration(ms, options?.durationTypeForZero);\n\n return formatDuration(duration, options?.style);\n}\n\n/** A shortened duration string useful for logging timings. */\nexport function elapsed(ms: number): string {\n // Use long format for 1 minute or over.\n if (ms > MS_PER_MINUTE) {\n return readableDuration(ms);\n }\n\n // Use seconds format for over 100ms.\n if (ms > 100) {\n return `${(ms / 1000).toFixed(3)}s`;\n }\n\n // Use milliseconds format.\n return ms + \"ms\";\n}\n"],"mappings":"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","names":["duration_exports","__export","DURATION_STYLE_SUFFIX_MAP","DURATION_TYPE_SEQUENCE","durationOrMsToMs","durationToMs","elapsed","formatDuration","msToDuration","readableDuration","__toCommonJS","DURATION_TYPE_SEQUENCE","DURATION_STYLE_SUFFIX_MAP","getDurationStyleForPlural","style","getValueAndUnitSeparator","getDurationTypeSeparator","msToDuration","ms","durationTypeForZero","duration","i","seconds","millis","minutes","hours","days","durationToMs","daysMs","hoursMs","minsMs","secsMs","msMs","durationOrMsToMs","formatDuration","stylePlural","space","a","unit","value","suffixMap","suffix","separator","readableDuration","options","elapsed"]}
@@ -0,0 +1,2 @@
1
+ var m=["days","hours","minutes","seconds","milliseconds"],x={days:{short:"day",shorts:"days",long:"day",longs:"days",narrow:"d"},hours:{short:"hr",shorts:"hrs",long:"hour",longs:"hours",narrow:"h"},minutes:{short:"min",shorts:"mins",long:"minute",longs:"minutes",narrow:"m"},seconds:{short:"sec",shorts:"secs",long:"second",longs:"seconds",narrow:"s"},milliseconds:{short:"ms",shorts:"ms",long:"millisecond",longs:"milliseconds",narrow:"ms"}};function M(o){return o=="short"?"shorts":o==="long"?"longs":o}function d(o){return o==="narrow"?"":" "}function h(o){return o==="narrow"?" ":", "}function R(o,n){if(o===0)return n=n??"milliseconds",{[n]:0};let t={};for(let i=0;i<1;i++){let r=Math.floor(o/1e3),u=o-r*1e3;if(u>0&&(t.milliseconds=u),r===0)break;let e=Math.floor(r/60);if(r-=e*60,r>0&&(t.seconds=r),e===0)break;let s=Math.floor(e/60);if(e-=s*60,e>0&&(t.minutes=e),s===0)break;let a=Math.floor(s/24);s-=a*24,s>0&&(t.hours=s),a>0&&(t.days=a)}return t}function y(o){let n=(o.days??0)*864e5,t=(o.hours??0)*36e5,i=(o.minutes??0)*6e4,r=(o.seconds??0)*1e3,u=o.milliseconds??0;return n+t+i+r+u}function N(o){return typeof o=="number"?o:y(o)}function g(o,n){n=n??"short";let t=M(n),i=d(n),r=[];for(let e of m){let s=o[e];if(s===void 0)continue;let a=x[e],f=s===1?a[n]:a[t];r.push(s+i+f)}let u=h(n);return r.join(u)}function P(o,n){let t=R(o,n?.durationTypeForZero);return g(t,n?.style)}function O(o){return o>6e4?P(o):o>100?`${(o/1e3).toFixed(3)}s`:o+"ms"}export{x as DURATION_STYLE_SUFFIX_MAP,m as DURATION_TYPE_SEQUENCE,N as durationOrMsToMs,y as durationToMs,O as elapsed,g as formatDuration,R as msToDuration,P as readableDuration};
2
+ //# sourceMappingURL=duration.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/duration.ts"],"sourcesContent":["/**\n * Bunch of miscellaneous constants and utility functions related to handling\n * date and time durations.\n *\n * Note that month and year do not have fixed durations, and hence are excluded\n * from this file. Weeks have fixed durations, but are excluded because we\n * use days as the max duration supported.\n */\n\nimport {\n HOURS_PER_DAY,\n MINUTES_PER_HOUR,\n MS_PER_DAY,\n MS_PER_HOUR,\n MS_PER_MINUTE,\n MS_PER_SECOND,\n SECONDS_PER_MINUTE,\n} from \"./timeConstants\";\n\nexport type Duration = {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\n/**\n * One of: days, hours, minutes, seconds, milliseconds\n */\nexport type DurationType = keyof Duration;\n\n/**\n * Order in which the duration type appears in the duration string.\n */\nexport const DURATION_TYPE_SEQUENCE: DurationType[] = [\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\n/**\n * Follows the same format as Intl.DurationFormat.prototype.format().\n *\n * Short: 1 yr, 2 mths, 3 wks, 3 days, 4 hr, 5 min, 6 sec, 7 ms, 8 μs, 9 ns\n * Long: 1 year, 2 months, 3 weeks, 3 days, 4 hours, 5 minutes, 6 seconds,\n * 7 milliseconds, 8 microseconds, 9 nanoseconds\n * Narrow: 1y 2mo 3w 3d 4h 5m 6s 7ms 8μs 9ns\n */\nexport type DurationStyle = \"short\" | \"long\" | \"narrow\";\n\nexport type DurationSuffixMap = {\n short: string;\n shorts: string;\n long: string;\n longs: string;\n narrow: string;\n};\n\nexport type DurationSuffixType = keyof DurationSuffixMap;\n\nexport const DURATION_STYLE_SUFFIX_MAP: Record<\n DurationType,\n DurationSuffixMap\n> = {\n days: {\n short: \"day\",\n shorts: \"days\",\n long: \"day\",\n longs: \"days\",\n narrow: \"d\",\n },\n hours: {\n short: \"hr\",\n shorts: \"hrs\",\n long: \"hour\",\n longs: \"hours\",\n narrow: \"h\",\n },\n minutes: {\n short: \"min\",\n shorts: \"mins\",\n long: \"minute\",\n longs: \"minutes\",\n narrow: \"m\",\n },\n seconds: {\n short: \"sec\",\n shorts: \"secs\",\n long: \"second\",\n longs: \"seconds\",\n narrow: \"s\",\n },\n milliseconds: {\n short: \"ms\",\n shorts: \"ms\",\n long: \"millisecond\",\n longs: \"milliseconds\",\n narrow: \"ms\",\n },\n};\n\nfunction getDurationStyleForPlural(style: DurationStyle): DurationSuffixType {\n return style == \"short\" ? \"shorts\" : style === \"long\" ? \"longs\" : style;\n}\n\nfunction getValueAndUnitSeparator(style: DurationStyle): string {\n return style === \"narrow\" ? \"\" : \" \";\n}\n\nfunction getDurationTypeSeparator(style: DurationStyle): string {\n return style === \"narrow\" ? \" \" : \", \";\n}\n\n/**\n * Convert a milliseconds duration into a Duration object. If the given ms is\n * zero, then return an object with a single field of zero with duration type\n * of durationTypeForZero.\n *\n * @param durationTypeForZero Defaults to 'milliseconds'\n */\nexport function msToDuration(\n ms: number,\n durationTypeForZero?: DurationType,\n): Duration {\n if (ms === 0) {\n durationTypeForZero = durationTypeForZero ?? \"milliseconds\";\n return { [durationTypeForZero]: 0 };\n }\n\n const duration: Duration = {};\n\n for (let i = 0; i < 1; i++) {\n let seconds = Math.floor(ms / MS_PER_SECOND);\n const millis = ms - seconds * MS_PER_SECOND;\n\n if (millis > 0) {\n duration[\"milliseconds\"] = millis;\n }\n\n if (seconds === 0) {\n break;\n }\n\n let minutes = Math.floor(seconds / SECONDS_PER_MINUTE);\n seconds -= minutes * SECONDS_PER_MINUTE;\n\n if (seconds > 0) {\n duration[\"seconds\"] = seconds;\n }\n\n if (minutes === 0) {\n break;\n }\n\n let hours = Math.floor(minutes / MINUTES_PER_HOUR);\n minutes -= hours * MINUTES_PER_HOUR;\n\n if (minutes > 0) {\n duration[\"minutes\"] = minutes;\n }\n\n if (hours === 0) {\n break;\n }\n\n const days = Math.floor(hours / HOURS_PER_DAY);\n hours -= days * HOURS_PER_DAY;\n\n if (hours > 0) {\n duration[\"hours\"] = hours;\n }\n\n if (days > 0) {\n duration[\"days\"] = days;\n }\n }\n\n return duration;\n}\n\n/**\n * Returns the number of milliseconds for the given duration.\n */\nexport function durationToMs(duration: Duration): number {\n const daysMs = (duration.days ?? 0) * MS_PER_DAY;\n const hoursMs = (duration.hours ?? 0) * MS_PER_HOUR;\n const minsMs = (duration.minutes ?? 0) * MS_PER_MINUTE;\n const secsMs = (duration.seconds ?? 0) * MS_PER_SECOND;\n const msMs = duration.milliseconds ?? 0;\n\n return daysMs + hoursMs + minsMs + secsMs + msMs;\n}\n\n/**\n * Convenience function to return a duration given an ms or Duration.\n */\nexport function durationOrMsToMs(duration: number | Duration): number {\n return typeof duration === \"number\" ? duration : durationToMs(duration);\n}\n\n/**\n * Format a given Duration object into a string. If the object has no fields,\n * then returns an empty string.\n *\n * @param style Defaults to 'short'\n */\nexport function formatDuration(duration: Duration, style?: DurationStyle) {\n style = style ?? \"short\";\n const stylePlural = getDurationStyleForPlural(style);\n\n const space = getValueAndUnitSeparator(style);\n\n const a: string[] = [];\n\n for (const unit of DURATION_TYPE_SEQUENCE) {\n const value = duration[unit];\n if (value === undefined) continue;\n\n const suffixMap = DURATION_STYLE_SUFFIX_MAP[unit];\n const suffix = value === 1 ? suffixMap[style] : suffixMap[stylePlural];\n a.push(value + space + suffix);\n }\n\n const separator = getDurationTypeSeparator(style);\n return a.join(separator);\n}\n\n/**\n * Convert a millisecond duration into a human-readable duration string.\n *\n * @param options.durationTypeForZero - Defaults to 'milliseconds'\n * @param options.style - Defaults to 'short'\n */\nexport function readableDuration(\n ms: number,\n options?: { durationTypeForZero?: DurationType; style?: DurationStyle },\n): string {\n const duration = msToDuration(ms, options?.durationTypeForZero);\n\n return formatDuration(duration, options?.style);\n}\n\n/** A shortened duration string useful for logging timings. */\nexport function elapsed(ms: number): string {\n // Use long format for 1 minute or over.\n if (ms > MS_PER_MINUTE) {\n return readableDuration(ms);\n }\n\n // Use seconds format for over 100ms.\n if (ms > 100) {\n return `${(ms / 1000).toFixed(3)}s`;\n }\n\n // Use milliseconds format.\n return ms + \"ms\";\n}\n"],"mappings":"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","names":["DURATION_TYPE_SEQUENCE","DURATION_STYLE_SUFFIX_MAP","getDurationStyleForPlural","style","getValueAndUnitSeparator","getDurationTypeSeparator","msToDuration","ms","durationTypeForZero","duration","seconds","millis","minutes","hours","days","durationToMs","daysMs","hoursMs","minsMs","secsMs","msMs","durationOrMsToMs","formatDuration","stylePlural","space","a","unit","value","suffixMap","suffix","separator","readableDuration","options","elapsed"]}
package/duration.mjs ADDED
@@ -0,0 +1,154 @@
1
+ // src/timeConstants.ts
2
+ var MS_PER_SECOND = 1e3;
3
+ var MS_PER_MINUTE = 6e4;
4
+ var MS_PER_HOUR = 36e5;
5
+ var MS_PER_DAY = 864e5;
6
+ var SECONDS_PER_MINUTE = 60;
7
+ var MINUTES_PER_HOUR = 60;
8
+ var HOURS_PER_DAY = 24;
9
+
10
+ // src/duration.ts
11
+ var DURATION_TYPE_SEQUENCE = [
12
+ "days",
13
+ "hours",
14
+ "minutes",
15
+ "seconds",
16
+ "milliseconds"
17
+ ];
18
+ var DURATION_STYLE_SUFFIX_MAP = {
19
+ days: {
20
+ short: "day",
21
+ shorts: "days",
22
+ long: "day",
23
+ longs: "days",
24
+ narrow: "d"
25
+ },
26
+ hours: {
27
+ short: "hr",
28
+ shorts: "hrs",
29
+ long: "hour",
30
+ longs: "hours",
31
+ narrow: "h"
32
+ },
33
+ minutes: {
34
+ short: "min",
35
+ shorts: "mins",
36
+ long: "minute",
37
+ longs: "minutes",
38
+ narrow: "m"
39
+ },
40
+ seconds: {
41
+ short: "sec",
42
+ shorts: "secs",
43
+ long: "second",
44
+ longs: "seconds",
45
+ narrow: "s"
46
+ },
47
+ milliseconds: {
48
+ short: "ms",
49
+ shorts: "ms",
50
+ long: "millisecond",
51
+ longs: "milliseconds",
52
+ narrow: "ms"
53
+ }
54
+ };
55
+ function getDurationStyleForPlural(style) {
56
+ return style == "short" ? "shorts" : style === "long" ? "longs" : style;
57
+ }
58
+ function getValueAndUnitSeparator(style) {
59
+ return style === "narrow" ? "" : " ";
60
+ }
61
+ function getDurationTypeSeparator(style) {
62
+ return style === "narrow" ? " " : ", ";
63
+ }
64
+ function msToDuration(ms, durationTypeForZero) {
65
+ if (ms === 0) {
66
+ durationTypeForZero = durationTypeForZero ?? "milliseconds";
67
+ return { [durationTypeForZero]: 0 };
68
+ }
69
+ const duration = {};
70
+ for (let i = 0; i < 1; i++) {
71
+ let seconds = Math.floor(ms / MS_PER_SECOND);
72
+ const millis = ms - seconds * MS_PER_SECOND;
73
+ if (millis > 0) {
74
+ duration["milliseconds"] = millis;
75
+ }
76
+ if (seconds === 0) {
77
+ break;
78
+ }
79
+ let minutes = Math.floor(seconds / SECONDS_PER_MINUTE);
80
+ seconds -= minutes * SECONDS_PER_MINUTE;
81
+ if (seconds > 0) {
82
+ duration["seconds"] = seconds;
83
+ }
84
+ if (minutes === 0) {
85
+ break;
86
+ }
87
+ let hours = Math.floor(minutes / MINUTES_PER_HOUR);
88
+ minutes -= hours * MINUTES_PER_HOUR;
89
+ if (minutes > 0) {
90
+ duration["minutes"] = minutes;
91
+ }
92
+ if (hours === 0) {
93
+ break;
94
+ }
95
+ const days = Math.floor(hours / HOURS_PER_DAY);
96
+ hours -= days * HOURS_PER_DAY;
97
+ if (hours > 0) {
98
+ duration["hours"] = hours;
99
+ }
100
+ if (days > 0) {
101
+ duration["days"] = days;
102
+ }
103
+ }
104
+ return duration;
105
+ }
106
+ function durationToMs(duration) {
107
+ const daysMs = (duration.days ?? 0) * MS_PER_DAY;
108
+ const hoursMs = (duration.hours ?? 0) * MS_PER_HOUR;
109
+ const minsMs = (duration.minutes ?? 0) * MS_PER_MINUTE;
110
+ const secsMs = (duration.seconds ?? 0) * MS_PER_SECOND;
111
+ const msMs = duration.milliseconds ?? 0;
112
+ return daysMs + hoursMs + minsMs + secsMs + msMs;
113
+ }
114
+ function durationOrMsToMs(duration) {
115
+ return typeof duration === "number" ? duration : durationToMs(duration);
116
+ }
117
+ function formatDuration(duration, style) {
118
+ style = style ?? "short";
119
+ const stylePlural = getDurationStyleForPlural(style);
120
+ const space = getValueAndUnitSeparator(style);
121
+ const a = [];
122
+ for (const unit of DURATION_TYPE_SEQUENCE) {
123
+ const value = duration[unit];
124
+ if (value === void 0) continue;
125
+ const suffixMap = DURATION_STYLE_SUFFIX_MAP[unit];
126
+ const suffix = value === 1 ? suffixMap[style] : suffixMap[stylePlural];
127
+ a.push(value + space + suffix);
128
+ }
129
+ const separator = getDurationTypeSeparator(style);
130
+ return a.join(separator);
131
+ }
132
+ function readableDuration(ms, options) {
133
+ const duration = msToDuration(ms, options?.durationTypeForZero);
134
+ return formatDuration(duration, options?.style);
135
+ }
136
+ function elapsed(ms) {
137
+ if (ms > MS_PER_MINUTE) {
138
+ return readableDuration(ms);
139
+ }
140
+ if (ms > 100) {
141
+ return `${(ms / 1e3).toFixed(3)}s`;
142
+ }
143
+ return ms + "ms";
144
+ }
145
+ export {
146
+ DURATION_STYLE_SUFFIX_MAP,
147
+ DURATION_TYPE_SEQUENCE,
148
+ durationOrMsToMs,
149
+ durationToMs,
150
+ elapsed,
151
+ formatDuration,
152
+ msToDuration,
153
+ readableDuration
154
+ };
@@ -45,4 +45,3 @@ function isEmpty(t) {
45
45
  0 && (module.exports = {
46
46
  isEmpty
47
47
  });
48
- //# sourceMappingURL=isEmpty.js.map
package/isEmpty.d.mts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns true if `t` is empty.
3
+ */
4
+ declare function isEmpty(t: unknown): boolean;
5
+
6
+ export { isEmpty };
package/isEmpty.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  /**
2
2
  * Returns true if `t` is empty.
3
3
  */
4
- export declare function isEmpty(t: unknown): boolean;
4
+ declare function isEmpty(t: unknown): boolean;
5
+
6
+ export { isEmpty };
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var l=(e,n)=>{for(var i in n)t(e,i,{get:n[i],enumerable:!0})},a=(e,n,i,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of o(n))!s.call(e,r)&&r!==i&&t(e,r,{get:()=>n[r],enumerable:!(u=f(n,r))||u.enumerable});return e};var c=e=>a(t({},"__esModule",{value:!0}),e);var b={};l(b,{isEmpty:()=>p});module.exports=c(b);function p(e){if(!e)return!0;if(typeof e!="object")return!1;if("length"in e)return e.length===0;if("size"in e)return e.size===0;for(let n in e)return!1;return!0}0&&(module.exports={isEmpty});
2
+ //# sourceMappingURL=isEmpty.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isEmpty.ts"],"sourcesContent":["/**\n * Returns true if `t` is empty.\n */\nexport function isEmpty(t: unknown): boolean {\n // Anything falsy is considered empty.\n if (!t) {\n return true;\n }\n\n // Arrays are also of type `object`.\n if (typeof t !== \"object\") {\n return false;\n }\n\n // `length` includes arrays as well.\n if (\"length\" in t) {\n return t.length === 0;\n }\n\n // `size` is for Set, Map, Blob etc.\n if (\"size\" in t) {\n return t.size === 0;\n }\n\n // Super fast check for object emptiness.\n // https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n for (const k in t) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAGO,SAASE,EAAQE,EAAqB,CAE3C,GAAI,CAACA,EACH,MAAO,GAIT,GAAI,OAAOA,GAAM,SACf,MAAO,GAIT,GAAI,WAAYA,EACd,OAAOA,EAAE,SAAW,EAItB,GAAI,SAAUA,EACZ,OAAOA,EAAE,OAAS,EAKpB,QAAWC,KAAKD,EACd,MAAO,GAGT,MAAO,EACT","names":["isEmpty_exports","__export","isEmpty","__toCommonJS","t","k"]}
@@ -0,0 +1,2 @@
1
+ function r(e){if(!e)return!0;if(typeof e!="object")return!1;if("length"in e)return e.length===0;if("size"in e)return e.size===0;for(let n in e)return!1;return!0}export{r as isEmpty};
2
+ //# sourceMappingURL=isEmpty.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/isEmpty.ts"],"sourcesContent":["/**\n * Returns true if `t` is empty.\n */\nexport function isEmpty(t: unknown): boolean {\n // Anything falsy is considered empty.\n if (!t) {\n return true;\n }\n\n // Arrays are also of type `object`.\n if (typeof t !== \"object\") {\n return false;\n }\n\n // `length` includes arrays as well.\n if (\"length\" in t) {\n return t.length === 0;\n }\n\n // `size` is for Set, Map, Blob etc.\n if (\"size\" in t) {\n return t.size === 0;\n }\n\n // Super fast check for object emptiness.\n // https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n for (const k in t) {\n return false;\n }\n\n return true;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,QAAQ,GAAqB;AAE3C,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,MAAM,UAAU;AACzB,WAAO;AAAA,EACT;AAGA,MAAI,YAAY,GAAG;AACjB,WAAO,EAAE,WAAW;AAAA,EACtB;AAGA,MAAI,UAAU,GAAG;AACf,WAAO,EAAE,SAAS;AAAA,EACpB;AAIA,aAAW,KAAK,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/isEmpty.ts"],"sourcesContent":["/**\n * Returns true if `t` is empty.\n */\nexport function isEmpty(t: unknown): boolean {\n // Anything falsy is considered empty.\n if (!t) {\n return true;\n }\n\n // Arrays are also of type `object`.\n if (typeof t !== \"object\") {\n return false;\n }\n\n // `length` includes arrays as well.\n if (\"length\" in t) {\n return t.length === 0;\n }\n\n // `size` is for Set, Map, Blob etc.\n if (\"size\" in t) {\n return t.size === 0;\n }\n\n // Super fast check for object emptiness.\n // https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n for (const k in t) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"AAGO,SAASA,EAAQC,EAAqB,CAE3C,GAAI,CAACA,EACH,MAAO,GAIT,GAAI,OAAOA,GAAM,SACf,MAAO,GAIT,GAAI,WAAYA,EACd,OAAOA,EAAE,SAAW,EAItB,GAAI,SAAUA,EACZ,OAAOA,EAAE,OAAS,EAKpB,QAAWC,KAAKD,EACd,MAAO,GAGT,MAAO,EACT","names":["isEmpty","t","k"]}
package/isEmpty.mjs ADDED
@@ -0,0 +1,22 @@
1
+ // src/isEmpty.ts
2
+ function isEmpty(t) {
3
+ if (!t) {
4
+ return true;
5
+ }
6
+ if (typeof t !== "object") {
7
+ return false;
8
+ }
9
+ if ("length" in t) {
10
+ return t.length === 0;
11
+ }
12
+ if ("size" in t) {
13
+ return t.size === 0;
14
+ }
15
+ for (const k in t) {
16
+ return false;
17
+ }
18
+ return true;
19
+ }
20
+ export {
21
+ isEmpty
22
+ };
package/iterators.cjs ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/iterators.ts
21
+ var iterators_exports = {};
22
+ __export(iterators_exports, {
23
+ concatIterators: () => concatIterators
24
+ });
25
+ module.exports = __toCommonJS(iterators_exports);
26
+ function* concatIterators(...iterators) {
27
+ for (const iterator of iterators) {
28
+ yield* iterator;
29
+ }
30
+ }
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ concatIterators
34
+ });
@@ -0,0 +1,4 @@
1
+ /** Memory-efficient way to concat two or more iterators. */
2
+ declare function concatIterators<T>(...iterators: Generator<T>[]): Generator<T, void, any>;
3
+
4
+ export { concatIterators };
package/iterators.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /** Memory-efficient way to concat two or more iterators. */
2
+ declare function concatIterators<T>(...iterators: Generator<T>[]): Generator<T, void, any>;
3
+
4
+ export { concatIterators };
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var s=(t,o)=>{for(var e in o)n(t,e,{get:o[e],enumerable:!0})},T=(t,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of f(o))!i.call(t,r)&&r!==e&&n(t,r,{get:()=>o[r],enumerable:!(a=c(o,r))||a.enumerable});return t};var d=t=>T(n({},"__esModule",{value:!0}),t);var p={};s(p,{concatIterators:()=>l});module.exports=d(p);function*l(...t){for(let o of t)yield*o}0&&(module.exports={concatIterators});
2
+ //# sourceMappingURL=iterators.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/iterators.ts"],"sourcesContent":["/** Memory-efficient way to concat two or more iterators. */\nexport function* concatIterators<T>(...iterators: Generator<T>[]) {\n for (const iterator of iterators) {\n yield* iterator;\n }\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACO,SAAUE,KAAsBE,EAA2B,CAChE,QAAWC,KAAYD,EACrB,MAAOC,CAEX","names":["iterators_exports","__export","concatIterators","__toCommonJS","iterators","iterator"]}
@@ -0,0 +1,2 @@
1
+ function*r(...o){for(let t of o)yield*t}export{r as concatIterators};
2
+ //# sourceMappingURL=iterators.min.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/iterators.ts"],"sourcesContent":["/** Memory-efficient way to concat two or more iterators. */\nexport function* concatIterators<T>(...iterators: Generator<T>[]) {\n for (const iterator of iterators) {\n yield* iterator;\n }\n}\n"],"mappings":"AACO,SAAUA,KAAsBC,EAA2B,CAChE,QAAWC,KAAYD,EACrB,MAAOC,CAEX","names":["concatIterators","iterators","iterator"]}