yeet
This commit is contained in:
144
node_modules/@react-native-community/cli/build/tools/releaseChecker/getLatestRelease.js
generated
vendored
Normal file
144
node_modules/@react-native-community/cli/build/tools/releaseChecker/getLatestRelease.js
generated
vendored
Normal file
@ -0,0 +1,144 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getLatestRelease;
|
||||
|
||||
function _semver() {
|
||||
const data = _interopRequireDefault(require("semver"));
|
||||
|
||||
_semver = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
var _releaseCacheManager = _interopRequireDefault(require("./releaseCacheManager"));
|
||||
|
||||
function _cliTools() {
|
||||
const data = require("@react-native-community/cli-tools");
|
||||
|
||||
_cliTools = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Checks via GitHub API if there is a newer stable React Native release and,
|
||||
* if it exists, returns the release data.
|
||||
*
|
||||
* If the latest release is not newer or if it's a prerelease, the function
|
||||
* will return undefined.
|
||||
*/
|
||||
async function getLatestRelease(name, currentVersion) {
|
||||
_cliTools().logger.debug('Checking for a newer version of React Native');
|
||||
|
||||
try {
|
||||
_cliTools().logger.debug(`Current version: ${currentVersion}`);
|
||||
|
||||
const cachedLatest = _releaseCacheManager.default.get(name, 'latestVersion');
|
||||
|
||||
if (cachedLatest) {
|
||||
_cliTools().logger.debug(`Cached release version: ${cachedLatest}`);
|
||||
}
|
||||
|
||||
const aWeek = 7 * 24 * 60 * 60 * 1000;
|
||||
|
||||
const lastChecked = _releaseCacheManager.default.get(name, 'lastChecked');
|
||||
|
||||
const now = new Date();
|
||||
|
||||
if (lastChecked && Number(now) - Number(new Date(lastChecked)) < aWeek) {
|
||||
_cliTools().logger.debug('Cached release is still recent, skipping remote check');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
_cliTools().logger.debug('Checking for newer releases on GitHub');
|
||||
|
||||
const eTag = _releaseCacheManager.default.get(name, 'eTag');
|
||||
|
||||
const latestVersion = await getLatestRnDiffPurgeVersion(name, eTag);
|
||||
|
||||
_cliTools().logger.debug(`Latest release: ${latestVersion}`);
|
||||
|
||||
if (_semver().default.compare(latestVersion, currentVersion) === 1 && !_semver().default.prerelease(latestVersion)) {
|
||||
return {
|
||||
version: latestVersion,
|
||||
changelogUrl: buildChangelogUrl(latestVersion),
|
||||
diffUrl: buildDiffUrl(currentVersion)
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
_cliTools().logger.debug('Something went wrong with remote version checking, moving on');
|
||||
|
||||
_cliTools().logger.debug(e);
|
||||
}
|
||||
}
|
||||
|
||||
function buildChangelogUrl(version) {
|
||||
return `https://github.com/facebook/react-native/releases/tag/v${version}`;
|
||||
}
|
||||
|
||||
function buildDiffUrl(version) {
|
||||
return `https://react-native-community.github.io/upgrade-helper/?from=${version}`;
|
||||
}
|
||||
/**
|
||||
* Returns the most recent React Native version available to upgrade to.
|
||||
*/
|
||||
|
||||
|
||||
async function getLatestRnDiffPurgeVersion(name, eTag) {
|
||||
const options = {
|
||||
// https://developer.github.com/v3/#user-agent-required
|
||||
headers: {
|
||||
'User-Agent': 'React-Native-CLI'
|
||||
}
|
||||
};
|
||||
|
||||
if (eTag) {
|
||||
options.headers['If-None-Match'] = eTag;
|
||||
}
|
||||
|
||||
const {
|
||||
data,
|
||||
status,
|
||||
headers
|
||||
} = await (0, _cliTools().fetch)('https://api.github.com/repos/react-native-community/rn-diff-purge/tags', options); // Remote is newer.
|
||||
|
||||
if (status === 200) {
|
||||
const body = data;
|
||||
const latestVersion = body[0].name.substring(8);
|
||||
const eTagHeader = headers.get('eTag'); // Update cache only if newer release is stable.
|
||||
|
||||
if (!_semver().default.prerelease(latestVersion) && eTagHeader) {
|
||||
_cliTools().logger.debug(`Saving ${eTagHeader} to cache`);
|
||||
|
||||
_releaseCacheManager.default.set(name, 'eTag', eTagHeader);
|
||||
|
||||
_releaseCacheManager.default.set(name, 'latestVersion', latestVersion);
|
||||
}
|
||||
|
||||
return latestVersion;
|
||||
} // Cache is still valid.
|
||||
|
||||
|
||||
if (status === 304) {
|
||||
const latestVersion = _releaseCacheManager.default.get(name, 'latestVersion');
|
||||
|
||||
if (latestVersion) {
|
||||
return latestVersion;
|
||||
}
|
||||
} // Should be returned only if something went wrong.
|
||||
|
||||
|
||||
return '0.0.0';
|
||||
}
|
||||
|
||||
//# sourceMappingURL=getLatestRelease.js.map
|
61
node_modules/@react-native-community/cli/build/tools/releaseChecker/index.js
generated
vendored
Normal file
61
node_modules/@react-native-community/cli/build/tools/releaseChecker/index.js
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = releaseChecker;
|
||||
|
||||
function _path() {
|
||||
const data = _interopRequireDefault(require("path"));
|
||||
|
||||
_path = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _cliTools() {
|
||||
const data = require("@react-native-community/cli-tools");
|
||||
|
||||
_cliTools = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
var _resolveNodeModuleDir = _interopRequireDefault(require("../config/resolveNodeModuleDir"));
|
||||
|
||||
var _getLatestRelease = _interopRequireDefault(require("./getLatestRelease"));
|
||||
|
||||
var _printNewRelease = _interopRequireDefault(require("./printNewRelease"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
// @ts-ignore - JS file
|
||||
async function releaseChecker(root) {
|
||||
try {
|
||||
const {
|
||||
version: currentVersion
|
||||
} = require(_path().default.join((0, _resolveNodeModuleDir.default)(root, 'react-native'), 'package.json'));
|
||||
|
||||
const {
|
||||
name
|
||||
} = require(_path().default.join(root, 'package.json'));
|
||||
|
||||
const latestRelease = await (0, _getLatestRelease.default)(name, currentVersion);
|
||||
|
||||
if (latestRelease) {
|
||||
(0, _printNewRelease.default)(name, latestRelease, currentVersion);
|
||||
}
|
||||
} catch (e) {
|
||||
// We let the flow continue as this component is not vital for the rest of
|
||||
// the CLI.
|
||||
_cliTools().logger.debug('Cannot detect current version of React Native, ' + 'skipping check for a newer release');
|
||||
|
||||
_cliTools().logger.debug(e);
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=index.js.map
|
47
node_modules/@react-native-community/cli/build/tools/releaseChecker/printNewRelease.js
generated
vendored
Normal file
47
node_modules/@react-native-community/cli/build/tools/releaseChecker/printNewRelease.js
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = printNewRelease;
|
||||
|
||||
function _chalk() {
|
||||
const data = _interopRequireDefault(require("chalk"));
|
||||
|
||||
_chalk = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _cliTools() {
|
||||
const data = require("@react-native-community/cli-tools");
|
||||
|
||||
_cliTools = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
var _releaseCacheManager = _interopRequireDefault(require("./releaseCacheManager"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Notifies the user that a newer version of React Native is available.
|
||||
*/
|
||||
function printNewRelease(name, latestRelease, currentVersion) {
|
||||
_cliTools().logger.info(`React Native v${latestRelease.version} is now available (your project is running on v${currentVersion}).`);
|
||||
|
||||
_cliTools().logger.info(`Changelog: ${_chalk().default.dim.underline(latestRelease.changelogUrl)}.`);
|
||||
|
||||
_cliTools().logger.info(`Diff: ${_chalk().default.dim.underline(latestRelease.diffUrl)}.`);
|
||||
|
||||
_cliTools().logger.info(`To upgrade, run "${_chalk().default.bold('react-native upgrade')}".`);
|
||||
|
||||
_releaseCacheManager.default.set(name, 'lastChecked', new Date().toISOString());
|
||||
}
|
||||
|
||||
//# sourceMappingURL=printNewRelease.js.map
|
123
node_modules/@react-native-community/cli/build/tools/releaseChecker/releaseCacheManager.js
generated
vendored
Normal file
123
node_modules/@react-native-community/cli/build/tools/releaseChecker/releaseCacheManager.js
generated
vendored
Normal file
@ -0,0 +1,123 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
function _path() {
|
||||
const data = _interopRequireDefault(require("path"));
|
||||
|
||||
_path = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _fs() {
|
||||
const data = _interopRequireDefault(require("fs"));
|
||||
|
||||
_fs = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _os() {
|
||||
const data = _interopRequireDefault(require("os"));
|
||||
|
||||
_os = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _mkdirp() {
|
||||
const data = _interopRequireDefault(require("mkdirp"));
|
||||
|
||||
_mkdirp = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _cliTools() {
|
||||
const data = require("@react-native-community/cli-tools");
|
||||
|
||||
_cliTools = function () {
|
||||
return data;
|
||||
};
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function loadCache(name) {
|
||||
try {
|
||||
const cacheRaw = _fs().default.readFileSync(_path().default.resolve(getCacheRootPath(), name), 'utf8');
|
||||
|
||||
const cache = JSON.parse(cacheRaw);
|
||||
return cache;
|
||||
} catch (e) {
|
||||
if (e.code === 'ENOENT') {
|
||||
// Create cache file since it doesn't exist.
|
||||
saveCache(name, {});
|
||||
}
|
||||
|
||||
_cliTools().logger.debug('No release cache found');
|
||||
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function saveCache(name, cache) {
|
||||
_fs().default.writeFileSync(_path().default.resolve(getCacheRootPath(), name), JSON.stringify(cache, null, 2));
|
||||
}
|
||||
/**
|
||||
* Returns the path string of `$HOME/.react-native-cli`.
|
||||
*
|
||||
* In case it doesn't exist, it will be created.
|
||||
*/
|
||||
|
||||
|
||||
function getCacheRootPath() {
|
||||
const cachePath = _path().default.resolve(_os().default.homedir(), '.react-native-cli', 'cache');
|
||||
|
||||
if (!_fs().default.existsSync(cachePath)) {
|
||||
_mkdirp().default.sync(cachePath);
|
||||
}
|
||||
|
||||
return cachePath;
|
||||
}
|
||||
|
||||
function get(name, key) {
|
||||
const cache = loadCache(name);
|
||||
|
||||
if (cache) {
|
||||
return cache[key];
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function set(name, key, value) {
|
||||
const cache = loadCache(name);
|
||||
|
||||
if (cache) {
|
||||
cache[key] = value;
|
||||
saveCache(name, cache);
|
||||
}
|
||||
}
|
||||
|
||||
var _default = {
|
||||
get,
|
||||
set
|
||||
};
|
||||
exports.default = _default;
|
||||
|
||||
//# sourceMappingURL=releaseCacheManager.js.map
|
Reference in New Issue
Block a user