| Index: node_modules/vulcanize/node_modules/update-notifier/index.js
|
| diff --git a/node_modules/vulcanize/node_modules/update-notifier/index.js b/node_modules/vulcanize/node_modules/update-notifier/index.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..273ab87d71e8ee2065f176e61bfce4c9a7e36d15
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/update-notifier/index.js
|
| @@ -0,0 +1,123 @@
|
| +'use strict';
|
| +var spawn = require('child_process').spawn;
|
| +var path = require('path');
|
| +var Configstore = require('configstore');
|
| +var chalk = require('chalk');
|
| +var semverDiff = require('semver-diff');
|
| +var latestVersion = require('latest-version');
|
| +var stringLength = require('string-length');
|
| +var isNpm = require('is-npm');
|
| +
|
| +function UpdateNotifier(options) {
|
| + this.options = options = options || {};
|
| +
|
| + if (!options.packageName || !options.packageVersion) {
|
| + throw new Error('packageName and packageVersion required');
|
| + }
|
| +
|
| + this.packageName = options.packageName;
|
| + this.packageVersion = options.packageVersion;
|
| + this.updateCheckInterval = typeof options.updateCheckInterval === 'number' ? options.updateCheckInterval : 1000 * 60 * 60 * 24; // 1 day
|
| + this.hasCallback = typeof options.callback === 'function';
|
| + this.callback = options.callback || function () {};
|
| +
|
| + if (!this.hasCallback) {
|
| + this.config = new Configstore('update-notifier-' + this.packageName, {
|
| + optOut: false,
|
| + // init with the current time so the first check is only
|
| + // after the set interval, so not to bother users right away
|
| + lastUpdateCheck: Date.now()
|
| + });
|
| + }
|
| +}
|
| +
|
| +UpdateNotifier.prototype.check = function () {
|
| + if (this.hasCallback) {
|
| + return this.checkNpm(this.callback);
|
| + }
|
| +
|
| + if (this.config.get('optOut') || 'NO_UPDATE_NOTIFIER' in process.env) {
|
| + return;
|
| + }
|
| +
|
| + this.update = this.config.get('update');
|
| +
|
| + if (this.update) {
|
| + this.config.del('update');
|
| + }
|
| +
|
| + // Only check for updates on a set interval
|
| + if (Date.now() - this.config.get('lastUpdateCheck') < this.updateCheckInterval) {
|
| + return;
|
| + }
|
| +
|
| + // Spawn a detached process, passing the options as an environment property
|
| + spawn(process.execPath, [path.join(__dirname, 'check.js'), JSON.stringify(this.options)], {
|
| + detached: true,
|
| + stdio: 'ignore'
|
| + }).unref();
|
| +};
|
| +
|
| +UpdateNotifier.prototype.checkNpm = function (cb) {
|
| + latestVersion(this.packageName, function (err, latestVersion) {
|
| + if (err) {
|
| + return cb(err);
|
| + }
|
| +
|
| + cb(null, {
|
| + latest: latestVersion,
|
| + current: this.packageVersion,
|
| + type: semverDiff(this.packageVersion, latestVersion) || 'latest',
|
| + name: this.packageName
|
| + });
|
| + }.bind(this));
|
| +};
|
| +
|
| +UpdateNotifier.prototype.notify = function (opts) {
|
| + if (!process.stdout.isTTY || isNpm || !this.update) {
|
| + return this;
|
| + }
|
| +
|
| + opts = opts || {};
|
| + opts.defer = opts.defer === undefined ? true : false;
|
| +
|
| + var fill = function (str, count) {
|
| + return Array(count + 1).join(str);
|
| + };
|
| +
|
| + var line1 = ' Update available: ' + chalk.green.bold(this.update.latest) +
|
| + chalk.dim(' (current: ' + this.update.current + ')') + ' ';
|
| + var line2 = ' Run ' + chalk.blue('npm update -g ' + this.packageName) +
|
| + ' to update. ';
|
| + var contentWidth = Math.max(stringLength(line1), stringLength(line2));
|
| + var line1rest = contentWidth - stringLength(line1);
|
| + var line2rest = contentWidth - stringLength(line2);
|
| + var top = chalk.yellow('┌' + fill('─', contentWidth) + '┐');
|
| + var bottom = chalk.yellow('└' + fill('─', contentWidth) + '┘');
|
| + var side = chalk.yellow('│');
|
| +
|
| + var message =
|
| + '\n\n' +
|
| + top + '\n' +
|
| + side + line1 + fill(' ', line1rest) + side + '\n' +
|
| + side + line2 + fill(' ', line2rest) + side + '\n' +
|
| + bottom + '\n';
|
| +
|
| + if (opts.defer) {
|
| + process.on('exit', function () {
|
| + console.error(message);
|
| + });
|
| + } else {
|
| + console.error(message);
|
| + }
|
| +
|
| + return this;
|
| +};
|
| +
|
| +module.exports = function (options) {
|
| + var updateNotifier = new UpdateNotifier(options);
|
| + updateNotifier.check();
|
| + return updateNotifier;
|
| +};
|
| +
|
| +module.exports.UpdateNotifier = UpdateNotifier;
|
|
|