@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,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Structures for ZenGrid
|
|
3
|
+
*/
|
|
4
|
+
export { SparseMatrix } from './sparse-matrix';
|
|
5
|
+
export type { ReadonlySparseMatrix, ISparseMatrix, SparseMatrixOptions, } from './sparse-matrix';
|
|
6
|
+
export { PrefixSumArray } from './prefix-sum-array';
|
|
7
|
+
export type { IPrefixSumArray, PrefixSumArrayOptions, } from './prefix-sum-array';
|
|
8
|
+
export { ColumnStore } from './column-store';
|
|
9
|
+
export type { IColumnStore, ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult, } from './column-store';
|
|
10
|
+
export { IndexMap } from './index-map';
|
|
11
|
+
export type { IIndexMap, IndexMapEntry, IndexMapOptions, } from './index-map';
|
|
12
|
+
export { IntervalTree } from './interval-tree';
|
|
13
|
+
export type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions, } from './interval-tree';
|
|
14
|
+
export { IntervalUtils } from './interval-tree';
|
|
15
|
+
export { Trie } from './trie';
|
|
16
|
+
export type { ITrie, ITrieNode, TrieOptions, TrieSearchResult, } from './trie';
|
|
17
|
+
export { RTree } from './rtree';
|
|
18
|
+
export type { IRTree, Rectangle, RTreeData, RTreeOptions, RTreeSearchResult, RTreeStats, } from './rtree';
|
|
19
|
+
export { DependencyGraph } from './dependency-graph';
|
|
20
|
+
export type { IDependencyGraph, NodeId, Dependency, DependencyGraphOptions, TopologicalSortResult, GraphStats, } from './dependency-graph';
|
|
21
|
+
export { SuffixArray } from './suffix-array';
|
|
22
|
+
export type { ISuffixArray, SuffixArrayOptions, SuffixSearchResult, SuffixArrayStats, } from './suffix-array';
|
|
23
|
+
export { LRUCache } from './lru-cache';
|
|
24
|
+
export type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats, } from './lru-cache';
|
|
25
|
+
export { CommandStack } from './command-stack';
|
|
26
|
+
export type { ICommandStack, ICommand, ICommandStackOptions, } from './command-stack';
|
|
27
|
+
export { SegmentTree } from './segment-tree';
|
|
28
|
+
export type { ISegmentTree, SegmentTreeOptions, AggregateFunction, AggregationType, } from './segment-tree';
|
|
29
|
+
export { Aggregations, SegmentTreeUtils } from './segment-tree';
|
|
30
|
+
export { SkipList } from './skip-list';
|
|
31
|
+
export type { ISkipList, SkipListNode, SkipListOptions, RangeResult, SkipListStats, } from './skip-list';
|
|
32
|
+
export { defaultComparator, SkipListUtils } from './skip-list';
|
|
33
|
+
export { DisjointSet } from './disjoint-set';
|
|
34
|
+
export type { IDisjointSet, DisjointSetOptions, DisjointSetStats, } from './disjoint-set';
|
|
35
|
+
export { DisjointSetUtils } from './disjoint-set';
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/data-structures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EACV,KAAK,EACL,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EACV,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,QAAQ,EACR,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interval Tree - Augmented BST for interval queries
|
|
3
|
+
*/
|
|
4
|
+
export { IntervalTree } from './interval-tree';
|
|
5
|
+
export type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions, } from './interval-tree.interface';
|
|
6
|
+
export { IntervalUtils } from './interval-tree.interface';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/interval-tree/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interval Tree implementation
|
|
3
|
+
* Augmented BST for efficient interval queries
|
|
4
|
+
*/
|
|
5
|
+
import type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions } from './interval-tree.interface';
|
|
6
|
+
/**
|
|
7
|
+
* Interval Tree - Augmented BST for interval queries
|
|
8
|
+
*
|
|
9
|
+
* Implementation:
|
|
10
|
+
* - Each node stores an interval and the max endpoint in its subtree
|
|
11
|
+
* - Balanced using AVL tree rotations for guaranteed O(log n) operations
|
|
12
|
+
* - Intervals are ordered by start time
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const tree = new IntervalTree<string>();
|
|
17
|
+
* tree.insert({ start: 10, end: 20 }, 'A');
|
|
18
|
+
* tree.insert({ start: 15, end: 25 }, 'B');
|
|
19
|
+
* tree.insert({ start: 30, end: 40 }, 'C');
|
|
20
|
+
*
|
|
21
|
+
* tree.search({ start: 18, end: 22 }); // Returns A and B
|
|
22
|
+
* tree.searchPoint(35); // Returns C
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare class IntervalTree<T> implements IIntervalTree<T> {
|
|
26
|
+
private root;
|
|
27
|
+
private count;
|
|
28
|
+
private nextId;
|
|
29
|
+
private readonly balanced;
|
|
30
|
+
private readonly allowDuplicates;
|
|
31
|
+
private readonly comparator;
|
|
32
|
+
constructor(options?: IntervalTreeOptions);
|
|
33
|
+
/**
|
|
34
|
+
* Insert an interval
|
|
35
|
+
*/
|
|
36
|
+
insert(interval: Interval, data: T): IntervalData<T>;
|
|
37
|
+
private insertNode;
|
|
38
|
+
/**
|
|
39
|
+
* Delete an interval
|
|
40
|
+
*/
|
|
41
|
+
delete(intervalData: IntervalData<T>): boolean;
|
|
42
|
+
private deleteNode;
|
|
43
|
+
/**
|
|
44
|
+
* Delete by ID
|
|
45
|
+
*/
|
|
46
|
+
deleteById(id: string | number): boolean;
|
|
47
|
+
private findById;
|
|
48
|
+
/**
|
|
49
|
+
* Find all overlapping intervals
|
|
50
|
+
*/
|
|
51
|
+
search(interval: Interval): IntervalData<T>[];
|
|
52
|
+
private searchOverlap;
|
|
53
|
+
/**
|
|
54
|
+
* Find all intervals containing a point
|
|
55
|
+
*/
|
|
56
|
+
searchPoint(point: number): IntervalData<T>[];
|
|
57
|
+
/**
|
|
58
|
+
* Find all intervals contained within the given interval
|
|
59
|
+
*/
|
|
60
|
+
searchContained(interval: Interval): IntervalData<T>[];
|
|
61
|
+
private searchContainedHelper;
|
|
62
|
+
/**
|
|
63
|
+
* Find all intervals containing the given interval
|
|
64
|
+
*/
|
|
65
|
+
searchContaining(interval: Interval): IntervalData<T>[];
|
|
66
|
+
private searchContainingHelper;
|
|
67
|
+
/**
|
|
68
|
+
* Find minimum interval (by start time)
|
|
69
|
+
*/
|
|
70
|
+
findMin(): IntervalData<T> | undefined;
|
|
71
|
+
private findMinNode;
|
|
72
|
+
/**
|
|
73
|
+
* Find maximum interval (by max endpoint in tree)
|
|
74
|
+
*/
|
|
75
|
+
findMax(): IntervalData<T> | undefined;
|
|
76
|
+
private findMaxHelper;
|
|
77
|
+
/**
|
|
78
|
+
* Check if any interval overlaps
|
|
79
|
+
*/
|
|
80
|
+
hasOverlap(interval: Interval): boolean;
|
|
81
|
+
private hasOverlapHelper;
|
|
82
|
+
/**
|
|
83
|
+
* Get all intervals in sorted order
|
|
84
|
+
*/
|
|
85
|
+
inorder(): IntervalData<T>[];
|
|
86
|
+
private inorderHelper;
|
|
87
|
+
/**
|
|
88
|
+
* Iterate over all intervals
|
|
89
|
+
*/
|
|
90
|
+
forEach(callback: (interval: IntervalData<T>) => void): void;
|
|
91
|
+
private forEachHelper;
|
|
92
|
+
/**
|
|
93
|
+
* Filter intervals
|
|
94
|
+
*/
|
|
95
|
+
filter(predicate: (interval: IntervalData<T>) => boolean): IIntervalTree<T>;
|
|
96
|
+
/**
|
|
97
|
+
* Map intervals
|
|
98
|
+
*/
|
|
99
|
+
map<U>(mapper: (data: T, interval: Interval) => U): IIntervalTree<U>;
|
|
100
|
+
/**
|
|
101
|
+
* Clear the tree
|
|
102
|
+
*/
|
|
103
|
+
clear(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Get tree size
|
|
106
|
+
*/
|
|
107
|
+
get size(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Check if empty
|
|
110
|
+
*/
|
|
111
|
+
get isEmpty(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Get tree height
|
|
114
|
+
*/
|
|
115
|
+
get height(): number;
|
|
116
|
+
private getHeight;
|
|
117
|
+
/**
|
|
118
|
+
* AVL balancing methods
|
|
119
|
+
*/
|
|
120
|
+
private balance;
|
|
121
|
+
private getBalanceFactor;
|
|
122
|
+
private rotateLeft;
|
|
123
|
+
private rotateRight;
|
|
124
|
+
/**
|
|
125
|
+
* Create IntervalTree from array of intervals
|
|
126
|
+
*/
|
|
127
|
+
static from<T>(intervals: Array<{
|
|
128
|
+
interval: Interval;
|
|
129
|
+
data: T;
|
|
130
|
+
}>, options?: IntervalTreeOptions): IntervalTree<T>;
|
|
131
|
+
/**
|
|
132
|
+
* Debug: Get tree structure as string
|
|
133
|
+
*/
|
|
134
|
+
toString(): string;
|
|
135
|
+
/**
|
|
136
|
+
* Debug: Validate tree structure
|
|
137
|
+
*/
|
|
138
|
+
validate(): boolean;
|
|
139
|
+
private validateNode;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=interval-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-tree.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/interval-tree/interval-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interval Tree interfaces for ZenGrid
|
|
3
|
+
* Efficiently finds all intervals that overlap with a given interval or point
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Represents an interval with a start and end
|
|
7
|
+
*/
|
|
8
|
+
export interface Interval {
|
|
9
|
+
/** Start of the interval (inclusive) */
|
|
10
|
+
start: number;
|
|
11
|
+
/** End of the interval (inclusive) */
|
|
12
|
+
end: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* An interval with associated data
|
|
16
|
+
*/
|
|
17
|
+
export interface IntervalData<T> extends Interval {
|
|
18
|
+
/** User data associated with this interval */
|
|
19
|
+
data: T;
|
|
20
|
+
/** Optional unique identifier */
|
|
21
|
+
id?: string | number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Interval Tree interface
|
|
25
|
+
*
|
|
26
|
+
* An augmented binary search tree for efficient interval queries.
|
|
27
|
+
* Each node stores an interval and the maximum endpoint in its subtree.
|
|
28
|
+
*
|
|
29
|
+
* Use cases:
|
|
30
|
+
* - Finding all overlapping time ranges
|
|
31
|
+
* - Range queries in calendars/schedules
|
|
32
|
+
* - Collision detection (e.g., overlapping cells in a grid)
|
|
33
|
+
* - Finding visible rows/columns in virtual scrolling
|
|
34
|
+
* - Query optimization (index range scans)
|
|
35
|
+
*
|
|
36
|
+
* Performance:
|
|
37
|
+
* - Insert: O(log n) average, O(n) worst case (use Red-Black tree for guaranteed O(log n))
|
|
38
|
+
* - Delete: O(log n) average
|
|
39
|
+
* - Search overlapping: O(log n + k) where k = number of results
|
|
40
|
+
* - Point query: O(log n + k)
|
|
41
|
+
* - Space: O(n)
|
|
42
|
+
*/
|
|
43
|
+
export interface IIntervalTree<T> {
|
|
44
|
+
/**
|
|
45
|
+
* Insert an interval with associated data
|
|
46
|
+
* @param interval - The interval to insert
|
|
47
|
+
* @param data - Data to associate with the interval
|
|
48
|
+
* @returns The inserted interval with data
|
|
49
|
+
* @complexity O(log n) average
|
|
50
|
+
*/
|
|
51
|
+
insert(interval: Interval, data: T): IntervalData<T>;
|
|
52
|
+
/**
|
|
53
|
+
* Delete an interval by reference
|
|
54
|
+
* @param intervalData - The interval to delete
|
|
55
|
+
* @returns true if found and deleted
|
|
56
|
+
* @complexity O(log n)
|
|
57
|
+
*/
|
|
58
|
+
delete(intervalData: IntervalData<T>): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Delete an interval by ID
|
|
61
|
+
* @param id - The ID of the interval to delete
|
|
62
|
+
* @returns true if found and deleted
|
|
63
|
+
* @complexity O(n) - requires linear search
|
|
64
|
+
*/
|
|
65
|
+
deleteById(id: string | number): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Find all intervals that overlap with the given interval
|
|
68
|
+
* @param interval - The query interval
|
|
69
|
+
* @returns Array of overlapping intervals
|
|
70
|
+
* @complexity O(log n + k) where k = number of results
|
|
71
|
+
*/
|
|
72
|
+
search(interval: Interval): IntervalData<T>[];
|
|
73
|
+
/**
|
|
74
|
+
* Find all intervals that contain the given point
|
|
75
|
+
* @param point - The point to query
|
|
76
|
+
* @returns Array of intervals containing the point
|
|
77
|
+
* @complexity O(log n + k) where k = number of results
|
|
78
|
+
*/
|
|
79
|
+
searchPoint(point: number): IntervalData<T>[];
|
|
80
|
+
/**
|
|
81
|
+
* Find all intervals that are completely contained within the given interval
|
|
82
|
+
* @param interval - The containing interval
|
|
83
|
+
* @returns Array of contained intervals
|
|
84
|
+
* @complexity O(n) worst case
|
|
85
|
+
*/
|
|
86
|
+
searchContained(interval: Interval): IntervalData<T>[];
|
|
87
|
+
/**
|
|
88
|
+
* Find all intervals that completely contain the given interval
|
|
89
|
+
* @param interval - The interval to be contained
|
|
90
|
+
* @returns Array of containing intervals
|
|
91
|
+
* @complexity O(n) worst case
|
|
92
|
+
*/
|
|
93
|
+
searchContaining(interval: Interval): IntervalData<T>[];
|
|
94
|
+
/**
|
|
95
|
+
* Find the interval with the earliest start time
|
|
96
|
+
* @returns The interval or undefined if tree is empty
|
|
97
|
+
* @complexity O(log n)
|
|
98
|
+
*/
|
|
99
|
+
findMin(): IntervalData<T> | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Find the interval with the latest end time
|
|
102
|
+
* @returns The interval or undefined if tree is empty
|
|
103
|
+
* @complexity O(log n)
|
|
104
|
+
*/
|
|
105
|
+
findMax(): IntervalData<T> | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Check if any interval overlaps with the given interval
|
|
108
|
+
* @param interval - The query interval
|
|
109
|
+
* @complexity O(log n)
|
|
110
|
+
*/
|
|
111
|
+
hasOverlap(interval: Interval): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Get all intervals in sorted order (by start time)
|
|
114
|
+
* @returns Array of all intervals sorted by start
|
|
115
|
+
* @complexity O(n)
|
|
116
|
+
*/
|
|
117
|
+
inorder(): IntervalData<T>[];
|
|
118
|
+
/**
|
|
119
|
+
* Iterate over all intervals in sorted order
|
|
120
|
+
* @param callback - Function to call for each interval
|
|
121
|
+
* @complexity O(n)
|
|
122
|
+
*/
|
|
123
|
+
forEach(callback: (interval: IntervalData<T>) => void): void;
|
|
124
|
+
/**
|
|
125
|
+
* Filter intervals by a predicate
|
|
126
|
+
* @param predicate - Test function
|
|
127
|
+
* @returns New interval tree with intervals that pass the test
|
|
128
|
+
* @complexity O(n)
|
|
129
|
+
*/
|
|
130
|
+
filter(predicate: (interval: IntervalData<T>) => boolean): IIntervalTree<T>;
|
|
131
|
+
/**
|
|
132
|
+
* Map intervals to a new interval tree
|
|
133
|
+
* @param mapper - Transform function for the data
|
|
134
|
+
* @returns New interval tree with transformed data
|
|
135
|
+
* @complexity O(n)
|
|
136
|
+
*/
|
|
137
|
+
map<U>(mapper: (data: T, interval: Interval) => U): IIntervalTree<U>;
|
|
138
|
+
/**
|
|
139
|
+
* Clear all intervals
|
|
140
|
+
* @complexity O(1)
|
|
141
|
+
*/
|
|
142
|
+
clear(): void;
|
|
143
|
+
/**
|
|
144
|
+
* Number of intervals in the tree
|
|
145
|
+
*/
|
|
146
|
+
readonly size: number;
|
|
147
|
+
/**
|
|
148
|
+
* Whether the tree is empty
|
|
149
|
+
*/
|
|
150
|
+
readonly isEmpty: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Height of the tree (for debugging/analysis)
|
|
153
|
+
*/
|
|
154
|
+
readonly height: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Options for creating an IntervalTree
|
|
158
|
+
*/
|
|
159
|
+
export interface IntervalTreeOptions {
|
|
160
|
+
/**
|
|
161
|
+
* Whether to use a balanced tree (Red-Black tree)
|
|
162
|
+
* Guarantees O(log n) operations but slightly slower constants
|
|
163
|
+
* @default false (uses simple BST)
|
|
164
|
+
*/
|
|
165
|
+
balanced?: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Whether to allow duplicate intervals
|
|
168
|
+
* @default true
|
|
169
|
+
*/
|
|
170
|
+
allowDuplicates?: boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Custom comparator for intervals
|
|
173
|
+
* Defaults to comparing by start time, then end time
|
|
174
|
+
*/
|
|
175
|
+
comparator?: (a: Interval, b: Interval) => number;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Helper functions for interval operations
|
|
179
|
+
*/
|
|
180
|
+
export declare const IntervalUtils: {
|
|
181
|
+
/**
|
|
182
|
+
* Check if two intervals overlap
|
|
183
|
+
*/
|
|
184
|
+
overlaps(a: Interval, b: Interval): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Check if interval contains a point
|
|
187
|
+
*/
|
|
188
|
+
contains(interval: Interval, point: number): boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Check if interval A contains interval B
|
|
191
|
+
*/
|
|
192
|
+
containsInterval(a: Interval, b: Interval): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Get the intersection of two intervals
|
|
195
|
+
* Returns undefined if they don't overlap
|
|
196
|
+
*/
|
|
197
|
+
intersection(a: Interval, b: Interval): Interval | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Get the union of two overlapping intervals
|
|
200
|
+
* Returns undefined if they don't overlap
|
|
201
|
+
*/
|
|
202
|
+
union(a: Interval, b: Interval): Interval | undefined;
|
|
203
|
+
/**
|
|
204
|
+
* Merge overlapping intervals
|
|
205
|
+
*/
|
|
206
|
+
mergeOverlapping(intervals: Interval[]): Interval[];
|
|
207
|
+
/**
|
|
208
|
+
* Default comparator: compare by start, then by end
|
|
209
|
+
*/
|
|
210
|
+
defaultComparator(a: Interval, b: Interval): number;
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=interval-tree.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-tree.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/interval-tree/interval-tree.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/lru-cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats } from './lru-cache.interface';
|
|
2
|
+
/**
|
|
3
|
+
* LRU Cache - Least Recently Used Cache
|
|
4
|
+
*
|
|
5
|
+
* A cache with automatic eviction of least recently used entries.
|
|
6
|
+
* Uses doubly-linked list + hash map for O(1) operations.
|
|
7
|
+
*
|
|
8
|
+
* **Time Complexity:**
|
|
9
|
+
* - get: O(1)
|
|
10
|
+
* - set: O(1)
|
|
11
|
+
* - delete: O(1)
|
|
12
|
+
* - has: O(1)
|
|
13
|
+
* - clear: O(n)
|
|
14
|
+
*
|
|
15
|
+
* **Space Complexity:** O(n) where n = number of entries
|
|
16
|
+
*
|
|
17
|
+
* **Use Cases in Grid:**
|
|
18
|
+
* - Cache rendered cells: Avoid re-rendering visible cells
|
|
19
|
+
* - Cache formula results: =SUM(A1:A1000) computed once
|
|
20
|
+
* - Cache formatted values: "$1,234.56" cached instead of re-formatting
|
|
21
|
+
* - Cache API responses: Reduce server requests
|
|
22
|
+
*
|
|
23
|
+
* @example Cell Rendering Cache
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const cellCache = new LRUCache<string, HTMLElement>({ capacity: 500 });
|
|
26
|
+
*
|
|
27
|
+
* function renderCell(row: number, col: number): HTMLElement {
|
|
28
|
+
* const key = `${row},${col}`;
|
|
29
|
+
* let element = cellCache.get(key);
|
|
30
|
+
*
|
|
31
|
+
* if (!element) {
|
|
32
|
+
* element = createCellElement(row, col); // Expensive operation
|
|
33
|
+
* cellCache.set(key, element);
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* return element;
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example Formula Cache
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const formulaCache = new LRUCache<string, number>({
|
|
43
|
+
* capacity: 1000,
|
|
44
|
+
* ttl: 5000, // 5 seconds
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* function evaluateFormula(formula: string): number {
|
|
48
|
+
* return formulaCache.get(formula) ?? computeFormula(formula);
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare class LRUCache<K, V> implements ILRUCache<K, V> {
|
|
53
|
+
private capacity;
|
|
54
|
+
private ttl;
|
|
55
|
+
private cache;
|
|
56
|
+
private head;
|
|
57
|
+
private tail;
|
|
58
|
+
private onEvict?;
|
|
59
|
+
private trackStats;
|
|
60
|
+
private hits;
|
|
61
|
+
private misses;
|
|
62
|
+
private evictions;
|
|
63
|
+
private sets;
|
|
64
|
+
constructor(options?: LRUCacheOptions);
|
|
65
|
+
/**
|
|
66
|
+
* Get a value from the cache
|
|
67
|
+
*/
|
|
68
|
+
get(key: K): V | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Set a value in the cache
|
|
71
|
+
*/
|
|
72
|
+
set(key: K, value: V): void;
|
|
73
|
+
/**
|
|
74
|
+
* Check if a key exists
|
|
75
|
+
*/
|
|
76
|
+
has(key: K): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Delete a specific entry
|
|
79
|
+
*/
|
|
80
|
+
delete(key: K): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Clear all entries
|
|
83
|
+
*/
|
|
84
|
+
clear(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get current size
|
|
87
|
+
*/
|
|
88
|
+
size(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Get statistics
|
|
91
|
+
*/
|
|
92
|
+
getStats(): CacheStats;
|
|
93
|
+
/**
|
|
94
|
+
* Get all keys (oldest to newest)
|
|
95
|
+
*/
|
|
96
|
+
keys(): K[];
|
|
97
|
+
/**
|
|
98
|
+
* Get all values (oldest to newest)
|
|
99
|
+
*/
|
|
100
|
+
values(): V[];
|
|
101
|
+
/**
|
|
102
|
+
* Get all entries with metadata
|
|
103
|
+
*/
|
|
104
|
+
entries(): Array<[K, CacheEntry<V>]>;
|
|
105
|
+
/**
|
|
106
|
+
* Peek without updating LRU order
|
|
107
|
+
*/
|
|
108
|
+
peek(key: K): V | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Resize cache capacity
|
|
111
|
+
*/
|
|
112
|
+
resize(newCapacity: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* Check if a node is expired
|
|
115
|
+
*/
|
|
116
|
+
private isExpired;
|
|
117
|
+
/**
|
|
118
|
+
* Move node to head (most recently used)
|
|
119
|
+
*/
|
|
120
|
+
private moveToHead;
|
|
121
|
+
/**
|
|
122
|
+
* Add node to head
|
|
123
|
+
*/
|
|
124
|
+
private addToHead;
|
|
125
|
+
/**
|
|
126
|
+
* Remove node from list
|
|
127
|
+
*/
|
|
128
|
+
private removeNode;
|
|
129
|
+
/**
|
|
130
|
+
* Evict least recently used entry
|
|
131
|
+
*/
|
|
132
|
+
private evictLRU;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=lru-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/lru-cache/lru-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,uBAAuB,CAAC;AAiB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,OAAO,CAAC,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAU;IAG5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,IAAI,CAAa;gBAEb,OAAO,GAAE,eAAoB;IAYzC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IA0B1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAyB3B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAYpB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAUvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,QAAQ,IAAI,UAAU;IAsBtB;;OAEG;IACH,IAAI,IAAI,CAAC,EAAE;IAYX;;OAEG;IACH,MAAM,IAAI,CAAC,EAAE;IAYb;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAoBpC;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAa3B;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAejC;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAcjB"}
|