@terascope/core-utils 2.0.0-dev.10
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/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/src/arrays.d.ts +59 -0
- package/dist/src/arrays.d.ts.map +1 -0
- package/dist/src/arrays.js +180 -0
- package/dist/src/arrays.js.map +1 -0
- package/dist/src/big-lru-map.d.ts +14 -0
- package/dist/src/big-lru-map.d.ts.map +1 -0
- package/dist/src/big-lru-map.js +20 -0
- package/dist/src/big-lru-map.js.map +1 -0
- package/dist/src/big-map.d.ts +28 -0
- package/dist/src/big-map.d.ts.map +1 -0
- package/dist/src/big-map.js +148 -0
- package/dist/src/big-map.js.map +1 -0
- package/dist/src/big-set.d.ts +20 -0
- package/dist/src/big-set.d.ts.map +1 -0
- package/dist/src/big-set.js +109 -0
- package/dist/src/big-set.js.map +1 -0
- package/dist/src/booleans.d.ts +44 -0
- package/dist/src/booleans.d.ts.map +1 -0
- package/dist/src/booleans.js +81 -0
- package/dist/src/booleans.js.map +1 -0
- package/dist/src/buffers.d.ts +9 -0
- package/dist/src/buffers.d.ts.map +1 -0
- package/dist/src/buffers.js +22 -0
- package/dist/src/buffers.js.map +1 -0
- package/dist/src/collector.d.ts +48 -0
- package/dist/src/collector.d.ts.map +1 -0
- package/dist/src/collector.js +74 -0
- package/dist/src/collector.js.map +1 -0
- package/dist/src/dates.d.ts +180 -0
- package/dist/src/dates.d.ts.map +1 -0
- package/dist/src/dates.js +744 -0
- package/dist/src/dates.js.map +1 -0
- package/dist/src/decorators.d.ts +7 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.js +21 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/deps.d.ts +25 -0
- package/dist/src/deps.d.ts.map +1 -0
- package/dist/src/deps.js +96 -0
- package/dist/src/deps.js.map +1 -0
- package/dist/src/empty.d.ts +11 -0
- package/dist/src/empty.d.ts.map +1 -0
- package/dist/src/empty.js +32 -0
- package/dist/src/empty.js.map +1 -0
- package/dist/src/entities/data-entity.d.ts +153 -0
- package/dist/src/entities/data-entity.d.ts.map +1 -0
- package/dist/src/entities/data-entity.js +354 -0
- package/dist/src/entities/data-entity.js.map +1 -0
- package/dist/src/entities/index.d.ts +3 -0
- package/dist/src/entities/index.d.ts.map +1 -0
- package/dist/src/entities/index.js +3 -0
- package/dist/src/entities/index.js.map +1 -0
- package/dist/src/entities/interfaces.d.ts +52 -0
- package/dist/src/entities/interfaces.d.ts.map +1 -0
- package/dist/src/entities/interfaces.js +13 -0
- package/dist/src/entities/interfaces.js.map +1 -0
- package/dist/src/entities/utils.d.ts +9 -0
- package/dist/src/entities/utils.d.ts.map +1 -0
- package/dist/src/entities/utils.js +44 -0
- package/dist/src/entities/utils.js.map +1 -0
- package/dist/src/env.d.ts +6 -0
- package/dist/src/env.d.ts.map +1 -0
- package/dist/src/env.js +15 -0
- package/dist/src/env.js.map +1 -0
- package/dist/src/equality.d.ts +72 -0
- package/dist/src/equality.d.ts.map +1 -0
- package/dist/src/equality.js +128 -0
- package/dist/src/equality.js.map +1 -0
- package/dist/src/errors.d.ts +140 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +372 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/event-loop.d.ts +33 -0
- package/dist/src/event-loop.d.ts.map +1 -0
- package/dist/src/event-loop.js +74 -0
- package/dist/src/event-loop.js.map +1 -0
- package/dist/src/fp.d.ts +15 -0
- package/dist/src/fp.d.ts.map +1 -0
- package/dist/src/fp.js +25 -0
- package/dist/src/fp.js.map +1 -0
- package/dist/src/functions.d.ts +19 -0
- package/dist/src/functions.d.ts.map +1 -0
- package/dist/src/functions.js +58 -0
- package/dist/src/functions.js.map +1 -0
- package/dist/src/index.d.ts +33 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/iterators.d.ts +9 -0
- package/dist/src/iterators.d.ts.map +1 -0
- package/dist/src/iterators.js +13 -0
- package/dist/src/iterators.js.map +1 -0
- package/dist/src/json.d.ts +8 -0
- package/dist/src/json.d.ts.map +1 -0
- package/dist/src/json.js +46 -0
- package/dist/src/json.js.map +1 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +87 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/numbers.d.ts +86 -0
- package/dist/src/numbers.d.ts.map +1 -0
- package/dist/src/numbers.js +354 -0
- package/dist/src/numbers.js.map +1 -0
- package/dist/src/objects.d.ts +66 -0
- package/dist/src/objects.d.ts.map +1 -0
- package/dist/src/objects.js +170 -0
- package/dist/src/objects.js.map +1 -0
- package/dist/src/phone-number.d.ts +4 -0
- package/dist/src/phone-number.d.ts.map +1 -0
- package/dist/src/phone-number.js +31 -0
- package/dist/src/phone-number.js.map +1 -0
- package/dist/src/promises.d.ts +102 -0
- package/dist/src/promises.d.ts.map +1 -0
- package/dist/src/promises.js +289 -0
- package/dist/src/promises.js.map +1 -0
- package/dist/src/queue/index.d.ts +27 -0
- package/dist/src/queue/index.d.ts.map +1 -0
- package/dist/src/queue/index.js +170 -0
- package/dist/src/queue/index.js.map +1 -0
- package/dist/src/queue/node.d.ts +7 -0
- package/dist/src/queue/node.d.ts.map +1 -0
- package/dist/src/queue/node.js +17 -0
- package/dist/src/queue/node.js.map +1 -0
- package/dist/src/regex.d.ts +19 -0
- package/dist/src/regex.d.ts.map +1 -0
- package/dist/src/regex.js +138 -0
- package/dist/src/regex.js.map +1 -0
- package/dist/src/schemas.d.ts +69 -0
- package/dist/src/schemas.d.ts.map +1 -0
- package/dist/src/schemas.js +619 -0
- package/dist/src/schemas.js.map +1 -0
- package/dist/src/status-codes.d.ts +67 -0
- package/dist/src/status-codes.d.ts.map +1 -0
- package/dist/src/status-codes.js +66 -0
- package/dist/src/status-codes.js.map +1 -0
- package/dist/src/strings.d.ts +279 -0
- package/dist/src/strings.d.ts.map +1 -0
- package/dist/src/strings.js +578 -0
- package/dist/src/strings.js.map +1 -0
- package/dist/src/vector.d.ts +2 -0
- package/dist/src/vector.d.ts.map +1 -0
- package/dist/src/vector.js +16 -0
- package/dist/src/vector.js.map +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- THIS FILE IS AUTO-GENERATED, EDIT docs/packages/core-utils/overview.md -->
|
|
2
|
+
|
|
3
|
+
# Core Utils
|
|
4
|
+
|
|
5
|
+
> A collection of Teraslice Core Utilities
|
|
6
|
+
|
|
7
|
+
This is a package within the [Teraslice](https://github.com/terascope/teraslice) monorepo. See our [documentation](https://terascope.github.io/teraslice/docs/packages/core-utils/overview) for more information or the [issues](https://github.com/terascope/teraslice/issues?q=is%3Aopen+is%3Aissue+label%3Apkg%2Fcore-utils) associated with this package
|
|
8
|
+
|
|
9
|
+
## Contributing
|
|
10
|
+
|
|
11
|
+
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
|
|
12
|
+
|
|
13
|
+
Please make sure to update tests as appropriate.
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
|
|
17
|
+
[MIT](./LICENSE) licensed.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Many, ListOfRecursiveArraysOrValues, TypedArray } from '@terascope/types';
|
|
2
|
+
/** A native implementation of lodash flatten */
|
|
3
|
+
export declare function flatten<T>(val: Many<T[]>): T[];
|
|
4
|
+
export declare function flattenDeep<T>(val: ListOfRecursiveArraysOrValues<T>): T[];
|
|
5
|
+
/** A simplified implementation of lodash castArray */
|
|
6
|
+
export declare function castArray<T>(input: T | undefined | null | (T[]) | (readonly T[])): T[];
|
|
7
|
+
/**
|
|
8
|
+
* Concat and unique the items in the array
|
|
9
|
+
* Any non-array value will be converted to an array
|
|
10
|
+
*/
|
|
11
|
+
export declare function concat<T>(arr: T | (T[]), arr1?: T | (T[])): readonly T[];
|
|
12
|
+
export declare function concat<T>(arr: readonly T[], arr1?: readonly T[]): readonly T[];
|
|
13
|
+
export declare function concat<T>(arr: readonly T[], arr1?: T | (T[])): readonly T[];
|
|
14
|
+
/** A native implementation of lodash uniq */
|
|
15
|
+
export declare function uniq<T>(arr: T[] | Set<T>): T[];
|
|
16
|
+
/** Sort an arr or set */
|
|
17
|
+
export declare function sort<T>(arr: T[] | (readonly T[]) | Set<T>, compare?: (a: T, b: T) => number): T[];
|
|
18
|
+
/** Sort by path or function that returns the values to sort with */
|
|
19
|
+
export declare function sortBy<T, V = any>(arr: T[] | Set<T>, fnOrPath: ((value: T) => V) | string): T[];
|
|
20
|
+
/**
|
|
21
|
+
* Get the unique values by a path or function that returns the unique values
|
|
22
|
+
*/
|
|
23
|
+
export declare function uniqBy<T, V = any>(values: T[] | readonly T[], fnOrPath: ((value: T) => V) | string): T[];
|
|
24
|
+
/** A native implementation of lodash times */
|
|
25
|
+
export declare function times(n: number): number[];
|
|
26
|
+
export declare function times<T>(n: number, fn: (index: number) => T): T[];
|
|
27
|
+
/** Like times but an iterable */
|
|
28
|
+
export declare function timesIter(n: number): Iterable<number>;
|
|
29
|
+
export declare function timesIter<T>(n: number, fn: (index: number) => T): Iterable<T>;
|
|
30
|
+
/** Chunk an array into specific sizes */
|
|
31
|
+
export declare function chunk<T>(dataArray: Iterable<T>, size: number): T[][];
|
|
32
|
+
/** Chunk an array into specific size, by using an iterator */
|
|
33
|
+
export declare function chunkIter<T>(dataArray: Iterable<T>, size: number): Iterable<T[]>;
|
|
34
|
+
/** Safely check if an array, object, map, set has a key */
|
|
35
|
+
export declare function includes(input: unknown, key: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* If the input is an array it will return the first item
|
|
38
|
+
* else if it will return the input
|
|
39
|
+
*/
|
|
40
|
+
export declare function getFirst<T>(input: T | (T[]) | (readonly T[])): T | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* If the input is an array it will return the first item
|
|
43
|
+
* else if it will return the input
|
|
44
|
+
*/
|
|
45
|
+
export declare function getLast<T>(input: T | (T[]) | (readonly T[])): T | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Check if an input is an array, just Array.isArray
|
|
48
|
+
*/
|
|
49
|
+
export declare function isArray<T = any[]>(input: unknown): input is T;
|
|
50
|
+
/**
|
|
51
|
+
* Check if an input is an TypedArray instance like: Uint8Array or Uint16Array.
|
|
52
|
+
* This excludes nodejs Buffers since they aren't really the same.
|
|
53
|
+
*/
|
|
54
|
+
export declare function isTypedArray<T = TypedArray>(input: unknown): input is T;
|
|
55
|
+
/**
|
|
56
|
+
* Check if an input is an TypedArray or Array instance
|
|
57
|
+
*/
|
|
58
|
+
export declare function isArrayLike<T = any[]>(input: unknown): input is T;
|
|
59
|
+
//# sourceMappingURL=arrays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../src/arrays.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { get } from './deps.js';
|
|
2
|
+
import { isBuffer } from './buffers.js';
|
|
3
|
+
import { isKey } from './objects.js';
|
|
4
|
+
/** A native implementation of lodash flatten */
|
|
5
|
+
export function flatten(val) {
|
|
6
|
+
return val.reduce((a, b) => a.concat(b), []);
|
|
7
|
+
}
|
|
8
|
+
export function flattenDeep(val) {
|
|
9
|
+
return val.reduce((a, b) => {
|
|
10
|
+
if (isArrayLike(b)) {
|
|
11
|
+
return a.concat(flattenDeep(b));
|
|
12
|
+
}
|
|
13
|
+
return a.concat(b);
|
|
14
|
+
}, []);
|
|
15
|
+
}
|
|
16
|
+
/** A simplified implementation of lodash castArray */
|
|
17
|
+
export function castArray(input) {
|
|
18
|
+
if (input == null)
|
|
19
|
+
return [];
|
|
20
|
+
if (isArrayLike(input))
|
|
21
|
+
return input;
|
|
22
|
+
if (input instanceof Set)
|
|
23
|
+
return [...input];
|
|
24
|
+
return [input];
|
|
25
|
+
}
|
|
26
|
+
export function concat(arr, arr1) {
|
|
27
|
+
return uniq(castArray(arr)
|
|
28
|
+
.concat(arr1 ? castArray(arr1) : []));
|
|
29
|
+
}
|
|
30
|
+
/** A native implementation of lodash uniq */
|
|
31
|
+
export function uniq(arr) {
|
|
32
|
+
if (arr instanceof Set)
|
|
33
|
+
return [...arr];
|
|
34
|
+
return [...new Set(arr)];
|
|
35
|
+
}
|
|
36
|
+
/** Sort an arr or set */
|
|
37
|
+
export function sort(arr, compare) {
|
|
38
|
+
if (arr instanceof Set)
|
|
39
|
+
return [...arr].sort(compare);
|
|
40
|
+
if (isArrayLike(arr))
|
|
41
|
+
return arr.sort(compare);
|
|
42
|
+
return arr;
|
|
43
|
+
}
|
|
44
|
+
const numLike = {
|
|
45
|
+
bigint: true,
|
|
46
|
+
number: true,
|
|
47
|
+
};
|
|
48
|
+
/** Sort by path or function that returns the values to sort with */
|
|
49
|
+
export function sortBy(arr, fnOrPath) {
|
|
50
|
+
return sort(arr, (a, b) => {
|
|
51
|
+
const aVal = _getValFnOrPath(a, fnOrPath);
|
|
52
|
+
const bVal = _getValFnOrPath(b, fnOrPath);
|
|
53
|
+
if (isKey(numLike, typeof aVal) && isKey(numLike, typeof bVal)) {
|
|
54
|
+
return aVal - bVal;
|
|
55
|
+
}
|
|
56
|
+
if (aVal < bVal) {
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
if (aVal > bVal) {
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
return 0;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function _getValFnOrPath(input, fnOrPath) {
|
|
66
|
+
const uniqVal = typeof fnOrPath === 'function'
|
|
67
|
+
? fnOrPath(input)
|
|
68
|
+
: get(input, fnOrPath);
|
|
69
|
+
return uniqVal;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the unique values by a path or function that returns the unique values
|
|
73
|
+
*/
|
|
74
|
+
export function uniqBy(values, fnOrPath) {
|
|
75
|
+
const _values = new Set();
|
|
76
|
+
const result = [];
|
|
77
|
+
for (const value of values) {
|
|
78
|
+
const uniqVal = _getValFnOrPath(value, fnOrPath);
|
|
79
|
+
if (uniqVal != null && !_values.has(uniqVal)) {
|
|
80
|
+
_values.add(uniqVal);
|
|
81
|
+
result.push(value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
export function times(n, fn) {
|
|
87
|
+
if (fn)
|
|
88
|
+
return Array.from({ length: n }, (_, x) => fn(x));
|
|
89
|
+
return Array.from({ length: n }, (_, x) => x);
|
|
90
|
+
}
|
|
91
|
+
export function* timesIter(n, fn) {
|
|
92
|
+
for (let i = 0; i < n; i++) {
|
|
93
|
+
if (fn)
|
|
94
|
+
yield fn(i);
|
|
95
|
+
yield i;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/** Chunk an array into specific sizes */
|
|
99
|
+
export function chunk(dataArray, size) {
|
|
100
|
+
return Array.from(chunkIter(dataArray, size));
|
|
101
|
+
}
|
|
102
|
+
/** Chunk an array into specific size, by using an iterator */
|
|
103
|
+
export function* chunkIter(dataArray, size) {
|
|
104
|
+
if (size < 1) {
|
|
105
|
+
throw new RangeError(`Expected chunk size to be >0, got ${size}`);
|
|
106
|
+
}
|
|
107
|
+
if (isArrayLike(dataArray)) {
|
|
108
|
+
yield* _chunkArrayIterator(dataArray, size);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
let batch = [];
|
|
112
|
+
for (const data of dataArray) {
|
|
113
|
+
batch.push(data);
|
|
114
|
+
if (batch.length === size) {
|
|
115
|
+
yield batch;
|
|
116
|
+
batch = [];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (batch.length) {
|
|
120
|
+
yield batch;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* This is an optimization for array like chunking
|
|
125
|
+
*/
|
|
126
|
+
function* _chunkArrayIterator(arr, size) {
|
|
127
|
+
for (let x = 0; x < Math.ceil(arr.length / size); x++) {
|
|
128
|
+
const start = x * size;
|
|
129
|
+
const end = start + size;
|
|
130
|
+
yield arr.slice(start, end);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Safely check if an array, object, map, set has a key */
|
|
134
|
+
export function includes(input, key) {
|
|
135
|
+
if (!input)
|
|
136
|
+
return false;
|
|
137
|
+
if (isArrayLike(input) || typeof input === 'string')
|
|
138
|
+
return input.includes(key);
|
|
139
|
+
const obj = input;
|
|
140
|
+
if (typeof obj.has === 'function')
|
|
141
|
+
return obj.has(key);
|
|
142
|
+
if (typeof obj === 'object') {
|
|
143
|
+
return key in obj;
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* If the input is an array it will return the first item
|
|
149
|
+
* else if it will return the input
|
|
150
|
+
*/
|
|
151
|
+
export function getFirst(input) {
|
|
152
|
+
return castArray(input)[0];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* If the input is an array it will return the first item
|
|
156
|
+
* else if it will return the input
|
|
157
|
+
*/
|
|
158
|
+
export function getLast(input) {
|
|
159
|
+
return castArray(input).slice(-1)[0];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if an input is an array, just Array.isArray
|
|
163
|
+
*/
|
|
164
|
+
export function isArray(input) {
|
|
165
|
+
return Array.isArray(input);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check if an input is an TypedArray instance like: Uint8Array or Uint16Array.
|
|
169
|
+
* This excludes nodejs Buffers since they aren't really the same.
|
|
170
|
+
*/
|
|
171
|
+
export function isTypedArray(input) {
|
|
172
|
+
return ArrayBuffer.isView(input) && !isBuffer(input);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if an input is an TypedArray or Array instance
|
|
176
|
+
*/
|
|
177
|
+
export function isArrayLike(input) {
|
|
178
|
+
return Array.isArray(input) || isTypedArray(input);
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=arrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../src/arrays.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TypedArray } from '@terascope/types';
|
|
2
|
+
import { LRUMap } from 'mnemonist';
|
|
3
|
+
/**
|
|
4
|
+
* This used to ignore the init size of
|
|
5
|
+
* the array in LRUMap. Doing this will avoid
|
|
6
|
+
* running out of memory at 12 million records.
|
|
7
|
+
* */
|
|
8
|
+
export declare class FlexibleArray {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
export declare class BigLRUMap<V> extends LRUMap<string | number, V> {
|
|
12
|
+
constructor(mapSize: number, keyArray?: FlexibleArray | TypedArray, valueArray?: FlexibleArray | TypedArray);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=big-lru-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"big-lru-map.d.ts","sourceRoot":"","sources":["../../src/big-lru-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC;;;;IAII;AACJ,qBAAa,aAAa;;CAIzB;AAED,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;gBAEpD,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,aAAa,GAAG,UAA0B,EACpD,UAAU,GAAE,aAAa,GAAG,UAA0B;CAM7D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LRUMap } from 'mnemonist';
|
|
2
|
+
import { BigMap } from './big-map.js';
|
|
3
|
+
/**
|
|
4
|
+
* This used to ignore the init size of
|
|
5
|
+
* the array in LRUMap. Doing this will avoid
|
|
6
|
+
* running out of memory at 12 million records.
|
|
7
|
+
* */
|
|
8
|
+
export class FlexibleArray {
|
|
9
|
+
constructor() {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class BigLRUMap extends LRUMap {
|
|
14
|
+
constructor(mapSize, keyArray = FlexibleArray, valueArray = FlexibleArray) {
|
|
15
|
+
super(keyArray, valueArray, mapSize);
|
|
16
|
+
// @ts-expect-error
|
|
17
|
+
this.items = new BigMap();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=big-lru-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"big-lru-map.js","sourceRoot":"","sources":["../../src/big-lru-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;IAII;AACJ,MAAM,OAAO,aAAa;IACtB;QACI,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAED,MAAM,OAAO,SAAa,SAAQ,MAA0B;IACxD,YACI,OAAe,EACf,WAAuC,aAAa,EACpD,aAAyC,aAAa;QAEtD,KAAK,CAAC,QAAe,EAAE,UAAiB,EAAE,OAAO,CAAC,CAAC;QACnD,mBAAmB;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;IAC9B,CAAC;CACJ"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Avoid v8 maximum size for Map by spreading the cache across multiple Maps.
|
|
3
|
+
* This class has the same API as Map but minus more differences in ->set and ->forEach
|
|
4
|
+
*/
|
|
5
|
+
export declare class BigMap<K, V> {
|
|
6
|
+
/**
|
|
7
|
+
* In some cache settings key evictions may not be able to keep up with the addition
|
|
8
|
+
* of new keys, setting the max size at 8.7M keys solves this issue
|
|
9
|
+
*/
|
|
10
|
+
static DEFAULT_MAX_SIZE: number;
|
|
11
|
+
readonly maxMapSize: number;
|
|
12
|
+
private _maps;
|
|
13
|
+
private _current;
|
|
14
|
+
private _simpleMode;
|
|
15
|
+
constructor(entries?: readonly (readonly [K, V])[] | null);
|
|
16
|
+
set(key: K, value: V): Map<K, V>;
|
|
17
|
+
has(key: K): boolean;
|
|
18
|
+
get(key: K): V | undefined;
|
|
19
|
+
delete(key: K): boolean;
|
|
20
|
+
clear(): void;
|
|
21
|
+
get size(): number;
|
|
22
|
+
forEach(callbackFn: (value: V, key: K, map: BigMap<K, V>) => void, thisArg?: unknown): void;
|
|
23
|
+
entries(): IterableIterator<[K, V]>;
|
|
24
|
+
keys(): IterableIterator<K>;
|
|
25
|
+
values(): IterableIterator<V>;
|
|
26
|
+
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=big-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"big-map.d.ts","sourceRoot":"","sources":["../../src/big-map.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,SAAkC;IAEzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,WAAW,CAAU;gBAEjB,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAOzD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAUhC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAOpB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAO1B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAavB,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI,MAAM,CAYjB;IAED,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAY3F,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAOnC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAO3B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAO7B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAMhD"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
const defaultMaxSize = 2 ** 24;
|
|
2
|
+
/**
|
|
3
|
+
* Avoid v8 maximum size for Map by spreading the cache across multiple Maps.
|
|
4
|
+
* This class has the same API as Map but minus more differences in ->set and ->forEach
|
|
5
|
+
*/
|
|
6
|
+
export class BigMap {
|
|
7
|
+
/**
|
|
8
|
+
* In some cache settings key evictions may not be able to keep up with the addition
|
|
9
|
+
* of new keys, setting the max size at 8.7M keys solves this issue
|
|
10
|
+
*/
|
|
11
|
+
static DEFAULT_MAX_SIZE = Math.floor(defaultMaxSize / 2);
|
|
12
|
+
maxMapSize;
|
|
13
|
+
_maps;
|
|
14
|
+
_current;
|
|
15
|
+
_simpleMode;
|
|
16
|
+
constructor(entries) {
|
|
17
|
+
this.maxMapSize = BigMap.DEFAULT_MAX_SIZE;
|
|
18
|
+
this._current = new Map(entries);
|
|
19
|
+
this._simpleMode = true;
|
|
20
|
+
this._maps = [this._current];
|
|
21
|
+
}
|
|
22
|
+
set(key, value) {
|
|
23
|
+
if (this._current.size >= this.maxMapSize) {
|
|
24
|
+
this._current = new Map();
|
|
25
|
+
this._maps.push(this._current);
|
|
26
|
+
this._simpleMode = false;
|
|
27
|
+
}
|
|
28
|
+
return this._current.set(key, value);
|
|
29
|
+
}
|
|
30
|
+
has(key) {
|
|
31
|
+
if (this._simpleMode) {
|
|
32
|
+
return this._current.has(key);
|
|
33
|
+
}
|
|
34
|
+
return _mapForKey(this._maps, key) !== undefined;
|
|
35
|
+
}
|
|
36
|
+
get(key) {
|
|
37
|
+
if (this._simpleMode) {
|
|
38
|
+
return this._current.get(key);
|
|
39
|
+
}
|
|
40
|
+
return _valueForKey(this._maps, key);
|
|
41
|
+
}
|
|
42
|
+
delete(key) {
|
|
43
|
+
if (this._simpleMode) {
|
|
44
|
+
return this._current.delete(key);
|
|
45
|
+
}
|
|
46
|
+
const map = _mapForKey(this._maps, key);
|
|
47
|
+
if (map !== undefined) {
|
|
48
|
+
return map.delete(key);
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
clear() {
|
|
53
|
+
if (this._simpleMode) {
|
|
54
|
+
return this._current.clear();
|
|
55
|
+
}
|
|
56
|
+
for (const map of this._maps) {
|
|
57
|
+
map.clear();
|
|
58
|
+
}
|
|
59
|
+
this._maps = [this._current];
|
|
60
|
+
this._simpleMode = true;
|
|
61
|
+
}
|
|
62
|
+
get size() {
|
|
63
|
+
if (this._simpleMode) {
|
|
64
|
+
return this._current.size;
|
|
65
|
+
}
|
|
66
|
+
let size = 0;
|
|
67
|
+
for (const map of this._maps) {
|
|
68
|
+
size += map.size;
|
|
69
|
+
}
|
|
70
|
+
return size;
|
|
71
|
+
}
|
|
72
|
+
forEach(callbackFn, thisArg) {
|
|
73
|
+
if (thisArg) {
|
|
74
|
+
for (const [key, value] of this.entries()) {
|
|
75
|
+
callbackFn.call(thisArg, value, key, this);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
for (const [key, value] of this.entries()) {
|
|
80
|
+
callbackFn(value, key, this);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
entries() {
|
|
85
|
+
if (this._simpleMode) {
|
|
86
|
+
return this._current.entries();
|
|
87
|
+
}
|
|
88
|
+
return _iterator(this._maps, 'entries');
|
|
89
|
+
}
|
|
90
|
+
keys() {
|
|
91
|
+
if (this._simpleMode) {
|
|
92
|
+
return this._current.keys();
|
|
93
|
+
}
|
|
94
|
+
return _iterator(this._maps, 'keys');
|
|
95
|
+
}
|
|
96
|
+
values() {
|
|
97
|
+
if (this._simpleMode) {
|
|
98
|
+
return this._current.values();
|
|
99
|
+
}
|
|
100
|
+
return _iterator(this._maps, 'values');
|
|
101
|
+
}
|
|
102
|
+
[Symbol.iterator]() {
|
|
103
|
+
if (this._simpleMode) {
|
|
104
|
+
return this._current[Symbol.iterator]();
|
|
105
|
+
}
|
|
106
|
+
return _iterator(this._maps, Symbol.iterator);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function _mapForKey(maps, key) {
|
|
110
|
+
const start = maps.length - 1;
|
|
111
|
+
for (let index = start; index >= 0; index--) {
|
|
112
|
+
const map = maps[index];
|
|
113
|
+
if (map.has(key)) {
|
|
114
|
+
return map;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
function _valueForKey(maps, key) {
|
|
120
|
+
const start = maps.length - 1;
|
|
121
|
+
for (let index = start; index >= 0; index--) {
|
|
122
|
+
const map = maps[index];
|
|
123
|
+
const value = map.get(key);
|
|
124
|
+
if (value !== undefined) {
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
function _iterator(items, name) {
|
|
131
|
+
let index = 0;
|
|
132
|
+
let iterator = items[index][name]();
|
|
133
|
+
return {
|
|
134
|
+
next: () => {
|
|
135
|
+
let result = iterator.next();
|
|
136
|
+
if (result.done && index < items.length - 1) {
|
|
137
|
+
index++;
|
|
138
|
+
iterator = items[index][name]();
|
|
139
|
+
result = iterator.next();
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
},
|
|
143
|
+
[Symbol.iterator]() {
|
|
144
|
+
return this;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=big-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"big-map.js","sourceRoot":"","sources":["../../src/big-map.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,OAAO,MAAM;IACf;;;OAGG;IACH,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAEhD,UAAU,CAAS;IACpB,KAAK,CAAc;IACnB,QAAQ,CAAY;IACpB,WAAW,CAAU;IAE7B,YAAY,OAA6C;QACrD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,GAAM;QACN,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC;IACrD,CAAC;IAED,GAAG,CAAC,GAAM;QACN,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,GAAM;QACT,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAExC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,UAAyD,EAAE,OAAiB;QAChF,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAS,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,CAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,SAAS,CAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAS,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;;AAGL,SAAS,UAAU,CAA4B,IAAS,EAAE,GAAM;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QACf,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAA4B,IAAS,EAAE,GAAM;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,SAAS,CACd,KAAsB,EACtB,IAA4D;IAE5D,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAEpC,OAAO;QACH,IAAI,EAAE,GAAG,EAAE;YACP,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,EAAE,CAAC;gBACR,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,CAAC,MAAM,CAAC,QAAQ,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;KACmB,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Avoid v8 maximum size for Set by spreading the cache across multiple Sets.
|
|
3
|
+
* This class has the same API as Set but minus more differences in ->add and ->forEach
|
|
4
|
+
*/
|
|
5
|
+
export declare class BigSet<T> {
|
|
6
|
+
static DEFAULT_MAX_SIZE: number;
|
|
7
|
+
readonly maxMapSize: number;
|
|
8
|
+
private _sets;
|
|
9
|
+
private _current;
|
|
10
|
+
private _simpleMode;
|
|
11
|
+
constructor(values?: readonly T[] | null);
|
|
12
|
+
add(value: T): Set<T>;
|
|
13
|
+
has(value: T): boolean;
|
|
14
|
+
delete(value: T): boolean;
|
|
15
|
+
clear(): void;
|
|
16
|
+
get size(): number;
|
|
17
|
+
forEach(callbackFn: (value: T, value2: T, map: BigSet<T>) => void, thisArg?: unknown): void;
|
|
18
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=big-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"big-set.d.ts","sourceRoot":"","sources":["../../src/big-set.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC;IACjB,MAAM,CAAC,gBAAgB,SAAkB;IAEzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAU;gBAEjB,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI;IAOxC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAUrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAOtB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAczB,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI,MAAM,CAYjB;IAED,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAY3F,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAM3C"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
const defaultMaxSize = 2 ** 24;
|
|
2
|
+
/**
|
|
3
|
+
* Avoid v8 maximum size for Set by spreading the cache across multiple Sets.
|
|
4
|
+
* This class has the same API as Set but minus more differences in ->add and ->forEach
|
|
5
|
+
*/
|
|
6
|
+
export class BigSet {
|
|
7
|
+
static DEFAULT_MAX_SIZE = defaultMaxSize;
|
|
8
|
+
maxMapSize;
|
|
9
|
+
_sets;
|
|
10
|
+
_current;
|
|
11
|
+
_simpleMode;
|
|
12
|
+
constructor(values) {
|
|
13
|
+
this.maxMapSize = BigSet.DEFAULT_MAX_SIZE;
|
|
14
|
+
this._current = new Set(values);
|
|
15
|
+
this._simpleMode = true;
|
|
16
|
+
this._sets = [this._current];
|
|
17
|
+
}
|
|
18
|
+
add(value) {
|
|
19
|
+
if (this._current.size >= this.maxMapSize) {
|
|
20
|
+
this._current = new Set();
|
|
21
|
+
this._sets.push(this._current);
|
|
22
|
+
this._simpleMode = false;
|
|
23
|
+
}
|
|
24
|
+
return this._current.add(value);
|
|
25
|
+
}
|
|
26
|
+
has(value) {
|
|
27
|
+
if (this._simpleMode) {
|
|
28
|
+
return this._current.has(value);
|
|
29
|
+
}
|
|
30
|
+
return _getSetWithValue(this._sets, value) !== undefined;
|
|
31
|
+
}
|
|
32
|
+
delete(value) {
|
|
33
|
+
if (this._simpleMode) {
|
|
34
|
+
return this._current.delete(value);
|
|
35
|
+
}
|
|
36
|
+
const set = _getSetWithValue(this._sets, value);
|
|
37
|
+
if (set !== undefined) {
|
|
38
|
+
return set.delete(value);
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
clear() {
|
|
43
|
+
if (this._simpleMode) {
|
|
44
|
+
return this._current.clear();
|
|
45
|
+
}
|
|
46
|
+
for (const set of this._sets) {
|
|
47
|
+
set.clear();
|
|
48
|
+
}
|
|
49
|
+
this._sets = [this._current];
|
|
50
|
+
this._simpleMode = true;
|
|
51
|
+
}
|
|
52
|
+
get size() {
|
|
53
|
+
if (this._simpleMode) {
|
|
54
|
+
return this._current.size;
|
|
55
|
+
}
|
|
56
|
+
let size = 0;
|
|
57
|
+
for (const map of this._sets) {
|
|
58
|
+
size += map.size;
|
|
59
|
+
}
|
|
60
|
+
return size;
|
|
61
|
+
}
|
|
62
|
+
forEach(callbackFn, thisArg) {
|
|
63
|
+
if (thisArg) {
|
|
64
|
+
for (const value of this) {
|
|
65
|
+
callbackFn.call(thisArg, value, value, this);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
for (const value of this) {
|
|
70
|
+
callbackFn(value, value, this);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
[Symbol.iterator]() {
|
|
75
|
+
if (this._simpleMode) {
|
|
76
|
+
return this._current[Symbol.iterator]();
|
|
77
|
+
}
|
|
78
|
+
return _iterator(this._sets, Symbol.iterator);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function _getSetWithValue(sets, value) {
|
|
82
|
+
const start = sets.length - 1;
|
|
83
|
+
for (let index = start; index >= 0; index--) {
|
|
84
|
+
const set = sets[index];
|
|
85
|
+
if (set.has(value)) {
|
|
86
|
+
return set;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
function _iterator(items, name) {
|
|
92
|
+
let index = 0;
|
|
93
|
+
let iterator = items[index][name]();
|
|
94
|
+
return {
|
|
95
|
+
next: () => {
|
|
96
|
+
let result = iterator.next();
|
|
97
|
+
if (result.done && index < items.length - 1) {
|
|
98
|
+
index++;
|
|
99
|
+
iterator = items[index][name]();
|
|
100
|
+
result = iterator.next();
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
},
|
|
104
|
+
[Symbol.iterator]() {
|
|
105
|
+
return this;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=big-set.js.map
|