Socket
Socket
Sign inDemoInstall

global-box

Package Overview
Dependencies
0
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    global-box

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


Version published
Maintainers
1
Install size
25.1 kB
Created

Readme

Source

global-box

Version David (path) TypeScript

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.

Example

package A

import { globalBox } from 'global-box';
const box = globalBox();
box.set('share.config.something', 123);

package B

import { globalBox } from 'global-box';
const box = globalBox();
box.get('share.config.something'); // 123;

Installation

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.
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

{
  "peerDependencies": {
    "global-box": "*"
  },
  "devDependencies": {
    "global-box": "x.x"
  }
}

vs. in application

{
  "dependencies": {
    "global-box": "x.x"
  }
}

Available functions

import { globalBox } from 'global-box';
const box = globalBox();
box.has(globalId);
box.get<string>(globalId); // must specify value type via generic
box.getOrCreate(globalId, factory);
box.remove(globalId);
box.set(globalId);

Credits

Inspired by global-cache

License

Apache-2.0

Keywords

FAQs

Last updated on 14 Aug 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc