@ls-stack/utils 3.63.0 → 3.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/{arrayUtils.d.cts → arrayUtils.d.mts} +24 -23
  2. package/dist/arrayUtils.mjs +249 -0
  3. package/dist/assertions-qMxfVhSu.mjs +207 -0
  4. package/dist/{assertions.d.ts → assertions.d.mts} +4 -3
  5. package/dist/assertions.mjs +3 -0
  6. package/dist/asyncQueue.d.mts +497 -0
  7. package/dist/asyncQueue.mjs +757 -0
  8. package/dist/{awaitDebounce.d.cts → awaitDebounce.d.mts} +11 -6
  9. package/dist/awaitDebounce.mjs +54 -0
  10. package/dist/{cache.d.ts → cache.d.mts} +76 -68
  11. package/dist/cache.mjs +355 -0
  12. package/dist/castValues-DfICShCc.mjs +19 -0
  13. package/dist/{castValues.d.cts → castValues.d.mts} +3 -2
  14. package/dist/castValues.mjs +3 -0
  15. package/dist/{concurrentCalls.d.ts → concurrentCalls.d.mts} +74 -65
  16. package/dist/concurrentCalls.mjs +295 -0
  17. package/dist/consoleFmt.d.mts +55 -0
  18. package/dist/consoleFmt.mjs +63 -0
  19. package/dist/conversions-DTmwEMIu.mjs +12 -0
  20. package/dist/conversions.d.mts +4 -0
  21. package/dist/conversions.mjs +3 -0
  22. package/dist/createThrottleController.d.mts +18 -0
  23. package/dist/createThrottleController.mjs +40 -0
  24. package/dist/debounce.d.mts +47 -0
  25. package/dist/debounce.mjs +117 -0
  26. package/dist/dedent.d.mts +74 -0
  27. package/dist/dedent.mjs +80 -0
  28. package/dist/deepEqual-C7EZEixx.mjs +78 -0
  29. package/dist/{deepEqual.d.cts → deepEqual.d.mts} +3 -2
  30. package/dist/deepEqual.mjs +3 -0
  31. package/dist/{deepReplaceValues.d.cts → deepReplaceValues.d.mts} +4 -3
  32. package/dist/deepReplaceValues.mjs +61 -0
  33. package/dist/diffParser.d.mts +63 -0
  34. package/dist/diffParser.mjs +410 -0
  35. package/dist/enhancedMap.d.mts +21 -0
  36. package/dist/enhancedMap.mjs +69 -0
  37. package/dist/exhaustiveMatch.d.mts +10 -0
  38. package/dist/exhaustiveMatch.mjs +48 -0
  39. package/dist/{filterObjectOrArrayKeys.d.cts → filterObjectOrArrayKeys.d.mts} +15 -8
  40. package/dist/filterObjectOrArrayKeys.mjs +497 -0
  41. package/dist/{getAutoIncrementId.d.cts → getAutoIncrementId.d.mts} +9 -5
  42. package/dist/getAutoIncrementId.mjs +53 -0
  43. package/dist/{getCompositeKey.d.cts → getCompositeKey.d.mts} +3 -2
  44. package/dist/getCompositeKey.mjs +50 -0
  45. package/dist/{getValueStableKey.d.cts → getValueStableKey.d.mts} +5 -3
  46. package/dist/getValueStableKey.mjs +17 -0
  47. package/dist/{hash.d.cts → hash.d.mts} +3 -2
  48. package/dist/hash.mjs +28 -0
  49. package/dist/interpolate.d.mts +17 -0
  50. package/dist/interpolate.mjs +28 -0
  51. package/dist/{iteratorUtils.d.cts → iteratorUtils.d.mts} +5 -4
  52. package/dist/iteratorUtils.mjs +39 -0
  53. package/dist/keepPrevIfUnchanged.d.mts +12 -0
  54. package/dist/keepPrevIfUnchanged.mjs +9 -0
  55. package/dist/keyedMap.d.mts +76 -0
  56. package/dist/keyedMap.mjs +139 -0
  57. package/dist/keyedSet.d.mts +77 -0
  58. package/dist/keyedSet.mjs +129 -0
  59. package/dist/{levenshtein.d.cts → levenshtein.d.mts} +3 -2
  60. package/dist/levenshtein.mjs +121 -0
  61. package/dist/main.d.mts +4 -0
  62. package/dist/main.mjs +7 -0
  63. package/dist/matchPath.d.mts +50 -0
  64. package/dist/matchPath.mjs +81 -0
  65. package/dist/mathUtils-BDP1lM_z.mjs +81 -0
  66. package/dist/{mathUtils.d.cts → mathUtils.d.mts} +3 -2
  67. package/dist/mathUtils.mjs +3 -0
  68. package/dist/{mutationUtils.d.cts → mutationUtils.d.mts} +6 -5
  69. package/dist/mutationUtils.mjs +44 -0
  70. package/dist/{objUtils.d.ts → objUtils.d.mts} +8 -6
  71. package/dist/objUtils.mjs +115 -0
  72. package/dist/parallelAsyncCalls.d.mts +83 -0
  73. package/dist/parallelAsyncCalls.mjs +121 -0
  74. package/dist/partialEqual.d.mts +139 -0
  75. package/dist/partialEqual.mjs +1055 -0
  76. package/dist/promiseUtils.d.mts +9 -0
  77. package/dist/promiseUtils.mjs +17 -0
  78. package/dist/regexUtils.d.mts +18 -0
  79. package/dist/regexUtils.mjs +34 -0
  80. package/dist/{retryOnError.d.cts → retryOnError.d.mts} +38 -37
  81. package/dist/retryOnError.mjs +91 -0
  82. package/dist/{runShellCmd.d.ts → runShellCmd.d.mts} +24 -15
  83. package/dist/runShellCmd.mjs +151 -0
  84. package/dist/{safeJson.d.cts → safeJson.d.mts} +3 -2
  85. package/dist/safeJson.mjs +30 -0
  86. package/dist/{saferTyping.d.cts → saferTyping.d.mts} +4 -3
  87. package/dist/saferTyping.mjs +45 -0
  88. package/dist/serializeXML.d.mts +23 -0
  89. package/dist/serializeXML.mjs +74 -0
  90. package/dist/{shallowEqual.d.cts → shallowEqual.d.mts} +3 -2
  91. package/dist/shallowEqual.mjs +54 -0
  92. package/dist/sleep.d.mts +4 -0
  93. package/dist/sleep.mjs +7 -0
  94. package/dist/stringUtils-DjhWOiYn.mjs +113 -0
  95. package/dist/{stringUtils.d.cts → stringUtils.d.mts} +3 -2
  96. package/dist/stringUtils.mjs +3 -0
  97. package/dist/{testUtils.d.ts → testUtils.d.mts} +83 -52
  98. package/dist/testUtils.mjs +310 -0
  99. package/dist/{throttle.d.ts → throttle.d.mts} +18 -17
  100. package/dist/throttle.mjs +102 -0
  101. package/dist/time-sr2lhQRw.mjs +67 -0
  102. package/dist/{time.d.ts → time.d.mts} +8 -7
  103. package/dist/time.mjs +3 -0
  104. package/dist/{timers.d.cts → timers.d.mts} +22 -13
  105. package/dist/timers.mjs +220 -0
  106. package/dist/{tsResult.d.cts → tsResult.d.mts} +52 -48
  107. package/dist/tsResult.mjs +142 -0
  108. package/dist/typeGuards-B1mzA-Rz.mjs +128 -0
  109. package/dist/{typeGuards.d.cts → typeGuards.d.mts} +3 -2
  110. package/dist/typeGuards.mjs +3 -0
  111. package/dist/{typeUtils.d.ts → typeUtils.d.mts} +13 -34
  112. package/dist/typeUtils.mjs +1 -0
  113. package/dist/{typedStrings.d.cts → typedStrings.d.mts} +5 -4
  114. package/dist/typedStrings.mjs +131 -0
  115. package/dist/typingFnUtils-Bb8drgKF.mjs +101 -0
  116. package/dist/{typingFnUtils.d.cts → typingFnUtils.d.mts} +13 -22
  117. package/dist/typingFnUtils.mjs +3 -0
  118. package/dist/{typingTestUtils.d.cts → typingTestUtils.d.mts} +11 -15
  119. package/dist/typingTestUtils.mjs +80 -0
  120. package/dist/typingUtils.d.mts +20 -0
  121. package/dist/typingUtils.mjs +1 -0
  122. package/dist/yamlStringify.d.mts +17 -0
  123. package/dist/yamlStringify.mjs +189 -0
  124. package/package.json +65 -234
  125. package/dist/arrayUtils.cjs +0 -229
  126. package/dist/arrayUtils.d.ts +0 -171
  127. package/dist/arrayUtils.js +0 -42
  128. package/dist/assertions.cjs +0 -107
  129. package/dist/assertions.d.cts +0 -192
  130. package/dist/assertions.js +0 -25
  131. package/dist/asyncQueue.cjs +0 -672
  132. package/dist/asyncQueue.d.cts +0 -488
  133. package/dist/asyncQueue.d.ts +0 -488
  134. package/dist/asyncQueue.js +0 -631
  135. package/dist/awaitDebounce.cjs +0 -106
  136. package/dist/awaitDebounce.d.ts +0 -41
  137. package/dist/awaitDebounce.js +0 -28
  138. package/dist/cache.cjs +0 -367
  139. package/dist/cache.d.cts +0 -228
  140. package/dist/cache.js +0 -19
  141. package/dist/castValues.cjs +0 -50
  142. package/dist/castValues.d.ts +0 -4
  143. package/dist/castValues.js +0 -8
  144. package/dist/chunk-5DZT3Z5Z.js +0 -8
  145. package/dist/chunk-6FBIEPWU.js +0 -96
  146. package/dist/chunk-6FIBVC2P.js +0 -56
  147. package/dist/chunk-7CQPOM5I.js +0 -100
  148. package/dist/chunk-B6DNOZCP.js +0 -369
  149. package/dist/chunk-BM4PYVOX.js +0 -109
  150. package/dist/chunk-C2SVCIWE.js +0 -57
  151. package/dist/chunk-CCUPDGSZ.js +0 -132
  152. package/dist/chunk-DBOWTYR4.js +0 -49
  153. package/dist/chunk-DFXNVEH6.js +0 -14
  154. package/dist/chunk-DX2524CZ.js +0 -314
  155. package/dist/chunk-GMJTLFM6.js +0 -60
  156. package/dist/chunk-IATIXMCE.js +0 -20
  157. package/dist/chunk-II4R3VVX.js +0 -25
  158. package/dist/chunk-JF2MDHOJ.js +0 -40
  159. package/dist/chunk-JQFUKJU5.js +0 -71
  160. package/dist/chunk-MI4UE2PQ.js +0 -561
  161. package/dist/chunk-PUKVXYYL.js +0 -52
  162. package/dist/chunk-QQS7I7ZL.js +0 -16
  163. package/dist/chunk-VAAMRG4K.js +0 -20
  164. package/dist/chunk-WFQJUJTC.js +0 -182
  165. package/dist/chunk-ZXIKIA5B.js +0 -178
  166. package/dist/concurrentCalls.cjs +0 -406
  167. package/dist/concurrentCalls.d.cts +0 -116
  168. package/dist/concurrentCalls.js +0 -346
  169. package/dist/consoleFmt.cjs +0 -85
  170. package/dist/consoleFmt.d.cts +0 -54
  171. package/dist/consoleFmt.d.ts +0 -54
  172. package/dist/consoleFmt.js +0 -60
  173. package/dist/conversions.cjs +0 -44
  174. package/dist/conversions.d.cts +0 -3
  175. package/dist/conversions.d.ts +0 -3
  176. package/dist/conversions.js +0 -6
  177. package/dist/createThrottleController.cjs +0 -193
  178. package/dist/createThrottleController.d.cts +0 -13
  179. package/dist/createThrottleController.d.ts +0 -13
  180. package/dist/createThrottleController.js +0 -61
  181. package/dist/debounce.cjs +0 -157
  182. package/dist/debounce.d.cts +0 -46
  183. package/dist/debounce.d.ts +0 -46
  184. package/dist/debounce.js +0 -8
  185. package/dist/dedent.cjs +0 -104
  186. package/dist/dedent.d.cts +0 -73
  187. package/dist/dedent.d.ts +0 -73
  188. package/dist/dedent.js +0 -79
  189. package/dist/deepEqual.cjs +0 -96
  190. package/dist/deepEqual.d.ts +0 -21
  191. package/dist/deepEqual.js +0 -8
  192. package/dist/deepReplaceValues.cjs +0 -87
  193. package/dist/deepReplaceValues.d.ts +0 -27
  194. package/dist/deepReplaceValues.js +0 -7
  195. package/dist/enhancedMap.cjs +0 -131
  196. package/dist/enhancedMap.d.cts +0 -20
  197. package/dist/enhancedMap.d.ts +0 -20
  198. package/dist/enhancedMap.js +0 -10
  199. package/dist/exhaustiveMatch.cjs +0 -66
  200. package/dist/exhaustiveMatch.d.cts +0 -9
  201. package/dist/exhaustiveMatch.d.ts +0 -9
  202. package/dist/exhaustiveMatch.js +0 -40
  203. package/dist/filterObjectOrArrayKeys.cjs +0 -619
  204. package/dist/filterObjectOrArrayKeys.d.ts +0 -88
  205. package/dist/filterObjectOrArrayKeys.js +0 -9
  206. package/dist/getAutoIncrementId.cjs +0 -44
  207. package/dist/getAutoIncrementId.d.ts +0 -46
  208. package/dist/getAutoIncrementId.js +0 -18
  209. package/dist/getCompositeKey.cjs +0 -86
  210. package/dist/getCompositeKey.d.ts +0 -11
  211. package/dist/getCompositeKey.js +0 -8
  212. package/dist/getValueStableKey.cjs +0 -89
  213. package/dist/getValueStableKey.d.ts +0 -15
  214. package/dist/getValueStableKey.js +0 -11
  215. package/dist/hash.cjs +0 -57
  216. package/dist/hash.d.ts +0 -7
  217. package/dist/hash.js +0 -32
  218. package/dist/interpolate.cjs +0 -88
  219. package/dist/interpolate.d.cts +0 -11
  220. package/dist/interpolate.d.ts +0 -11
  221. package/dist/interpolate.js +0 -46
  222. package/dist/iteratorUtils.cjs +0 -73
  223. package/dist/iteratorUtils.d.ts +0 -10
  224. package/dist/iteratorUtils.js +0 -44
  225. package/dist/keepPrevIfUnchanged.cjs +0 -102
  226. package/dist/keepPrevIfUnchanged.d.cts +0 -7
  227. package/dist/keepPrevIfUnchanged.d.ts +0 -7
  228. package/dist/keepPrevIfUnchanged.js +0 -7
  229. package/dist/levenshtein.cjs +0 -180
  230. package/dist/levenshtein.d.ts +0 -5
  231. package/dist/levenshtein.js +0 -153
  232. package/dist/main.cjs +0 -32
  233. package/dist/main.d.cts +0 -3
  234. package/dist/main.d.ts +0 -3
  235. package/dist/main.js +0 -7
  236. package/dist/matchPath.cjs +0 -155
  237. package/dist/matchPath.d.cts +0 -53
  238. package/dist/matchPath.d.ts +0 -53
  239. package/dist/matchPath.js +0 -108
  240. package/dist/mathUtils.cjs +0 -81
  241. package/dist/mathUtils.d.ts +0 -54
  242. package/dist/mathUtils.js +0 -22
  243. package/dist/mutationUtils.cjs +0 -153
  244. package/dist/mutationUtils.d.ts +0 -15
  245. package/dist/mutationUtils.js +0 -55
  246. package/dist/objUtils.cjs +0 -242
  247. package/dist/objUtils.d.cts +0 -28
  248. package/dist/objUtils.js +0 -38
  249. package/dist/parallelAsyncCalls.cjs +0 -162
  250. package/dist/parallelAsyncCalls.d.cts +0 -82
  251. package/dist/parallelAsyncCalls.d.ts +0 -82
  252. package/dist/parallelAsyncCalls.js +0 -126
  253. package/dist/partialEqual.cjs +0 -1196
  254. package/dist/partialEqual.d.cts +0 -141
  255. package/dist/partialEqual.d.ts +0 -141
  256. package/dist/partialEqual.js +0 -1168
  257. package/dist/promiseUtils.cjs +0 -38
  258. package/dist/promiseUtils.d.cts +0 -8
  259. package/dist/promiseUtils.d.ts +0 -8
  260. package/dist/promiseUtils.js +0 -6
  261. package/dist/regexUtils.cjs +0 -60
  262. package/dist/regexUtils.d.cts +0 -17
  263. package/dist/regexUtils.d.ts +0 -17
  264. package/dist/regexUtils.js +0 -33
  265. package/dist/retryOnError.cjs +0 -130
  266. package/dist/retryOnError.d.ts +0 -83
  267. package/dist/retryOnError.js +0 -101
  268. package/dist/runShellCmd.cjs +0 -127
  269. package/dist/runShellCmd.d.cts +0 -90
  270. package/dist/runShellCmd.js +0 -98
  271. package/dist/safeJson.cjs +0 -45
  272. package/dist/safeJson.d.ts +0 -16
  273. package/dist/safeJson.js +0 -8
  274. package/dist/saferTyping.cjs +0 -52
  275. package/dist/saferTyping.d.ts +0 -47
  276. package/dist/saferTyping.js +0 -23
  277. package/dist/serializeXML.cjs +0 -154
  278. package/dist/serializeXML.d.cts +0 -22
  279. package/dist/serializeXML.d.ts +0 -22
  280. package/dist/serializeXML.js +0 -116
  281. package/dist/shallowEqual.cjs +0 -88
  282. package/dist/shallowEqual.d.ts +0 -4
  283. package/dist/shallowEqual.js +0 -63
  284. package/dist/sleep.cjs +0 -32
  285. package/dist/sleep.d.cts +0 -3
  286. package/dist/sleep.d.ts +0 -3
  287. package/dist/sleep.js +0 -6
  288. package/dist/stringUtils.cjs +0 -155
  289. package/dist/stringUtils.d.ts +0 -55
  290. package/dist/stringUtils.js +0 -50
  291. package/dist/testUtils.cjs +0 -1490
  292. package/dist/testUtils.d.cts +0 -133
  293. package/dist/testUtils.js +0 -359
  294. package/dist/throttle.cjs +0 -282
  295. package/dist/throttle.d.cts +0 -98
  296. package/dist/throttle.js +0 -38
  297. package/dist/time.cjs +0 -152
  298. package/dist/time.d.cts +0 -25
  299. package/dist/time.js +0 -38
  300. package/dist/timers.cjs +0 -194
  301. package/dist/timers.d.ts +0 -121
  302. package/dist/timers.js +0 -156
  303. package/dist/tsResult.cjs +0 -226
  304. package/dist/tsResult.d.ts +0 -114
  305. package/dist/tsResult.js +0 -180
  306. package/dist/typeGuards.cjs +0 -70
  307. package/dist/typeGuards.d.ts +0 -111
  308. package/dist/typeGuards.js +0 -18
  309. package/dist/typeUtils.cjs +0 -18
  310. package/dist/typeUtils.d.cts +0 -61
  311. package/dist/typeUtils.js +0 -0
  312. package/dist/typedStrings.cjs +0 -90
  313. package/dist/typedStrings.d.ts +0 -163
  314. package/dist/typedStrings.js +0 -57
  315. package/dist/typingFnUtils.cjs +0 -96
  316. package/dist/typingFnUtils.d.ts +0 -100
  317. package/dist/typingFnUtils.js +0 -30
  318. package/dist/typingTestUtils.cjs +0 -52
  319. package/dist/typingTestUtils.d.ts +0 -79
  320. package/dist/typingTestUtils.js +0 -27
  321. package/dist/typingUtils.cjs +0 -18
  322. package/dist/typingUtils.d.cts +0 -35
  323. package/dist/typingUtils.d.ts +0 -35
  324. package/dist/typingUtils.js +0 -0
  325. package/dist/yamlStringify.cjs +0 -423
  326. package/dist/yamlStringify.d.cts +0 -10
  327. package/dist/yamlStringify.d.ts +0 -10
  328. package/dist/yamlStringify.js +0 -9
