[![view on npm](http://img.shields.io/npm/v/cache-point.svg)](https://www.npmjs.org/package/cache-point) [![npm module downloads](http://img.shields.io/npm/dt/cache-point.svg)](https://www.npmjs.org/package/cache-point) [![Build Status](https://travis-ci.org/75lb/cache-point.svg?branch=master)](https://travis-ci.org/75lb/cache-point) [![Dependency Status](https://david-dm.org/75lb/cache-point.svg)](https://david-dm.org/75lb/cache-point) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](https://github.com/feross/standard) ## cache-point A memoisation solution intended to cache the output of expensive operations, speeding up future invocations with the same input. **Example** ```js const Cache = require('cache-point') const cache = new Cache({ dir: 'tmp/example' }) // The first invocation will take 3s, the rest instantaneous. // outputs: 'result' getData('some input') .then(console.log) // check the cache for output generated with this input. // cache.read() will resolve on hit, reject on miss. function getData (input) { return cache .read(input) .catch(() => expensiveOperation(input)) } // The expensive operation we're aiming to avoid, // (3 second cost per invocation) function expensiveOperation (input) { return new Promise((resolve, reject) => { setTimeout(() => { const output = 'result' cache.write(input, output) resolve(output) }, 3000) }) } ``` * [cache-point](#module_cache-point) * [Cache](#exp_module_cache-point--Cache) ⏏ * [new Cache([options])](#new_module_cache-point--Cache_new) * [.dir](#module_cache-point--Cache+dir) : string * [.read(keys)](#module_cache-point--Cache+read) ⇒ Promise * [.readSync(keys)](#module_cache-point--Cache+readSync) ⇒ string * [.write(keys, content)](#module_cache-point--Cache+write) ⇒ Promise * [.writeSync(keys, content)](#module_cache-point--Cache+writeSync) * [.getChecksum(keys)](#module_cache-point--Cache+getChecksum) ⇒ string * [.clear()](#module_cache-point--Cache+clear) ⇒ Promise * [.remove()](#module_cache-point--Cache+remove) ⇒ Promise ### Cache ⏏ **Kind**: Exported class #### new Cache([options]) | Param | Type | | --- | --- | | [options] | object | | [options.dir] | string | #### cache.dir : string Current cache directory. Can be changed at any time. **Kind**: instance property of [Cache](#exp_module_cache-point--Cache) #### cache.read(keys) ⇒ Promise A cache hit resolves with the stored value, a miss rejects. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) | Param | Type | Description | | --- | --- | --- | | keys | \* | One or more values to uniquely identify the data. Can be any value, or an array of values of any type. | #### cache.readSync(keys) ⇒ string A cache hit returns the stored value, a miss returns `null`. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) | Param | Type | Description | | --- | --- | --- | | keys | \* | One or more values to uniquely identify the data. Can be any value, or an array of values of any type. | #### cache.write(keys, content) ⇒ Promise Write some data to the cache. Returns a promise which resolves when the write is complete. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) | Param | Type | Description | | --- | --- | --- | | keys | \* | One or more values to index the data, e.g. a request object or set of function args. | | content | \* | the data to store | #### cache.writeSync(keys, content) Write some data to the cache with a key. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) | Param | Type | Description | | --- | --- | --- | | keys | \* | One or more values to index the data, e.g. a request object or set of function args. | | content | \* | the data to store | #### cache.getChecksum(keys) ⇒ string Used internally to convert a key value into a hex checksum. Override if for some reason you need a different hashing strategy. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) | Param | Type | Description | | --- | --- | --- | | keys | \* | One or more values to index the data, e.g. a request object or set of function args. | #### cache.clear() ⇒ Promise Clears the cache. Returns a promise which resolves once the cache is clear. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) #### cache.remove() ⇒ Promise Clears and removes the cache directory. Returns a promise which resolves once the remove is complete. **Kind**: instance method of [Cache](#exp_module_cache-point--Cache) * * * © 2016-19 Lloyd Brookes \<75pound@gmail.com\>. Documented by [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown).