@pawells/typescript-common 2.0.0 → 2.1.6

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 (426) hide show
  1. package/README.md +370 -223
  2. package/{build → dist}/array/array-chunk.d.ts +1 -1
  3. package/{build → dist}/array/array-chunk.js +2 -3
  4. package/{build → dist}/array/array-compact.d.ts +1 -1
  5. package/{build → dist}/array/array-compact.js +1 -2
  6. package/{build → dist}/array/array-contains.d.ts +1 -1
  7. package/{build → dist}/array/array-contains.js +2 -3
  8. package/{build → dist}/array/array-count-by.d.ts +1 -1
  9. package/{build → dist}/array/array-count-by.js +2 -3
  10. package/{build → dist}/array/array-difference.d.ts +12 -5
  11. package/dist/array/array-difference.d.ts.map +1 -0
  12. package/dist/array/array-difference.js +70 -0
  13. package/dist/array/array-element.js +1 -0
  14. package/{build → dist}/array/array-filter.d.ts +1 -1
  15. package/{build → dist}/array/array-filter.js +1 -2
  16. package/{build → dist}/array/array-flatten.d.ts +2 -2
  17. package/{build → dist}/array/array-flatten.d.ts.map +1 -1
  18. package/{build → dist}/array/array-flatten.js +1 -2
  19. package/{build → dist}/array/array-group-by.d.ts +1 -1
  20. package/{build → dist}/array/array-group-by.d.ts.map +1 -1
  21. package/{build → dist}/array/array-group-by.js +10 -9
  22. package/{build → dist}/array/array-intersection.d.ts +12 -5
  23. package/dist/array/array-intersection.d.ts.map +1 -0
  24. package/dist/array/array-intersection.js +79 -0
  25. package/{build → dist}/array/array-partition.d.ts +1 -1
  26. package/{build → dist}/array/array-partition.js +2 -3
  27. package/{build → dist}/array/array-range.d.ts +1 -1
  28. package/{build → dist}/array/array-range.js +1 -2
  29. package/{build → dist}/array/array-sample.d.ts +2 -2
  30. package/{build → dist}/array/array-sample.js +3 -5
  31. package/{build → dist}/array/array-shuffle.d.ts +1 -1
  32. package/{build → dist}/array/array-shuffle.js +1 -2
  33. package/{build → dist}/array/array-sort-by.d.ts +1 -1
  34. package/{build → dist}/array/array-sort-by.js +1 -2
  35. package/{build → dist}/array/array-zip.d.ts +1 -1
  36. package/{build → dist}/array/array-zip.js +1 -2
  37. package/{build → dist}/array/assert.d.ts +5 -5
  38. package/{build → dist}/array/assert.d.ts.map +1 -1
  39. package/{build → dist}/array/assert.js +13 -14
  40. package/{build → dist}/array/index.d.ts +1 -0
  41. package/{build → dist}/array/index.d.ts.map +1 -1
  42. package/{build → dist}/array/index.js +1 -1
  43. package/dist/array/iterators.d.ts +40 -0
  44. package/dist/array/iterators.d.ts.map +1 -0
  45. package/dist/array/iterators.js +54 -0
  46. package/{build → dist}/array/types.d.ts +20 -2
  47. package/{build → dist}/array/types.d.ts.map +1 -1
  48. package/dist/array/types.js +1 -0
  49. package/{build → dist}/array/unique.d.ts +1 -1
  50. package/{build → dist}/array/unique.js +1 -2
  51. package/dist/asserts/errors.d.ts.map +1 -0
  52. package/{build → dist}/asserts/errors.js +5 -3
  53. package/{build → dist}/asserts/generic.d.ts +23 -3
  54. package/dist/asserts/generic.d.ts.map +1 -0
  55. package/{build → dist}/asserts/generic.js +39 -7
  56. package/dist/asserts/index.d.ts +47 -0
  57. package/dist/asserts/index.d.ts.map +1 -0
  58. package/dist/asserts/index.js +46 -0
  59. package/{build → dist}/asserts/internal-utils.d.ts.map +1 -1
  60. package/{build → dist}/asserts/internal-utils.js +0 -1
  61. package/{build → dist}/asserts/types.d.ts +56 -17
  62. package/dist/asserts/types.d.ts.map +1 -0
  63. package/dist/asserts/types.js +1 -0
  64. package/{build → dist}/asserts/utils.d.ts +5 -21
  65. package/dist/asserts/utils.d.ts.map +1 -0
  66. package/{build → dist}/asserts/utils.js +14 -39
  67. package/{build → dist}/boolean/assert.d.ts +1 -2
  68. package/{build → dist}/boolean/assert.d.ts.map +1 -1
  69. package/{build → dist}/boolean/assert.js +1 -3
  70. package/dist/boolean/index.d.ts +13 -0
  71. package/dist/boolean/index.d.ts.map +1 -0
  72. package/dist/boolean/index.js +12 -0
  73. package/{build → dist}/enum/enum-entries.d.ts +1 -1
  74. package/dist/enum/enum-entries.d.ts.map +1 -0
  75. package/{build → dist}/enum/enum-entries.js +0 -1
  76. package/{build → dist}/enum/enum-key-by-value.d.ts +1 -1
  77. package/dist/enum/enum-key-by-value.d.ts.map +1 -0
  78. package/{build → dist}/enum/enum-key-by-value.js +0 -1
  79. package/{build → dist}/enum/enum-keys.js +0 -1
  80. package/{build → dist}/enum/enum-safe-value.d.ts +1 -1
  81. package/dist/enum/enum-safe-value.d.ts.map +1 -0
  82. package/{build → dist}/enum/enum-safe-value.js +0 -1
  83. package/{build → dist}/enum/enum-values.js +0 -1
  84. package/{build → dist}/enum/index.d.ts +1 -1
  85. package/dist/enum/index.d.ts.map +1 -0
  86. package/{build → dist}/enum/index.js +1 -2
  87. package/dist/enum/types.js +1 -0
  88. package/{build → dist}/enum/validate-enum-value.d.ts +1 -1
  89. package/dist/enum/validate-enum-value.d.ts.map +1 -0
  90. package/{build → dist}/enum/validate-enum-value.js +0 -1
  91. package/{build → dist}/function/compose.d.ts +6 -0
  92. package/dist/function/compose.d.ts.map +1 -0
  93. package/{build → dist}/function/compose.js +0 -1
  94. package/{build → dist}/function/debounce.d.ts +6 -0
  95. package/dist/function/debounce.d.ts.map +1 -0
  96. package/{build → dist}/function/debounce.js +6 -1
  97. package/{build → dist}/function/index.js +0 -1
  98. package/dist/function/memoize.d.ts +56 -0
  99. package/dist/function/memoize.d.ts.map +1 -0
  100. package/dist/function/memoize.js +72 -0
  101. package/{build → dist}/function/once.d.ts.map +1 -1
  102. package/{build → dist}/function/once.js +1 -1
  103. package/{build → dist}/function/sleep.js +0 -1
  104. package/{build → dist}/function/throttle.d.ts +7 -0
  105. package/dist/function/throttle.d.ts.map +1 -0
  106. package/{build → dist}/function/throttle.js +7 -1
  107. package/dist/function/types.d.ts +18 -0
  108. package/dist/function/types.d.ts.map +1 -0
  109. package/dist/function/types.js +1 -0
  110. package/dist/index.d.ts +14 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +13 -0
  113. package/dist/json.sanitization.d.ts +14 -0
  114. package/dist/json.sanitization.d.ts.map +1 -0
  115. package/dist/json.sanitization.js +37 -0
  116. package/{build → dist}/lru-cache.d.ts +19 -0
  117. package/dist/lru-cache.d.ts.map +1 -0
  118. package/{build → dist}/lru-cache.js +24 -2
  119. package/{build → dist}/number/assert.js +0 -1
  120. package/dist/number/index.d.ts +13 -0
  121. package/dist/number/index.d.ts.map +1 -0
  122. package/dist/number/index.js +12 -0
  123. package/{build → dist}/object/assert-object.d.ts +5 -1
  124. package/{build → dist}/object/assert-object.d.ts.map +1 -1
  125. package/{build → dist}/object/assert-object.js +4 -1
  126. package/{build → dist}/object/assert.d.ts +1 -1
  127. package/dist/object/assert.d.ts.map +1 -0
  128. package/{build → dist}/object/assert.js +7 -29
  129. package/{build → dist}/object/clone.d.ts +6 -0
  130. package/dist/object/clone.d.ts.map +1 -0
  131. package/{build → dist}/object/clone.js +14 -5
  132. package/{build → dist}/object/equals.d.ts.map +1 -1
  133. package/{build → dist}/object/equals.js +3 -7
  134. package/dist/object/filter-cached.d.ts +26 -0
  135. package/{build → dist}/object/filter-cached.d.ts.map +1 -1
  136. package/{build → dist}/object/filter-cached.js +27 -6
  137. package/{build → dist}/object/filter.d.ts.map +1 -1
  138. package/{build → dist}/object/filter.js +22 -6
  139. package/{build → dist}/object/has-circular-reference.d.ts.map +1 -1
  140. package/{build → dist}/object/has-circular-reference.js +4 -2
  141. package/{build → dist}/object/hash.d.ts +4 -0
  142. package/dist/object/hash.d.ts.map +1 -0
  143. package/{build → dist}/object/hash.js +20 -7
  144. package/{build → dist}/object/index.d.ts +2 -2
  145. package/{build → dist}/object/index.d.ts.map +1 -1
  146. package/{build → dist}/object/index.js +1 -2
  147. package/{build → dist}/object/json-circular-replacer.d.ts.map +1 -1
  148. package/{build → dist}/object/json-circular-replacer.js +0 -1
  149. package/{build → dist}/object/key-value-pairs.js +0 -1
  150. package/dist/object/map-cached.d.ts +31 -0
  151. package/dist/object/map-cached.d.ts.map +1 -0
  152. package/{build → dist}/object/map-cached.js +34 -6
  153. package/{build → dist}/object/map.js +0 -1
  154. package/{build → dist}/object/merge.d.ts.map +1 -1
  155. package/{build → dist}/object/merge.js +7 -7
  156. package/{build → dist}/object/object-diff.d.ts +2 -2
  157. package/{build → dist}/object/object-diff.d.ts.map +1 -1
  158. package/{build → dist}/object/object-diff.js +11 -5
  159. package/{build → dist}/object/object-flatten.d.ts +1 -1
  160. package/{build → dist}/object/object-flatten.d.ts.map +1 -1
  161. package/{build → dist}/object/object-flatten.js +10 -4
  162. package/{build → dist}/object/object-invert.js +0 -1
  163. package/{build → dist}/object/omit.js +0 -1
  164. package/{build → dist}/object/pick.js +0 -1
  165. package/{build → dist}/object/property-paths.d.ts +2 -0
  166. package/{build → dist}/object/property-paths.d.ts.map +1 -1
  167. package/{build → dist}/object/property-paths.js +8 -7
  168. package/dist/object/security-utils.d.ts +193 -0
  169. package/dist/object/security-utils.d.ts.map +1 -0
  170. package/dist/object/security-utils.js +304 -0
  171. package/{build → dist}/object/sort-keys.d.ts +15 -1
  172. package/dist/object/sort-keys.d.ts.map +1 -0
  173. package/dist/object/sort-keys.js +73 -0
  174. package/{build → dist}/object/types.d.ts +0 -61
  175. package/dist/object/types.d.ts.map +1 -0
  176. package/dist/object/types.js +1 -0
  177. package/{build → dist}/string/assert.d.ts +24 -0
  178. package/dist/string/assert.d.ts.map +1 -0
  179. package/{build → dist}/string/assert.js +30 -1
  180. package/{build → dist}/string/case-conversion.js +0 -1
  181. package/{build → dist}/string/comparison.d.ts.map +1 -1
  182. package/{build → dist}/string/comparison.js +3 -1
  183. package/{build → dist}/string/formatting.d.ts.map +1 -1
  184. package/{build → dist}/string/formatting.js +5 -3
  185. package/{build → dist}/string/index.js +0 -1
  186. package/{build → dist}/string/transformation.js +0 -1
  187. package/dist/string/types.d.ts +118 -0
  188. package/dist/string/types.d.ts.map +1 -0
  189. package/dist/string/types.js +1 -0
  190. package/{build → dist}/string/validation.js +0 -1
  191. package/dist/time/elapsed-time/constants.d.ts +36 -0
  192. package/{build → dist}/time/elapsed-time/constants.d.ts.map +1 -1
  193. package/{build → dist}/time/elapsed-time/constants.js +32 -3
  194. package/{build → dist}/time/elapsed-time/elapsed-time.d.ts +74 -22
  195. package/dist/time/elapsed-time/elapsed-time.d.ts.map +1 -0
  196. package/{build → dist}/time/elapsed-time/elapsed-time.js +183 -89
  197. package/dist/time/elapsed-time/types.d.ts +336 -0
  198. package/dist/time/elapsed-time/types.d.ts.map +1 -0
  199. package/dist/time/elapsed-time/types.js +1 -0
  200. package/{build → dist}/time/elapsed-time/utils.d.ts +1 -1
  201. package/dist/time/elapsed-time/utils.d.ts.map +1 -0
  202. package/{build → dist}/time/elapsed-time/utils.js +0 -1
  203. package/dist/time/index.d.ts +14 -0
  204. package/dist/time/index.d.ts.map +1 -0
  205. package/{build → dist}/time/index.js +0 -5
  206. package/{build → dist}/time/stopwatch/entry.d.ts +1 -1
  207. package/dist/time/stopwatch/entry.d.ts.map +1 -0
  208. package/{build → dist}/time/stopwatch/entry.js +0 -1
  209. package/{build → dist}/time/stopwatch/stopwatch.d.ts +27 -3
  210. package/dist/time/stopwatch/stopwatch.d.ts.map +1 -0
  211. package/{build → dist}/time/stopwatch/stopwatch.js +32 -4
  212. package/dist/zod-util.d.ts +145 -0
  213. package/dist/zod-util.d.ts.map +1 -0
  214. package/dist/zod-util.js +126 -0
  215. package/package.json +51 -67
  216. package/LICENSE +0 -21
  217. package/build/array/array-chunk.js.map +0 -1
  218. package/build/array/array-compact.js.map +0 -1
  219. package/build/array/array-contains.js.map +0 -1
  220. package/build/array/array-count-by.js.map +0 -1
  221. package/build/array/array-difference.d.ts.map +0 -1
  222. package/build/array/array-difference.js +0 -51
  223. package/build/array/array-difference.js.map +0 -1
  224. package/build/array/array-element.js +0 -2
  225. package/build/array/array-element.js.map +0 -1
  226. package/build/array/array-filter.js.map +0 -1
  227. package/build/array/array-flatten.js.map +0 -1
  228. package/build/array/array-group-by.js.map +0 -1
  229. package/build/array/array-intersection.d.ts.map +0 -1
  230. package/build/array/array-intersection.js +0 -57
  231. package/build/array/array-intersection.js.map +0 -1
  232. package/build/array/array-partition.js.map +0 -1
  233. package/build/array/array-range.js.map +0 -1
  234. package/build/array/array-sample.js.map +0 -1
  235. package/build/array/array-shuffle.js.map +0 -1
  236. package/build/array/array-sort-by.js.map +0 -1
  237. package/build/array/array-zip.js.map +0 -1
  238. package/build/array/assert.js.map +0 -1
  239. package/build/array/index.js.map +0 -1
  240. package/build/array/types.js +0 -2
  241. package/build/array/types.js.map +0 -1
  242. package/build/array/unique.js.map +0 -1
  243. package/build/asserts/errors.d.ts.map +0 -1
  244. package/build/asserts/errors.js.map +0 -1
  245. package/build/asserts/generic.d.ts.map +0 -1
  246. package/build/asserts/generic.js.map +0 -1
  247. package/build/asserts/index.d.ts +0 -41
  248. package/build/asserts/index.d.ts.map +0 -1
  249. package/build/asserts/index.js +0 -41
  250. package/build/asserts/index.js.map +0 -1
  251. package/build/asserts/internal-utils.js.map +0 -1
  252. package/build/asserts/types.d.ts.map +0 -1
  253. package/build/asserts/types.js +0 -2
  254. package/build/asserts/types.js.map +0 -1
  255. package/build/asserts/utils.d.ts.map +0 -1
  256. package/build/asserts/utils.js.map +0 -1
  257. package/build/boolean/assert.js.map +0 -1
  258. package/build/boolean/index.d.ts +0 -9
  259. package/build/boolean/index.d.ts.map +0 -1
  260. package/build/boolean/index.js +0 -9
  261. package/build/boolean/index.js.map +0 -1
  262. package/build/enum/enum-entries.d.ts.map +0 -1
  263. package/build/enum/enum-entries.js.map +0 -1
  264. package/build/enum/enum-key-by-value.d.ts.map +0 -1
  265. package/build/enum/enum-key-by-value.js.map +0 -1
  266. package/build/enum/enum-keys.js.map +0 -1
  267. package/build/enum/enum-safe-value.d.ts.map +0 -1
  268. package/build/enum/enum-safe-value.js.map +0 -1
  269. package/build/enum/enum-values.js.map +0 -1
  270. package/build/enum/index.d.ts.map +0 -1
  271. package/build/enum/index.js.map +0 -1
  272. package/build/enum/types.js +0 -2
  273. package/build/enum/types.js.map +0 -1
  274. package/build/enum/validate-enum-value.d.ts.map +0 -1
  275. package/build/enum/validate-enum-value.js.map +0 -1
  276. package/build/function/compose.d.ts.map +0 -1
  277. package/build/function/compose.js.map +0 -1
  278. package/build/function/debounce.d.ts.map +0 -1
  279. package/build/function/debounce.js.map +0 -1
  280. package/build/function/index.js.map +0 -1
  281. package/build/function/memoize.d.ts +0 -30
  282. package/build/function/memoize.d.ts.map +0 -1
  283. package/build/function/memoize.js +0 -44
  284. package/build/function/memoize.js.map +0 -1
  285. package/build/function/once.js.map +0 -1
  286. package/build/function/sleep.js.map +0 -1
  287. package/build/function/throttle.d.ts.map +0 -1
  288. package/build/function/throttle.js.map +0 -1
  289. package/build/function/types.d.ts +0 -5
  290. package/build/function/types.d.ts.map +0 -1
  291. package/build/function/types.js +0 -2
  292. package/build/function/types.js.map +0 -1
  293. package/build/index.d.ts +0 -38
  294. package/build/index.d.ts.map +0 -1
  295. package/build/index.js +0 -64
  296. package/build/index.js.map +0 -1
  297. package/build/lru-cache.d.ts.map +0 -1
  298. package/build/lru-cache.js.map +0 -1
  299. package/build/number/assert.js.map +0 -1
  300. package/build/number/index.d.ts +0 -9
  301. package/build/number/index.d.ts.map +0 -1
  302. package/build/number/index.js +0 -9
  303. package/build/number/index.js.map +0 -1
  304. package/build/object/assert-object.js.map +0 -1
  305. package/build/object/assert.d.ts.map +0 -1
  306. package/build/object/assert.js.map +0 -1
  307. package/build/object/clone.d.ts.map +0 -1
  308. package/build/object/clone.js.map +0 -1
  309. package/build/object/equals.js.map +0 -1
  310. package/build/object/filter-cached.d.ts +0 -21
  311. package/build/object/filter-cached.js.map +0 -1
  312. package/build/object/filter.js.map +0 -1
  313. package/build/object/has-circular-reference.js.map +0 -1
  314. package/build/object/hash.d.ts.map +0 -1
  315. package/build/object/hash.js.map +0 -1
  316. package/build/object/index.js.map +0 -1
  317. package/build/object/json-circular-replacer.js.map +0 -1
  318. package/build/object/key-value-pairs.js.map +0 -1
  319. package/build/object/map-cached.d.ts +0 -20
  320. package/build/object/map-cached.d.ts.map +0 -1
  321. package/build/object/map-cached.js.map +0 -1
  322. package/build/object/map.js.map +0 -1
  323. package/build/object/merge.js.map +0 -1
  324. package/build/object/object-diff.js.map +0 -1
  325. package/build/object/object-flatten.js.map +0 -1
  326. package/build/object/object-invert.js.map +0 -1
  327. package/build/object/omit.js.map +0 -1
  328. package/build/object/pick.js.map +0 -1
  329. package/build/object/property-paths.js.map +0 -1
  330. package/build/object/security-utils.d.ts +0 -59
  331. package/build/object/security-utils.d.ts.map +0 -1
  332. package/build/object/security-utils.js +0 -161
  333. package/build/object/security-utils.js.map +0 -1
  334. package/build/object/sort-keys.d.ts.map +0 -1
  335. package/build/object/sort-keys.js +0 -52
  336. package/build/object/sort-keys.js.map +0 -1
  337. package/build/object/types.d.ts.map +0 -1
  338. package/build/object/types.js +0 -6
  339. package/build/object/types.js.map +0 -1
  340. package/build/string/assert.d.ts.map +0 -1
  341. package/build/string/assert.js.map +0 -1
  342. package/build/string/case-conversion.js.map +0 -1
  343. package/build/string/comparison.js.map +0 -1
  344. package/build/string/formatting.js.map +0 -1
  345. package/build/string/index.js.map +0 -1
  346. package/build/string/transformation.js.map +0 -1
  347. package/build/string/types.d.ts +0 -44
  348. package/build/string/types.d.ts.map +0 -1
  349. package/build/string/types.js +0 -2
  350. package/build/string/types.js.map +0 -1
  351. package/build/string/validation.js.map +0 -1
  352. package/build/time/elapsed-time/constants.d.ts +0 -10
  353. package/build/time/elapsed-time/constants.js.map +0 -1
  354. package/build/time/elapsed-time/elapsed-time.d.ts.map +0 -1
  355. package/build/time/elapsed-time/elapsed-time.js.map +0 -1
  356. package/build/time/elapsed-time/types.d.ts +0 -150
  357. package/build/time/elapsed-time/types.d.ts.map +0 -1
  358. package/build/time/elapsed-time/types.js +0 -2
  359. package/build/time/elapsed-time/types.js.map +0 -1
  360. package/build/time/elapsed-time/utils.d.ts.map +0 -1
  361. package/build/time/elapsed-time/utils.js.map +0 -1
  362. package/build/time/index.d.ts +0 -18
  363. package/build/time/index.d.ts.map +0 -1
  364. package/build/time/index.js.map +0 -1
  365. package/build/time/stopwatch/entry-types.d.ts +0 -13
  366. package/build/time/stopwatch/entry-types.d.ts.map +0 -1
  367. package/build/time/stopwatch/entry-types.js +0 -2
  368. package/build/time/stopwatch/entry-types.js.map +0 -1
  369. package/build/time/stopwatch/entry.d.ts.map +0 -1
  370. package/build/time/stopwatch/entry.js.map +0 -1
  371. package/build/time/stopwatch/stopwatch.d.ts.map +0 -1
  372. package/build/time/stopwatch/stopwatch.js.map +0 -1
  373. /package/{build → dist}/array/array-chunk.d.ts.map +0 -0
  374. /package/{build → dist}/array/array-compact.d.ts.map +0 -0
  375. /package/{build → dist}/array/array-contains.d.ts.map +0 -0
  376. /package/{build → dist}/array/array-count-by.d.ts.map +0 -0
  377. /package/{build → dist}/array/array-element.d.ts +0 -0
  378. /package/{build → dist}/array/array-element.d.ts.map +0 -0
  379. /package/{build → dist}/array/array-filter.d.ts.map +0 -0
  380. /package/{build → dist}/array/array-partition.d.ts.map +0 -0
  381. /package/{build → dist}/array/array-range.d.ts.map +0 -0
  382. /package/{build → dist}/array/array-sample.d.ts.map +0 -0
  383. /package/{build → dist}/array/array-shuffle.d.ts.map +0 -0
  384. /package/{build → dist}/array/array-sort-by.d.ts.map +0 -0
  385. /package/{build → dist}/array/array-zip.d.ts.map +0 -0
  386. /package/{build → dist}/array/unique.d.ts.map +0 -0
  387. /package/{build → dist}/asserts/errors.d.ts +0 -0
  388. /package/{build → dist}/asserts/internal-utils.d.ts +0 -0
  389. /package/{build → dist}/enum/enum-keys.d.ts +0 -0
  390. /package/{build → dist}/enum/enum-keys.d.ts.map +0 -0
  391. /package/{build → dist}/enum/enum-values.d.ts +0 -0
  392. /package/{build → dist}/enum/enum-values.d.ts.map +0 -0
  393. /package/{build → dist}/enum/types.d.ts +0 -0
  394. /package/{build → dist}/enum/types.d.ts.map +0 -0
  395. /package/{build → dist}/function/index.d.ts +0 -0
  396. /package/{build → dist}/function/index.d.ts.map +0 -0
  397. /package/{build → dist}/function/once.d.ts +0 -0
  398. /package/{build → dist}/function/sleep.d.ts +0 -0
  399. /package/{build → dist}/function/sleep.d.ts.map +0 -0
  400. /package/{build → dist}/number/assert.d.ts +0 -0
  401. /package/{build → dist}/number/assert.d.ts.map +0 -0
  402. /package/{build → dist}/object/equals.d.ts +0 -0
  403. /package/{build → dist}/object/filter.d.ts +0 -0
  404. /package/{build → dist}/object/has-circular-reference.d.ts +0 -0
  405. /package/{build → dist}/object/json-circular-replacer.d.ts +0 -0
  406. /package/{build → dist}/object/key-value-pairs.d.ts +0 -0
  407. /package/{build → dist}/object/key-value-pairs.d.ts.map +0 -0
  408. /package/{build → dist}/object/map.d.ts +0 -0
  409. /package/{build → dist}/object/map.d.ts.map +0 -0
  410. /package/{build → dist}/object/merge.d.ts +0 -0
  411. /package/{build → dist}/object/object-invert.d.ts +0 -0
  412. /package/{build → dist}/object/object-invert.d.ts.map +0 -0
  413. /package/{build → dist}/object/omit.d.ts +0 -0
  414. /package/{build → dist}/object/omit.d.ts.map +0 -0
  415. /package/{build → dist}/object/pick.d.ts +0 -0
  416. /package/{build → dist}/object/pick.d.ts.map +0 -0
  417. /package/{build → dist}/string/case-conversion.d.ts +0 -0
  418. /package/{build → dist}/string/case-conversion.d.ts.map +0 -0
  419. /package/{build → dist}/string/comparison.d.ts +0 -0
  420. /package/{build → dist}/string/formatting.d.ts +0 -0
  421. /package/{build → dist}/string/index.d.ts +0 -0
  422. /package/{build → dist}/string/index.d.ts.map +0 -0
  423. /package/{build → dist}/string/transformation.d.ts +0 -0
  424. /package/{build → dist}/string/transformation.d.ts.map +0 -0
  425. /package/{build → dist}/string/validation.d.ts +0 -0
  426. /package/{build → dist}/string/validation.d.ts.map +0 -0
