@ls-stack/utils 3.65.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.
- package/dist/{arrayUtils.d.cts → arrayUtils.d.mts} +24 -23
- package/dist/arrayUtils.mjs +249 -0
- package/dist/assertions-qMxfVhSu.mjs +207 -0
- package/dist/{assertions.d.ts → assertions.d.mts} +4 -3
- package/dist/assertions.mjs +3 -0
- package/dist/asyncQueue.d.mts +497 -0
- package/dist/asyncQueue.mjs +757 -0
- package/dist/{awaitDebounce.d.cts → awaitDebounce.d.mts} +11 -6
- package/dist/awaitDebounce.mjs +54 -0
- package/dist/{cache.d.ts → cache.d.mts} +76 -68
- package/dist/cache.mjs +355 -0
- package/dist/castValues-DfICShCc.mjs +19 -0
- package/dist/{castValues.d.cts → castValues.d.mts} +3 -2
- package/dist/castValues.mjs +3 -0
- package/dist/{concurrentCalls.d.ts → concurrentCalls.d.mts} +74 -65
- package/dist/concurrentCalls.mjs +295 -0
- package/dist/consoleFmt.d.mts +55 -0
- package/dist/consoleFmt.mjs +63 -0
- package/dist/conversions-DTmwEMIu.mjs +12 -0
- package/dist/conversions.d.mts +4 -0
- package/dist/conversions.mjs +3 -0
- package/dist/createThrottleController.d.mts +18 -0
- package/dist/createThrottleController.mjs +40 -0
- package/dist/debounce.d.mts +47 -0
- package/dist/debounce.mjs +117 -0
- package/dist/dedent.d.mts +74 -0
- package/dist/dedent.mjs +80 -0
- package/dist/deepEqual-C7EZEixx.mjs +78 -0
- package/dist/{deepEqual.d.cts → deepEqual.d.mts} +3 -2
- package/dist/deepEqual.mjs +3 -0
- package/dist/{deepReplaceValues.d.cts → deepReplaceValues.d.mts} +4 -3
- package/dist/deepReplaceValues.mjs +61 -0
- package/dist/diffParser.d.mts +63 -0
- package/dist/diffParser.mjs +410 -0
- package/dist/enhancedMap.d.mts +21 -0
- package/dist/enhancedMap.mjs +69 -0
- package/dist/exhaustiveMatch.d.mts +10 -0
- package/dist/exhaustiveMatch.mjs +48 -0
- package/dist/{filterObjectOrArrayKeys.d.cts → filterObjectOrArrayKeys.d.mts} +15 -8
- package/dist/filterObjectOrArrayKeys.mjs +497 -0
- package/dist/{getAutoIncrementId.d.cts → getAutoIncrementId.d.mts} +9 -5
- package/dist/getAutoIncrementId.mjs +53 -0
- package/dist/{getCompositeKey.d.cts → getCompositeKey.d.mts} +3 -2
- package/dist/getCompositeKey.mjs +50 -0
- package/dist/{getValueStableKey.d.cts → getValueStableKey.d.mts} +5 -3
- package/dist/getValueStableKey.mjs +17 -0
- package/dist/{hash.d.cts → hash.d.mts} +3 -2
- package/dist/hash.mjs +28 -0
- package/dist/interpolate.d.mts +17 -0
- package/dist/interpolate.mjs +28 -0
- package/dist/{iteratorUtils.d.cts → iteratorUtils.d.mts} +5 -4
- package/dist/iteratorUtils.mjs +39 -0
- package/dist/keepPrevIfUnchanged.d.mts +12 -0
- package/dist/keepPrevIfUnchanged.mjs +9 -0
- package/dist/keyedMap.d.mts +76 -0
- package/dist/keyedMap.mjs +139 -0
- package/dist/keyedSet.d.mts +77 -0
- package/dist/keyedSet.mjs +129 -0
- package/dist/{levenshtein.d.cts → levenshtein.d.mts} +3 -2
- package/dist/levenshtein.mjs +121 -0
- package/dist/main.d.mts +4 -0
- package/dist/main.mjs +7 -0
- package/dist/matchPath.d.mts +50 -0
- package/dist/matchPath.mjs +81 -0
- package/dist/mathUtils-BDP1lM_z.mjs +81 -0
- package/dist/{mathUtils.d.cts → mathUtils.d.mts} +3 -2
- package/dist/mathUtils.mjs +3 -0
- package/dist/{mutationUtils.d.cts → mutationUtils.d.mts} +6 -5
- package/dist/mutationUtils.mjs +44 -0
- package/dist/{objUtils.d.ts → objUtils.d.mts} +8 -6
- package/dist/objUtils.mjs +115 -0
- package/dist/parallelAsyncCalls.d.mts +83 -0
- package/dist/parallelAsyncCalls.mjs +121 -0
- package/dist/partialEqual.d.mts +139 -0
- package/dist/partialEqual.mjs +1055 -0
- package/dist/promiseUtils.d.mts +9 -0
- package/dist/promiseUtils.mjs +17 -0
- package/dist/regexUtils.d.mts +18 -0
- package/dist/regexUtils.mjs +34 -0
- package/dist/{retryOnError.d.cts → retryOnError.d.mts} +38 -37
- package/dist/retryOnError.mjs +91 -0
- package/dist/{runShellCmd.d.ts → runShellCmd.d.mts} +24 -15
- package/dist/runShellCmd.mjs +151 -0
- package/dist/{safeJson.d.cts → safeJson.d.mts} +3 -2
- package/dist/safeJson.mjs +30 -0
- package/dist/{saferTyping.d.cts → saferTyping.d.mts} +4 -3
- package/dist/saferTyping.mjs +45 -0
- package/dist/serializeXML.d.mts +23 -0
- package/dist/serializeXML.mjs +74 -0
- package/dist/{shallowEqual.d.cts → shallowEqual.d.mts} +3 -2
- package/dist/shallowEqual.mjs +54 -0
- package/dist/sleep.d.mts +4 -0
- package/dist/sleep.mjs +7 -0
- package/dist/stringUtils-DjhWOiYn.mjs +113 -0
- package/dist/{stringUtils.d.cts → stringUtils.d.mts} +3 -2
- package/dist/stringUtils.mjs +3 -0
- package/dist/{testUtils.d.ts → testUtils.d.mts} +83 -52
- package/dist/testUtils.mjs +310 -0
- package/dist/{throttle.d.ts → throttle.d.mts} +18 -17
- package/dist/throttle.mjs +102 -0
- package/dist/time-sr2lhQRw.mjs +67 -0
- package/dist/{time.d.ts → time.d.mts} +8 -7
- package/dist/time.mjs +3 -0
- package/dist/{timers.d.cts → timers.d.mts} +22 -13
- package/dist/timers.mjs +220 -0
- package/dist/{tsResult.d.cts → tsResult.d.mts} +52 -48
- package/dist/tsResult.mjs +142 -0
- package/dist/typeGuards-B1mzA-Rz.mjs +128 -0
- package/dist/{typeGuards.d.cts → typeGuards.d.mts} +3 -2
- package/dist/typeGuards.mjs +3 -0
- package/dist/{typeUtils.d.ts → typeUtils.d.mts} +13 -34
- package/dist/typeUtils.mjs +1 -0
- package/dist/{typedStrings.d.cts → typedStrings.d.mts} +5 -4
- package/dist/typedStrings.mjs +131 -0
- package/dist/typingFnUtils-Bb8drgKF.mjs +101 -0
- package/dist/{typingFnUtils.d.cts → typingFnUtils.d.mts} +13 -22
- package/dist/typingFnUtils.mjs +3 -0
- package/dist/{typingTestUtils.d.cts → typingTestUtils.d.mts} +11 -15
- package/dist/typingTestUtils.mjs +80 -0
- package/dist/typingUtils.d.mts +20 -0
- package/dist/typingUtils.mjs +1 -0
- package/dist/yamlStringify.d.mts +17 -0
- package/dist/yamlStringify.mjs +189 -0
- package/package.json +65 -242
- package/dist/arrayUtils.cjs +0 -229
- package/dist/arrayUtils.d.ts +0 -171
- package/dist/arrayUtils.js +0 -42
- package/dist/assertions.cjs +0 -107
- package/dist/assertions.d.cts +0 -192
- package/dist/assertions.js +0 -25
- package/dist/asyncQueue.cjs +0 -672
- package/dist/asyncQueue.d.cts +0 -488
- package/dist/asyncQueue.d.ts +0 -488
- package/dist/asyncQueue.js +0 -631
- package/dist/awaitDebounce.cjs +0 -106
- package/dist/awaitDebounce.d.ts +0 -41
- package/dist/awaitDebounce.js +0 -28
- package/dist/cache.cjs +0 -367
- package/dist/cache.d.cts +0 -228
- package/dist/cache.js +0 -19
- package/dist/castValues.cjs +0 -50
- package/dist/castValues.d.ts +0 -4
- package/dist/castValues.js +0 -8
- package/dist/chunk-5DZT3Z5Z.js +0 -8
- package/dist/chunk-6FBIEPWU.js +0 -96
- package/dist/chunk-6FIBVC2P.js +0 -56
- package/dist/chunk-7CQPOM5I.js +0 -100
- package/dist/chunk-B6DNOZCP.js +0 -369
- package/dist/chunk-BM4PYVOX.js +0 -109
- package/dist/chunk-C2SVCIWE.js +0 -57
- package/dist/chunk-CCUPDGSZ.js +0 -132
- package/dist/chunk-DBOWTYR4.js +0 -49
- package/dist/chunk-DFXNVEH6.js +0 -14
- package/dist/chunk-DX2524CZ.js +0 -314
- package/dist/chunk-GMJTLFM6.js +0 -60
- package/dist/chunk-IATIXMCE.js +0 -20
- package/dist/chunk-II4R3VVX.js +0 -25
- package/dist/chunk-JF2MDHOJ.js +0 -40
- package/dist/chunk-JQFUKJU5.js +0 -71
- package/dist/chunk-MI4UE2PQ.js +0 -561
- package/dist/chunk-PUKVXYYL.js +0 -52
- package/dist/chunk-QQS7I7ZL.js +0 -16
- package/dist/chunk-VAAMRG4K.js +0 -20
- package/dist/chunk-WFQJUJTC.js +0 -182
- package/dist/chunk-ZXIKIA5B.js +0 -178
- package/dist/concurrentCalls.cjs +0 -406
- package/dist/concurrentCalls.d.cts +0 -116
- package/dist/concurrentCalls.js +0 -346
- package/dist/consoleFmt.cjs +0 -85
- package/dist/consoleFmt.d.cts +0 -54
- package/dist/consoleFmt.d.ts +0 -54
- package/dist/consoleFmt.js +0 -60
- package/dist/conversions.cjs +0 -44
- package/dist/conversions.d.cts +0 -3
- package/dist/conversions.d.ts +0 -3
- package/dist/conversions.js +0 -6
- package/dist/createThrottleController.cjs +0 -193
- package/dist/createThrottleController.d.cts +0 -13
- package/dist/createThrottleController.d.ts +0 -13
- package/dist/createThrottleController.js +0 -61
- package/dist/debounce.cjs +0 -157
- package/dist/debounce.d.cts +0 -46
- package/dist/debounce.d.ts +0 -46
- package/dist/debounce.js +0 -8
- package/dist/dedent.cjs +0 -104
- package/dist/dedent.d.cts +0 -73
- package/dist/dedent.d.ts +0 -73
- package/dist/dedent.js +0 -79
- package/dist/deepEqual.cjs +0 -96
- package/dist/deepEqual.d.ts +0 -21
- package/dist/deepEqual.js +0 -8
- package/dist/deepReplaceValues.cjs +0 -87
- package/dist/deepReplaceValues.d.ts +0 -27
- package/dist/deepReplaceValues.js +0 -7
- package/dist/enhancedMap.cjs +0 -131
- package/dist/enhancedMap.d.cts +0 -20
- package/dist/enhancedMap.d.ts +0 -20
- package/dist/enhancedMap.js +0 -10
- package/dist/exhaustiveMatch.cjs +0 -66
- package/dist/exhaustiveMatch.d.cts +0 -9
- package/dist/exhaustiveMatch.d.ts +0 -9
- package/dist/exhaustiveMatch.js +0 -40
- package/dist/filterObjectOrArrayKeys.cjs +0 -619
- package/dist/filterObjectOrArrayKeys.d.ts +0 -88
- package/dist/filterObjectOrArrayKeys.js +0 -9
- package/dist/getAutoIncrementId.cjs +0 -44
- package/dist/getAutoIncrementId.d.ts +0 -46
- package/dist/getAutoIncrementId.js +0 -18
- package/dist/getCompositeKey.cjs +0 -86
- package/dist/getCompositeKey.d.ts +0 -11
- package/dist/getCompositeKey.js +0 -8
- package/dist/getValueStableKey.cjs +0 -89
- package/dist/getValueStableKey.d.ts +0 -15
- package/dist/getValueStableKey.js +0 -11
- package/dist/hash.cjs +0 -57
- package/dist/hash.d.ts +0 -7
- package/dist/hash.js +0 -32
- package/dist/interpolate.cjs +0 -88
- package/dist/interpolate.d.cts +0 -11
- package/dist/interpolate.d.ts +0 -11
- package/dist/interpolate.js +0 -46
- package/dist/iteratorUtils.cjs +0 -73
- package/dist/iteratorUtils.d.ts +0 -10
- package/dist/iteratorUtils.js +0 -44
- package/dist/keepPrevIfUnchanged.cjs +0 -102
- package/dist/keepPrevIfUnchanged.d.cts +0 -7
- package/dist/keepPrevIfUnchanged.d.ts +0 -7
- package/dist/keepPrevIfUnchanged.js +0 -7
- package/dist/keyedMap.cjs +0 -224
- package/dist/keyedMap.d.cts +0 -75
- package/dist/keyedMap.d.ts +0 -75
- package/dist/keyedMap.js +0 -145
- package/dist/keyedSet.cjs +0 -205
- package/dist/keyedSet.d.cts +0 -76
- package/dist/keyedSet.d.ts +0 -76
- package/dist/keyedSet.js +0 -126
- package/dist/levenshtein.cjs +0 -180
- package/dist/levenshtein.d.ts +0 -5
- package/dist/levenshtein.js +0 -153
- package/dist/main.cjs +0 -32
- package/dist/main.d.cts +0 -3
- package/dist/main.d.ts +0 -3
- package/dist/main.js +0 -7
- package/dist/matchPath.cjs +0 -155
- package/dist/matchPath.d.cts +0 -53
- package/dist/matchPath.d.ts +0 -53
- package/dist/matchPath.js +0 -108
- package/dist/mathUtils.cjs +0 -81
- package/dist/mathUtils.d.ts +0 -54
- package/dist/mathUtils.js +0 -22
- package/dist/mutationUtils.cjs +0 -153
- package/dist/mutationUtils.d.ts +0 -15
- package/dist/mutationUtils.js +0 -55
- package/dist/objUtils.cjs +0 -242
- package/dist/objUtils.d.cts +0 -28
- package/dist/objUtils.js +0 -38
- package/dist/parallelAsyncCalls.cjs +0 -162
- package/dist/parallelAsyncCalls.d.cts +0 -82
- package/dist/parallelAsyncCalls.d.ts +0 -82
- package/dist/parallelAsyncCalls.js +0 -126
- package/dist/partialEqual.cjs +0 -1196
- package/dist/partialEqual.d.cts +0 -141
- package/dist/partialEqual.d.ts +0 -141
- package/dist/partialEqual.js +0 -1168
- package/dist/promiseUtils.cjs +0 -38
- package/dist/promiseUtils.d.cts +0 -8
- package/dist/promiseUtils.d.ts +0 -8
- package/dist/promiseUtils.js +0 -6
- package/dist/regexUtils.cjs +0 -60
- package/dist/regexUtils.d.cts +0 -17
- package/dist/regexUtils.d.ts +0 -17
- package/dist/regexUtils.js +0 -33
- package/dist/retryOnError.cjs +0 -130
- package/dist/retryOnError.d.ts +0 -83
- package/dist/retryOnError.js +0 -101
- package/dist/runShellCmd.cjs +0 -127
- package/dist/runShellCmd.d.cts +0 -90
- package/dist/runShellCmd.js +0 -98
- package/dist/safeJson.cjs +0 -45
- package/dist/safeJson.d.ts +0 -16
- package/dist/safeJson.js +0 -8
- package/dist/saferTyping.cjs +0 -52
- package/dist/saferTyping.d.ts +0 -47
- package/dist/saferTyping.js +0 -23
- package/dist/serializeXML.cjs +0 -154
- package/dist/serializeXML.d.cts +0 -22
- package/dist/serializeXML.d.ts +0 -22
- package/dist/serializeXML.js +0 -116
- package/dist/shallowEqual.cjs +0 -88
- package/dist/shallowEqual.d.ts +0 -4
- package/dist/shallowEqual.js +0 -63
- package/dist/sleep.cjs +0 -32
- package/dist/sleep.d.cts +0 -3
- package/dist/sleep.d.ts +0 -3
- package/dist/sleep.js +0 -6
- package/dist/stringUtils.cjs +0 -155
- package/dist/stringUtils.d.ts +0 -55
- package/dist/stringUtils.js +0 -50
- package/dist/testUtils.cjs +0 -1490
- package/dist/testUtils.d.cts +0 -133
- package/dist/testUtils.js +0 -359
- package/dist/throttle.cjs +0 -282
- package/dist/throttle.d.cts +0 -98
- package/dist/throttle.js +0 -38
- package/dist/time.cjs +0 -152
- package/dist/time.d.cts +0 -25
- package/dist/time.js +0 -38
- package/dist/timers.cjs +0 -194
- package/dist/timers.d.ts +0 -121
- package/dist/timers.js +0 -156
- package/dist/tsResult.cjs +0 -226
- package/dist/tsResult.d.ts +0 -114
- package/dist/tsResult.js +0 -180
- package/dist/typeGuards.cjs +0 -70
- package/dist/typeGuards.d.ts +0 -111
- package/dist/typeGuards.js +0 -18
- package/dist/typeUtils.cjs +0 -18
- package/dist/typeUtils.d.cts +0 -61
- package/dist/typeUtils.js +0 -0
- package/dist/typedStrings.cjs +0 -90
- package/dist/typedStrings.d.ts +0 -163
- package/dist/typedStrings.js +0 -57
- package/dist/typingFnUtils.cjs +0 -96
- package/dist/typingFnUtils.d.ts +0 -100
- package/dist/typingFnUtils.js +0 -30
- package/dist/typingTestUtils.cjs +0 -52
- package/dist/typingTestUtils.d.ts +0 -79
- package/dist/typingTestUtils.js +0 -27
- package/dist/typingUtils.cjs +0 -18
- package/dist/typingUtils.d.cts +0 -35
- package/dist/typingUtils.d.ts +0 -35
- package/dist/typingUtils.js +0 -0
- package/dist/yamlStringify.cjs +0 -423
- package/dist/yamlStringify.d.cts +0 -10
- package/dist/yamlStringify.d.ts +0 -10
- package/dist/yamlStringify.js +0 -9
package/dist/awaitDebounce.cjs
DELETED
|
@@ -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
|
-
});
|
package/dist/awaitDebounce.d.ts
DELETED
|
@@ -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 };
|
package/dist/awaitDebounce.js
DELETED
|
@@ -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
|
-
});
|