@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 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
- declare type HeapItem = {
3
- position: number;
4
- value: number;
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 _valueToPositionMap;
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
- constructor();
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 indices(): any[];
14
- getValuePosition(value: number): null | number;
15
- getNewPositionForValue(value: number): number;
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
- replaceFurthestValuePosition(lowValue: number, highValue: number, newValue: number, useMinValueFn?: (options: {
19
- safeRange: {
20
- lowValue: number;
21
- highValue: number;
22
- };
23
- bufferSetRange: {
24
- maxValue: number;
25
- minValue: number;
26
- };
27
- currentIndex: number;
28
- }) => boolean): null | number;
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;