@@ -1,49 +0,0 @@
1
- // src/mathUtils.ts
2
- function clampMax(value, max) {
3
- return value > max ? max : value;
4
- }
5
- function clampMin(value, min) {
6
- return value < min ? min : value;
7
- }
8
- function clampRange(num, v1, v2) {
9
- if (v2 > v1) {
10
- return clamp(num, v1, v2);
11
- }
12
- return clamp(num, v2, v1);
13
- }
14
- function clamp(num, min, max) {
15
- return num > max ? max : num < min ? min : num;
16
- }
17
- function fixFloatingPointNumber(value) {
18
- return Number(value.toPrecision(15));
19
- }
20
- function roundToStep(value, step, offset = 0) {
21
- const inv = 1 / step;
22
- const snapped = Math.round((value - offset) * inv) / inv + offset;
23
- return Number(snapped.toFixed(12));
24
- }
25
- function floorToStep(value, step, offset = 0) {
26
- const inv = 1 / step;
27
- const snapped = Math.floor((value - offset) * inv) / inv + offset;
28
- return Number(snapped.toFixed(12));
29
- }
30
- function ceilToStep(value, step, offset = 0) {
31
- const inv = 1 / step;
32
- const snapped = Math.ceil((value - offset) * inv) / inv + offset;
33
- return Number(snapped.toFixed(12));
34
- }
35
- function round(num, precision) {
36
- return Math.round(num * 10 ** precision) / 10 ** precision;
37
- }
38
-
39
- export {
40
- clampMax,
41
- clampMin,
42
- clampRange,
43
- clamp,
44
- fixFloatingPointNumber,
45
- roundToStep,
46
- floorToStep,
47
- ceilToStep,
48
- round
49
- };
@@ -1,14 +0,0 @@
1
- // src/promiseUtils.ts
2
- function defer() {
3
- let resolve;
4
- let reject;
5
- const promise = new Promise((_resolve, _reject) => {
6
- resolve = _resolve;
7
- reject = _reject;
8
- });
9
- return { resolve, reject, promise };
10
- }
11
-
12
- export {
13
- defer
14
- };
@@ -1,314 +0,0 @@
1
- import {
2
- durationObjToMs
3
- } from "./chunk-6FBIEPWU.js";
4
- import {
5
- isPromise
6
- } from "./chunk-C2SVCIWE.js";
7
-
8
- // src/cache.ts
9
- function cachedGetter(getter) {
10
- return {
11
- get value() {
12
- const value = getter();
13
- Object.defineProperty(this, "value", { value });
14
- return value;
15
- }
16
- };
17
- }
18
- var SkipCaching = class {
19
- value;
20
- constructor(value) {
21
- this.value = value;
22
- }
23
- };
24
- var WithExpiration = class {
25
- value;
26
- expiration;
27
- /**
28
- * @param value - The value to store in the cache.
29
- * @param expiration - The expiration time of the value in seconds or a
30
- * duration object.
31
- */
32
- constructor(value, expiration) {
33
- this.value = value;
34
- this.expiration = durationObjToMs(expiration);
35
- }
36
- };
37
- function createCache({
38
- maxCacheSize = 1e3,
39
- maxItemAge,
40
- expirationThrottle = 1e4
41
- } = {}) {
42
- const cache = /* @__PURE__ */ new Map();
43
- let lastExpirationCheck = 0;
44
- const defaultMaxItemAgeMs = maxItemAge && durationObjToMs(maxItemAge);
45
- function cleanExpiredItems() {
46
- const now = Date.now();
47
- if (!defaultMaxItemAgeMs || now - lastExpirationCheck < expirationThrottle)
48
- return;
49
- lastExpirationCheck = now;
50
- for (const [key, item] of cache.entries()) {
51
- if (isExpired(item, now)) {
52
- cache.delete(key);
53
- }
54
- }
55
- }
56
- function trimToSize() {
57
- const currentSize = cache.size;
58
- if (currentSize > maxCacheSize) {
59
- const keysToRemove = currentSize - maxCacheSize;
60
- const iterator = cache.keys();
61
- for (let i = 0; i < keysToRemove; i++) {
62
- const { value: key } = iterator.next();
63
- if (key) {
64
- cache.delete(key);
65
- }
66
- }
67
- }
68
- }
69
- function isExpired(entry, now) {
70
- const maxItemAgeMs = entry.expiration ?? defaultMaxItemAgeMs;
71
- return !!maxItemAgeMs && now - entry.timestamp > maxItemAgeMs;
72
- }
73
- function unwrapValue(value, now) {
74
- if (value instanceof WithExpiration) {
75
- return {
76
- value: value.value,
77
- timestamp: now,
78
- expiration: value.expiration ? typeof value.expiration === "number" ? value.expiration : now + durationObjToMs(value.expiration) : void 0
79
- };
80
- }
81
- return { value, timestamp: now, expiration: void 0 };
82
- }
83
- const utils = {
84
- skipCaching: (value) => new SkipCaching(value),
85
- withExpiration: (value, expiration) => {
86
- return new WithExpiration(value, expiration);
87
- }
88
- };
89
- function refreshEntry(key, now) {
90
- const entry = cache.get(key);
91
- if (entry && !isExpired(entry, now)) {
92
- cache.delete(key);
93
- cache.set(key, entry);
94
- }
95
- }
96
- return {
97
- /**
98
- * Gets a value from the cache or computes and stores it if not present.
99
- * This is the primary method for synchronous caching operations.
100
- *
101
- * @param cacheKey - Unique key to identify the cached value
102
- * @param val - Function that computes the value if not cached. Receives
103
- * utility functions for advanced features.
104
- * @param options - Optional configuration for this specific get operation
105
- * @returns The cached or newly computed value
106
- * @throws Error if the cached value is a promise (use getOrInsertAsync
107
- * instead)
108
- */
109
- getOrInsert(cacheKey, val, options) {
110
- const now = Date.now();
111
- const entry = cache.get(cacheKey);
112
- if (!entry || isExpired(entry, now)) {
113
- const value = val(utils);
114
- if (value instanceof SkipCaching) {
115
- return value.value;
116
- }
117
- if (options?.skipCachingWhen?.(value)) {
118
- return value;
119
- }
120
- const unwrappedValue = unwrapValue(value, now);
121
- cache.set(cacheKey, unwrappedValue);
122
- trimToSize();
123
- cleanExpiredItems();
124
- return unwrappedValue.value;
125
- }
126
- if (isPromise(entry.value)) {
127
- throw new Error(
128
- "Cache value is a promise, use getOrInsertAsync instead"
129
- );
130
- }
131
- refreshEntry(cacheKey, now);
132
- return entry.value;
133
- },
134
- /**
135
- * Gets a value from the cache or computes and stores it asynchronously.
136
- * Provides promise deduplication - concurrent calls with the same key will
137
- * share the same promise.
138
- *
139
- * @param cacheKey - Unique key to identify the cached value
140
- * @param val - Async function that computes the value if not cached.
141
- * Receives utility functions for advanced features.
142
- * @param options - Optional configuration for this specific get operation
143
- * @returns Promise that resolves to the cached or newly computed value
144
- */
145
- async getOrInsertAsync(cacheKey, val, options) {
146
- const entry = cache.get(cacheKey);
147
- if (entry && isPromise(entry.value)) {
148
- return entry.value;
149
- }
150
- const now = Date.now();
151
- if (entry && !isExpired(entry, now)) {
152
- refreshEntry(cacheKey, now);
153
- return entry.value;
154
- }
155
- const promise = val(utils).then((result) => {
156
- if (result instanceof SkipCaching) {
157
- const cacheValue = cache.get(cacheKey);
158
- if (cacheValue?.value === promise) {
159
- cache.delete(cacheKey);
160
- }
161
- return result.value;
162
- }
163
- if (options?.skipCachingWhen?.(result)) {
164
- const cacheValue = cache.get(cacheKey);
165
- if (cacheValue?.value === promise) {
166
- cache.delete(cacheKey);
167
- }
168
- return result;
169
- }
170
- const unwrappedValue = unwrapValue(result, Date.now());
171
- cache.set(cacheKey, unwrappedValue);
172
- return unwrappedValue.value;
173
- }).catch((error) => {
174
- cache.delete(cacheKey);
175
- throw error;
176
- });
177
- cache.set(cacheKey, {
178
- value: promise,
179
- timestamp: now,
180
- expiration: void 0
181
- });
182
- trimToSize();
183
- cleanExpiredItems();
184
- return promise;
185
- },
186
- /** Removes all items from the cache. */
187
- clear() {
188
- cache.clear();
189
- },
190
- /**
191
- * Gets a value from the cache without computing it if missing. Returns
192
- * undefined if the key doesn't exist or has expired.
193
- *
194
- * @param cacheKey - Key to look up in the cache
195
- * @returns The cached value or undefined if not found/expired
196
- * @throws Error if the cached value is a promise (use getAsync instead)
197
- */
198
- get(cacheKey) {
199
- const entry = cache.get(cacheKey);
200
- const now = Date.now();
201
- if (!entry || isExpired(entry, now)) {
202
- return void 0;
203
- }
204
- if (isPromise(entry.value)) {
205
- throw new Error("Cache value is a promise, use getAsync instead");
206
- }
207
- refreshEntry(cacheKey, now);
208
- return entry.value;
209
- },
210
- /**
211
- * Manually sets a value in the cache.
212
- *
213
- * @param cacheKey - Key to store the value under
214
- * @param value - Value to store, or WithExpiration wrapper for custom
215
- * expiration
216
- */
217
- set(cacheKey, value) {
218
- cache.set(cacheKey, unwrapValue(value, Date.now()));
219
- trimToSize();
220
- cleanExpiredItems();
221
- },
222
- /**
223
- * Gets a value from the cache without computing it if missing. Works with
224
- * both sync and async cached values.
225
- *
226
- * @param cacheKey - Key to look up in the cache
227
- * @returns Promise that resolves to the cached value or undefined if not
228
- * found/expired
229
- */
230
- async getAsync(cacheKey) {
231
- const entry = cache.get(cacheKey);
232
- const now = Date.now();
233
- if (!entry || isExpired(entry, now)) {
234
- return void 0;
235
- }
236
- refreshEntry(cacheKey, now);
237
- return entry.value;
238
- },
239
- /**
240
- * Manually sets an async value in the cache. The promise will be stored
241
- * immediately and shared with concurrent requests.
242
- *
243
- * @param cacheKey - Key to store the value under
244
- * @param value - Async function that returns the value to cache
245
- * @returns Promise that resolves to the computed value
246
- */
247
- async setAsync(cacheKey, value) {
248
- const promise = value(utils).then((result) => {
249
- if (result instanceof SkipCaching) {
250
- const cacheValue = cache.get(cacheKey);
251
- if (cacheValue?.value === promise) {
252
- cache.delete(cacheKey);
253
- }
254
- return result.value;
255
- }
256
- const unwrappedValue = unwrapValue(result, Date.now());
257
- cache.set(cacheKey, unwrappedValue);
258
- return unwrappedValue.value;
259
- }).catch((error) => {
260
- cache.delete(cacheKey);
261
- throw error;
262
- });
263
- cache.set(cacheKey, {
264
- value: promise,
265
- timestamp: Date.now(),
266
- expiration: void 0
267
- });
268
- trimToSize();
269
- cleanExpiredItems();
270
- return promise;
271
- },
272
- /**
273
- * Manually triggers cleanup of expired items. Normally this happens
274
- * automatically during cache operations.
275
- */
276
- cleanExpiredItems,
277
- /** @internal */
278
- " cache": { map: cache }
279
- };
280
- }
281
- function fastCache({ maxCacheSize = 1e3 } = {}) {
282
- const cache = /* @__PURE__ */ new Map();
283
- function trimCache() {
284
- const cacheSize = cache.size;
285
- if (cacheSize > maxCacheSize) {
286
- const keys = Array.from(cache.keys());
287
- for (let i = 0; i < cacheSize - maxCacheSize; i++) {
288
- cache.delete(keys[i]);
289
- }
290
- }
291
- }
292
- function getOrInsert(cacheKey, val) {
293
- if (!cache.has(cacheKey)) {
294
- const value = val();
295
- cache.set(cacheKey, value);
296
- trimCache();
297
- return cache.get(cacheKey) ?? value;
298
- }
299
- return cache.get(cacheKey);
300
- }
301
- return {
302
- getOrInsert,
303
- /** Clears all cached values */
304
- clear: () => cache.clear()
305
- };
306
- }
307
-
308
- export {
309
- cachedGetter,
310
- SkipCaching,
311
- WithExpiration,
312
- createCache,
313
- fastCache
314
- };
@@ -1,60 +0,0 @@
1
- // src/typingFnUtils.ts
2
- function asNonPartial(obj) {
3
- return obj;
4
- }
5
- function typedObjectEntries(obj) {
6
- return Object.entries(obj);
7
- }
8
- function strictTypedObjectEntries(obj) {
9
- return Object.entries(obj);
10
- }
11
- function typedObjectKeys(obj) {
12
- return Object.keys(obj);
13
- }
14
- function asType(value) {
15
- return value;
16
- }
17
- function narrowStringToUnion(key, union) {
18
- if (!key) return void 0;
19
- if (union instanceof Set) {
20
- return union.has(key) ? key : void 0;
21
- }
22
- if (union.includes(key)) {
23
- return key;
24
- }
25
- return void 0;
26
- }
27
- function typeOnRightExtendsLeftType() {
28
- return void 0;
29
- }
30
- var isSubTypeOf = typeOnRightExtendsLeftType;
31
- function isObjKey(key, obj) {
32
- return typeof key === "string" && key in obj;
33
- }
34
- function unionsAreTheSame(_diff) {
35
- }
36
- function asPartialUndefinedValues(value) {
37
- return value;
38
- }
39
- function isNonEmptyArray(array) {
40
- return array.length > 0;
41
- }
42
- function objectHasKey(obj, key) {
43
- return key in obj;
44
- }
45
-
46
- export {
47
- asNonPartial,
48
- typedObjectEntries,
49
- strictTypedObjectEntries,
50
- typedObjectKeys,
51
- asType,
52
- narrowStringToUnion,
53
- typeOnRightExtendsLeftType,
54
- isSubTypeOf,
55
- isObjKey,
56
- unionsAreTheSame,
57
- asPartialUndefinedValues,
58
- isNonEmptyArray,
59
- objectHasKey
60
- };
@@ -1,20 +0,0 @@
1
- // src/conversions.ts
2
- function bytesToHumanReadable(bytes) {
3
- if (bytes < 1024) {
4
- return `${bytes} B`;
5
- }
6
- const kb = bytes / 1024;
7
- if (kb < 1024) {
8
- return `${kb.toFixed(2)} KB`;
9
- }
10
- const mb = kb / 1024;
11
- if (mb < 1024) {
12
- return `${mb.toFixed(2)} MB`;
13
- }
14
- const gb = mb / 1024;
15
- return `${gb.toFixed(2)} GB`;
16
- }
17
-
18
- export {
19
- bytesToHumanReadable
20
- };
@@ -1,25 +0,0 @@
1
- // src/castValues.ts
2
- function castToString(value) {
3
- const valueType = typeof value;
4
- return valueType === "string" || valueType === "number" || valueType === "boolean" || valueType === "bigint" ? String(value) : null;
5
- }
6
- function castToNumber(value) {
7
- return isFiniteNumeric(value) ? Number(value) : null;
8
- }
9
- function isFiniteNumeric(num) {
10
- switch (typeof num) {
11
- case "number":
12
- return num - num === 0;
13
- case "string":
14
- return num.trim() !== "" && Number.isFinite(+num);
15
- case "bigint":
16
- return Number.isFinite(Number(num));
17
- default:
18
- return false;
19
- }
20
- }
21
-
22
- export {
23
- castToString,
24
- castToNumber
25
- };
@@ -1,40 +0,0 @@
1
- // src/typeGuards.ts
2
- function isObject(value) {
3
- return typeof value === "object" && value !== null && !Array.isArray(value);
4
- }
5
- function isFunction(value) {
6
- return typeof value === "function";
7
- }
8
- function isPromise(value) {
9
- return isObject(value) && "then" in value && isFunction(value.then);
10
- }
11
- function isPlainObject(value) {
12
- if (!value || typeof value !== "object") return false;
13
- const proto = Object.getPrototypeOf(value);
14
- if (proto === null) {
15
- return true;
16
- }
17
- const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor;
18
- if (Ctor === Object) return true;
19
- const objectCtorString = Object.prototype.constructor.toString();
20
- return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString;
21
- }
22
- function isNonEmptyArray(value) {
23
- return value.length > 0;
24
- }
25
- function arrayHasAtLeastXItems(array, minLength) {
26
- return array.length >= minLength;
27
- }
28
- function isTruthy(value) {
29
- return !!value;
30
- }
31
-
32
- export {
33
- isObject,
34
- isFunction,
35
- isPromise,
36
- isPlainObject,
37
- isNonEmptyArray,
38
- arrayHasAtLeastXItems,
39
- isTruthy
40
- };
@@ -1,71 +0,0 @@
1
- // src/deepEqual.ts
2
- var has = Object.prototype.hasOwnProperty;
3
- function find(iter, tar, maxDepth) {
4
- for (const key of iter.keys()) {
5
- if (deepEqual(key, tar, maxDepth)) return key;
6
- }
7
- }
8
- function deepEqual(foo, bar, maxDepth = 20) {
9
- let ctor, len, tmp;
10
- if (foo === bar) return true;
11
- if (maxDepth && maxDepth <= 0) return false;
12
- if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
13
- if (ctor === Date)
14
- return deepEqual(foo.getTime(), bar.getTime(), maxDepth - 1);
15
- if (ctor === RegExp) return foo.toString() === bar.toString();
16
- if (ctor === Array) {
17
- if ((len = foo.length) === bar.length) {
18
- while (len-- && deepEqual(foo[len], bar[len], maxDepth - 1)) ;
19
- }
20
- return len === -1;
21
- }
22
- if (ctor === Set) {
23
- if (foo.size !== bar.size) {
24
- return false;
25
- }
26
- for (len of foo) {
27
- tmp = len;
28
- if (tmp && typeof tmp === "object") {
29
- tmp = find(bar, tmp, maxDepth - 1);
30
- if (!tmp) return false;
31
- }
32
- if (!bar.has(tmp)) return false;
33
- }
34
- return true;
35
- }
36
- if (ctor === Map) {
37
- if (foo.size !== bar.size) {
38
- return false;
39
- }
40
- for (len of foo) {
41
- tmp = len[0];
42
- if (tmp && typeof tmp === "object") {
43
- tmp = find(bar, tmp, maxDepth - 1);
44
- if (!tmp) return false;
45
- }
46
- if (!deepEqual(len[1], bar.get(tmp), maxDepth - 1)) {
47
- return false;
48
- }
49
- }
50
- return true;
51
- }
52
- if (!ctor || typeof foo === "object") {
53
- len = 0;
54
- for (ctor in foo) {
55
- if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
56
- if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor], maxDepth - 1))
57
- return false;
58
- }
59
- return Object.keys(bar).length === len;
60
- }
61
- }
62
- return foo !== foo && bar !== bar;
63
- }
64
- function deepEqualWithMaxDepth(maxDepth) {
65
- return (foo, bar) => deepEqual(foo, bar, maxDepth);
66
- }
67
-
68
- export {
69
- deepEqual,
70
- deepEqualWithMaxDepth
71
- };