A simple key-value store that is truly a singleton. Use this to as an alternative to sticking values into global.
npm install global-box

This package will never have breaking change and keeps everything simple and backward-compatible.
> A simple key-value store singleton.
Sometimes you have to do horrible things, like use the global object to share a singleton or some values.
Instead of attaching values to the global object, which can lead to security concerns, this global-box package provides a key-value store which is guaranteed to be a singleton, so you can use it instead of the global object. Only code that are part of the same application bundle can access this store, making it more secured.
package A
``ts`
import { globalBox } from 'global-box';
const box = globalBox();
box.set('share.config.something', 123);
package B
`ts`
import { globalBox } from 'global-box';
const box = globalBox();
box.get('share.config.something'); // 123;
For this to work correctly, there must be only a single copy of global-box in node_modules at all times. (Similar to how there must be only a single copy of react.)
Note: This package will never have breaking change and keeps everything simple and backward-compatible.
* For application developers, just do a regular installation. If you want to use global-box directly, or have some libraries that depends on it.
`sh`
npm install global-box
* For library authors, you must always list this as peerDependencies in package.json. Listing it as dependencies may cause the library consumers to have duplicates in the final application.
In library
`json`
{
"peerDependencies": {
"global-box": "*"
},
"devDependencies": {
"global-box": "x.x"
}
}
vs. in application
`json`
{
"dependencies": {
"global-box": "x.x"
}
}
`ts``
import { globalBox } from 'global-box';
const box = globalBox();
box.has(globalId);
box.get
box.getOrCreate(globalId, factory);
box.remove(globalId);
box.set(globalId);
Inspired by global-cache
Apache-2.0