@x-oasis/integer-buffer-set 0.1.18 → 0.1.20
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/README.md +23 -1
- package/dist/index.d.ts +59 -21
- package/dist/integer-buffer-set.cjs.development.js +446 -61
- package/dist/integer-buffer-set.cjs.development.js.map +1 -1
- package/dist/integer-buffer-set.cjs.production.min.js +1 -1
- package/dist/integer-buffer-set.cjs.production.min.js.map +1 -1
- package/dist/integer-buffer-set.esm.js +446 -61
- package/dist/integer-buffer-set.esm.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/package.json +6 -2
- package/src/index.ts +673 -114
- package/src/types.ts +36 -0
package/README.md
CHANGED
|
@@ -16,4 +16,26 @@ import IntegerBufferSet from '@x-oasis/integer-buffer-set'
|
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
$ pnpm test
|
|
19
|
-
```
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
## Philosophy
|
|
24
|
+
|
|
25
|
+
Basically, we only compare index value, such as
|
|
26
|
+
|
|
27
|
+
create a `onTheFlyIndices` as a slave buffer. theoretically, at most buffer size's new
|
|
28
|
+
item could occupy a position.
|
|
29
|
+
|
|
30
|
+
`IndexExtractor` is the key point of design.
|
|
31
|
+
if you do not delete/reorder an an array, `indexExtractor` is useless.
|
|
32
|
+
|
|
33
|
+
## bad case
|
|
34
|
+
|
|
35
|
+
when getIndices..
|
|
36
|
+
|
|
37
|
+
`positionToMetaIndices` may used as a supplement. but when has multiple buffer. index refer to meta may changed to other buffer..
|
|
38
|
+
|
|
39
|
+
const data = [0, 1, 2, 3, 4, 5] only reuse `m % 3 === 0`, but when an item is deleted..
|
|
40
|
+
all these index after delete index value will be invalid, because `m % 2 === 0` could not be reused.
|
|
41
|
+
|
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,71 @@
|
|
|
1
1
|
import Heap from '@x-oasis/heap';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
declare class IntegerBufferSet {
|
|
2
|
+
import { HeapItem, SafeRange, IntegerBufferSetProps, MetaToIndexMap, MetaToPositionMap } from './types';
|
|
3
|
+
export declare const defaultBufferSize = 10;
|
|
4
|
+
declare class IntegerBufferSet<Meta = any> {
|
|
7
5
|
private _size;
|
|
8
|
-
private
|
|
6
|
+
private _name;
|
|
7
|
+
private _bufferSize;
|
|
8
|
+
private _indexToMetaMap;
|
|
9
|
+
private _metaToPositionMap;
|
|
10
|
+
private _positionToMetaList;
|
|
11
|
+
private _metaToIndexMap;
|
|
9
12
|
private _smallValues;
|
|
10
13
|
private _largeValues;
|
|
11
|
-
|
|
14
|
+
private _metaExtractor;
|
|
15
|
+
private _indexExtractor;
|
|
16
|
+
private _onTheFlyIndices;
|
|
17
|
+
private _isOnTheFlyFull;
|
|
18
|
+
private _isOnTheFlyFullReturnHook;
|
|
19
|
+
private _loopMS;
|
|
20
|
+
private _lastUpdatedMS;
|
|
21
|
+
constructor(props?: IntegerBufferSetProps<Meta>);
|
|
12
22
|
getSize(): number;
|
|
13
|
-
get
|
|
14
|
-
|
|
15
|
-
|
|
23
|
+
get bufferSize(): number;
|
|
24
|
+
setIsOnTheFlyFull(val: any): void;
|
|
25
|
+
get isBufferFull(): boolean;
|
|
26
|
+
getOnTheFlyUncriticalPosition(safeRange: SafeRange): number;
|
|
27
|
+
initialize(): {
|
|
28
|
+
smallValues: Heap<any>;
|
|
29
|
+
largeValues: Heap<any>;
|
|
30
|
+
valueToPositionObject: {};
|
|
31
|
+
};
|
|
32
|
+
getIndexMeta(index: number): Meta;
|
|
33
|
+
getMetaIndex(meta: Meta): number;
|
|
34
|
+
setMetaIndex(meta: Meta, index: number): false | MetaToIndexMap<Meta>;
|
|
35
|
+
deleteMetaIndex(meta: Meta): boolean;
|
|
36
|
+
replaceMetaToIndexMap(newMetaToIndexMap: MetaToIndexMap<Meta>): false | MetaToIndexMap<Meta>;
|
|
37
|
+
getIndexPosition(index: number): undefined | number;
|
|
38
|
+
getNewPositionForIndex(index: number): number;
|
|
16
39
|
getMinValue(): number;
|
|
17
40
|
getMaxValue(): number;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
setValuePosition(value: number, position: number): void;
|
|
42
|
+
findPositionMeta(position: number): Meta;
|
|
43
|
+
rebuildHeapsWithMeta(metaToPositionMap: MetaToPositionMap<Meta>): void;
|
|
44
|
+
setPositionIndex(position: number, index: number): boolean;
|
|
45
|
+
getMetaPosition(meta: Meta): number;
|
|
46
|
+
replacePositionInFliedIndices(newIndex: number, safeRange: SafeRange): number;
|
|
47
|
+
getFliedPosition(newIndex: number, safeRange: SafeRange): any;
|
|
48
|
+
getPosition(newIndex: number, safeRange?: SafeRange): any;
|
|
49
|
+
replaceFurthestIndexPosition(newIndex: number, safeRange?: {
|
|
50
|
+
startIndex: number;
|
|
51
|
+
endIndex: number;
|
|
52
|
+
}): any;
|
|
53
|
+
_replaceFurthestIndexPosition(newIndex: number, safeRange?: {
|
|
54
|
+
startIndex: number;
|
|
55
|
+
endIndex: number;
|
|
56
|
+
}): any;
|
|
57
|
+
shuffle(): any[];
|
|
58
|
+
getIndices(): any[];
|
|
29
59
|
_pushToHeaps(position: number, value: number): void;
|
|
60
|
+
_setMetaPosition(meta: Meta, position: number): void;
|
|
61
|
+
_setMetaIndex(meta: Meta, index: number): boolean;
|
|
62
|
+
readyToStartNextLoop(): void;
|
|
63
|
+
prepare(): void;
|
|
30
64
|
_cleanHeaps(): void;
|
|
65
|
+
rebuildHeapsWithValues(arr: Array<{
|
|
66
|
+
position: number;
|
|
67
|
+
value: number;
|
|
68
|
+
}>): void;
|
|
31
69
|
_recreateHeaps(): void;
|
|
32
70
|
_cleanHeap(heap: Heap<HeapItem>): void;
|
|
33
71
|
_smallerComparator(lhs: HeapItem, rhs: HeapItem): boolean;
|