Files
react-native-devtools-frontend/node_modules/spdx-compare/index.js
T
Paul Lewis 911c1b8a93 Updates node_modules
DISABLE_THIRD_PARTY_CHECK=Package needs updating with node_modules
Change-Id: I889f1b86c586e37307a3e13ad762aa56d1ece150
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/1946468
Commit-Queue: Paul Lewis <aerotwist@chromium.org>
Reviewed-by: Tim van der Lippe <tvanderlippe@chromium.org>
2019-12-02 14:54:54 +00:00

61 lines
1.6 KiB
JavaScript

var arrayFindIndex = require('array-find-index')
var parse = require('spdx-expression-parse')
var ranges = require('spdx-ranges')
var notALicenseIdentifier = ' is not a simple license identifier'
var rangeComparison = function (comparison) {
return function (first, second) {
var firstAST = parse(first)
if (!firstAST.hasOwnProperty('license')) {
throw new Error('"' + first + '"' + notALicenseIdentifier)
}
var secondAST = parse(second)
if (!secondAST.hasOwnProperty('license')) {
throw new Error('"' + second + '"' + notALicenseIdentifier)
}
return ranges.some(function (range) {
var firstLicense = firstAST.license
var indexOfFirst = arrayFindIndex(range, function (element) {
return (
element === firstLicense ||
(
Array.isArray(element) &&
element.indexOf(firstLicense) !== -1
)
)
})
if (indexOfFirst < 0) {
return false
}
var secondLicense = secondAST.license
var indexOfSecond = arrayFindIndex(range, function (element) {
return (
element === secondLicense ||
(
Array.isArray(element) &&
element.indexOf(secondLicense) !== -1
)
)
})
if (indexOfSecond < 0) {
return false
}
return comparison(indexOfFirst, indexOfSecond)
})
}
}
exports.gt = rangeComparison(function (first, second) {
return first > second
})
exports.lt = rangeComparison(function (first, second) {
return first < second
})
exports.eq = rangeComparison(function (first, second) {
return first === second
})