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 tofeatures- an array of strings identifying features of the productactivationDate- a Date indicating when the license period startsexpirationDate- a Date indicating when the license period endsemail- 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); // => falseIf 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"