You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					113 lines
				
				4.5 KiB
			
		
		
			
		
	
	
					113 lines
				
				4.5 KiB
			| 
											3 years ago
										 | [](https://github.com/Yomguithereal/mnemonist/actions) | ||
|  | 
 | ||
|  | # Mnemonist
 | ||
|  | 
 | ||
|  | Mnemonist is a curated collection of data structures for the JavaScript language. | ||
|  | 
 | ||
|  | It gathers classic data structures (think heap, trie etc.) as well as more exotic ones such as Buckhard-Keller trees etc. | ||
|  | 
 | ||
|  | It strives at being: | ||
|  | 
 | ||
|  | * As performant as possible for a high-level language. | ||
|  | * Completely modular (don't need to import the whole library just to use a simple heap). | ||
|  | * Simple & straightforward to use and consistent with JavaScript standard objects' API. | ||
|  | * Completely typed and comfortably usable with Typescript. | ||
|  | 
 | ||
|  | ## Installation
 | ||
|  | 
 | ||
|  | ``` | ||
|  | npm install --save mnemonist | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Documentation
 | ||
|  | 
 | ||
|  | Full documentation for the library can be found [here](https://yomguithereal.github.io/mnemonist). | ||
|  | 
 | ||
|  | **Classics** | ||
|  | 
 | ||
|  | * [Heap](https://yomguithereal.github.io/mnemonist/heap) | ||
|  | * [Linked List](https://yomguithereal.github.io/mnemonist/linked-list) | ||
|  | * [LRUCache](https://yomguithereal.github.io/mnemonist/lru-cache), [LRUMap](https://yomguithereal.github.io/mnemonist/lru-map) | ||
|  | * [MultiMap](https://yomguithereal.github.io/mnemonist/multi-map) | ||
|  | * [MultiSet](https://yomguithereal.github.io/mnemonist/multi-set) | ||
|  | * [Queue](https://yomguithereal.github.io/mnemonist/queue) | ||
|  | * [Set (helpers)](https://yomguithereal.github.io/mnemonist/set) | ||
|  | * [Stack](https://yomguithereal.github.io/mnemonist/stack) | ||
|  | * [Trie](https://yomguithereal.github.io/mnemonist/trie) | ||
|  | * [TrieMap](https://yomguithereal.github.io/mnemonist/trie-map) | ||
|  | 
 | ||
|  | **Low-level & structures for very specific use cases** | ||
|  | 
 | ||
|  | * [Circular Buffer](https://yomguithereal.github.io/mnemonist/circular-buffer) | ||
|  | * [Fixed Deque](https://yomguithereal.github.io/mnemonist/fixed-deque) | ||
|  | * [Fibonacci Heap](https://yomguithereal.github.io/mnemonist/fibonacci-heap) | ||
|  | * [Fixed Reverse Heap](https://yomguithereal.github.io/mnemonist/fixed-reverse-heap) | ||
|  | * [Fixed Stack](https://yomguithereal.github.io/mnemonist/fixed-stack) | ||
|  | * [Hashed Array Tree](https://yomguithereal.github.io/mnemonist/hashed-array-tree) | ||
|  | * [Static DisjointSet](https://yomguithereal.github.io/mnemonist/static-disjoint-set) | ||
|  | * [SparseQueueSet](https://yomguithereal.github.io/mnemonist/sparse-queue-set) | ||
|  | * [SparseMap](https://yomguithereal.github.io/mnemonist/sparse-map) | ||
|  | * [SparseSet](https://yomguithereal.github.io/mnemonist/sparse-set) | ||
|  | * [Suffix Array](https://yomguithereal.github.io/mnemonist/suffix-array) | ||
|  | * [Generalized Suffix Array](https://yomguithereal.github.io/mnemonist/generalized-suffix-array) | ||
|  | * [Vector](https://yomguithereal.github.io/mnemonist/vector) | ||
|  | 
 | ||
|  | **Information retrieval & Natural language processing** | ||
|  | 
 | ||
|  | * [Fuzzy Map](https://yomguithereal.github.io/mnemonist/fuzzy-map) | ||
|  | * [Fuzzy MultiMap](https://yomguithereal.github.io/mnemonist/fuzzy-multi-map) | ||
|  | * [Inverted Index](https://yomguithereal.github.io/mnemonist/inverted-index) | ||
|  | * [Passjoin Index](https://yomguithereal.github.io/mnemonist/passjoin-index) | ||
|  | * [SymSpell](https://yomguithereal.github.io/mnemonist/symspell) | ||
|  | 
 | ||
|  | **Space & time indexation** | ||
|  | 
 | ||
|  | * [Static IntervalTree](https://yomguithereal.github.io/mnemonist/static-interval-tree) | ||
|  | * [KD-Tree](https://yomguithereal.github.io/mnemonist/kd-tree) | ||
|  | 
 | ||
|  | **Metric space indexation** | ||
|  | 
 | ||
|  | * [Burkhard-Keller Tree](https://yomguithereal.github.io/mnemonist/bk-tree) | ||
|  | * [Vantage Point Tree](https://yomguithereal.github.io/mnemonist/vp-tree) | ||
|  | 
 | ||
|  | **Probabilistic & succinct data structures** | ||
|  | 
 | ||
|  | * [BitSet](https://yomguithereal.github.io/mnemonist/bit-set) | ||
|  | * [BitVector](https://yomguithereal.github.io/mnemonist/bit-vector) | ||
|  | * [Bloom Filter](https://yomguithereal.github.io/mnemonist/bloom-filter) | ||
|  | 
 | ||
|  | **Utility classes** | ||
|  | 
 | ||
|  | * [BiMap](https://yomguithereal.github.io/mnemonist/bi-map) | ||
|  | * [DefaultMap](https://yomguithereal.github.io/mnemonist/default-map) | ||
|  | * [DefaultWeakMap](https://yomguithereal.github.io/mnemonist/default-weak-map) | ||
|  | 
 | ||
|  | --- | ||
|  | 
 | ||
|  | Note that this list does not include a `Graph` data structure, whose implementation is usually far too complex for the scope of this library. | ||
|  | 
 | ||
|  | However, we advise the reader to take a look at the [`graphology`](https://graphology.github.io/) library instead. | ||
|  | 
 | ||
|  | Don't find the data structure you need? Maybe we can work it out [together](https://github.com/Yomguithereal/mnemonist/issues). | ||
|  | 
 | ||
|  | ## Contribution
 | ||
|  | 
 | ||
|  | Contributions are obviously welcome. Be sure to lint the code & add relevant unit tests. | ||
|  | 
 | ||
|  | ``` | ||
|  | # Installing
 | ||
|  | git clone git@github.com:Yomguithereal/mnemonist.git | ||
|  | cd mnemonist | ||
|  | npm install | ||
|  | 
 | ||
|  | # Linting
 | ||
|  | npm run lint | ||
|  | 
 | ||
|  | # Running the unit tests
 | ||
|  | npm test | ||
|  | ``` | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | [MIT](LICENSE.txt) |