@ls-stack/utils 3.65.0 → 3.67.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 (336) 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 +79 -0
  34. package/dist/diffParser.mjs +424 -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 -242
  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/keyedMap.cjs +0 -224
  230. package/dist/keyedMap.d.cts +0 -75
  231. package/dist/keyedMap.d.ts +0 -75
  232. package/dist/keyedMap.js +0 -145
  233. package/dist/keyedSet.cjs +0 -205
  234. package/dist/keyedSet.d.cts +0 -76
  235. package/dist/keyedSet.d.ts +0 -76
  236. package/dist/keyedSet.js +0 -126
  237. package/dist/levenshtein.cjs +0 -180
  238. package/dist/levenshtein.d.ts +0 -5
  239. package/dist/levenshtein.js +0 -153
  240. package/dist/main.cjs +0 -32
  241. package/dist/main.d.cts +0 -3
  242. package/dist/main.d.ts +0 -3
  243. package/dist/main.js +0 -7
  244. package/dist/matchPath.cjs +0 -155
  245. package/dist/matchPath.d.cts +0 -53
  246. package/dist/matchPath.d.ts +0 -53
  247. package/dist/matchPath.js +0 -108
  248. package/dist/mathUtils.cjs +0 -81
  249. package/dist/mathUtils.d.ts +0 -54
  250. package/dist/mathUtils.js +0 -22
  251. package/dist/mutationUtils.cjs +0 -153
  252. package/dist/mutationUtils.d.ts +0 -15
  253. package/dist/mutationUtils.js +0 -55
  254. package/dist/objUtils.cjs +0 -242
  255. package/dist/objUtils.d.cts +0 -28
  256. package/dist/objUtils.js +0 -38
  257. package/dist/parallelAsyncCalls.cjs +0 -162
  258. package/dist/parallelAsyncCalls.d.cts +0 -82
  259. package/dist/parallelAsyncCalls.d.ts +0 -82
  260. package/dist/parallelAsyncCalls.js +0 -126
  261. package/dist/partialEqual.cjs +0 -1196
  262. package/dist/partialEqual.d.cts +0 -141
  263. package/dist/partialEqual.d.ts +0 -141
  264. package/dist/partialEqual.js +0 -1168
  265. package/dist/promiseUtils.cjs +0 -38
  266. package/dist/promiseUtils.d.cts +0 -8
  267. package/dist/promiseUtils.d.ts +0 -8
  268. package/dist/promiseUtils.js +0 -6
  269. package/dist/regexUtils.cjs +0 -60
  270. package/dist/regexUtils.d.cts +0 -17
  271. package/dist/regexUtils.d.ts +0 -17
  272. package/dist/regexUtils.js +0 -33
  273. package/dist/retryOnError.cjs +0 -130
  274. package/dist/retryOnError.d.ts +0 -83
  275. package/dist/retryOnError.js +0 -101
  276. package/dist/runShellCmd.cjs +0 -127
  277. package/dist/runShellCmd.d.cts +0 -90
  278. package/dist/runShellCmd.js +0 -98
  279. package/dist/safeJson.cjs +0 -45
  280. package/dist/safeJson.d.ts +0 -16
  281. package/dist/safeJson.js +0 -8
  282. package/dist/saferTyping.cjs +0 -52
  283. package/dist/saferTyping.d.ts +0 -47
  284. package/dist/saferTyping.js +0 -23
  285. package/dist/serializeXML.cjs +0 -154
  286. package/dist/serializeXML.d.cts +0 -22
  287. package/dist/serializeXML.d.ts +0 -22
  288. package/dist/serializeXML.js +0 -116
  289. package/dist/shallowEqual.cjs +0 -88
  290. package/dist/shallowEqual.d.ts +0 -4
  291. package/dist/shallowEqual.js +0 -63
  292. package/dist/sleep.cjs +0 -32
  293. package/dist/sleep.d.cts +0 -3
  294. package/dist/sleep.d.ts +0 -3
  295. package/dist/sleep.js +0 -6
  296. package/dist/stringUtils.cjs +0 -155
  297. package/dist/stringUtils.d.ts +0 -55
  298. package/dist/stringUtils.js +0 -50
  299. package/dist/testUtils.cjs +0 -1490
  300. package/dist/testUtils.d.cts +0 -133
  301. package/dist/testUtils.js +0 -359
  302. package/dist/throttle.cjs +0 -282
  303. package/dist/throttle.d.cts +0 -98
  304. package/dist/throttle.js +0 -38
  305. package/dist/time.cjs +0 -152
  306. package/dist/time.d.cts +0 -25
  307. package/dist/time.js +0 -38
  308. package/dist/timers.cjs +0 -194
  309. package/dist/timers.d.ts +0 -121
  310. package/dist/timers.js +0 -156
  311. package/dist/tsResult.cjs +0 -226
  312. package/dist/tsResult.d.ts +0 -114
  313. package/dist/tsResult.js +0 -180
  314. package/dist/typeGuards.cjs +0 -70
  315. package/dist/typeGuards.d.ts +0 -111
  316. package/dist/typeGuards.js +0 -18
  317. package/dist/typeUtils.cjs +0 -18
  318. package/dist/typeUtils.d.cts +0 -61
  319. package/dist/typeUtils.js +0 -0
  320. package/dist/typedStrings.cjs +0 -90
  321. package/dist/typedStrings.d.ts +0 -163
  322. package/dist/typedStrings.js +0 -57
  323. package/dist/typingFnUtils.cjs +0 -96
  324. package/dist/typingFnUtils.d.ts +0 -100
  325. package/dist/typingFnUtils.js +0 -30
  326. package/dist/typingTestUtils.cjs +0 -52
  327. package/dist/typingTestUtils.d.ts +0 -79
  328. package/dist/typingTestUtils.js +0 -27
  329. package/dist/typingUtils.cjs +0 -18
  330. package/dist/typingUtils.d.cts +0 -35
  331. package/dist/typingUtils.d.ts +0 -35
  332. package/dist/typingUtils.js +0 -0
  333. package/dist/yamlStringify.cjs +0 -423
  334. package/dist/yamlStringify.d.cts +0 -10
  335. package/dist/yamlStringify.d.ts +0 -10
  336. package/dist/yamlStringify.js +0 -9
