Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

strong-license

Package Overview
Dependencies
Maintainers
21
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

strong-license

Simple license generator/validator using JWT.

  • 1.2.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
173
increased by22.7%
Maintainers
21
Weekly downloads
 
Created
Source

strong-license

Simple license generator/validator using JWT with the pre-defined claim names (fields) and validation semantics.

  • product - a string identifying the product the license applies to
  • features - an array of strings identifying features of the product
  • activationDate - a Date indicating when the license period starts
  • expirationDate - a Date indicating when the license period ends
  • email - a string identifing who the license is for (primarily used for logging and identification for support purposes)

Both the product and features fields support * as a wildcard to indicate that all products or features are covered by the license. When the product field is a wildcard, any product check matches but it does not imply that all features are covered. When the features list contains a wildcard as one of its entries, any feature check matches.

Usage

The strong-license module defines the License class, which can be used for generating, parsing, and validating a license key.

Generating a License Key

var License = require('strong-license').License;
var details = {
  email: 'user@example.com',
  product: 'enterprise-node',
  features: ['foo', 'bar', 'baz'],
  activationDate: new Date(),
  expirationDate: new Date(Date.now() + 1000*60*60*24*365),
};
var lic = new License(details, 'super secret key!');

process.env.LICENSE_KEY = lic.key;

It is also possible to generate a null license, which does not cover any products or features and is perpetually expired. It does, however, cover the null query scenario.

var License = require('strong-license').License;
var nullLicense = new License();

nullLicense.covers(); // => true! Can't do anything, but can do nothing!

Parsing/Validating a License Key

If a license coverage query omits a field, that field is considered a match.

var License = require('strong-license').License;
var now = new Date();
var yesterday = new Date(Date.now() - 1000*60*60*24);
var lic = new License(process.env.LICENSE_KEY, 'super secret key!');

lic.covers('enterprise-node', 'foo', now); // => true
lic.covers('myProduct', 'featurex', now); // => false

If a parameter is omitted, is considered a match.

lic.covers('enterprise-node', 'bar', null); // => true
lic.covers('enterprise-node', null, now); // => true
lic.cocers(null, 'baz', yesterday); // => false
lic.covers(); // => true! any license covers "nothing"

FAQs

Package last updated on 01 Aug 2017

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc