# mqtt-store

> Store and retrieve data using MQTT keypaths

Latest version **2.1.0** (published 2017-10-24) · MIT license · 161 weekly downloads

## Install

```sh
npm install mqtt-store
pnpm add mqtt-store
yarn add mqtt-store
bun add mqtt-store
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2017-10-24 |
| First published | 2015-07-04 |
| Weekly downloads | 161 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | rangermauve |
| Maintainers | rangermauve |
| Keywords | mqtt, store, key, value, map, tree |

## Links

- npm: https://www.npmjs.com/package/mqtt-store
- Repository: https://github.com/RangerMauve/mqtt-store
- Issues: https://github.com/RangerMauve/mqtt-store/issues
- npm.io page: https://npm.io/package/mqtt-store

## Recent versions

- 2.1.0 (latest) — 2017-10-24
- 2.0.0 — 2017-10-22
- 1.0.4 — 2016-05-12
- 1.0.3 — 2016-05-12
- 1.0.2 — 2015-07-04
- 1.0.1 — 2015-07-04
- 1.0.0 — 2015-07-04

## README

# mqtt-store
Store and retrieve data using MQTT keypaths. You can set values, then query for values that match a [wildcard](https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices). Or set values with wildcards and find all wildcards that match a simple topic.

```
npm install mqtt-store --save
```

## Example:

```javascript
var MQTTStore = require("mqtt-store");

var store = new MQTTStore();

store.set("hello/world", "Greetings");
store.get("hello/world");
// #=> {key: "hello/world", value: "Greetings"}

store.set("foo/bar/baz", "woot");
store.set("foo/bar", "woot wooo");
store.findMatching("foo/#");
// #=> [
//	{key: "foo/bar/baz", value: "woot"},
//	{key: "foo/bar", value: "woot wooo"}
// ]

store.set("fizz/#", "lolwat");
store.set("fizz/buzz/+", "neat");
store.findPatterns("fizz/buzz/quix");
// #=> [
//	{key: "fizz/#", value: "lolwat"},
//	{key: "fizz/buzz/+", value: "neat"}
// ]
```

## API

### `MQTTStore.Result(sections, value)`
All results from queries are represented as a `Result` object.

#### `MQTTStore.Result#key : String`
The full key string for where the result was found

#### `MQTTStore.Result#value : Any`
The value stored in this result

#### `MQTTStore.Result#sections : Array<String>`
The key, split in to an array of sections


### `MQTTStore()`
There is no configuration for the store currently, can be called either with `new` or just as a function.

#### `MQTTStore#put(key : String, value : Any)`
Sets a value in the store. In the background the topic will get split up into a path and will build up a tree. Topics with wildcards get set as through the wildcard was a literal key.

#### `MQTTStore#get(key : String) : Result<Any>`
Gets a single value from the store that was set at the given topic. If nothing was set at this topic, then `MQTTStore.NO_RESULT` is returned.

#### `MQTTStore#.del(key : String) : Boolean`
Deletes the value stored at the key if it exists. Returns `true` if the key contained a value, `false` if the key didn't exist or had no value.

#### `MQTTStore#findMatching(key : String) : Array<Result<Any>>`
Takes a topic with wildcards and returns all keys that match that topic. Returns an array of Results.

#### `MQTTStore#findPatterns(key : String) : Array<Result<Any>>`
Takes a topic and returns all values (that might contain wildcards) that match against that topic. Returns an array of Results.

---
_Source: https://npm.io/package/mqtt-store · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
