@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.
- 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 +79 -0
- package/dist/diffParser.mjs +424 -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/iteratorUtils.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
declare function enumerate<T>(iter: Iterable<T>, start?: number): Generator<[number, T]>;
|
|
2
|
-
declare function withIsLast<T>(array: T[]): Generator<[isLast: boolean, item: T, index: number]>;
|
|
3
|
-
declare function withPrevious<T>(iter: Iterable<T>): Generator<{
|
|
4
|
-
prev: T | undefined;
|
|
5
|
-
current: T;
|
|
6
|
-
}>;
|
|
7
|
-
declare function range(start: number, end: number, step?: number): Generator<number>;
|
|
8
|
-
declare function rangeArray(start: number, end: number, step?: number): number[];
|
|
9
|
-
|
|
10
|
-
export { enumerate, range, rangeArray, withIsLast, withPrevious };
|
package/dist/iteratorUtils.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// src/iteratorUtils.ts
|
|
2
|
-
function* enumerate(iter, start = 0) {
|
|
3
|
-
let index = start;
|
|
4
|
-
for (const item of iter) {
|
|
5
|
-
yield [index, item];
|
|
6
|
-
index++;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
function* withIsLast(array) {
|
|
10
|
-
let index = 0;
|
|
11
|
-
for (const item of array) {
|
|
12
|
-
const isLast = index === array.length - 1;
|
|
13
|
-
yield [isLast, item, index];
|
|
14
|
-
index++;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
function* withPrevious(iter) {
|
|
18
|
-
let prev = void 0;
|
|
19
|
-
for (const current of iter) {
|
|
20
|
-
yield { prev, current };
|
|
21
|
-
prev = current;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function* range(start, end, step = 1) {
|
|
25
|
-
if (start > end) {
|
|
26
|
-
for (let i = start; i >= end; i -= step) {
|
|
27
|
-
yield i;
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
for (let i = start; i <= end; i += step) {
|
|
31
|
-
yield i;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function rangeArray(start, end, step = 1) {
|
|
36
|
-
return [...range(start, end, step)];
|
|
37
|
-
}
|
|
38
|
-
export {
|
|
39
|
-
enumerate,
|
|
40
|
-
range,
|
|
41
|
-
rangeArray,
|
|
42
|
-
withIsLast,
|
|
43
|
-
withPrevious
|
|
44
|
-
};
|
|
@@ -1,102 +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/keepPrevIfUnchanged.ts
|
|
21
|
-
var keepPrevIfUnchanged_exports = {};
|
|
22
|
-
__export(keepPrevIfUnchanged_exports, {
|
|
23
|
-
keepPrevIfUnchanged: () => keepPrevIfUnchanged
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(keepPrevIfUnchanged_exports);
|
|
26
|
-
|
|
27
|
-
// src/deepEqual.ts
|
|
28
|
-
var has = Object.prototype.hasOwnProperty;
|
|
29
|
-
function find(iter, tar, maxDepth) {
|
|
30
|
-
for (const key of iter.keys()) {
|
|
31
|
-
if (deepEqual(key, tar, maxDepth)) return key;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function deepEqual(foo, bar, maxDepth = 20) {
|
|
35
|
-
let ctor, len, tmp;
|
|
36
|
-
if (foo === bar) return true;
|
|
37
|
-
if (maxDepth && maxDepth <= 0) return false;
|
|
38
|
-
if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
|
|
39
|
-
if (ctor === Date)
|
|
40
|
-
return deepEqual(foo.getTime(), bar.getTime(), maxDepth - 1);
|
|
41
|
-
if (ctor === RegExp) return foo.toString() === bar.toString();
|
|
42
|
-
if (ctor === Array) {
|
|
43
|
-
if ((len = foo.length) === bar.length) {
|
|
44
|
-
while (len-- && deepEqual(foo[len], bar[len], maxDepth - 1)) ;
|
|
45
|
-
}
|
|
46
|
-
return len === -1;
|
|
47
|
-
}
|
|
48
|
-
if (ctor === Set) {
|
|
49
|
-
if (foo.size !== bar.size) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
for (len of foo) {
|
|
53
|
-
tmp = len;
|
|
54
|
-
if (tmp && typeof tmp === "object") {
|
|
55
|
-
tmp = find(bar, tmp, maxDepth - 1);
|
|
56
|
-
if (!tmp) return false;
|
|
57
|
-
}
|
|
58
|
-
if (!bar.has(tmp)) return false;
|
|
59
|
-
}
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
if (ctor === Map) {
|
|
63
|
-
if (foo.size !== bar.size) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
for (len of foo) {
|
|
67
|
-
tmp = len[0];
|
|
68
|
-
if (tmp && typeof tmp === "object") {
|
|
69
|
-
tmp = find(bar, tmp, maxDepth - 1);
|
|
70
|
-
if (!tmp) return false;
|
|
71
|
-
}
|
|
72
|
-
if (!deepEqual(len[1], bar.get(tmp), maxDepth - 1)) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
if (!ctor || typeof foo === "object") {
|
|
79
|
-
len = 0;
|
|
80
|
-
for (ctor in foo) {
|
|
81
|
-
if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
|
|
82
|
-
if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor], maxDepth - 1))
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
return Object.keys(bar).length === len;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return foo !== foo && bar !== bar;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// src/keepPrevIfUnchanged.ts
|
|
92
|
-
function keepPrevIfUnchanged({
|
|
93
|
-
prev,
|
|
94
|
-
newValue,
|
|
95
|
-
equalityFn = deepEqual
|
|
96
|
-
}) {
|
|
97
|
-
return equalityFn(prev, newValue) ? prev : newValue;
|
|
98
|
-
}
|
|
99
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
100
|
-
0 && (module.exports = {
|
|
101
|
-
keepPrevIfUnchanged
|
|
102
|
-
});
|
package/dist/keyedMap.cjs
DELETED
|
@@ -1,224 +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/keyedMap.ts
|
|
21
|
-
var keyedMap_exports = {};
|
|
22
|
-
__export(keyedMap_exports, {
|
|
23
|
-
CompositeKeyMap: () => CompositeKeyMap,
|
|
24
|
-
KeyedMap: () => KeyedMap
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(keyedMap_exports);
|
|
27
|
-
|
|
28
|
-
// src/typeGuards.ts
|
|
29
|
-
function isObject(value) {
|
|
30
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// src/assertions.ts
|
|
34
|
-
var isObject2 = isObject;
|
|
35
|
-
|
|
36
|
-
// src/getCompositeKey.ts
|
|
37
|
-
function getCompositeKey(input, maxSortingDepth = 3) {
|
|
38
|
-
if (typeof input === "string") return `"${input}`;
|
|
39
|
-
if (!input || typeof input !== "object") return `$${input}`;
|
|
40
|
-
return stringifyCompact(input, maxSortingDepth, 0, /* @__PURE__ */ new WeakSet());
|
|
41
|
-
}
|
|
42
|
-
function stringifyCompact(input, maxSortingDepth, depth, refs) {
|
|
43
|
-
const isJsObj = input && typeof input === "object";
|
|
44
|
-
if (isJsObj) {
|
|
45
|
-
if (refs.has(input)) {
|
|
46
|
-
throw new Error("Circular reference detected");
|
|
47
|
-
}
|
|
48
|
-
refs.add(input);
|
|
49
|
-
}
|
|
50
|
-
let result;
|
|
51
|
-
if (Array.isArray(input)) {
|
|
52
|
-
result = "[";
|
|
53
|
-
for (const v of input) {
|
|
54
|
-
if (result.length > 1) result += ",";
|
|
55
|
-
result += stringifyCompact(v, maxSortingDepth, depth + 1, refs);
|
|
56
|
-
}
|
|
57
|
-
result += "]";
|
|
58
|
-
} else if (isObject2(input)) {
|
|
59
|
-
let entries = Object.entries(input);
|
|
60
|
-
if (entries.length === 0) {
|
|
61
|
-
result = "{}";
|
|
62
|
-
} else {
|
|
63
|
-
if (depth < maxSortingDepth) {
|
|
64
|
-
entries = entries.sort(
|
|
65
|
-
([a], [b]) => a < b ? -1 : a > b ? 1 : 0
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
result = "{";
|
|
69
|
-
for (const [k, v] of entries) {
|
|
70
|
-
if (v === void 0) continue;
|
|
71
|
-
if (result.length > 1) result += ",";
|
|
72
|
-
result += `${k}:${stringifyCompact(v, maxSortingDepth, depth + 1, refs)}`;
|
|
73
|
-
}
|
|
74
|
-
result += "}";
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
result = JSON.stringify(input);
|
|
78
|
-
}
|
|
79
|
-
if (isJsObj) {
|
|
80
|
-
refs.delete(input);
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// src/keyedMap.ts
|
|
86
|
-
var KeyedMap = class {
|
|
87
|
-
map;
|
|
88
|
-
getKey;
|
|
89
|
-
/**
|
|
90
|
-
* @param getKey - Function to compute an internal key from the external key
|
|
91
|
-
* @param entries - Optional initial entries to add to the map
|
|
92
|
-
*/
|
|
93
|
-
constructor(getKey, entries) {
|
|
94
|
-
this.getKey = getKey;
|
|
95
|
-
this.map = /* @__PURE__ */ new Map();
|
|
96
|
-
if (entries) {
|
|
97
|
-
for (const [key, value] of entries) {
|
|
98
|
-
this.set(key, value);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/** The number of entries in the map */
|
|
103
|
-
get size() {
|
|
104
|
-
return this.map.size;
|
|
105
|
-
}
|
|
106
|
-
/** Sets a value for the given key. If the key exists, replaces both key and value. */
|
|
107
|
-
set(key, value) {
|
|
108
|
-
const internalKey = this.getKey(key);
|
|
109
|
-
this.map.set(internalKey, { key, value });
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
/** Sets multiple entries at once. */
|
|
113
|
-
setMultiple(entries) {
|
|
114
|
-
for (const [key, value] of entries) {
|
|
115
|
-
this.set(key, value);
|
|
116
|
-
}
|
|
117
|
-
return this;
|
|
118
|
-
}
|
|
119
|
-
/** Gets the value for the given key, or undefined if not found. */
|
|
120
|
-
get(key) {
|
|
121
|
-
const internalKey = this.getKey(key);
|
|
122
|
-
return this.map.get(internalKey)?.value;
|
|
123
|
-
}
|
|
124
|
-
/** Checks if the map contains the given key. */
|
|
125
|
-
has(key) {
|
|
126
|
-
const internalKey = this.getKey(key);
|
|
127
|
-
return this.map.has(internalKey);
|
|
128
|
-
}
|
|
129
|
-
/** Removes the entry for the given key. Returns true if the entry was removed. */
|
|
130
|
-
delete(key) {
|
|
131
|
-
const internalKey = this.getKey(key);
|
|
132
|
-
return this.map.delete(internalKey);
|
|
133
|
-
}
|
|
134
|
-
/** Removes multiple entries. Returns the number of entries removed. */
|
|
135
|
-
deleteMultiple(keys) {
|
|
136
|
-
let count = 0;
|
|
137
|
-
for (const key of keys) {
|
|
138
|
-
if (this.delete(key)) {
|
|
139
|
-
count++;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return count;
|
|
143
|
-
}
|
|
144
|
-
/** Removes all entries from the map. */
|
|
145
|
-
clear() {
|
|
146
|
-
this.map.clear();
|
|
147
|
-
}
|
|
148
|
-
/** Executes a callback for each entry in the map. */
|
|
149
|
-
forEach(callback, thisArg) {
|
|
150
|
-
for (const { key, value } of this.map.values()) {
|
|
151
|
-
callback.call(thisArg, value, key, this);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
/** Finds the first entry matching the predicate. */
|
|
155
|
-
find(predicate) {
|
|
156
|
-
for (const { key, value } of this.map.values()) {
|
|
157
|
-
if (predicate(value, key)) {
|
|
158
|
-
return { key, value };
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return void 0;
|
|
162
|
-
}
|
|
163
|
-
/** Gets the value for the given key, or throws if not found. */
|
|
164
|
-
getOrThrow(key) {
|
|
165
|
-
const value = this.get(key);
|
|
166
|
-
if (value === void 0 && !this.has(key)) {
|
|
167
|
-
throw new Error(`Key not found in KeyedMap`);
|
|
168
|
-
}
|
|
169
|
-
return value;
|
|
170
|
-
}
|
|
171
|
-
/** Gets the value for the given key, or inserts and returns the fallback value. */
|
|
172
|
-
getOrInsert(key, fallback) {
|
|
173
|
-
if (!this.has(key)) {
|
|
174
|
-
this.set(key, fallback());
|
|
175
|
-
}
|
|
176
|
-
return this.getOrThrow(key);
|
|
177
|
-
}
|
|
178
|
-
/** Returns values that match the predicate. */
|
|
179
|
-
toFilteredValues(predicate) {
|
|
180
|
-
const values = [];
|
|
181
|
-
for (const { key, value } of this.map.values()) {
|
|
182
|
-
if (predicate(value, key)) {
|
|
183
|
-
values.push(value);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return values;
|
|
187
|
-
}
|
|
188
|
-
/** Returns all values as an array. */
|
|
189
|
-
toValues() {
|
|
190
|
-
return [...this.values()];
|
|
191
|
-
}
|
|
192
|
-
/** Returns all keys as an array. */
|
|
193
|
-
toKeys() {
|
|
194
|
-
return [...this.keys()];
|
|
195
|
-
}
|
|
196
|
-
*keys() {
|
|
197
|
-
for (const { key } of this.map.values()) {
|
|
198
|
-
yield key;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
*values() {
|
|
202
|
-
for (const { value } of this.map.values()) {
|
|
203
|
-
yield value;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
*entries() {
|
|
207
|
-
for (const { key, value } of this.map.values()) {
|
|
208
|
-
yield [key, value];
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
[Symbol.iterator]() {
|
|
212
|
-
return this.entries();
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
var CompositeKeyMap = class extends KeyedMap {
|
|
216
|
-
constructor(entries) {
|
|
217
|
-
super(getCompositeKey, entries);
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
221
|
-
0 && (module.exports = {
|
|
222
|
-
CompositeKeyMap,
|
|
223
|
-
KeyedMap
|
|
224
|
-
});
|
package/dist/keyedMap.d.cts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Map implementation that uses a custom key function to determine key equality.
|
|
3
|
-
* Keys with the same computed internal key are considered equal.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* const map = new KeyedMap<{ x: number; y: number }, string, string>(
|
|
7
|
-
* (key) => `${key.x},${key.y}`,
|
|
8
|
-
* );
|
|
9
|
-
* map.set({ x: 1, y: 2 }, 'point A');
|
|
10
|
-
* map.get({ x: 1, y: 2 }); // 'point A' (different object, same computed key)
|
|
11
|
-
*
|
|
12
|
-
* @template K - The type of the external key
|
|
13
|
-
* @template V - The type of the value
|
|
14
|
-
* @template InternalKey - The type of the internal key used for comparison
|
|
15
|
-
*/
|
|
16
|
-
declare class KeyedMap<K, V, InternalKey = string> {
|
|
17
|
-
private map;
|
|
18
|
-
private getKey;
|
|
19
|
-
/**
|
|
20
|
-
* @param getKey - Function to compute an internal key from the external key
|
|
21
|
-
* @param entries - Optional initial entries to add to the map
|
|
22
|
-
*/
|
|
23
|
-
constructor(getKey: (key: K) => InternalKey, entries?: Iterable<[K, V]>);
|
|
24
|
-
/** The number of entries in the map */
|
|
25
|
-
get size(): number;
|
|
26
|
-
/** Sets a value for the given key. If the key exists, replaces both key and value. */
|
|
27
|
-
set(key: K, value: V): this;
|
|
28
|
-
/** Sets multiple entries at once. */
|
|
29
|
-
setMultiple(entries: Iterable<[K, V]>): this;
|
|
30
|
-
/** Gets the value for the given key, or undefined if not found. */
|
|
31
|
-
get(key: K): V | undefined;
|
|
32
|
-
/** Checks if the map contains the given key. */
|
|
33
|
-
has(key: K): boolean;
|
|
34
|
-
/** Removes the entry for the given key. Returns true if the entry was removed. */
|
|
35
|
-
delete(key: K): boolean;
|
|
36
|
-
/** Removes multiple entries. Returns the number of entries removed. */
|
|
37
|
-
deleteMultiple(keys: Iterable<K>): number;
|
|
38
|
-
/** Removes all entries from the map. */
|
|
39
|
-
clear(): void;
|
|
40
|
-
/** Executes a callback for each entry in the map. */
|
|
41
|
-
forEach(callback: (value: V, key: K, map: KeyedMap<K, V, InternalKey>) => void, thisArg?: unknown): void;
|
|
42
|
-
/** Finds the first entry matching the predicate. */
|
|
43
|
-
find(predicate: (value: V, key: K) => boolean): {
|
|
44
|
-
key: K;
|
|
45
|
-
value: V;
|
|
46
|
-
} | undefined;
|
|
47
|
-
/** Gets the value for the given key, or throws if not found. */
|
|
48
|
-
getOrThrow(key: K): V;
|
|
49
|
-
/** Gets the value for the given key, or inserts and returns the fallback value. */
|
|
50
|
-
getOrInsert(key: K, fallback: () => V): V;
|
|
51
|
-
/** Returns values that match the predicate. */
|
|
52
|
-
toFilteredValues(predicate: (value: V, key: K) => boolean): V[];
|
|
53
|
-
/** Returns all values as an array. */
|
|
54
|
-
toValues(): V[];
|
|
55
|
-
/** Returns all keys as an array. */
|
|
56
|
-
toKeys(): K[];
|
|
57
|
-
keys(): IterableIterator<K>;
|
|
58
|
-
values(): IterableIterator<V>;
|
|
59
|
-
entries(): IterableIterator<[K, V]>;
|
|
60
|
-
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* A Map that compares keys by value instead of reference.
|
|
64
|
-
* Uses `getCompositeKey` to generate a stable string key for any value.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* const map = new CompositeKeyMap<{ x: number; y: number }, string>();
|
|
68
|
-
* map.set({ x: 1, y: 2 }, 'point A');
|
|
69
|
-
* map.get({ x: 1, y: 2 }); // 'point A' (different object, same value)
|
|
70
|
-
*/
|
|
71
|
-
declare class CompositeKeyMap<K, V> extends KeyedMap<K, V, string> {
|
|
72
|
-
constructor(entries?: Iterable<[K, V]>);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export { CompositeKeyMap, KeyedMap };
|
package/dist/keyedMap.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Map implementation that uses a custom key function to determine key equality.
|
|
3
|
-
* Keys with the same computed internal key are considered equal.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* const map = new KeyedMap<{ x: number; y: number }, string, string>(
|
|
7
|
-
* (key) => `${key.x},${key.y}`,
|
|
8
|
-
* );
|
|
9
|
-
* map.set({ x: 1, y: 2 }, 'point A');
|
|
10
|
-
* map.get({ x: 1, y: 2 }); // 'point A' (different object, same computed key)
|
|
11
|
-
*
|
|
12
|
-
* @template K - The type of the external key
|
|
13
|
-
* @template V - The type of the value
|
|
14
|
-
* @template InternalKey - The type of the internal key used for comparison
|
|
15
|
-
*/
|
|
16
|
-
declare class KeyedMap<K, V, InternalKey = string> {
|
|
17
|
-
private map;
|
|
18
|
-
private getKey;
|
|
19
|
-
/**
|
|
20
|
-
* @param getKey - Function to compute an internal key from the external key
|
|
21
|
-
* @param entries - Optional initial entries to add to the map
|
|
22
|
-
*/
|
|
23
|
-
constructor(getKey: (key: K) => InternalKey, entries?: Iterable<[K, V]>);
|
|
24
|
-
/** The number of entries in the map */
|
|
25
|
-
get size(): number;
|
|
26
|
-
/** Sets a value for the given key. If the key exists, replaces both key and value. */
|
|
27
|
-
set(key: K, value: V): this;
|
|
28
|
-
/** Sets multiple entries at once. */
|
|
29
|
-
setMultiple(entries: Iterable<[K, V]>): this;
|
|
30
|
-
/** Gets the value for the given key, or undefined if not found. */
|
|
31
|
-
get(key: K): V | undefined;
|
|
32
|
-
/** Checks if the map contains the given key. */
|
|
33
|
-
has(key: K): boolean;
|
|
34
|
-
/** Removes the entry for the given key. Returns true if the entry was removed. */
|
|
35
|
-
delete(key: K): boolean;
|
|
36
|
-
/** Removes multiple entries. Returns the number of entries removed. */
|
|
37
|
-
deleteMultiple(keys: Iterable<K>): number;
|
|
38
|
-
/** Removes all entries from the map. */
|
|
39
|
-
clear(): void;
|
|
40
|
-
/** Executes a callback for each entry in the map. */
|
|
41
|
-
forEach(callback: (value: V, key: K, map: KeyedMap<K, V, InternalKey>) => void, thisArg?: unknown): void;
|
|
42
|
-
/** Finds the first entry matching the predicate. */
|
|
43
|
-
find(predicate: (value: V, key: K) => boolean): {
|
|
44
|
-
key: K;
|
|
45
|
-
value: V;
|
|
46
|
-
} | undefined;
|
|
47
|
-
/** Gets the value for the given key, or throws if not found. */
|
|
48
|
-
getOrThrow(key: K): V;
|
|
49
|
-
/** Gets the value for the given key, or inserts and returns the fallback value. */
|
|
50
|
-
getOrInsert(key: K, fallback: () => V): V;
|
|
51
|
-
/** Returns values that match the predicate. */
|
|
52
|
-
toFilteredValues(predicate: (value: V, key: K) => boolean): V[];
|
|
53
|
-
/** Returns all values as an array. */
|
|
54
|
-
toValues(): V[];
|
|
55
|
-
/** Returns all keys as an array. */
|
|
56
|
-
toKeys(): K[];
|
|
57
|
-
keys(): IterableIterator<K>;
|
|
58
|
-
values(): IterableIterator<V>;
|
|
59
|
-
entries(): IterableIterator<[K, V]>;
|
|
60
|
-
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* A Map that compares keys by value instead of reference.
|
|
64
|
-
* Uses `getCompositeKey` to generate a stable string key for any value.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* const map = new CompositeKeyMap<{ x: number; y: number }, string>();
|
|
68
|
-
* map.set({ x: 1, y: 2 }, 'point A');
|
|
69
|
-
* map.get({ x: 1, y: 2 }); // 'point A' (different object, same value)
|
|
70
|
-
*/
|
|
71
|
-
declare class CompositeKeyMap<K, V> extends KeyedMap<K, V, string> {
|
|
72
|
-
constructor(entries?: Iterable<[K, V]>);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export { CompositeKeyMap, KeyedMap };
|
package/dist/keyedMap.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getCompositeKey
|
|
3
|
-
} from "./chunk-6FIBVC2P.js";
|
|
4
|
-
import "./chunk-C2SVCIWE.js";
|
|
5
|
-
import "./chunk-JF2MDHOJ.js";
|
|
6
|
-
|
|
7
|
-
// src/keyedMap.ts
|
|
8
|
-
var KeyedMap = class {
|
|
9
|
-
map;
|
|
10
|
-
getKey;
|
|
11
|
-
/**
|
|
12
|
-
* @param getKey - Function to compute an internal key from the external key
|
|
13
|
-
* @param entries - Optional initial entries to add to the map
|
|
14
|
-
*/
|
|
15
|
-
constructor(getKey, entries) {
|
|
16
|
-
this.getKey = getKey;
|
|
17
|
-
this.map = /* @__PURE__ */ new Map();
|
|
18
|
-
if (entries) {
|
|
19
|
-
for (const [key, value] of entries) {
|
|
20
|
-
this.set(key, value);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/** The number of entries in the map */
|
|
25
|
-
get size() {
|
|
26
|
-
return this.map.size;
|
|
27
|
-
}
|
|
28
|
-
/** Sets a value for the given key. If the key exists, replaces both key and value. */
|
|
29
|
-
set(key, value) {
|
|
30
|
-
const internalKey = this.getKey(key);
|
|
31
|
-
this.map.set(internalKey, { key, value });
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
/** Sets multiple entries at once. */
|
|
35
|
-
setMultiple(entries) {
|
|
36
|
-
for (const [key, value] of entries) {
|
|
37
|
-
this.set(key, value);
|
|
38
|
-
}
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/** Gets the value for the given key, or undefined if not found. */
|
|
42
|
-
get(key) {
|
|
43
|
-
const internalKey = this.getKey(key);
|
|
44
|
-
return this.map.get(internalKey)?.value;
|
|
45
|
-
}
|
|
46
|
-
/** Checks if the map contains the given key. */
|
|
47
|
-
has(key) {
|
|
48
|
-
const internalKey = this.getKey(key);
|
|
49
|
-
return this.map.has(internalKey);
|
|
50
|
-
}
|
|
51
|
-
/** Removes the entry for the given key. Returns true if the entry was removed. */
|
|
52
|
-
delete(key) {
|
|
53
|
-
const internalKey = this.getKey(key);
|
|
54
|
-
return this.map.delete(internalKey);
|
|
55
|
-
}
|
|
56
|
-
/** Removes multiple entries. Returns the number of entries removed. */
|
|
57
|
-
deleteMultiple(keys) {
|
|
58
|
-
let count = 0;
|
|
59
|
-
for (const key of keys) {
|
|
60
|
-
if (this.delete(key)) {
|
|
61
|
-
count++;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return count;
|
|
65
|
-
}
|
|
66
|
-
/** Removes all entries from the map. */
|
|
67
|
-
clear() {
|
|
68
|
-
this.map.clear();
|
|
69
|
-
}
|
|
70
|
-
/** Executes a callback for each entry in the map. */
|
|
71
|
-
forEach(callback, thisArg) {
|
|
72
|
-
for (const { key, value } of this.map.values()) {
|
|
73
|
-
callback.call(thisArg, value, key, this);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/** Finds the first entry matching the predicate. */
|
|
77
|
-
find(predicate) {
|
|
78
|
-
for (const { key, value } of this.map.values()) {
|
|
79
|
-
if (predicate(value, key)) {
|
|
80
|
-
return { key, value };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return void 0;
|
|
84
|
-
}
|
|
85
|
-
/** Gets the value for the given key, or throws if not found. */
|
|
86
|
-
getOrThrow(key) {
|
|
87
|
-
const value = this.get(key);
|
|
88
|
-
if (value === void 0 && !this.has(key)) {
|
|
89
|
-
throw new Error(`Key not found in KeyedMap`);
|
|
90
|
-
}
|
|
91
|
-
return value;
|
|
92
|
-
}
|
|
93
|
-
/** Gets the value for the given key, or inserts and returns the fallback value. */
|
|
94
|
-
getOrInsert(key, fallback) {
|
|
95
|
-
if (!this.has(key)) {
|
|
96
|
-
this.set(key, fallback());
|
|
97
|
-
}
|
|
98
|
-
return this.getOrThrow(key);
|
|
99
|
-
}
|
|
100
|
-
/** Returns values that match the predicate. */
|
|
101
|
-
toFilteredValues(predicate) {
|
|
102
|
-
const values = [];
|
|
103
|
-
for (const { key, value } of this.map.values()) {
|
|
104
|
-
if (predicate(value, key)) {
|
|
105
|
-
values.push(value);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return values;
|
|
109
|
-
}
|
|
110
|
-
/** Returns all values as an array. */
|
|
111
|
-
toValues() {
|
|
112
|
-
return [...this.values()];
|
|
113
|
-
}
|
|
114
|
-
/** Returns all keys as an array. */
|
|
115
|
-
toKeys() {
|
|
116
|
-
return [...this.keys()];
|
|
117
|
-
}
|
|
118
|
-
*keys() {
|
|
119
|
-
for (const { key } of this.map.values()) {
|
|
120
|
-
yield key;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
*values() {
|
|
124
|
-
for (const { value } of this.map.values()) {
|
|
125
|
-
yield value;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
*entries() {
|
|
129
|
-
for (const { key, value } of this.map.values()) {
|
|
130
|
-
yield [key, value];
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
[Symbol.iterator]() {
|
|
134
|
-
return this.entries();
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
var CompositeKeyMap = class extends KeyedMap {
|
|
138
|
-
constructor(entries) {
|
|
139
|
-
super(getCompositeKey, entries);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
export {
|
|
143
|
-
CompositeKeyMap,
|
|
144
|
-
KeyedMap
|
|
145
|
-
};
|