Sometimes you have to do horrible things, like use the global object to share a singleton. Abstract that away, with this!
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.eslintignore
.eslintrc
.gitignore
.istanbul.yml
.npmrc
.travis.yml
CHANGELOG.md
LICENSE
Makefile
README.md
index.js
package.json
test.js

README.md

global-cache Version Badge

Build Status dependency status dev dependency status License Downloads

npm badge

browser support

Sometimes you have to do horrible things, like use the global object to share a singleton. Abstract that away, with this!

This attaches a cache to the global object. It attempts to make it as undiscoverable as possible:

  • uses Symbols if available
  • if not, uses a string key that is not a valid identifier, so as not to show up in dot-notation browser autocomplete
  • makes it non-enumerable if property descriptors are supported

Keys are required to be strings or symbols.

Example

var cache = require('global-cache');
var assert = require('assert');

var value = {};
assert(cache.get(key) === undefined);
assert(cache.has(key) === false);

cache.set(key, value);
assert(cache.get(key) === value);
assert(cache.has(key) === true);

cache.delete(key);
assert(cache.get(key) === undefined);
assert(cache.has(key) === false);

Tests

Simply clone the repo, npm install, and run npm test