@zengrid/core 1.0.1 → 1.0.4
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/index.cjs.js +43 -55
- package/dist/index.esm.js +2 -14
- package/dist/package.json +5 -5
- package/dist/src/a11y/aria-manager.d.ts.map +1 -1
- package/dist/src/a11y/focus-manager.d.ts.map +1 -1
- package/dist/src/a11y/index.d.ts.map +1 -1
- package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -1
- package/dist/src/data/data-accessor/column-store-accessor.d.ts.map +1 -1
- package/dist/src/data/data-accessor/data-accessor.interface.d.ts.map +1 -1
- package/dist/src/data/data-accessor/index.d.ts.map +1 -1
- package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts.map +1 -1
- package/dist/src/data/data-manager.d.ts.map +1 -1
- package/dist/src/data/data-source.interface.d.ts.map +1 -1
- package/dist/src/data/grid-data-model.d.ts +2 -2
- package/dist/src/data/grid-data-model.d.ts.map +1 -1
- package/dist/src/data/index-map/index-map.d.ts.map +1 -1
- package/dist/src/data/index-map/index-map.interface.d.ts.map +1 -1
- package/dist/src/data/index-map/index.d.ts.map +1 -1
- package/dist/src/data/index.d.ts.map +1 -1
- package/dist/src/editing/cell-editor.interface.d.ts.map +1 -1
- package/dist/src/editing/date-editor.d.ts.map +1 -1
- package/dist/src/editing/editor-manager.d.ts.map +1 -1
- package/dist/src/editing/index.d.ts.map +1 -1
- package/dist/src/editing/number-editor.d.ts.map +1 -1
- package/dist/src/editing/select-editor.d.ts.map +1 -1
- package/dist/src/editing/text-editor.d.ts.map +1 -1
- package/dist/src/events/event-emitter.d.ts.map +1 -1
- package/dist/src/events/grid-events.d.ts.map +1 -1
- package/dist/src/events/index.d.ts.map +1 -1
- package/dist/src/features/autofill/autofill-manager.d.ts +1 -1
- package/dist/src/features/autofill/autofill-manager.d.ts.map +1 -1
- package/dist/src/features/autofill/index.d.ts.map +1 -1
- package/dist/src/features/column-resize/auto-fit-calculator.d.ts.map +1 -1
- package/dist/src/features/column-resize/column-resize-manager.d.ts.map +1 -1
- package/dist/src/features/column-resize/column-resize-manager.interface.d.ts.map +1 -1
- package/dist/src/features/column-resize/index.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-constraint-manager.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-handle-renderer.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-preview.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-state-manager.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-strategies.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-test-helper.d.ts.map +1 -1
- package/dist/src/features/column-resize/resize-zone-detector.d.ts.map +1 -1
- package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -1
- package/dist/src/features/copy-paste/index.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/adapter.interface.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/graphql-adapter.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/index.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/rest-adapter.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/sql-adapter.d.ts.map +1 -1
- package/dist/src/features/filtering/adapters/types.d.ts.map +1 -1
- package/dist/src/features/filtering/column-filter.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-autocomplete.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-cache.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-compiler.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-index-manager.d.ts +1 -1
- package/dist/src/features/filtering/filter-index-manager.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-manager.d.ts +1 -1
- package/dist/src/features/filtering/filter-manager.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-optimizer.d.ts.map +1 -1
- package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -1
- package/dist/src/features/filtering/index.d.ts.map +1 -1
- package/dist/src/features/filtering/range-filter-optimizer.d.ts.map +1 -1
- package/dist/src/features/filtering/substring-filter.d.ts.map +1 -1
- package/dist/src/features/filtering/types.d.ts.map +1 -1
- package/dist/src/features/formulas/formula-calculator.d.ts.map +1 -1
- package/dist/src/features/formulas/index.d.ts.map +1 -1
- package/dist/src/features/hit-testing/index.d.ts.map +1 -1
- package/dist/src/features/hit-testing/spatial-hit-tester.d.ts +1 -1
- package/dist/src/features/hit-testing/spatial-hit-tester.d.ts.map +1 -1
- package/dist/src/features/loading/index.d.ts.map +1 -1
- package/dist/src/features/loading/loading-indicator.d.ts.map +1 -1
- package/dist/src/features/pagination/index.d.ts.map +1 -1
- package/dist/src/features/pagination/paginator.d.ts.map +1 -1
- package/dist/src/features/selection/index.d.ts.map +1 -1
- package/dist/src/features/selection/selection-manager.d.ts.map +1 -1
- package/dist/src/features/sorting/index.d.ts.map +1 -1
- package/dist/src/features/sorting/row-sorter.interface.d.ts.map +1 -1
- package/dist/src/features/sorting/single-column-sorter.d.ts.map +1 -1
- package/dist/src/features/sorting/sort-manager.d.ts.map +1 -1
- package/dist/src/features/undo-redo/index.d.ts.map +1 -1
- package/dist/src/features/undo-redo/undo-redo-manager.d.ts.map +1 -1
- package/dist/src/grid.d.ts.map +1 -1
- package/dist/src/i18n/index.d.ts.map +1 -1
- package/dist/src/i18n/locale-manager.d.ts.map +1 -1
- package/dist/src/i18n/rtl-support.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/keyboard/index.d.ts.map +1 -1
- package/dist/src/keyboard/keyboard-navigator.d.ts.map +1 -1
- package/dist/src/rendering/cache/index.d.ts.map +1 -1
- package/dist/src/rendering/cache/renderer-cache.d.ts.map +1 -1
- package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -1
- package/dist/src/rendering/cell-pool/cell-pool.d.ts.map +1 -1
- package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts.map +1 -1
- package/dist/src/rendering/cell-pool/index.d.ts.map +1 -1
- package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -1
- package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts.map +1 -1
- package/dist/src/rendering/cell-positioner/index.d.ts.map +1 -1
- package/dist/src/rendering/height-provider/height-provider.interface.d.ts.map +1 -1
- package/dist/src/rendering/height-provider/index.d.ts.map +1 -1
- package/dist/src/rendering/height-provider/uniform-height-provider.d.ts.map +1 -1
- package/dist/src/rendering/height-provider/variable-height-provider.d.ts.map +1 -1
- package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/image-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/index.d.ts.map +1 -1
- package/dist/src/rendering/renderers/number-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/renderer-registry.d.ts.map +1 -1
- package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -1
- package/dist/src/rendering/renderers/text-renderer.d.ts.map +1 -1
- package/dist/src/rendering/spatial-hit-tester.d.ts +1 -1
- package/dist/src/rendering/spatial-hit-tester.d.ts.map +1 -1
- package/dist/src/rendering/virtual-scroller/index.d.ts.map +1 -1
- package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -1
- package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts.map +1 -1
- package/dist/src/rendering/width-provider/index.d.ts.map +1 -1
- package/dist/src/rendering/width-provider/uniform-width-provider.d.ts.map +1 -1
- package/dist/src/rendering/width-provider/variable-width-provider.d.ts.map +1 -1
- package/dist/src/rendering/width-provider/width-provider.interface.d.ts.map +1 -1
- package/dist/src/selection/hit-tester.d.ts.map +1 -1
- package/dist/src/selection/hit-tester.interface.d.ts.map +1 -1
- package/dist/src/selection/index.d.ts.map +1 -1
- package/dist/src/selection/range-utils.d.ts.map +1 -1
- package/dist/src/selection/range-utils.interface.d.ts.map +1 -1
- package/dist/src/shared/algorithms/filter/bloom-filter.d.ts +120 -0
- package/dist/src/shared/algorithms/filter/bloom-filter.d.ts.map +1 -0
- package/dist/src/shared/algorithms/filter/index.d.ts +7 -0
- package/dist/src/shared/algorithms/filter/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/graph/bfs.d.ts +71 -0
- package/dist/src/shared/algorithms/graph/bfs.d.ts.map +1 -0
- package/dist/src/shared/algorithms/graph/dfs.d.ts +62 -0
- package/dist/src/shared/algorithms/graph/dfs.d.ts.map +1 -0
- package/dist/src/shared/algorithms/graph/graph.interface.d.ts +63 -0
- package/dist/src/shared/algorithms/graph/graph.interface.d.ts.map +1 -0
- package/dist/src/shared/algorithms/graph/index.d.ts +9 -0
- package/dist/src/shared/algorithms/graph/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/index.d.ts +11 -0
- package/dist/src/shared/algorithms/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/pattern/index.d.ts +8 -0
- package/dist/src/shared/algorithms/pattern/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/pattern/sequence-detector.d.ts +62 -0
- package/dist/src/shared/algorithms/pattern/sequence-detector.d.ts.map +1 -0
- package/dist/src/shared/algorithms/search/binary-search.d.ts +86 -0
- package/dist/src/shared/algorithms/search/binary-search.d.ts.map +1 -0
- package/dist/src/shared/algorithms/search/index.d.ts +6 -0
- package/dist/src/shared/algorithms/search/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/sorting/comparators.d.ts +126 -0
- package/dist/src/shared/algorithms/sorting/comparators.d.ts.map +1 -0
- package/dist/src/shared/algorithms/sorting/index.d.ts +9 -0
- package/dist/src/shared/algorithms/sorting/index.d.ts.map +1 -0
- package/dist/src/shared/algorithms/sorting/sorting.interface.d.ts +38 -0
- package/dist/src/shared/algorithms/sorting/sorting.interface.d.ts.map +1 -0
- package/dist/src/shared/algorithms/sorting/timsort.d.ts +55 -0
- package/dist/src/shared/algorithms/sorting/timsort.d.ts.map +1 -0
- package/dist/src/shared/data-structures/column-store/column-store.d.ts +52 -0
- package/dist/src/shared/data-structures/column-store/column-store.d.ts.map +1 -0
- package/dist/src/shared/data-structures/column-store/column-store.interface.d.ts +155 -0
- package/dist/src/shared/data-structures/column-store/column-store.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/column-store/index.d.ts +6 -0
- package/dist/src/shared/data-structures/column-store/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/command-stack/command-stack.d.ts +61 -0
- package/dist/src/shared/data-structures/command-stack/command-stack.d.ts.map +1 -0
- package/dist/src/shared/data-structures/command-stack/command-stack.interface.d.ts +80 -0
- package/dist/src/shared/data-structures/command-stack/command-stack.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/command-stack/index.d.ts +3 -0
- package/dist/src/shared/data-structures/command-stack/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/dependency-graph/dependency-graph.d.ts +147 -0
- package/dist/src/shared/data-structures/dependency-graph/dependency-graph.d.ts.map +1 -0
- package/dist/src/shared/data-structures/dependency-graph/dependency-graph.interface.d.ts +161 -0
- package/dist/src/shared/data-structures/dependency-graph/dependency-graph.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/dependency-graph/index.d.ts +8 -0
- package/dist/src/shared/data-structures/dependency-graph/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/disjoint-set/disjoint-set.d.ts +84 -0
- package/dist/src/shared/data-structures/disjoint-set/disjoint-set.d.ts.map +1 -0
- package/dist/src/shared/data-structures/disjoint-set/disjoint-set.interface.d.ts +185 -0
- package/dist/src/shared/data-structures/disjoint-set/disjoint-set.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/disjoint-set/index.d.ts +7 -0
- package/dist/src/shared/data-structures/disjoint-set/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/index-map/index-map.d.ts +150 -0
- package/dist/src/shared/data-structures/index-map/index-map.d.ts.map +1 -0
- package/dist/src/shared/data-structures/index-map/index-map.interface.d.ts +186 -0
- package/dist/src/shared/data-structures/index-map/index-map.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/index-map/index.d.ts +6 -0
- package/dist/src/shared/data-structures/index-map/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/index.d.ts +36 -0
- package/dist/src/shared/data-structures/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/interval-tree/index.d.ts +7 -0
- package/dist/src/shared/data-structures/interval-tree/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/interval-tree/interval-tree.d.ts +141 -0
- package/dist/src/shared/data-structures/interval-tree/interval-tree.d.ts.map +1 -0
- package/dist/src/shared/data-structures/interval-tree/interval-tree.interface.d.ts +212 -0
- package/dist/src/shared/data-structures/interval-tree/interval-tree.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/lru-cache/index.d.ts +3 -0
- package/dist/src/shared/data-structures/lru-cache/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/lru-cache/lru-cache.d.ts +134 -0
- package/dist/src/shared/data-structures/lru-cache/lru-cache.d.ts.map +1 -0
- package/dist/src/shared/data-structures/lru-cache/lru-cache.interface.d.ts +173 -0
- package/dist/src/shared/data-structures/lru-cache/lru-cache.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/prefix-sum-array/index.d.ts +6 -0
- package/dist/src/shared/data-structures/prefix-sum-array/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.d.ts +63 -0
- package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.d.ts.map +1 -0
- package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts +80 -0
- package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/rtree/index.d.ts +8 -0
- package/dist/src/shared/data-structures/rtree/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/rtree/rtree.d.ts +81 -0
- package/dist/src/shared/data-structures/rtree/rtree.d.ts.map +1 -0
- package/dist/src/shared/data-structures/rtree/rtree.interface.d.ts +143 -0
- package/dist/src/shared/data-structures/rtree/rtree.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/segment-tree/index.d.ts +4 -0
- package/dist/src/shared/data-structures/segment-tree/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/segment-tree/segment-tree.d.ts +134 -0
- package/dist/src/shared/data-structures/segment-tree/segment-tree.d.ts.map +1 -0
- package/dist/src/shared/data-structures/segment-tree/segment-tree.interface.d.ts +202 -0
- package/dist/src/shared/data-structures/segment-tree/segment-tree.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/skip-list/index.d.ts +4 -0
- package/dist/src/shared/data-structures/skip-list/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/skip-list/skip-list.d.ts +137 -0
- package/dist/src/shared/data-structures/skip-list/skip-list.d.ts.map +1 -0
- package/dist/src/shared/data-structures/skip-list/skip-list.interface.d.ts +223 -0
- package/dist/src/shared/data-structures/skip-list/skip-list.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/sparse-matrix/index.d.ts +6 -0
- package/dist/src/shared/data-structures/sparse-matrix/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.d.ts +44 -0
- package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.d.ts.map +1 -0
- package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.interface.d.ts +105 -0
- package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/suffix-array/index.d.ts +3 -0
- package/dist/src/shared/data-structures/suffix-array/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/suffix-array/suffix-array.d.ts +102 -0
- package/dist/src/shared/data-structures/suffix-array/suffix-array.d.ts.map +1 -0
- package/dist/src/shared/data-structures/suffix-array/suffix-array.interface.d.ts +117 -0
- package/dist/src/shared/data-structures/suffix-array/suffix-array.interface.d.ts.map +1 -0
- package/dist/src/shared/data-structures/trie/index.d.ts +8 -0
- package/dist/src/shared/data-structures/trie/index.d.ts.map +1 -0
- package/dist/src/shared/data-structures/trie/trie.d.ts +205 -0
- package/dist/src/shared/data-structures/trie/trie.d.ts.map +1 -0
- package/dist/src/shared/data-structures/trie/trie.interface.d.ts +117 -0
- package/dist/src/shared/data-structures/trie/trie.interface.d.ts.map +1 -0
- package/dist/src/shared/index.d.ts +47 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/patterns/coordinator.d.ts +90 -0
- package/dist/src/shared/patterns/coordinator.d.ts.map +1 -0
- package/dist/src/shared/patterns/event-emitter.d.ts +106 -0
- package/dist/src/shared/patterns/event-emitter.d.ts.map +1 -0
- package/dist/src/shared/patterns/factory.d.ts +120 -0
- package/dist/src/shared/patterns/factory.d.ts.map +1 -0
- package/dist/src/shared/patterns/index.d.ts +21 -0
- package/dist/src/shared/patterns/index.d.ts.map +1 -0
- package/dist/src/shared/patterns/mediator.d.ts +116 -0
- package/dist/src/shared/patterns/mediator.d.ts.map +1 -0
- package/dist/src/shared/patterns/object-pool.d.ts +178 -0
- package/dist/src/shared/patterns/object-pool.d.ts.map +1 -0
- package/dist/src/shared/patterns/observer.d.ts +89 -0
- package/dist/src/shared/patterns/observer.d.ts.map +1 -0
- package/dist/src/shared/patterns/operation-mode.d.ts +75 -0
- package/dist/src/shared/patterns/operation-mode.d.ts.map +1 -0
- package/dist/src/shared/patterns/state-machine.d.ts +122 -0
- package/dist/src/shared/patterns/state-machine.d.ts.map +1 -0
- package/dist/src/shared/types/common.d.ts +56 -0
- package/dist/src/shared/types/common.d.ts.map +1 -0
- package/dist/src/shared/types/index.d.ts +5 -0
- package/dist/src/shared/types/index.d.ts.map +1 -0
- package/dist/src/shared/utils/index.d.ts +7 -0
- package/dist/src/shared/utils/index.d.ts.map +1 -0
- package/dist/src/shared/utils/timing.d.ts +104 -0
- package/dist/src/shared/utils/timing.d.ts.map +1 -0
- package/dist/src/shared/utils/timing.interface.d.ts +96 -0
- package/dist/src/shared/utils/timing.interface.d.ts.map +1 -0
- package/dist/src/touch/index.d.ts.map +1 -1
- package/dist/src/touch/touch-handler.d.ts.map +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +47 -47
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Segment Tree implementation
|
|
3
|
+
* Efficient range query and update data structure
|
|
4
|
+
*/
|
|
5
|
+
import type { ISegmentTree, SegmentTreeOptions, AggregateFunction } from './segment-tree.interface';
|
|
6
|
+
import { AggregationType } from './segment-tree.interface';
|
|
7
|
+
/**
|
|
8
|
+
* Segment Tree - Efficient range queries and updates
|
|
9
|
+
*
|
|
10
|
+
* Implementation:
|
|
11
|
+
* - Array-based complete binary tree
|
|
12
|
+
* - Each node stores the aggregate of its range
|
|
13
|
+
* - Supports lazy propagation for efficient range updates
|
|
14
|
+
* - Generic type T for flexibility (numbers, objects, etc.)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Sum queries
|
|
19
|
+
* const tree = new SegmentTree({ values: [1, 3, 5, 7, 9, 11], type: 'sum' });
|
|
20
|
+
* tree.query(1, 3); // Returns 15 (3 + 5 + 7)
|
|
21
|
+
* tree.update(1, 10); // Change 3 to 10
|
|
22
|
+
* tree.query(1, 3); // Returns 22 (10 + 5 + 7)
|
|
23
|
+
*
|
|
24
|
+
* // Min queries
|
|
25
|
+
* const minTree = new SegmentTree({ values: [5, 2, 8, 1, 9], type: 'min' });
|
|
26
|
+
* minTree.query(0, 4); // Returns 1
|
|
27
|
+
* minTree.update(3, 10);
|
|
28
|
+
* minTree.query(0, 4); // Returns 2
|
|
29
|
+
*
|
|
30
|
+
* // Status bar aggregation example
|
|
31
|
+
* const cellValues = [100, 200, 150, 300, 250];
|
|
32
|
+
* const sumTree = new SegmentTree({ values: cellValues, type: 'sum' });
|
|
33
|
+
* sumTree.query(1, 3); // Sum of cells 1-3: 650
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare class SegmentTree<T> implements ISegmentTree<T> {
|
|
37
|
+
private tree;
|
|
38
|
+
private lazy;
|
|
39
|
+
private arr;
|
|
40
|
+
private n;
|
|
41
|
+
private aggregate;
|
|
42
|
+
private identityValue;
|
|
43
|
+
private useLazy;
|
|
44
|
+
private _type;
|
|
45
|
+
constructor(options: SegmentTreeOptions<T>);
|
|
46
|
+
/**
|
|
47
|
+
* Get aggregation configuration
|
|
48
|
+
*/
|
|
49
|
+
private getAggregationConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Build the segment tree recursively
|
|
52
|
+
*/
|
|
53
|
+
private buildTree;
|
|
54
|
+
/**
|
|
55
|
+
* Push lazy updates down to children
|
|
56
|
+
*/
|
|
57
|
+
private pushDown;
|
|
58
|
+
/**
|
|
59
|
+
* Apply update to a node value
|
|
60
|
+
* For SUM: multiply update by range size
|
|
61
|
+
* For MIN/MAX: just use the update value
|
|
62
|
+
*/
|
|
63
|
+
private applyUpdate;
|
|
64
|
+
/**
|
|
65
|
+
* Query range [left, right]
|
|
66
|
+
*/
|
|
67
|
+
query(left: number, right: number): T;
|
|
68
|
+
/**
|
|
69
|
+
* Recursive query helper
|
|
70
|
+
*/
|
|
71
|
+
private queryTree;
|
|
72
|
+
/**
|
|
73
|
+
* Update a single element
|
|
74
|
+
*/
|
|
75
|
+
update(index: number, value: T): void;
|
|
76
|
+
/**
|
|
77
|
+
* Recursive update helper
|
|
78
|
+
*/
|
|
79
|
+
private updateTree;
|
|
80
|
+
/**
|
|
81
|
+
* Update a range [left, right]
|
|
82
|
+
*/
|
|
83
|
+
rangeUpdate(left: number, right: number, value: T): void;
|
|
84
|
+
/**
|
|
85
|
+
* Lazy range update helper
|
|
86
|
+
*/
|
|
87
|
+
private rangeUpdateLazy;
|
|
88
|
+
/**
|
|
89
|
+
* Get value at index
|
|
90
|
+
*/
|
|
91
|
+
get(index: number): T;
|
|
92
|
+
/**
|
|
93
|
+
* Build tree from new array
|
|
94
|
+
*/
|
|
95
|
+
build(arr: T[]): void;
|
|
96
|
+
/**
|
|
97
|
+
* Convert tree to array
|
|
98
|
+
*/
|
|
99
|
+
toArray(): T[];
|
|
100
|
+
/**
|
|
101
|
+
* Find first index where predicate is true
|
|
102
|
+
*/
|
|
103
|
+
findFirst(left: number, predicate: (value: T) => boolean): number;
|
|
104
|
+
/**
|
|
105
|
+
* Get size of array
|
|
106
|
+
*/
|
|
107
|
+
get size(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Get total aggregated value
|
|
110
|
+
*/
|
|
111
|
+
get total(): T;
|
|
112
|
+
/**
|
|
113
|
+
* Get aggregation type
|
|
114
|
+
*/
|
|
115
|
+
get aggregationType(): AggregationType;
|
|
116
|
+
/**
|
|
117
|
+
* Create SegmentTree from array
|
|
118
|
+
*/
|
|
119
|
+
static from<T>(values: T[], type?: AggregationType): SegmentTree<T>;
|
|
120
|
+
/**
|
|
121
|
+
* Create custom SegmentTree
|
|
122
|
+
*/
|
|
123
|
+
static custom<T>(values: T[], aggregate: AggregateFunction<T>, identity: T): SegmentTree<T>;
|
|
124
|
+
/**
|
|
125
|
+
* Debug: Print tree structure
|
|
126
|
+
*/
|
|
127
|
+
toString(): string;
|
|
128
|
+
/**
|
|
129
|
+
* Debug: Validate tree structure
|
|
130
|
+
*/
|
|
131
|
+
validate(): boolean;
|
|
132
|
+
private validateNode;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=segment-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-tree.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/segment-tree/segment-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkC,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAkB;gBAEnB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAgC1C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAcrC;;OAEG;IACH,OAAO,CAAC,SAAS;IAiCjB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IASrC;;OAEG;IACH,OAAO,CAAC,UAAU;IA+BlB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAkBxD;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC;IAQrB;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI;IAarB;;OAEG;IACH,OAAO,IAAI,CAAC,EAAE;IAQd;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM;IAUjE;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,CAKb;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE,eAAqC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxF;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,MAAM,EAAE,CAAC,EAAE,EACX,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,GACV,WAAW,CAAC,CAAC,CAAC;IASjB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB,OAAO,CAAC,YAAY;CA2BrB"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Segment Tree interfaces for ZenGrid
|
|
3
|
+
* Efficiently handles range queries and updates for aggregation operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Aggregation function type
|
|
7
|
+
* Combines two values into one
|
|
8
|
+
*/
|
|
9
|
+
export type AggregateFunction<T> = (a: T, b: T) => T;
|
|
10
|
+
/**
|
|
11
|
+
* Common aggregation operations
|
|
12
|
+
*/
|
|
13
|
+
export declare enum AggregationType {
|
|
14
|
+
SUM = "sum",
|
|
15
|
+
MIN = "min",
|
|
16
|
+
MAX = "max",
|
|
17
|
+
GCD = "gcd",
|
|
18
|
+
LCM = "lcm",
|
|
19
|
+
PRODUCT = "product",
|
|
20
|
+
CUSTOM = "custom"
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Segment Tree interface
|
|
24
|
+
*
|
|
25
|
+
* A tree data structure for storing intervals or segments, allowing for efficient
|
|
26
|
+
* querying and updating of array elements over ranges.
|
|
27
|
+
*
|
|
28
|
+
* Use cases:
|
|
29
|
+
* - Status bar aggregations (sum, min, max of selected cells)
|
|
30
|
+
* - Range statistics (average, count, sum over a range)
|
|
31
|
+
* - Dynamic cumulative calculations
|
|
32
|
+
* - Range minimum/maximum queries
|
|
33
|
+
* - Frequent range updates with queries
|
|
34
|
+
*
|
|
35
|
+
* Performance:
|
|
36
|
+
* - Build: O(n)
|
|
37
|
+
* - Query: O(log n)
|
|
38
|
+
* - Update (point): O(log n)
|
|
39
|
+
* - Update (range): O(log n) with lazy propagation
|
|
40
|
+
* - Space: O(4n) = O(n)
|
|
41
|
+
*/
|
|
42
|
+
export interface ISegmentTree<T> {
|
|
43
|
+
/**
|
|
44
|
+
* Query the aggregated value over a range [left, right]
|
|
45
|
+
* @param left - Start index (inclusive)
|
|
46
|
+
* @param right - End index (inclusive)
|
|
47
|
+
* @returns Aggregated value over the range
|
|
48
|
+
* @complexity O(log n)
|
|
49
|
+
*/
|
|
50
|
+
query(left: number, right: number): T;
|
|
51
|
+
/**
|
|
52
|
+
* Update a single element at index
|
|
53
|
+
* @param index - Index to update
|
|
54
|
+
* @param value - New value
|
|
55
|
+
* @complexity O(log n)
|
|
56
|
+
*/
|
|
57
|
+
update(index: number, value: T): void;
|
|
58
|
+
/**
|
|
59
|
+
* Update a range of elements [left, right]
|
|
60
|
+
* @param left - Start index (inclusive)
|
|
61
|
+
* @param right - End index (inclusive)
|
|
62
|
+
* @param value - Value to apply to the range
|
|
63
|
+
* @complexity O(log n) with lazy propagation
|
|
64
|
+
*/
|
|
65
|
+
rangeUpdate(left: number, right: number, value: T): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get the value at a specific index
|
|
68
|
+
* @param index - Index to query
|
|
69
|
+
* @returns Value at index
|
|
70
|
+
* @complexity O(log n) or O(1) depending on implementation
|
|
71
|
+
*/
|
|
72
|
+
get(index: number): T;
|
|
73
|
+
/**
|
|
74
|
+
* Build or rebuild the tree from new array
|
|
75
|
+
* @param arr - New array of values
|
|
76
|
+
* @complexity O(n)
|
|
77
|
+
*/
|
|
78
|
+
build(arr: T[]): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get the entire array
|
|
81
|
+
* @returns Current array values
|
|
82
|
+
* @complexity O(n)
|
|
83
|
+
*/
|
|
84
|
+
toArray(): T[];
|
|
85
|
+
/**
|
|
86
|
+
* Find the first index where the aggregate from start meets a condition
|
|
87
|
+
* Useful for binary search on aggregates
|
|
88
|
+
* @param left - Start index
|
|
89
|
+
* @param predicate - Condition to test
|
|
90
|
+
* @returns Index or -1 if not found
|
|
91
|
+
* @complexity O(log^2 n)
|
|
92
|
+
*/
|
|
93
|
+
findFirst(left: number, predicate: (value: T) => boolean): number;
|
|
94
|
+
/**
|
|
95
|
+
* Get the size of the underlying array
|
|
96
|
+
*/
|
|
97
|
+
readonly size: number;
|
|
98
|
+
/**
|
|
99
|
+
* Get the total aggregated value (entire array)
|
|
100
|
+
*/
|
|
101
|
+
readonly total: T;
|
|
102
|
+
/**
|
|
103
|
+
* Get the aggregation type
|
|
104
|
+
*/
|
|
105
|
+
readonly aggregationType: AggregationType;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Options for creating a Segment Tree
|
|
109
|
+
*/
|
|
110
|
+
export interface SegmentTreeOptions<T> {
|
|
111
|
+
/**
|
|
112
|
+
* Initial array of values
|
|
113
|
+
*/
|
|
114
|
+
values?: T[];
|
|
115
|
+
/**
|
|
116
|
+
* Aggregation type (for common operations)
|
|
117
|
+
* If CUSTOM is specified, must provide customAggregate function
|
|
118
|
+
*/
|
|
119
|
+
type?: AggregationType;
|
|
120
|
+
/**
|
|
121
|
+
* Custom aggregation function
|
|
122
|
+
* Required if type is CUSTOM
|
|
123
|
+
*/
|
|
124
|
+
customAggregate?: AggregateFunction<T>;
|
|
125
|
+
/**
|
|
126
|
+
* Identity value for the aggregation
|
|
127
|
+
* - For SUM: 0
|
|
128
|
+
* - For MIN: Infinity
|
|
129
|
+
* - For MAX: -Infinity
|
|
130
|
+
* - For PRODUCT: 1
|
|
131
|
+
* Must be provided for CUSTOM type
|
|
132
|
+
*/
|
|
133
|
+
identity?: T;
|
|
134
|
+
/**
|
|
135
|
+
* Whether to use lazy propagation for range updates
|
|
136
|
+
* @default true
|
|
137
|
+
*/
|
|
138
|
+
lazy?: boolean;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Predefined aggregation functions and identities
|
|
142
|
+
*/
|
|
143
|
+
export declare const Aggregations: {
|
|
144
|
+
sum: {
|
|
145
|
+
fn: (a: number, b: number) => number;
|
|
146
|
+
identity: number;
|
|
147
|
+
};
|
|
148
|
+
min: {
|
|
149
|
+
fn: (a: number, b: number) => number;
|
|
150
|
+
identity: number;
|
|
151
|
+
};
|
|
152
|
+
max: {
|
|
153
|
+
fn: (a: number, b: number) => number;
|
|
154
|
+
identity: number;
|
|
155
|
+
};
|
|
156
|
+
gcd: {
|
|
157
|
+
fn: (a: number, b: number) => number;
|
|
158
|
+
identity: number;
|
|
159
|
+
};
|
|
160
|
+
lcm: {
|
|
161
|
+
fn: (a: number, b: number) => number;
|
|
162
|
+
identity: number;
|
|
163
|
+
};
|
|
164
|
+
product: {
|
|
165
|
+
fn: (a: number, b: number) => number;
|
|
166
|
+
identity: number;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Helper functions for segment tree operations
|
|
171
|
+
*/
|
|
172
|
+
export declare const SegmentTreeUtils: {
|
|
173
|
+
/**
|
|
174
|
+
* Calculate the tree size needed for array of size n
|
|
175
|
+
*/
|
|
176
|
+
getTreeSize(n: number): number;
|
|
177
|
+
/**
|
|
178
|
+
* Check if index is valid
|
|
179
|
+
*/
|
|
180
|
+
isValidIndex(index: number, size: number): boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Check if range is valid
|
|
183
|
+
*/
|
|
184
|
+
isValidRange(left: number, right: number, size: number): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Get parent index in tree
|
|
187
|
+
*/
|
|
188
|
+
parent(index: number): number;
|
|
189
|
+
/**
|
|
190
|
+
* Get left child index in tree
|
|
191
|
+
*/
|
|
192
|
+
leftChild(index: number): number;
|
|
193
|
+
/**
|
|
194
|
+
* Get right child index in tree
|
|
195
|
+
*/
|
|
196
|
+
rightChild(index: number): number;
|
|
197
|
+
/**
|
|
198
|
+
* Get the middle point of a range
|
|
199
|
+
*/
|
|
200
|
+
mid(left: number, right: number): number;
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=segment-tree.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-tree.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/segment-tree/segment-tree.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAErD;;GAEG;AACH,oBAAY,eAAe;IACzB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEzD;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IAEtB;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAEtB;;;;OAIG;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;IAEf;;;;;;;OAOG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAAC;IAElE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB;;;OAGG;IACH,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;gBAEb,MAAM,KAAK,MAAM;;;;gBAIjB,MAAM,KAAK,MAAM;;;;gBAIjB,MAAM,KAAK,MAAM;;;;gBAIjB,MAAM,KAAK,MAAM;;;;gBAWjB,MAAM,KAAK,MAAM;;;;gBAOjB,MAAM,KAAK,MAAM;;;CAG5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAK9B;;OAEG;wBACiB,MAAM,QAAQ,MAAM,GAAG,OAAO;IAIlD;;OAEG;uBACgB,MAAM,SAAS,MAAM,QAAQ,MAAM,GAAG,OAAO;IAQhE;;OAEG;kBACW,MAAM,GAAG,MAAM;IAI7B;;OAEG;qBACc,MAAM,GAAG,MAAM;IAIhC;;OAEG;sBACe,MAAM,GAAG,MAAM;IAIjC;;OAEG;cACO,MAAM,SAAS,MAAM,GAAG,MAAM;CAGzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/skip-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skip List implementation
|
|
3
|
+
* Probabilistic sorted data structure
|
|
4
|
+
*/
|
|
5
|
+
import type { ISkipList, SkipListOptions, RangeResult, SkipListStats } from './skip-list.interface';
|
|
6
|
+
/**
|
|
7
|
+
* Skip List - Probabilistic sorted data structure
|
|
8
|
+
*
|
|
9
|
+
* Implementation:
|
|
10
|
+
* - Multiple levels of linked lists
|
|
11
|
+
* - Each level is a subset of the level below
|
|
12
|
+
* - Levels are determined probabilistically
|
|
13
|
+
* - Search starts at highest level and descends
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const skipList = new SkipList<number, string>();
|
|
18
|
+
* skipList.set(10, 'ten');
|
|
19
|
+
* skipList.set(5, 'five');
|
|
20
|
+
* skipList.set(20, 'twenty');
|
|
21
|
+
*
|
|
22
|
+
* skipList.get(10); // 'ten'
|
|
23
|
+
* skipList.range(5, 15); // [{key: 5, value: 'five'}, {key: 10, value: 'ten'}]
|
|
24
|
+
* skipList.keys(); // [5, 10, 20]
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare class SkipList<K, V> implements ISkipList<K, V> {
|
|
28
|
+
private head;
|
|
29
|
+
private maxLevel;
|
|
30
|
+
private probability;
|
|
31
|
+
private compare;
|
|
32
|
+
private currentLevel;
|
|
33
|
+
private count;
|
|
34
|
+
constructor(options?: SkipListOptions<K>);
|
|
35
|
+
/**
|
|
36
|
+
* Create a new node with random level
|
|
37
|
+
*/
|
|
38
|
+
private createNode;
|
|
39
|
+
/**
|
|
40
|
+
* Generate random level for new node
|
|
41
|
+
*/
|
|
42
|
+
private randomLevel;
|
|
43
|
+
/**
|
|
44
|
+
* Find the position where key should be or is located
|
|
45
|
+
* Returns update array with predecessors at each level
|
|
46
|
+
*/
|
|
47
|
+
private findUpdatePath;
|
|
48
|
+
/**
|
|
49
|
+
* Insert or update a key-value pair
|
|
50
|
+
*/
|
|
51
|
+
set(key: K, value: V): V | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Get value by key
|
|
54
|
+
*/
|
|
55
|
+
get(key: K): V | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Check if key exists
|
|
58
|
+
*/
|
|
59
|
+
has(key: K): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Delete a key
|
|
62
|
+
*/
|
|
63
|
+
delete(key: K): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Get all entries in sorted order
|
|
66
|
+
*/
|
|
67
|
+
entries(): Array<[K, V]>;
|
|
68
|
+
/**
|
|
69
|
+
* Get all keys in sorted order
|
|
70
|
+
*/
|
|
71
|
+
keys(): K[];
|
|
72
|
+
/**
|
|
73
|
+
* Get all values in sorted order by key
|
|
74
|
+
*/
|
|
75
|
+
values(): V[];
|
|
76
|
+
/**
|
|
77
|
+
* Get range of entries
|
|
78
|
+
*/
|
|
79
|
+
range(startKey: K, endKey: K): RangeResult<K, V>[];
|
|
80
|
+
/**
|
|
81
|
+
* Get minimum entry
|
|
82
|
+
*/
|
|
83
|
+
min(): RangeResult<K, V> | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Get maximum entry
|
|
86
|
+
*/
|
|
87
|
+
max(): RangeResult<K, V> | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Get kth smallest entry (0-indexed)
|
|
90
|
+
*/
|
|
91
|
+
getKth(k: number): RangeResult<K, V> | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Count entries in range
|
|
94
|
+
*/
|
|
95
|
+
countRange(startKey: K, endKey: K): number;
|
|
96
|
+
/**
|
|
97
|
+
* Find floor (largest key <= given key)
|
|
98
|
+
*/
|
|
99
|
+
floor(key: K): RangeResult<K, V> | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Find ceiling (smallest key >= given key)
|
|
102
|
+
*/
|
|
103
|
+
ceiling(key: K): RangeResult<K, V> | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Iterate over all entries
|
|
106
|
+
*/
|
|
107
|
+
forEach(callback: (value: V, key: K) => void): void;
|
|
108
|
+
/**
|
|
109
|
+
* Clear all entries
|
|
110
|
+
*/
|
|
111
|
+
clear(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Get statistics
|
|
114
|
+
*/
|
|
115
|
+
getStats(): SkipListStats;
|
|
116
|
+
/**
|
|
117
|
+
* Get size
|
|
118
|
+
*/
|
|
119
|
+
get size(): number;
|
|
120
|
+
/**
|
|
121
|
+
* Check if empty
|
|
122
|
+
*/
|
|
123
|
+
get isEmpty(): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Create skip list from entries
|
|
126
|
+
*/
|
|
127
|
+
static from<K, V>(entries: Array<[K, V]>, options?: SkipListOptions<K>): SkipList<K, V>;
|
|
128
|
+
/**
|
|
129
|
+
* Debug: Print structure
|
|
130
|
+
*/
|
|
131
|
+
toString(): string;
|
|
132
|
+
/**
|
|
133
|
+
* Debug: Validate structure
|
|
134
|
+
*/
|
|
135
|
+
validate(): boolean;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=skip-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-list.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/skip-list/skip-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,SAAS,EAET,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAC;AAI/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,GAAE,eAAe,CAAC,CAAC,CAAM;IAW5C;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAmCpC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAuB1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IA6BvB;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAYxB;;OAEG;IACH,IAAI,IAAI,CAAC,EAAE;IAYX;;OAEG;IACH,MAAM,IAAI,CAAC,EAAE;IAYb;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IA0BlD;;OAEG;IACH,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAQpC;;OAEG;IACH,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAsBpC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAoBhD;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM;IAI1C;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAqB5C;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAqB9C;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IASnD;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI,aAAa;IA0BzB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACd,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAQjB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAyBpB"}
|