@@ -0,0 +1,336 @@
1
+ /**
2
+ * Represents a single time unit with its numeric value.
3
+ * Used internally for formatting operations to map unit names to their calculated values.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const hour: ITimeUnitValue = { unit: 'hour', value: 2 };
8
+ * const minutes: ITimeUnitValue = { unit: 'minute', value: 30 };
9
+ * ```
10
+ */
11
+ export interface ITimeUnitValue {
12
+ /** The time unit type (week, day, hour, minute, second, millisecond) */
13
+ unit: TTimeUnit;
14
+ /** The numeric value for this time unit */
15
+ value: number;
16
+ }
17
+ /**
18
+ * Complete formatting options for elapsed time output.
19
+ * Controls how time values are displayed, including negative value handling, unit visibility, and label customization.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Show at most 2 units, hide zero-valued units, wrap negative values in parentheses
24
+ * const options: ITimeElapsedFormatOptions = {
25
+ * maxUnits: 2,
26
+ * showZeroValues: false,
27
+ * negativeValueFormat: 'Parenthesis'
28
+ * };
29
+ *
30
+ * const elapsed = new ElapsedTime(-3661000);
31
+ * elapsed.Format('medium', options); // "(1 hour 1 min)"
32
+ * ```
33
+ */
34
+ export interface ITimeElapsedFormatOptions {
35
+ /** How to format negative values: 'Empty' (no indicator), 'NegativeSign' (prefix with -), 'Parenthesis' (wrap in parentheses), or 'Brackets' (wrap in brackets) */
36
+ negativeValueFormat?: 'Empty' | 'NegativeSign' | 'Parenthesis' | 'Brackets' | undefined;
37
+ /** Show zero value units in formatter output (default: false) */
38
+ showZeroValues?: boolean | undefined;
39
+ /** Maximum number of units to include in formatter output (default: unlimited) */
40
+ maxUnits?: number | undefined;
41
+ /** Custom unit labels for formatter */
42
+ unitLabels?: {
43
+ week?: string | ((_value: number) => string) | undefined;
44
+ day?: string | ((_value: number) => string) | undefined;
45
+ hour?: string | ((_value: number) => string) | undefined;
46
+ minute?: string | ((_value: number) => string) | undefined;
47
+ second?: string | ((_value: number) => string) | undefined;
48
+ millisecond?: string | ((_value: number) => string) | undefined;
49
+ } | undefined;
50
+ }
51
+ /**
52
+ * Predefined time format styles for elapsed time display.
53
+ *
54
+ * - `concise` - Ultra-compact single-letter units: "1h 30m 45s"
55
+ * - `short` - Abbreviated readable units: "1hr 30min 45sec"
56
+ * - `medium` - Balanced readability: "1 hour 30 min 45 sec"
57
+ * - `long` - Full English words with pluralization: "1 hour 30 minutes 45 seconds"
58
+ * - `mostSignificant` - Only the 2 most significant units: "1 hour 30 min"
59
+ * - `time` - Clock format with hours and minutes: "1:30"
60
+ * - `timeWithSeconds` - Extended clock format: "1:30:45"
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const elapsed = new ElapsedTime(5425000); // 1h 30m 25s
65
+ *
66
+ * elapsed.Format('concise'); // "1h 30m 25s"
67
+ * elapsed.Format('short'); // "1hr 30min 25sec"
68
+ * elapsed.Format('medium'); // "1 hour 30 min 25 sec"
69
+ * elapsed.Format('long'); // "1 hour 30 minutes 25 seconds"
70
+ * ```
71
+ */
72
+ export type TTimeElapsedFormats = 'concise' | 'short' | 'medium' | 'long' | 'mostSignificant' | 'time' | 'timeWithSeconds';
73
+ /**
74
+ * Available time unit types for elapsed time calculations and formatting.
75
+ * Each unit represents a standard time component used in duration decomposition.
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const units: TTimeUnit[] = ['week', 'day', 'hour', 'minute', 'second', 'millisecond'];
80
+ * ```
81
+ */
82
+ export type TTimeUnit = 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond';
83
+ /**
84
+ * Static string label for a time unit.
85
+ * Used for format styles that use fixed labels regardless of value (e.g., "h", "min", "sec").
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const label: TUnitLabelString = "h";
90
+ * const label2: TUnitLabelString = "hour";
91
+ * ```
92
+ */
93
+ export type TUnitLabelString = string;
94
+ /**
95
+ * Function that generates a time unit label with support for pluralization.
96
+ * Accepts the numeric value and returns the appropriate label string.
97
+ *
98
+ * @param value - The numeric value to determine singular/plural form
99
+ * @returns The appropriate label string (e.g., "hour" or "hours")
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const pluralize: TUnitLabelFunction = (value: number) =>
104
+ * value === 1 ? 'hour' : 'hours';
105
+ *
106
+ * console.log(pluralize(1)); // "hour"
107
+ * console.log(pluralize(2)); // "hours"
108
+ * ```
109
+ */
110
+ export type TUnitLabelFunction = (value: number) => string;
111
+ /**
112
+ * Unit label as either a static string or a function with pluralization support.
113
+ * Allows flexible label definitions for different formatting styles.
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * // Static string label
118
+ * const label1: TUnitLabel = "h";
119
+ *
120
+ * // Function-based label with pluralization
121
+ * const label2: TUnitLabel = (value: number) => value === 1 ? 'hour' : 'hours';
122
+ * ```
123
+ */
124
+ export type TUnitLabel = TUnitLabelString | TUnitLabelFunction;
125
+ /**
126
+ * Mapping of time units to their corresponding labels.
127
+ * Base interface that all unit label configurations implement.
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const labels: IUnitLabelMap = {
132
+ * millisecond: 'ms',
133
+ * second: 's',
134
+ * minute: 'm',
135
+ * hour: 'h',
136
+ * day: 'd',
137
+ * week: 'w'
138
+ * };
139
+ * ```
140
+ */
141
+ export interface IUnitLabelMap {
142
+ /** Label for milliseconds */
143
+ millisecond: TUnitLabel;
144
+ /** Label for seconds */
145
+ second: TUnitLabel;
146
+ /** Label for minutes */
147
+ minute: TUnitLabel;
148
+ /** Label for hours */
149
+ hour: TUnitLabel;
150
+ /** Label for days */
151
+ day: TUnitLabel;
152
+ /** Label for weeks */
153
+ week: TUnitLabel;
154
+ }
155
+ /**
156
+ * Concise format style with single-character unit labels.
157
+ * Used for ultra-compact time representations (e.g., "1h 30m 45s").
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * const labels: IConciseUnitLabels = {
162
+ * style: 'concise',
163
+ * millisecond: 'ms',
164
+ * second: 's',
165
+ * minute: 'm',
166
+ * hour: 'h',
167
+ * day: 'd',
168
+ * week: 'w'
169
+ * };
170
+ * ```
171
+ */
172
+ export interface IConciseUnitLabels extends IUnitLabelMap {
173
+ readonly style?: 'concise';
174
+ millisecond: 'ms';
175
+ second: 's';
176
+ minute: 'm';
177
+ hour: 'h';
178
+ day: 'd';
179
+ week: 'w';
180
+ }
181
+ /**
182
+ * Long format style with full English words and proper pluralization support.
183
+ * Used for readable time representations (e.g., "1 hour 30 minutes 45 seconds").
184
+ * All labels are functions that handle singular/plural forms based on the value.
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * const labels: ILongUnitLabels = {
189
+ * style: 'long',
190
+ * hour: (value) => value === 1 ? 'hour' : 'hours',
191
+ * minute: (value) => value === 1 ? 'minute' : 'minutes'
192
+ * };
193
+ *
194
+ * labels.hour(1); // "hour"
195
+ * labels.hour(2); // "hours"
196
+ * ```
197
+ */
198
+ export interface ILongUnitLabels extends IUnitLabelMap {
199
+ readonly style?: 'long';
200
+ millisecond: TUnitLabelFunction;
201
+ second: TUnitLabelFunction;
202
+ minute: TUnitLabelFunction;
203
+ hour: TUnitLabelFunction;
204
+ day: TUnitLabelFunction;
205
+ week: TUnitLabelFunction;
206
+ }
207
+ /**
208
+ * Medium format style with abbreviated but readable unit labels.
209
+ * Provides a balanced middle ground between concise and long formats.
210
+ * Used for moderately compact time representations (e.g., "1 hour 30 min 45 sec").
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const labels: IMediumUnitLabels = {
215
+ * style: 'medium',
216
+ * millisecond: 'ms',
217
+ * second: 'sec',
218
+ * minute: 'min',
219
+ * hour: 'hour',
220
+ * day: 'day',
221
+ * week: 'week'
222
+ * };
223
+ * ```
224
+ */
225
+ export interface IMediumUnitLabels extends IUnitLabelMap {
226
+ readonly style?: 'medium';
227
+ millisecond: 'ms';
228
+ second: 'sec';
229
+ minute: 'min';
230
+ hour: 'hour';
231
+ day: 'day';
232
+ week: 'week';
233
+ }
234
+ /**
235
+ * Short format style with short but readable abbreviations.
236
+ * Provides compact labels that remain more readable than concise format.
237
+ * Used for semi-compact time representations (e.g., "1hr 30min 45sec").
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * const labels: IShortUnitLabels = {
242
+ * style: 'short',
243
+ * millisecond: 'ms',
244
+ * second: 'sec',
245
+ * minute: 'min',
246
+ * hour: 'hr',
247
+ * day: 'd',
248
+ * week: 'wk'
249
+ * };
250
+ * ```
251
+ */
252
+ export interface IShortUnitLabels extends IUnitLabelMap {
253
+ readonly style?: 'short';
254
+ millisecond: 'ms';
255
+ second: 'sec';
256
+ minute: 'min';
257
+ hour: 'hr';
258
+ day: 'd';
259
+ week: 'wk';
260
+ }
261
+ /**
262
+ * Complete set of default unit label configurations for all predefined formatting styles.
263
+ * Maps format style names to their corresponding unit label sets.
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * const conciseLabels = {
268
+ * concise: { style: 'concise', hour: 'h', minute: 'm', second: 's' },
269
+ * long: { style: 'long', hour: (v) => v === 1 ? 'hour' : 'hours' },
270
+ * medium: { style: 'medium', hour: 'hour', minute: 'min', second: 'sec' },
271
+ * short: { style: 'short', hour: 'hr', minute: 'min', second: 'sec' }
272
+ * };
273
+ * ```
274
+ */
275
+ export interface IDefaultUnitLabels {
276
+ concise: IConciseUnitLabels;
277
+ long: ILongUnitLabels;
278
+ medium: IMediumUnitLabels;
279
+ short: IShortUnitLabels;
280
+ }
281
+ /**
282
+ * Configuration options for the FormatElapsedTime convenience function.
283
+ * Allows customization of the output format through maxUnits and custom unit labels.
284
+ * Always formats using the 'concise' style with optional overrides.
285
+ *
286
+ * @example
287
+ * ```typescript
288
+ * // Limit to 2 units
289
+ * const config1: IFormatConfig = { maxUnits: 2 };
290
+ * FormatElapsedTime(5425000, config1); // "1h 30m"
291
+ *
292
+ * // Custom labels
293
+ * const config2: IFormatConfig = {
294
+ * unitLabels: { hour: 'hrs', minute: 'mins', second: 'secs' }
295
+ * };
296
+ * FormatElapsedTime(3661000, config2); // "1 hrs 1 mins 1 secs"
297
+ * ```
298
+ */
299
+ export interface IFormatConfig {
300
+ /** Maximum number of units to display */
301
+ maxUnits?: number;
302
+ /** Unit labels to use for formatting. When omitted, the format's default labels are used. */
303
+ unitLabels?: Partial<IUnitLabelMap>;
304
+ }
305
+ /**
306
+ * Mapping of all predefined elapsed time format styles to their configurations.
307
+ * Each format provides a complete IFormatConfig with specific unitLabels and optional settings.
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * const config: IFormatConfig = {
312
+ * unitLabels: { hour: 'h', minute: 'm', second: 's' },
313
+ * maxUnits: undefined
314
+ * };
315
+ *
316
+ * const elapsed = new ElapsedTime(5425000);
317
+ * elapsed.Format('concise'); // Uses FORMATS.concise configuration
318
+ * ```
319
+ */
320
+ export interface IFormats {
321
+ /** Format like "1h 30m 45s" */
322
+ concise: IFormatConfig;
323
+ /** Format like "1 hour 30 minutes 45 seconds" with proper pluralization */
324
+ long: IFormatConfig;
325
+ /** Format like "1 hour 30 min 45 sec" */
326
+ medium: IFormatConfig;
327
+ /** Format showing only the most significant 2 units */
328
+ mostSignificant: IFormatConfig;
329
+ /** Format like "1hr 30min 45sec" */
330
+ short: IFormatConfig;
331
+ /** Format showing only hours and minutes like "1:30" */
332
+ time: IFormatConfig;
333
+ /** Format showing hours, minutes and seconds like "1:30:45" */
334
+ timeWithSeconds: IFormatConfig;
335
+ }
336
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/time/elapsed-time/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { ITimeElapsedFormatOptions } from './types.js';
1
+ import type { ITimeElapsedFormatOptions } from './types.js';
2
2
  /**
3
3
  * Apply default options to format options object.
4
4
  * Merges user-provided options with sensible defaults for time formatting.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/time/elapsed-time/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,iBAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAOnG;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -21,4 +21,3 @@ function ApplyDefaultOptions(options) {
21
21
  };
22
22
  }
23
23
  export { ApplyDefaultOptions };
24
- //# sourceMappingURL=utils.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Time measurement utilities.
3
+ *
4
+ * Provides the {@link ElapsedTime} value-object for representing and formatting
5
+ * durations, and the {@link Stopwatch} class for recording timestamped events
6
+ * such as starts, stops, pauses, resumes, and laps.
7
+ *
8
+ * @module time
9
+ */
10
+ export * from './elapsed-time/elapsed-time.js';
11
+ export type { ITimeUnitValue, ITimeElapsedFormatOptions, TTimeElapsedFormats, TTimeUnit, IUnitLabelMap, } from './elapsed-time/types.js';
12
+ export * from './stopwatch/stopwatch.js';
13
+ export * from './stopwatch/entry.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/time/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,gCAAgC,CAAC;AAC/C,YAAY,EACX,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,SAAS,EACT,aAAa,GACb,MAAM,yBAAyB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
@@ -8,10 +8,5 @@
8
8
  * @module time