@@ -1,106 +0,0 @@
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/awaitDebounce.ts
21
- var awaitDebounce_exports = {};
22
- __export(awaitDebounce_exports, {
23
- awaitDebounce: () => awaitDebounce
24
- });
25
- module.exports = __toCommonJS(awaitDebounce_exports);
26
-
27
- // src/typeGuards.ts
28
- function isObject(value) {
29
- return typeof value === "object" && value !== null && !Array.isArray(value);
30
- }
31
-
32
- // src/assertions.ts
33
- var isObject2 = isObject;
34
-
35
- // src/getCompositeKey.ts
36
- function getCompositeKey(input, maxSortingDepth = 3) {
37
- if (typeof input === "string") return `"${input}`;
38
- if (!input || typeof input !== "object") return `$${input}`;
39
- return stringifyCompact(input, maxSortingDepth, 0, /* @__PURE__ */ new WeakSet());
40
- }
41
- function stringifyCompact(input, maxSortingDepth, depth, refs) {
42
- const isJsObj = input && typeof input === "object";
43
- if (isJsObj) {
44
- if (refs.has(input)) {
45
- throw new Error("Circular reference detected");
46
- }
47
- refs.add(input);
48
- }
49
- let result;
50
- if (Array.isArray(input)) {
51
- result = "[";
52
- for (const v of input) {
53
- if (result.length > 1) result += ",";
54
- result += stringifyCompact(v, maxSortingDepth, depth + 1, refs);
55
- }
56
- result += "]";
57
- } else if (isObject2(input)) {
58
- let entries = Object.entries(input);
59
- if (entries.length === 0) {
60
- result = "{}";
61
- } else {
62
- if (depth < maxSortingDepth) {
63
- entries = entries.sort(
64
- ([a], [b]) => a < b ? -1 : a > b ? 1 : 0
65
- );
66
- }
67
- result = "{";
68
- for (const [k, v] of entries) {
69
- if (v === void 0) continue;
70
- if (result.length > 1) result += ",";
71
- result += `${k}:${stringifyCompact(v, maxSortingDepth, depth + 1, refs)}`;
72
- }
73
- result += "}";
74
- }
75
- } else {
76
- result = JSON.stringify(input);
77
- }
78
- if (isJsObj) {
79
- refs.delete(input);
80
- }
81
- return result;
82
- }
83
-
84
- // src/awaitDebounce.ts
85
- var resolvers = {};
86
- var debouncers = {};
87
- async function awaitDebounce({
88
- callId: _callId,
89
- debounce
90
- }) {
91
- const callId = getCompositeKey(_callId);
92
- if (debouncers[callId]) clearTimeout(debouncers[callId]);
93
- debouncers[callId] = globalThis.setTimeout(() => {
94
- const resolve = resolvers[callId];
95
- resolvers[callId] = void 0;
96
- resolve?.("continue");
97
- }, debounce);
98
- if (resolvers[callId]) resolvers[callId]("skip");
99
- return new Promise((resolve) => {
100
- resolvers[callId] = resolve;
101
- });
102
- }
103
- // Annotate the CommonJS export names for ESM import in node:
104
- 0 && (module.exports = {
105
- awaitDebounce
106
- });
@@ -1,41 +0,0 @@
1
- import { __LEGIT_ANY__ } from './saferTyping.js';
2
-
3
- /**
4
- * Creates an awaitable debounce mechanism that allows you to debounce async
5
- * operations. When called multiple times with the same `callId`, only the last
6
- * call will resolve with 'continue', while all previous calls resolve with
7
- * 'skip'.
8
- *
9
- * This is useful for debouncing API calls, search operations, or any async work
10
- * where you want to ensure only the most recent request is processed.
11
- *
12
- * @example
13
- * ```ts
14
- * async function searchUsers(query: string) {
15
- * const result = await awaitDebounce({ callId: 'search', debounce: 300 });
16
- * if (result === 'skip') return; // This search was superseded
17
- *
18
- * // Only the most recent search will reach here
19
- * const users = await fetchUsers(query);
20
- * updateUI(users);
21
- * }
22
- *
23
- * // Called rapidly - only the last call will execute
24
- * searchUsers('a');
25
- * searchUsers('ab');
26
- * searchUsers('abc'); // Only this one will continue
27
- * ```;
28
- *
29
- * @param options - Configuration object
30
- * @param options.callId - Unique identifier for the debounce group. Calls with
31
- * the same ID are debounced together
32
- * @param options.debounce - Debounce delay in milliseconds
33
- * @returns Promise that resolves to 'continue' if this call should proceed, or
34
- * 'skip' if it was superseded
35
- */
36
- declare function awaitDebounce({ callId: _callId, debounce, }: {
37
- callId: __LEGIT_ANY__;
38
- debounce: number;
39
- }): Promise<'continue' | 'skip'>;
40
-
41
- export { awaitDebounce };
@@ -1,28 +0,0 @@
1
- import {
2
- getCompositeKey
3
- } from "./chunk-6FIBVC2P.js";
4
- import "./chunk-C2SVCIWE.js";
5
- import "./chunk-JF2MDHOJ.js";
6
-
7
- // src/awaitDebounce.ts
8
- var resolvers = {};
9
- var debouncers = {};
10
- async function awaitDebounce({
11
- callId: _callId,
12
- debounce
13
- }) {
14
- const callId = getCompositeKey(_callId);
15
- if (debouncers[callId]) clearTimeout(debouncers[callId]);
16
- debouncers[callId] = globalThis.setTimeout(() => {
17
- const resolve = resolvers[callId];
18
- resolvers[callId] = void 0;
19
- resolve?.("continue");
20
- }, debounce);
21
- if (resolvers[callId]) resolvers[callId]("skip");
22
- return new Promise((resolve) => {
23
- resolvers[callId] = resolve;
24
- });
25
- }
26
- export {
27
- awaitDebounce
28
- };
package/dist/cache.cjs DELETED
@@ -1,367 +0,0 @@
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/cache.ts
21
- var cache_exports = {};
22
- __export(cache_exports, {
23
- SkipCaching: () => SkipCaching,
24
- WithExpiration: () => WithExpiration,
25
- cachedGetter: () => cachedGetter,
26
- createCache: () => createCache,
27
- fastCache: () => fastCache
28
- });
29
- module.exports = __toCommonJS(cache_exports);
30
-
31
- // src/typeGuards.ts
32
- function isObject(value) {
33
- return typeof value === "object" && value !== null && !Array.isArray(value);
34
- }
35
- function isFunction(value) {
36
- return typeof value === "function";
37
- }
38
- function isPromise(value) {
39
- return isObject(value) && "then" in value && isFunction(value.then);
40
- }
41
-
42
- // src/assertions.ts
43
- var isPromise2 = isPromise;
44
-
45
- // src/time.ts
46
- var MINUTE_AS_MS = 60 * 1e3;
47
- var HOUR_AS_MS = 60 * MINUTE_AS_MS;
48
- var DAY_AS_MS = 24 * HOUR_AS_MS;
49
- var WEEK_AS_MS = 7 * DAY_AS_MS;
50
- var MONTH_AS_MS = 30 * DAY_AS_MS;
51
- var YEAR_AS_MS = 365 * DAY_AS_MS;
52
- var HOUR_AS_SECS = 60 * 60;
53
- var DAY_AS_SECS = 24 * HOUR_AS_SECS;
54
- var WEEK_AS_SECS = 7 * DAY_AS_SECS;
55
- var MONTH_AS_SECS = 30 * DAY_AS_SECS;
56
- var YEAR_AS_SECS = 365 * DAY_AS_SECS;
57
- function durationObjToMs(durationObj) {
58
- return (durationObj.hours ?? 0) * HOUR_AS_MS + (durationObj.minutes ?? 0) * MINUTE_AS_MS + (durationObj.seconds ?? 0) * 1e3 + (durationObj.ms ?? 0) + (durationObj.days ?? 0) * DAY_AS_MS;
59
- }
60
-
61
- // src/cache.ts
62
- function cachedGetter(getter) {
63
- return {
64
- get value() {
65
- const value = getter();
66
- Object.defineProperty(this, "value", { value });
67
- return value;
68
- }
69
- };
70
- }
71
- var SkipCaching = class {
72
- value;
73
- constructor(value) {
74
- this.value = value;
75
- }
76
- };
77
- var WithExpiration = class {
78
- value;
79
- expiration;
80
- /**
81
- * @param value - The value to store in the cache.
82
- * @param expiration - The expiration time of the value in seconds or a
83
- * duration object.
84
- */
85
- constructor(value, expiration) {
86
- this.value = value;
87
- this.expiration = durationObjToMs(expiration);
88
- }
89
- };
90
- function createCache({
91
- maxCacheSize = 1e3,
92
- maxItemAge,
93
- expirationThrottle = 1e4
94
- } = {}) {
95
- const cache = /* @__PURE__ */ new Map();
96
- let lastExpirationCheck = 0;
97
- const defaultMaxItemAgeMs = maxItemAge && durationObjToMs(maxItemAge);
98
- function cleanExpiredItems() {
99
- const now = Date.now();
100
- if (!defaultMaxItemAgeMs || now - lastExpirationCheck < expirationThrottle)
101
- return;
102
- lastExpirationCheck = now;
103
- for (const [key, item] of cache.entries()) {
104
- if (isExpired(item, now)) {
105
- cache.delete(key);
106
- }
107
- }
108
- }
109
- function trimToSize() {
110
- const currentSize = cache.size;
111
- if (currentSize > maxCacheSize) {
112
- const keysToRemove = currentSize - maxCacheSize;
113
- const iterator = cache.keys();
114
- for (let i = 0; i < keysToRemove; i++) {
115
- const { value: key } = iterator.next();
116
- if (key) {
117
- cache.delete(key);
118
- }
119
- }
120
- }
121
- }
122
- function isExpired(entry, now) {
123
- const maxItemAgeMs = entry.expiration ?? defaultMaxItemAgeMs;
124
- return !!maxItemAgeMs && now - entry.timestamp > maxItemAgeMs;
125
- }
126
- function unwrapValue(value, now) {
127
- if (value instanceof WithExpiration) {
128
- return {
129
- value: value.value,
130
- timestamp: now,
131
- expiration: value.expiration ? typeof value.expiration === "number" ? value.expiration : now + durationObjToMs(value.expiration) : void 0
132
- };
133
- }
134
- return { value, timestamp: now, expiration: void 0 };
135
- }
136
- const utils = {
137
- skipCaching: (value) => new SkipCaching(value),
138
- withExpiration: (value, expiration) => {
139
- return new WithExpiration(value, expiration);
140
- }
141
- };
142
- function refreshEntry(key, now) {
143
- const entry = cache.get(key);
144
- if (entry && !isExpired(entry, now)) {
145
- cache.delete(key);
146
- cache.set(key, entry);
147
- }
148
- }
149
- return {
150
- /**
151
- * Gets a value from the cache or computes and stores it if not present.
152
- * This is the primary method for synchronous caching operations.
153
- *
154
- * @param cacheKey - Unique key to identify the cached value
155
- * @param val - Function that computes the value if not cached. Receives
156
- * utility functions for advanced features.
157
- * @param options - Optional configuration for this specific get operation
158
- * @returns The cached or newly computed value
159
- * @throws Error if the cached value is a promise (use getOrInsertAsync
160
- * instead)
161
- */
162
- getOrInsert(cacheKey, val, options) {
163
- const now = Date.now();
164
- const entry = cache.get(cacheKey);
165
- if (!entry || isExpired(entry, now)) {
166
- const value = val(utils);
167
- if (value instanceof SkipCaching) {
168
- return value.value;
169
- }
170
- if (options?.skipCachingWhen?.(value)) {
171
- return value;
172
- }
173
- const unwrappedValue = unwrapValue(value, now);
174
- cache.set(cacheKey, unwrappedValue);
175
- trimToSize();
176
- cleanExpiredItems();
177
- return unwrappedValue.value;
178
- }
179
- if (isPromise2(entry.value)) {
180
- throw new Error(
181
- "Cache value is a promise, use getOrInsertAsync instead"
182
- );
183
- }
184
- refreshEntry(cacheKey, now);
185
- return entry.value;
186
- },
187
- /**
188
- * Gets a value from the cache or computes and stores it asynchronously.
189
- * Provides promise deduplication - concurrent calls with the same key will
190
- * share the same promise.
191
- *
192
- * @param cacheKey - Unique key to identify the cached value
193
- * @param val - Async function that computes the value if not cached.
194
- * Receives utility functions for advanced features.
195
- * @param options - Optional configuration for this specific get operation
196
- * @returns Promise that resolves to the cached or newly computed value
197
- */
198
- async getOrInsertAsync(cacheKey, val, options) {
199
- const entry = cache.get(cacheKey);
200
- if (entry && isPromise2(entry.value)) {
201
- return entry.value;
202
- }
203
- const now = Date.now();
204
- if (entry && !isExpired(entry, now)) {
205
- refreshEntry(cacheKey, now);
206
- return entry.value;
207
- }
208
- const promise = val(utils).then((result) => {
209
- if (result instanceof SkipCaching) {
210
- const cacheValue = cache.get(cacheKey);
211
- if (cacheValue?.value === promise) {
212
- cache.delete(cacheKey);
213
- }
214
- return result.value;
215
- }
216
- if (options?.skipCachingWhen?.(result)) {
217
- const cacheValue = cache.get(cacheKey);
218
- if (cacheValue?.value === promise) {
219
- cache.delete(cacheKey);
220
- }
221
- return result;
222
- }
223
- const unwrappedValue = unwrapValue(result, Date.now());
224
- cache.set(cacheKey, unwrappedValue);
225
- return unwrappedValue.value;
226
- }).catch((error) => {
227
- cache.delete(cacheKey);
228
- throw error;
229
- });
230
- cache.set(cacheKey, {
231
- value: promise,
232
- timestamp: now,
233
- expiration: void 0
234
- });
235
- trimToSize();
236
- cleanExpiredItems();
237
- return promise;
238
- },
239
- /** Removes all items from the cache. */
240
- clear() {
241
- cache.clear();
242
- },
243
- /**
244
- * Gets a value from the cache without computing it if missing. Returns
245
- * undefined if the key doesn't exist or has expired.
246
- *
247
- * @param cacheKey - Key to look up in the cache
248
- * @returns The cached value or undefined if not found/expired
249
- * @throws Error if the cached value is a promise (use getAsync instead)
250
- */
251
- get(cacheKey) {
252
- const entry = cache.get(cacheKey);
253
- const now = Date.now();
254
- if (!entry || isExpired(entry, now)) {
255
- return void 0;
256
- }
257
- if (isPromise2(entry.value)) {
258
- throw new Error("Cache value is a promise, use getAsync instead");
259
- }
260
- refreshEntry(cacheKey, now);
261
- return entry.value;
262
- },
263
- /**
264
- * Manually sets a value in the cache.
265
- *
266
- * @param cacheKey - Key to store the value under
267
- * @param value - Value to store, or WithExpiration wrapper for custom
268
- * expiration
269
- */
270
- set(cacheKey, value) {
271
- cache.set(cacheKey, unwrapValue(value, Date.now()));
272
- trimToSize();
273
- cleanExpiredItems();
274
- },
275
- /**
276
- * Gets a value from the cache without computing it if missing. Works with
277
- * both sync and async cached values.
278
- *
279
- * @param cacheKey - Key to look up in the cache
280
- * @returns Promise that resolves to the cached value or undefined if not
281
- * found/expired
282
- */
283
- async getAsync(cacheKey) {
284
- const entry = cache.get(cacheKey);
285
- const now = Date.now();
286
- if (!entry || isExpired(entry, now)) {
287
- return void 0;
288
- }
289
- refreshEntry(cacheKey, now);
290
- return entry.value;
291
- },
292
- /**
293
- * Manually sets an async value in the cache. The promise will be stored
294
- * immediately and shared with concurrent requests.
295
- *
296
- * @param cacheKey - Key to store the value under
297
- * @param value - Async function that returns the value to cache
298
- * @returns Promise that resolves to the computed value
299
- */
300
- async setAsync(cacheKey, value) {
301
- const promise = value(utils).then((result) => {
302
- if (result instanceof SkipCaching) {
303
- const cacheValue = cache.get(cacheKey);
304
- if (cacheValue?.value === promise) {
305
- cache.delete(cacheKey);
306
- }
307
- return result.value;
308
- }
309
- const unwrappedValue = unwrapValue(result, Date.now());
310
- cache.set(cacheKey, unwrappedValue);
311
- return unwrappedValue.value;
312
- }).catch((error) => {
313
- cache.delete(cacheKey);
314
- throw error;
315
- });
316
- cache.set(cacheKey, {
317
- value: promise,
318
- timestamp: Date.now(),
319
- expiration: void 0
320
- });
321
- trimToSize();
322
- cleanExpiredItems();
323
- return promise;
324
- },
325
- /**
326
- * Manually triggers cleanup of expired items. Normally this happens
327
- * automatically during cache operations.
328
- */
329
- cleanExpiredItems,
330
- /** @internal */
331
- " cache": { map: cache }
332
- };
333
- }
334
- function fastCache({ maxCacheSize = 1e3 } = {}) {
335
- const cache = /* @__PURE__ */ new Map();
336
- function trimCache() {
337
- const cacheSize = cache.size;
338
- if (cacheSize > maxCacheSize) {
339
- const keys = Array.from(cache.keys());
340
- for (let i = 0; i < cacheSize - maxCacheSize; i++) {
341
- cache.delete(keys[i]);
342
- }
343
- }
344
- }
345
- function getOrInsert(cacheKey, val) {
346
- if (!cache.has(cacheKey)) {
347
- const value = val();
348
- cache.set(cacheKey, value);
349
- trimCache();
350
- return cache.get(cacheKey) ?? value;
351
- }
352
- return cache.get(cacheKey);
353
- }
354
- return {
355
- getOrInsert,
356
- /** Clears all cached values */
357
- clear: () => cache.clear()
358
- };
359
- }
360
- // Annotate the CommonJS export names for ESM import in node:
361
- 0 && (module.exports = {
362
- SkipCaching,
363
- WithExpiration,
364
- cachedGetter,
365
- createCache,
366
- fastCache
367
- });