Plugins for stash-it are things that can influence the data that flows through cache instance's methods. Plugins can also add new functionality (extend the API).

A plugin is an object that consists of, at least, one property: hooks and / or createExtensions. Here is an example of full grown plugin (without the body):

hooks: [],
createExtensions: ({ cacheInstance, getPreData, getPostData }) => {}

How to use a plugin? What do I get from it?

If you take for example stash-it-plugin-debug you gain two things (read more on this plugin's repo page):

  1. Data that flows in, through and out of each cache's method is going to be tracked (using passed callback, e.g. console.log).

  2. Adds new method runDiangnostics().

Here's how you use it:

import createDebugPlugin from 'stash-it-plugin-debug';
// assuming that you already have cache instance
const debugPlugin = createDebugPlugin(console.log);
const cacheWithPlugins = cache.registerPlugins([ debugPlugin ]);
// without the plugin, this method would not be here
cacheWithPlugins.runDiagnostics(); // runs the diagnostics
cache.runDiagnostics(); // error, runDiagnostics is not a function