The function will return a warning and suggestion for nearly-correct license identifiers:
assert.deepEqual(valid('Apache 2.0'), { validForOldPackages:false, validForNewPackages:false, warnings: ['license should be '+'a valid SPDX license expression (without "LicenseRef"), '+'"UNLICENSED", or '+'"SEE LICENSE IN <filename>"','license is similar to the valid expression "Apache-2.0"' ] });
SPDX expressions are valid, too ...
// Simple SPDX license expression for dual licensingassert.deepEqual(valid('(GPL-3.0-only OR BSD-2-Clause)'), validSPDXExpression);
... except if they contain LicenseRef:
var warningAboutLicenseRef = { validForOldPackages:false, validForNewPackages:false, spdx:true, warnings: ['license should be '+'a valid SPDX license expression (without "LicenseRef"), '+'"UNLICENSED", or '+'"SEE LICENSE IN <filename>"', ]};assert.deepEqual(valid('LicenseRef-Made-Up'), warningAboutLicenseRef);assert.deepEqual(valid('(MIT OR LicenseRef-Made-Up)'), warningAboutLicenseRef);
If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there:
assert.deepEqual(valid('SEE LICENSE IN LICENSE.txt'), { validForNewPackages:true, validForOldPackages:true, inFile:'LICENSE.txt' });assert.deepEqual(valid('SEE LICENSE IN license.md'), { validForNewPackages:true, validForOldPackages:true, inFile:'license.md' });
If there aren't any licensing terms, use UNLICENSED:
var unlicensed = { validForNewPackages:true, validForOldPackages:true, unlicensed:true};assert.deepEqual(valid('UNLICENSED'), unlicensed);assert.deepEqual(valid('UNLICENCED'), unlicensed);