9
9
  */
10
10
  export * from './elapsed-time/elapsed-time.js';
11
- export * from './elapsed-time/types.js';
12
- export * from './elapsed-time/constants.js';
13
- export * from './elapsed-time/utils.js';
14
11
  export * from './stopwatch/stopwatch.js';
15
12
  export * from './stopwatch/entry.js';
16
- export * from './stopwatch/entry-types.js';
17
- //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { ElapsedTime } from '../elapsed-time/elapsed-time.js';
2
- import { Stopwatch } from './stopwatch.js';
2
+ import type { Stopwatch } from './stopwatch.js';
3
3
  /**
4
4
  * Represents a single timestamped entry recorded by a {@link Stopwatch}.
5
5
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/time/stopwatch/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IAed,OAAO,CAAC,QAAQ,CAAC,UAAU;IAdvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC;;;;;;;;;OASG;gBAC0B,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM;IAOtF;;;;;;;;;OASG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAW,OAAO,IAAI,WAAW,CAUhC;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAW,YAAY,IAAI,WAAW,CAUrC;CACD"}
@@ -102,4 +102,3 @@ export class StopwatchEntry {
102
102
  return new ElapsedTime(this._timestamp - firstEntry.timestamp);
103
103
  }
104
104
  }
105
- //# sourceMappingURL=entry.js.map
@@ -1,5 +1,23 @@
1
1
  import { ElapsedTime } from '../elapsed-time/elapsed-time.js';
2
2
  import { StopwatchEntry } from './entry.js';
3
+ import { SimpleError } from '../../asserts/errors.js';
4
+ /**
5
+ * Error thrown by Stopwatch when an invalid operation is attempted.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const sw = new Stopwatch();
10
+ * sw.Start();
11
+ * sw.Stop();
12
+ * sw.Resume(); // Throws StopwatchError
13
+ * ```
14
+ */
15
+ export declare class StopwatchError extends SimpleError {
16
+ /**
17
+ * @param message - Description of the stopwatch state error
18
+ */
19
+ constructor(message: string);
20
+ }
3
21
  /**
4
22
  * Represents a stopwatch for measuring time intervals.
5
23
  *
@@ -117,11 +135,12 @@ export declare class Stopwatch {
117
135
  /**
118
136
  * Starts the stopwatch by recording an initial timestamp entry.
119
137
  *
120
- * If the stopwatch has already been started, this is a no-op and the
138
+ * If the stopwatch has already been started, this is idempotent and the
121
139
  * existing latest entry is returned without creating a new one.
122
140
  *
123
- * @returns The start {@link StopwatchEntry} that was recorded, or `undefined`
124
- * if the stopwatch was already running (should not happen in practice).
141
+ * @returns The new start entry if the stopwatch was not running,
142
+ * or the existing latest entry if `Start()` was called while already running.
143
+ * Check `this.Running` before calling to distinguish the two cases.
125
144
  *
126
145
  * @example
127
146
  * ```typescript
@@ -181,6 +200,11 @@ export declare class Stopwatch {
181
200
  * After resuming, elapsed-time calculations continue to accumulate from where
182
201
  * they left off.
183
202
  *
203
+ * @remarks
204
+ * Calling `Resume()` after {@link Stop} has no effect and returns `null`, since
205
+ * `Stop()` sets the internal `_pausedAt` flag to a non-null value. The stopwatch
206
+ * must be explicitly {@link Reset} and {@link Start}ed again to begin timing anew.
207
+ *
184
208
  * @returns A new {@link StopwatchEntry} recording the resume time, or `null`
185
209
  * if the stopwatch was not paused.
186
210
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopwatch.d.ts","sourceRoot":"","sources":["../../../src/time/stopwatch/stopwatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC9C;;OAEG;gBACS,OAAO,EAAE,MAAM;CAG3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,SAAS;IACrB,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;;;;OAYG;gBACS,gBAAgB,UAAQ;IAMpC;;;;OAIG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;OAKG;IACH,IAAW,KAAK,IAAI,cAAc,GAAG,SAAS,CAE7C;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,cAAc,GAAG,SAAS,CAE9C;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,IAAW,OAAO,IAAI,WAAW,CAUhC;IAED;;;;;OAKG;IACH,IAAW,KAAK,IAAI,cAAc,EAAE,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,cAAc,EAAE,CAErC;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,IAAI,cAAc,GAAG,SAAS;IAU1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,IAAI,IAAI,cAAc,GAAG,SAAS;IAmBzC;;;;;;;;;;;;;;;;;;;OAmBG;IACI,KAAK,IAAI,cAAc,GAAG,IAAI;IAQrC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,MAAM,IAAI,cAAc,GAAG,IAAI;IActC;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,IAAI,cAAc;IAW9B;;;;;;;;;;;;;;;;;;OAkBG;IACI,GAAG,IAAI,WAAW;IAUzB;;;;;;;;;;;;;;;OAeG;IACI,KAAK,IAAI,IAAI;CAKpB"}
@@ -1,5 +1,25 @@
1
1
  import { ElapsedTime } from '../elapsed-time/elapsed-time.js';
2
2
  import { StopwatchEntry } from './entry.js';
3
+ import { SimpleError } from '../../asserts/errors.js';
4
+ /**
5
+ * Error thrown by Stopwatch when an invalid operation is attempted.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const sw = new Stopwatch();
10
+ * sw.Start();
11
+ * sw.Stop();
12
+ * sw.Resume(); // Throws StopwatchError
13
+ * ```
14
+ */
15
+ export class StopwatchError extends SimpleError {
16
+ /**
17
+ * @param message - Description of the stopwatch state error
18
+ */
19
+ constructor(message) {
20
+ super(message);
21
+ }
22
+ }
3
23
  /**
4
24
  * Represents a stopwatch for measuring time intervals.
5
25
  *
@@ -144,11 +164,12 @@ export class Stopwatch {
144
164
  /**
145
165
  * Starts the stopwatch by recording an initial timestamp entry.
146
166
  *
147
- * If the stopwatch has already been started, this is a no-op and the
167
+ * If the stopwatch has already been started, this is idempotent and the
148
168
  * existing latest entry is returned without creating a new one.
149
169
  *
150
- * @returns The start {@link StopwatchEntry} that was recorded, or `undefined`
151
- * if the stopwatch was already running (should not happen in practice).
170
+ * @returns The new start entry if the stopwatch was not running,
171
+ * or the existing latest entry if `Start()` was called while already running.
172
+ * Check `this.Running` before calling to distinguish the two cases.
152
173
  *
153
174
  * @example
154
175
  * ```typescript
@@ -238,6 +259,11 @@ export class Stopwatch {
238
259
  * After resuming, elapsed-time calculations continue to accumulate from where
239
260
  * they left off.
240
261
  *
262
+ * @remarks
263
+ * Calling `Resume()` after {@link Stop} has no effect and returns `null`, since
264
+ * `Stop()` sets the internal `_pausedAt` flag to a non-null value. The stopwatch
265
+ * must be explicitly {@link Reset} and {@link Start}ed again to begin timing anew.
266
+ *
241
267
  * @returns A new {@link StopwatchEntry} recording the resume time, or `null`
242
268
  * if the stopwatch was not paused.
243
269
  *
@@ -250,6 +276,9 @@ export class Stopwatch {
250
276
  * ```
251
277
  */
252
278
  Resume() {
279
+ if (this._stopped) {
280
+ throw new StopwatchError('Cannot resume after stopwatch has been stopped');
281
+ }
253
282
  if (this._pausedAt === null)
254
283
  return null;
255
284
  const current = Date.now();
@@ -334,4 +363,3 @@ export class Stopwatch {
334
363
  this._stopped = false;
335
364
  }
336
365
  }
337
- //# sourceMappingURL=stopwatch.js.map