datanautics
Version:
**Datanautics** is a lightweight key-value storage system with support for nested property access, persistent dumps to disk, and configurable autosave intervals.
99 lines (60 loc) • 2.79 kB
Markdown
# Datanautics
**Datanautics** is a lightweight key-value storage system with support for nested property access, persistent dumps to disk, and configurable autosave intervals.
It uses string-based paths (like `user[0].profile.name`) to **get/set deeply nested data**, and periodically saves the current state to a JSON file for durability.
## Features
- Dot/bracket notation access (`a.b[0]['c']`)
- Persistent JSON file storage (auto-saves at configurable intervals)
- Configurable verbosity and custom logger
- Simple API: `.get(key)`, `.set(key, value)`
- Built on top of [`property-accessor`](https://npmjs.com/package/property-accessor)
## Installation
```bash
npm install datanautics
```
## Usage
```ts
const { Datanautics } = require('datanautics');
const store = new Datanautics({
dumpPath: './data.json',
dumpInterval: 1000, // every 1 second
verbose: true,
logger: console,
});
store.set('users[0].name', 'Alice');
console.log(store.get('users[0].name')); // Output: Alice
```
## Configuration Options
You can pass the following options to the constructor:
| Option | Type | Description | Default |
| -------------- | ------------------- | ------------------------------------------------- | ----------------------------------------- |
| `dumpPath` | `string`, optional | Path to the JSON file for persistent data storage | `node_modules/datanautics/data/data.json` |
| `dumpInterval` | `number`, optional | Interval in milliseconds between auto-dumps | `1000` (1 second) |
| `verbose` | `boolean`, optional | Log errors during reading/writing | `false` |
| `logger` | `object`, optional | Custom logger (`console`, `winston`, etc.) | `console` |
## Methods
### `set(key: string, value: any): boolean`
Sets a value in the internal store using a path-based key.
Returns `true` on success, `false` if the key is invalid.
### `get(key: string): any`
Retrieves the value at the specified path.
Returns `undefined` if the path does not exist or is non-evaluable.
### `store(key: string): void`
Explicitly creates dump
## Auto-Save Mechanism
- A background event loop triggers a dump to `options.dumpPath` every `options.dumpInterval` ms.
- All data is saved as a JSON file, preserving nested structures.
- On startup, the class will attempt to read and restore previous data from the file.
## Requirements
- Node.js 14+
## Dependencies
- [`property-accessor`](https://npmjs.com/package/property-accessor) – Used for safe deep get/set operations
## [License](./LICENSE) MIT