# als-cache-and-history

> A simple caching module with history

Latest version **1.0.0** (published 2023-07-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install als-cache-and-history
pnpm add als-cache-and-history
yarn add als-cache-and-history
bun add als-cache-and-history
```

## 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 | 1.0.0 |
| Published | 2023-07-12 |
| First published | 2023-07-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 12.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Alex Sorkin |
| Maintainers | alexsorkin |
| Keywords | cache, history |

## Links

- npm: https://www.npmjs.com/package/als-cache-and-history
- npm.io page: https://npm.io/package/als-cache-and-history

## Alternatives

- [memory-cache](https://npm.io/package/memory-cache.md) — 795.0K weekly downloads
- [@httptoolkit/proxy-agent](https://npm.io/package/@httptoolkit/proxy-agent.md) — 11.2K weekly downloads
- [express-cache-controller](https://npm.io/package/express-cache-controller.md) — 5.3K weekly downloads
- [http-cache-middleware](https://npm.io/package/http-cache-middleware.md) — 4.5K weekly downloads
- [cache2](https://npm.io/package/cache2.md) — 1.5K weekly downloads

## Recent versions

- 1.0.0 (latest) — 2023-07-12

## README

# Cache and History

Cache and History is a simple Node.js caching module with history. It stores data on the disk and also maintains a list of all previous saved data.

## Installation

```bash
npm install cache-and-history
```

## Usage
```javascript
const CacheAndHistory = require('cache-and-history');
let cache = new CacheAndHistory(path, data, logger);
```


### Constructor
* `path` (optional): Path where cache files will be stored. Defaults to the current directory.
* `data` (optional): Initial data to be cached.
* `logger` (optional): Logger to be used. Defaults to console.

### Methods
* `error(error, method)`: Logs an error.
* `getFromFile(data)`: Gets the latest data from cache.
* `getFile(fileName)`: Returns the content of a file from cache.
* `save(data)`: Saves data to cache.
* `getList()`: Returns a list of all cached file names.
* `history(from, to)`: Returns a list of all cached data between two dates or indexes.


## Examples

### Basic Usage

This example demonstrates creating a cache, saving some data, and retrieving it.

```javascript
const CacheAndHistory = require('cache-and-history');

// Create a new cache with initial data
let cache = new CacheAndHistory('./cache_folder', { a: 1 });

// The data is immediately available
console.log(cache.cache); // Outputs: { a: 1 }

// Save new data
cache.save({ b: 2 });

// Retrieve the latest data
console.log(cache.cache); // Outputs: { b: 2 }
```

### Using History
The `history` method retrieves all cached data between two dates or indexes.

```js
const CacheAndHistory = require('cache-and-history');

let cache = new CacheAndHistory('./cache_folder');

// Save some data
cache.save({ a: 1 });
cache.save({ b: 2 });
cache.save({ c: 3 });

// Get all history
let allHistory = cache.history();
console.log(allHistory); // Outputs: [{ a: 1 }, { b: 2 }, { c: 3 }]

// Get history between two indexes
let indexHistory = cache.history(1, 2);
console.log(indexHistory); // Outputs: [{ b: 2 }, { c: 3 }]

// Assume we saved { a: 1 } at time 1000, { b: 2 } at time 2000, and { c: 3 } at time 3000
let dateHistory = cache.history(1500, 2500);
console.log(dateHistory); // Outputs: [{ b: 2 }]
```

### Custom Logger

You can provide a custom logger to the `CacheAndHistory` constructor. The logger should have an `error` method which will be used to log any errors.

```js
const CacheAndHistory = require('cache-and-history');

const customLogger = {
  error: (err, method) => {
    console.error(`An error occurred in ${method}: ${err}`);
  },
};

let cache = new CacheAndHistory('./cache_folder', null, customLogger);

// Now, if an error occurs, it will be logged with customLogger.error
```

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