mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-06 20:11:38 +08:00
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>
84 lines
3.1 KiB
JavaScript
84 lines
3.1 KiB
JavaScript
var spdxExpressionParse = require('spdx-expression-parse');
|
|
|
|
var MIT_LICENSE = /ermission is hereby granted, free of charge, to any/;
|
|
var BSD_LICENSE = /edistribution and use in source and binary forms, with or withou/;
|
|
var BSD_SOURCE_CODE_LICENSE = /edistribution and use of this software in source and binary forms, with or withou/;
|
|
var WTFPL_LICENSE = /DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE/;
|
|
var ISC_LICENSE = /The ISC License/;
|
|
var MIT = /\bMIT\b/;
|
|
var BSD = /\bBSD\b/;
|
|
var ISC = /\bISC\b/;
|
|
var GPL = /\bGNU GENERAL PUBLIC LICENSE\s*Version ([^,]*)/i;
|
|
var LGPL = /(?:LESSER|LIBRARY) GENERAL PUBLIC LICENSE\s*Version ([^,]*)/i;
|
|
var APACHE = /\bApache License\b/;
|
|
var WTFPL = /\bWTFPL\b/;
|
|
// https://creativecommons.org/publicdomain/zero/1.0/
|
|
var CC0_1_0 = /The\s+person\s+who\s+associated\s+a\s+work\s+with\s+this\s+deed\s+has\s+dedicated\s+the\s+work\s+to\s+the\s+public\s+domain\s+by\s+waiving\s+all\s+of\s+his\s+or\s+her\s+rights\s+to\s+the\s+work\s+worldwide\s+under\s+copyright\s+law,\s+including\s+all\s+related\s+and\s+neighboring\s+rights,\s+to\s+the\s+extent\s+allowed\s+by\s+law.\s+You\s+can\s+copy,\s+modify,\s+distribute\s+and\s+perform\s+the\s+work,\s+even\s+for\s+commercial\s+purposes,\s+all\s+without\s+asking\s+permission./i; // jshint ignore:line
|
|
var PUBLIC_DOMAIN = /[Pp]ublic [Dd]omain/;
|
|
var IS_URL = /(https?:\/\/[-a-zA-Z0-9\/.]*)/;
|
|
var IS_FILE_REFERENCE = /SEE LICENSE IN (.*)/i;
|
|
|
|
|
|
module.exports = function(str) {
|
|
var match, version;
|
|
try {
|
|
spdxExpressionParse(str || '');
|
|
return str;
|
|
} catch (error) {
|
|
// nothing
|
|
}
|
|
if (str) {
|
|
str = str.replace('\n', '');
|
|
}
|
|
if (typeof str === 'undefined' || !str) {
|
|
return 'Undefined';
|
|
} else if (ISC_LICENSE.test(str)) {
|
|
return 'ISC*';
|
|
} else if (MIT_LICENSE.test(str)) {
|
|
return 'MIT*';
|
|
} else if (BSD_LICENSE.test(str)) {
|
|
return 'BSD*';
|
|
} else if (BSD_SOURCE_CODE_LICENSE.test(str)) {
|
|
// https://spdx.org/licenses/BSD-Source-Code.html
|
|
return 'BSD-Source-Code*';
|
|
} else if (WTFPL_LICENSE.test(str)) {
|
|
return 'WTFPL*';
|
|
} else if (ISC.test(str)) {
|
|
return 'ISC*';
|
|
} else if (MIT.test(str)) {
|
|
return 'MIT*';
|
|
} else if (BSD.test(str)) {
|
|
return 'BSD*';
|
|
} else if (WTFPL.test(str)) {
|
|
return 'WTFPL*';
|
|
} else if (APACHE.test(str)) {
|
|
return 'Apache*';
|
|
} else if (CC0_1_0.test(str)) {
|
|
return 'CC0-1.0*';
|
|
} else if(GPL.test(str)) {
|
|
match = GPL.exec(str);
|
|
version = match[1];
|
|
/*istanbul ignore else*/
|
|
if(version.length === 1) {
|
|
version = version + '.0';
|
|
}
|
|
return 'GPL-'+version+'*';
|
|
} else if(LGPL.test(str)) {
|
|
match = LGPL.exec(str);
|
|
version = match[1];
|
|
if(version.length === 1) {
|
|
version = version + '.0';
|
|
}
|
|
return 'LGPL-'+version+'*';
|
|
} else if(PUBLIC_DOMAIN.test(str)) {
|
|
return 'Public Domain';
|
|
} else {
|
|
match = IS_URL.exec(str) || IS_FILE_REFERENCE.exec(str);
|
|
if(match) {
|
|
return 'Custom: ' + match[1];
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
};
|