Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tomeraberbach/keyalesce

🔑 Get the same key for the same sequence of values!
https://github.com/tomeraberbach/keyalesce

finalizationregistry hashing idempotent key-value map set weakmap weakref

Last synced: 9 days ago
JSON representation

🔑 Get the same key for the same sequence of values!

Awesome Lists containing this project

README

        


keyalesce



version


CI


gzip size


brotli size


Sponsor


Get the same key for the same sequence of values!

## Features

- **Simple:** a single function that takes an array and returns a key
- **Tiny:** 580 bytes gzipped!
- **Performant:** maintains a regularly pruned internal
[trie](https://en.wikipedia.org/wiki/Trie) of the value sequences

## When would I use this and how does it work?

[Read my post!](https://tomeraberba.ch/the-making-of-keyalesce)

## Install

```sh
$ npm i keyalesce
```

## Usage

```js
import keyalesce from 'keyalesce'

const hangouts = new Set()

const createHangoutKey = (person1, person2) =>
keyalesce([person1, person2].sort())
const hangOut = (person1, person2) =>
hangouts.add(createHangoutKey(person1, person2))
const didTheyHangOut = (person1, person2) =>
hangouts.has(createHangoutKey(person1, person2))

hangOut(`Tomer`, `Samuel`)
hangOut(`Tomer`, `Amanda`)

console.log(didTheyHangOut(`Tomer`, `Samuel`))
console.log(didTheyHangOut(`Samuel`, `Tomer`))
//=> true
//=> true

console.log(didTheyHangOut(`Tomer`, `Amanda`))
console.log(didTheyHangOut(`Amanda`, `Tomer`))
//=> true
//=> true

console.log(didTheyHangOut(`Samuel`, `Amanda`))
console.log(didTheyHangOut(`Amanda`, `Samuel`))
//=> false
//=> false
```

## Contributing

Stars are always welcome!

For bugs and feature requests,
[please create an issue](https://github.com/TomerAberbach/keyalesce/issues/new).

For pull requests, please read the
[contributing guidelines](https://github.com/TomerAberbach/keyalesce/blob/main/contributing.md).

## License

[Apache License 2.0](https://github.com/TomerAberbach/keyalesce/blob/main/license)

This is not an official Google product.