JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 249
  • Score
    100M100P100Q81280F
  • License MIT

Simple license generator/validator using JWT.

Package Exports

  • strong-license

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (strong-license) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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"