Socket
Socket
Sign inDemoInstall

all-contributors-cli

Package Overview
Dependencies
Maintainers
4
Versions
121
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

all-contributors-cli - npm Package Compare versions

Comparing version 6.20.0 to 6.26.1

dist/util/formatting.js

9

dist/api.js

@@ -7,12 +7,9 @@ "use strict";

// These Node API's are intended to be network and side effect free, everything should be in memory with no io to network/disk
var chalk = require('chalk');
var addContributorWithDetails = require('./contributors/addWithDetails');
var generate = require('./generate');
var _require = require('./init/init-content'),
addContributorsList = _require.addContributorsList,
addBadge = _require.addBadge;
addContributorsList = _require.addContributorsList,
addBadge = _require.addBadge;
process.stdout.write(chalk.yellow(`${chalk.bold('WARNING')} :: Using the all-contributors node-api comes with zero guarantees of stability and may contain breaking changes without warning\n`));

@@ -19,0 +16,0 @@ module.exports = {

#!/usr/bin/env node
/* eslint-disable no-console */

@@ -7,22 +6,13 @@ "use strict";

var path = require('path');
var yargs = require('yargs');
var chalk = require('chalk');
var inquirer = require('inquirer');
var init = require('./init');
var generate = require('./generate');
var util = require('./util');
var repo = require('./repo');
var updateContributors = require('./contributors');
var cwd = process.cwd();
var defaultRCFile = path.join(cwd, '.all-contributorsrc');
var yargv = yargs.help('help').alias('h', 'help').alias('v', 'version').version().recommendCommands().command('generate', 'Generate the list of contributors').usage('Usage: $0 generate').command('add', 'add a new contributor').usage('Usage: $0 add <username> <contribution>').command('init', 'Prepare the project to be used with this tool').usage('Usage: $0 init').command('check', 'Compares contributors from the repository with the ones credited in .all-contributorsrc').usage('Usage: $0 check').boolean('commit').default('files', ['README.md']).default('contributorsPerLine', 7).option('contributorsSortAlphabetically', {
var yargv = yargs.scriptName('all-contributors').help('help').alias('h', 'help').alias('v', 'version').version().recommendCommands().command('generate', `Generate the list of contributors\n\nUSAGE: all-contributors generate`).command('add', `Add a new contributor\n\nUSAGE: all-contributors add <username> <comma-separated contributions>`).command('init', `Prepare the project to be used with this tool\n\nUSAGE: all-contributors init`).command('check', `Compare contributors from the repository with the ones credited in .all-contributorsrc'\n\nUSAGE: all-contributors check`).boolean('commit').default('files', ['README.md']).default('contributorsPerLine', 7).option('contributorsSortAlphabetically', {
type: 'boolean',

@@ -40,3 +30,2 @@ default: false,

}).argv;
function startGeneration(argv) {

@@ -51,9 +40,7 @@ return Promise.all(argv.files.map(function (file) {

}
function addContribution(argv) {
util.configFile.readConfig(argv.config); // ensure the config file exists
var username = argv._[1] === undefined ? undefined : String(argv._[1]);
var contributions = argv._[2]; // Add or update contributor in the config file
var contributions = argv._[2];
// Add or update contributor in the config file
return updateContributors(argv, username, contributions).then(function (data) {

@@ -68,3 +55,2 @@ argv.contributors = data.contributors;

}
function checkContributors(argv) {

@@ -87,3 +73,2 @@ var configData = util.configFile.readConfig(argv.config);

});
if (missingInConfig.length) {

@@ -93,3 +78,2 @@ process.stdout.write(chalk.bold('Missing contributors in .all-contributorsrc:\n'));

}
if (missingFromRepo.length) {

@@ -101,12 +85,9 @@ process.stdout.write(chalk.bold('Unknown contributors found in .all-contributorsrc:\n'));

}
function onError(error) {
if (error) {
console.error(error.message);
console.error(error.stack || error.message || error);
process.exit(1);
}
process.exit(0);
}
function promptForCommand(argv) {

@@ -134,3 +115,2 @@ var questions = [{

}
promptForCommand(yargv).then(function (command) {

@@ -140,12 +120,8 @@ switch (command) {

return init();
case 'generate':
return startGeneration(yargv);
case 'add':
return addContribution(yargv);
case 'check':
return checkContributors(yargv);
default:

@@ -152,0 +128,0 @@ throw new Error(`Unknown command ${command}`);

"use strict";
var _ = require('lodash/fp');
function uniqueTypes(contribution) {
return contribution.type || contribution;
}
function formatContributions(options, existing, types) {

@@ -13,7 +11,4 @@ if (existing === void 0) {

}
var same = _.intersectionBy(uniqueTypes, existing, types);
var remove = types.length < existing.length && same.length;
if (options.url) {

@@ -27,10 +22,7 @@ return existing.concat(types.map(function (type) {

}
if (remove) {
return same;
}
return _.uniqBy(uniqueTypes, existing.concat(types));
}
function updateContributor(options, contributor, contributions) {

@@ -41,3 +33,2 @@ return _.assign(contributor, {

}
function updateExistingContributor(options, username, contributions) {

@@ -48,7 +39,5 @@ return options.contributors.map(function (contributor) {

}
return updateContributor(options, contributor, contributions);
});
}
function addNewContributor(options, username, contributions, infoFetcher) {

@@ -59,7 +48,5 @@ return infoFetcher(username, options.repoType, options.repoHost).then(function (userData) {

});
return options.contributors.concat(contributor);
});
}
module.exports = function (options, username, contributions, infoFetcher) {

@@ -70,8 +57,6 @@ // case insensitive find

}, options.contributors);
if (exists) {
return Promise.resolve(updateExistingContributor(options, username, contributions));
}
return addNewContributor(options, username, contributions, infoFetcher);
};
"use strict";
var addContributor = require('./add'); // Adds a contributor without going to the network (you supply the additional fields)
var addContributor = require('./add');
// Adds a contributor without going to the network (you supply the additional fields)
module.exports = function (_ref) {
var options = _ref.options,
login = _ref.login,
contributions = _ref.contributions,
name = _ref.name,
avatar_url = _ref.avatar_url,
profile = _ref.profile;
login = _ref.login,
contributions = _ref.contributions,
name = _ref.name,
avatar_url = _ref.avatar_url,
profile = _ref.profile;
return addContributor(options, login, contributions, function infoFetcherNoNetwork() {

@@ -14,0 +14,0 @@ return Promise.resolve({

"use strict";
var _ = require('lodash/fp');
var util = require('../util');
var repo = require('../repo');
var add = require('./add');
var prompt = require('./prompt');
function isNewContributor(contributorList, username) {

@@ -18,3 +13,2 @@ return !_.find({

}
module.exports = function (options, username, contributions) {

@@ -21,0 +15,0 @@ var answersP = prompt(options, username, contributions);

"use strict";
var _ = require('lodash/fp');
var inquirer = require('inquirer');
var util = require('../util');
var repo = require('../repo');
var contributionChoices = _.flow(util.contributionTypes, _.toPairs, _.sortBy(function (pair) {

@@ -19,3 +15,2 @@ return pair[1].description;

}));
function getQuestions(options, username, contributions) {

@@ -31,3 +26,2 @@ return [{

}
return true;

@@ -57,3 +51,2 @@ }

}, []);
if (!input.length) {

@@ -64,3 +57,2 @@ return 'Use space to select at least one contribution type.';

}
return true;

@@ -70,22 +62,16 @@ }

}
function getValidUserContributions(options, contributions) {
var validContributionTypes = util.contributionTypes(options);
var userContributions = contributions && contributions.split(',');
var validUserContributions = _.filter(function (userContribution) {
return validContributionTypes[userContribution] !== undefined;
})(userContributions);
var invalidUserContributions = _.filter(function (userContribution) {
return validContributionTypes[userContribution] === undefined;
})(userContributions);
if (_.isEmpty(validUserContributions)) {
throw new Error(`${invalidUserContributions.toString()} is/are invalid contribution type(s)`);
}
return validUserContributions;
}
module.exports = function (options, username, contributions) {

@@ -92,0 +78,0 @@ var defaults = {

"use strict";
var _ = require('lodash/fp');
var defaultTemplate = '[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square)](#contributors-)';
module.exports = function (options, contributors) {

@@ -8,0 +6,0 @@ return _.template(options.badgeTemplate || defaultTemplate)({

"use strict";
var _ = require('lodash/fp');
var util = require('../util');
var linkTemplate = _.template('<a href="<%= url %>" title="<%= description %>"><%= symbol %></a>');
function getType(options, contribution) {

@@ -13,10 +10,7 @@ var types = util.contributionTypes(options);

}
module.exports = function (options, contributor, contribution) {
var type = getType(options, contribution);
if (!type) {
throw new Error(`Unknown contribution type ${contribution} for contributor ${contributor.login || contributor.name}`);
}
var templateData = {

@@ -29,3 +23,2 @@ symbol: type.symbol,

var url = getUrl(contribution, contributor);
if (contribution.url) {

@@ -36,3 +29,2 @@ url = contribution.url;

}
return linkTemplate(_.assign({

@@ -42,3 +34,2 @@ url

};
function getUrl(contribution, contributor) {

@@ -45,0 +36,0 @@ if (contributor.login) {

"use strict";
var _ = require('lodash/fp');
var formatContributionType = require('./format-contribution-type');
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>?s=<%= options.imageSize %>" width="<%= options.imageSize %>px;" alt=""/>');
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>?s=<%= options.imageSize %>" width="<%= options.imageSize %>px;" alt="<%= name %>"/>');
var avatarBlockTemplate = _.template('<a href="<%= contributor.profile %>"><%= avatar %><br /><sub><b><%= name %></b></sub></a>');
var avatarBlockTemplateNoProfile = _.template('<%= avatar %><br /><sub><b><%= name %></b></sub>');
var contributorTemplate = _.template('<%= avatarBlock %><br /><%= contributions %>');
var defaultImageSize = 100;
function defaultTemplate(templateData) {
var name = escapeName(templateData.contributor.name);
var rawName = templateData.contributor.name || templateData.contributor.login;
var name = escapeName(rawName);
var avatar = avatarTemplate(_.assign(templateData, {
name
}));
var avatarBlockTemplateData = _.assign({

@@ -27,5 +20,3 @@ name,

}, templateData);
var avatarBlock = null;
if (templateData.contributor.profile) {

@@ -36,3 +27,2 @@ avatarBlock = avatarBlockTemplate(avatarBlockTemplateData);

}
return contributorTemplate(_.assign({

@@ -42,10 +32,7 @@ avatarBlock

}
function escapeName(name) {
return name.replace(new RegExp('\\|', 'g'), '&#124;');
return name.replace(new RegExp('\\|', 'g'), '&#124;').replace(new RegExp('\\"', 'g'), '&quot;');
}
module.exports = function (options, contributor) {
var formatter = _.partial(formatContributionType, [options, contributor]);
var contributions = contributor.contributions.map(formatter).join(' ');

@@ -59,6 +46,4 @@ var templateData = {

};
var customTemplate = options.contributorTemplate && _.template(options.contributorTemplate);
return (customTemplate || defaultTemplate)(templateData);
};
"use strict";
var _ = require('lodash/fp');
var floor = require('lodash/floor');
var formatBadge = require('./format-badge');
var formatContributor = require('./format-contributor');
function injectListBetweenTags(newContent) {

@@ -16,16 +14,27 @@ return function (previousContent) {

var startOfClosingTagIndex = previousContent.indexOf(`${tagToLookFor}END`, endOfOpeningTagIndex);
if (startOfOpeningTagIndex === -1 || endOfOpeningTagIndex === -1 || startOfClosingTagIndex === -1) {
return previousContent;
}
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n<!-- prettier-ignore-start -->', '\n<!-- markdownlint-disable -->', newContent, '<!-- markdownlint-restore -->', '\n<!-- prettier-ignore-end -->', '\n\n', previousContent.slice(startOfClosingTagIndex)].join('');
var startIndent = Math.max(0, previousContent.lastIndexOf('\n', startOfOpeningTagIndex));
var nbSpaces = startOfOpeningTagIndex - Math.min(startOfOpeningTagIndex, startIndent);
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n<!-- prettier-ignore-start -->', '\n<!-- markdownlint-disable -->', newContent.replace('\n', `\n${' '.repeat(nbSpaces - 1)}`), '<!-- markdownlint-restore -->', '\n<!-- prettier-ignore-end -->', '\n\n', previousContent.slice(startOfClosingTagIndex)].join('');
};
}
function formatLine(contributors) {
return `<td align="center">${contributors.join('</td>\n <td align="center">')}</td>`;
function formatLine(options, contributors) {
var width = floor(_.divide(100)(options.contributorsPerLine), 2);
var attributes = `align="center" valign="top" width="${width}%"`;
return `<td ${attributes}>${contributors.join(`</td>\n <td ${attributes}>`)}</td>`;
}
function formatFooter(options) {
if (!options.linkToUsage) {
return '';
}
return `<tr>\n <td align="center" size="13px" colspan="${options.contributorsPerLine}">\n <img src="${'https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg'}">\n <a href="${'https://all-contributors.js.org/docs/en/bot/usage'}">Add your contributions</a>\n </img>\n </td>\n </tr>`;
}
function generateContributorsList(options, contributors) {
var tableFooter = formatFooter(options);
var defaultWrapperTemplate = _.template('\n<table>\n <tbody><%= bodyContent %> </tbody>\n<%= tableFooterContent %></table>\n\n');
var wrapperTemplate = options.wrapperTemplate ? _.template(`\n${options.wrapperTemplate}\n\n`) : defaultWrapperTemplate;
var seperator = options.wrapperTemplate ? '\n </tr><br />\n <tr>\n ' : '\n </tr>\n <tr>\n ';
var tableFooterContent = '';
return _.flow(_.sortBy(function (contributor) {

@@ -37,7 +46,14 @@ if (options.contributorsSortAlphabetically) {

return formatContributor(options, contributor);
}), _.chunk(options.contributorsPerLine), _.map(formatLine), _.join('\n </tr>\n <tr>\n '), function (newContent) {
return `\n<table>\n <tr>\n ${newContent}\n </tr>\n</table>\n\n`;
}), _.chunk(options.contributorsPerLine), _.map(function (currentLineContributors) {
return formatLine(options, currentLineContributors);
}), _.join(seperator), function (newContent) {
if (options.linkToUsage) {
tableFooterContent = ` <tfoot>\n ${tableFooter}\n </tfoot>\n`;
}
return wrapperTemplate({
bodyContent: `\n <tr>\n ${newContent}\n </tr>\n`,
tableFooterContent
});
})(contributors);
}
function replaceBadge(newContent) {

@@ -50,11 +66,10 @@ return function (previousContent) {

var startOfClosingTagIndex = previousContent.indexOf(`${tagToLookFor}END`, endOfOpeningTagIndex);
if (startOfOpeningTagIndex === -1 || endOfOpeningTagIndex === -1 || startOfClosingTagIndex === -1) {
return previousContent;
}
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n', newContent, '\n', previousContent.slice(startOfClosingTagIndex)].join('');
var startIndent = Math.max(0, previousContent.lastIndexOf('\n', startOfOpeningTagIndex));
var nbSpaces = startOfOpeningTagIndex - Math.min(startOfOpeningTagIndex, startIndent);
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n', newContent.replace('\n', `\n${' '.repeat(nbSpaces)}`), '\n', previousContent.slice(startOfClosingTagIndex)].join('');
};
}
module.exports = function (options, contributors, fileContent) {

@@ -61,0 +76,0 @@ var contributorsList = contributors.length === 0 ? '\n' : generateContributorsList(options, contributors);

@@ -8,3 +8,2 @@ "use strict";

lowercase: true,
transform(msg) {

@@ -15,7 +14,5 @@ return msg.replace(/(^.*?) ([A-Z][a-z]+) \w*/, function () {

}
return `${words[0]} ${words[1].toLowerCase()} `;
});
}
},

@@ -22,0 +19,0 @@ atom: {

"use strict";
var fs = require('fs');
module.exports = function (file) {

@@ -6,0 +5,0 @@ return new Promise(function (resolve, reject) {

"use strict";
var util = require('../util');
var prompt = require('./prompt');
var initContent = require('./init-content');
var ensureFileExists = require('./file-exist');
var configFile = util.configFile;
var markdown = util.markdown;
function injectInFile(file, fn) {

@@ -19,3 +14,2 @@ return markdown.read(file).then(function (content) {

}
module.exports = function () {

@@ -22,0 +16,0 @@ return prompt().then(function (result) {

"use strict";
var _ = require('lodash/fp');
var injectContentBetween = require('../util').markdown.injectContentBetween;
var badgeContent = ['<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->', '[![All Contributors](https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square)](#contributors-)', '<!-- ALL-CONTRIBUTORS-BADGE:END -->'].join('\n');

@@ -11,25 +9,18 @@ var headerContent = 'Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):';

var footerContent = 'This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!';
function addBadge(lines) {
return injectContentBetween(lines, badgeContent, 1, 1);
}
function splitAndRejoin(fn) {
return _.flow(_.split('\n'), fn, _.join('\n'));
}
var findContributorsSection = _.findIndex(function (str) {
return str.toLowerCase().indexOf('# contributors') === 1;
});
function addContributorsList(lines) {
var insertionLine = findContributorsSection(lines);
if (insertionLine === -1) {
return lines.concat(['## Contributors ✨', '', headerContent, '', listContent, '', footerContent]);
}
return injectContentBetween(lines, listContent, insertionLine + 3, insertionLine + 3);
}
module.exports = {

@@ -36,0 +27,0 @@ addBadge: splitAndRejoin(addBadge),

"use strict";
var _ = require('lodash/fp');
var inquirer = require('inquirer');
var git = require('../util').git;
var conventions = require('./commit-conventions');
var questions = [{

@@ -77,7 +73,10 @@ type: 'input',

choices: Object.values(conventions),
default: 'none'
default: 'angular'
}, {
type: 'confirm',
name: 'linkToUsage',
message: 'Do you want to add a footer with link to usage?',
default: true
}];
var uniqueFiles = _.flow(_.compact, _.uniq);
module.exports = function () {

@@ -89,3 +88,2 @@ return git.getRepoInfo().then(function (repoInfo) {

}
return inquirer.prompt(questions);

@@ -104,3 +102,4 @@ }).then(function (answers) {

contributors: [],
contributorsPerLine: 7
contributorsPerLine: 7,
linkToUsage: answers.linkToUsage
},

@@ -107,0 +106,0 @@ contributorFile: answers.contributorFile,

"use strict";
var url = require('url');
var fetch = require('node-fetch');
var _require = require('../util/url'),
parseHttpUrl = _require.parseHttpUrl,
isValidHttpUrl = _require.isValidHttpUrl;
var _require = require('../util/url'),
parseHttpUrl = _require.parseHttpUrl,
isValidHttpUrl = _require.isValidHttpUrl;
/**

@@ -17,4 +16,2 @@ * Get the host based on public or enterprise GitHub.

*/
function getApiHost(hostname) {

@@ -24,3 +21,2 @@ if (!hostname) {

}
if (hostname !== 'https://github.com') {

@@ -30,6 +26,4 @@ // Assume Github Enterprise

}
return hostname.replace(/:\/\//, '://api.');
}
function getFetchHeaders(optionalPrivateToken) {

@@ -39,14 +33,10 @@ if (optionalPrivateToken === void 0) {

}
var fetchHeaders = {
'User-Agent': 'node-fetch'
};
if (optionalPrivateToken && optionalPrivateToken.length > 0) {
fetchHeaders.Authorization = `token ${optionalPrivateToken}`;
}
return fetchHeaders;
}
function getNextLink(link) {

@@ -56,14 +46,10 @@ if (!link) {

}
var nextLink = link.split(',').find(function (s) {
return s.includes('rel="next"');
});
if (!nextLink) {
return null;
}
return nextLink.split(';')[0].slice(1, -1);
return nextLink.split(';')[0].trim().slice(1, -1);
}
function getContributorsPage(githubUrl, optionalPrivateToken) {

@@ -76,3 +62,2 @@ return fetch(githubUrl, {

}
return res.json().then(function (body) {

@@ -82,3 +67,2 @@ if (res.status >= 400 || !res.ok) {

}
var contributorsIds = body.map(function (contributor) {

@@ -88,3 +72,2 @@ return contributor.login;

var nextLink = getNextLink(res.headers.get('link'));
if (nextLink) {

@@ -95,3 +78,2 @@ return getContributorsPage(nextLink, optionalPrivateToken).then(function (nextContributors) {

}
return contributorsIds;

@@ -101,3 +83,2 @@ });

}
var getUserInfo = function (username, hostname, optionalPrivateToken) {

@@ -107,3 +88,2 @@ if (!username) {

}
var root = getApiHost(hostname);

@@ -114,9 +94,10 @@ return fetch(`${root}/users/${username}`, {

return res.json().then(function (body) {
var profile = isValidHttpUrl(body.blog) ? body.blog : body.html_url; // Check for authentication required
var profile = isValidHttpUrl(body.blog) ? body.blog : body.html_url;
// Check for authentication required
if (!profile && body.message.includes('Must authenticate') || res.status === 401) {
throw new Error(`Missing authentication for GitHub API. Did you set PRIVATE_TOKEN?`);
} // Github throwing specific errors as 200...
}
// Github throwing specific errors as 200...
if (!profile && body.message) {

@@ -129,3 +110,2 @@ if (body.message.toLowerCase().includes('api rate limit exceeded')) {

}
profile = parseHttpUrl(profile);

@@ -141,3 +121,2 @@ return {

};
var getContributors = function (owner, name, hostname, optionalPrivateToken) {

@@ -147,3 +126,2 @@ var root = getApiHost(hostname);

};
module.exports = {

@@ -150,0 +128,0 @@ getUserInfo,

"use strict";
var fetch = require('node-fetch');
var addPrivateToken = function (url, privateToken) {

@@ -9,7 +8,5 @@ if (privateToken === void 0) {

}
if (privateToken === '') return url;
return `${url}&private_token=${privateToken}`.replace(/\?/g, '&').replace('&', '?');
};
var getUserInfo = function (username, hostname, privateToken) {

@@ -20,3 +17,2 @@ /* eslint-disable complexity */

}
return fetch(addPrivateToken(`${hostname}/api/v4/users?username=${username}`, privateToken), {

@@ -31,9 +27,8 @@ headers: {

throw new Error(`User ${username} not found`);
} // no private token present
}
// no private token present
if (body.message) {
throw new Error(body.message);
}
var user = body[0];

@@ -49,3 +44,2 @@ return {

};
var getContributors = function (owner, name, hostname, privateToken) {

@@ -55,3 +49,2 @@ if (!hostname) {

}
return fetch(addPrivateToken(`${hostname}/api/v4/projects?search=${name}`, privateToken), {

@@ -67,5 +60,3 @@ headers: {

}
var project = null;
for (var i = 0; i < projects.length; i++) {

@@ -77,7 +68,5 @@ if (projects[i].path_with_namespace === `${owner}/${name}`) {

}
if (!project) {
throw new Error(`Project ${owner}/${name} not found`);
}
return fetch(addPrivateToken(`${hostname}/api/v4/projects/${project.id}/repository/contributors`, privateToken), {

@@ -91,3 +80,2 @@ headers: {

}
return newRes.json().then(function (contributors) {

@@ -97,3 +85,2 @@ if (newRes.status >= 400 || !newRes.ok) {

}
return contributors.map(function (item) {

@@ -107,3 +94,2 @@ return item.name;

};
module.exports = {

@@ -110,0 +96,0 @@ getUserInfo,

"use strict";
var githubAPI = require('./github');
var gitlabAPI = require('./gitlab');
var privateToken = process.env && (process.env.ALL_CONTRIBUTORS_PRIVATE_TOKEN || process.env.PRIVATE_TOKEN) || '';

@@ -32,3 +30,2 @@ var SUPPORTED_REPO_TYPES = {

};
var getChoices = function () {

@@ -44,3 +41,2 @@ return Object.keys(SUPPORTED_REPO_TYPES).map(function (key) {

};
var getHostname = function (repoType, repoHost) {

@@ -52,6 +48,4 @@ if (repoHost) {

}
return null;
};
var getCheckKey = function (repoType) {

@@ -61,6 +55,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getTypeName = function (repoType) {

@@ -70,6 +62,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getLinkToCommits = function (repoType) {

@@ -79,6 +69,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getLinkToIssues = function (repoType) {

@@ -88,6 +76,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getLinkToReviews = function (repoType) {

@@ -97,6 +83,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getUserInfo = function (username, repoType, repoHost) {

@@ -106,6 +90,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
var getContributors = function (owner, name, repoType, repoHost) {

@@ -115,6 +97,4 @@ if (repoType in SUPPORTED_REPO_TYPES) {

}
return null;
};
module.exports = {

@@ -121,0 +101,0 @@ getChoices,

"use strict";
var fs = require('fs');
var pify = require('pify');
var _ = require('lodash/fp');
var jf = require('json-fixer');
var _require = require('./formatting'),
formatConfig = _require.formatConfig;
function readConfig(configPath) {
try {
var _jf = jf(fs.readFileSync(configPath, 'utf-8')),
config = _jf.data,
changed = _jf.changed;
config = _jf.data,
changed = _jf.changed;
if (!('repoType' in config)) {
config.repoType = 'github';
}
if (!('commitConvention' in config)) {
config.commitConvention = 'none';
config.commitConvention = 'angular';
}
if (changed) {
//Updates the file with fixes
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
fs.writeFileSync(configPath, formatConfig(configPath, config));
}
return config;

@@ -35,11 +29,8 @@ } catch (error) {

}
if (error.code === 'ENOENT') {
throw new Error(`Configuration file not found: ${configPath}`);
}
throw error;
}
}
function writeConfig(configPath, content) {

@@ -49,17 +40,12 @@ if (!content.projectOwner) {

}
if (!content.projectName) {
throw new Error(`Error! Project name is not set in ${configPath}`);
}
if (content.files && !content.files.length) {
throw new Error(`Error! Project files was overridden and is empty in ${configPath}`);
}
return pify(fs.writeFile)(configPath, `${JSON.stringify(content, null, 2)}\n`);
return pify(fs.writeFile)(configPath, `${formatConfig(configPath, content)}\n`);
}
function writeContributors(configPath, contributors) {
var config;
try {

@@ -70,10 +56,7 @@ config = readConfig(configPath);

}
var content = _.assign(config, {
contributors
});
return writeConfig(configPath, content);
}
module.exports = {

@@ -80,0 +63,0 @@ readConfig,

"use strict";
var _ = require('lodash/fp');
var repo = require('../repo');
var defaultTypes = function (repoType) {

@@ -141,8 +139,11 @@ return {

description: 'Videos'
},
promotion: {
symbol: '📣',
description: 'Promotion'
}
};
};
module.exports = function (options) {
return _.assign(defaultTypes(options.repoType), options.types);
};
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var path = require('path');
var spawn = require('child_process').spawn;
var _ = require('lodash/fp');
var pify = require('pify');
var conventions = require('../init/commit-conventions');
var _require = require('./config-file'),
readConfig = _require.readConfig;
readConfig = _require.readConfig;
var commitTemplate = '<%= prefix %> <%= (newContributor ? "Add" : "Update") %> @<%= username %> as a contributor';

@@ -32,10 +24,7 @@ var getRemoteOriginData = pify(function (cb) {

});
function parse(originUrl) {
var result = /:(\w+)\/([A-Za-z0-9-_]+)/.exec(originUrl);
if (!result) {
return null;
}
return {

@@ -46,7 +35,5 @@ projectOwner: result[1],

}
function getRepoInfo() {
return getRemoteOriginData().then(parse);
}
var spawnGitCommand = pify(function (args, cb) {

@@ -67,3 +54,2 @@ var git = spawn('git', args);

});
function commit(options, data) {

@@ -80,3 +66,2 @@ var files = options.files.concat(options.config);

}));
if (commitConvention.lowercase) commitMessage = commitConvention.transform(commitMessage);

@@ -86,3 +71,2 @@ return spawnGitCommand(['commit', '-m', commitMessage]);

}
module.exports = {

@@ -89,0 +73,0 @@ commit,

"use strict";
var fs = require('fs');
var pify = require('pify');
function read(filePath) {
return pify(fs.readFile)(filePath, 'utf8');
}
function write(filePath, content) {
return pify(fs.writeFile)(filePath, content);
}
function injectContentBetween(lines, content, startIndex, endIndex) {
return [].concat(lines.slice(0, startIndex), content, lines.slice(endIndex));
}
module.exports = {

@@ -20,0 +15,0 @@ read,

@@ -6,3 +6,2 @@ "use strict";

}
function isValidHttpUrl(input) {

@@ -16,3 +15,2 @@ try {

}
function parseHttpUrl(input) {

@@ -22,12 +20,8 @@ if (typeof input !== 'string') {

}
var url = new URL(new RegExp('^\\w+\\:\\/\\/').test(input) ? input : `http://${input}`);
if (!isHttpProtocol(url.protocol)) {
throw new TypeError('Provided URL has an invalid protocol');
}
return url.toString();
}
module.exports = {

@@ -34,0 +28,0 @@ isHttpProtocol,

{
"name": "all-contributors-cli",
"version": "6.20.0",
"version": "6.26.1",
"description": "Tool to easily add recognition for new contributors",

@@ -46,7 +46,7 @@ "bin": {

"@babel/runtime": "^7.7.6",
"async": "^3.0.1",
"async": "^3.1.0",
"chalk": "^4.0.0",
"didyoumean": "^1.2.1",
"inquirer": "^7.0.4",
"json-fixer": "^1.5.1",
"inquirer": "^7.3.3",
"json-fixer": "^1.6.8",
"lodash": "^4.11.2",

@@ -58,5 +58,5 @@ "node-fetch": "^2.6.0",

"devDependencies": {
"codecov": "^3.1.0",
"cz-conventional-changelog": "^3.0.0",
"git-cz": "^4.1.0",
"codecov": "^3.8.1",
"cz-conventional-changelog": "^3.3.0",
"git-cz": "^4.7.6",
"kcd-scripts": "^6.2.0",

@@ -66,2 +66,5 @@ "nock": "^12.0.0",

},
"optionalDependencies": {
"prettier": "^2"
},
"eslintIgnore": [

@@ -68,0 +71,0 @@ "node_modules",

<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [ all-contributors-cli ](#all-contributors-cli)
- [
all-contributors-cli
](#all-contributors-cli)
- [The problem](#the-problem)

@@ -46,4 +49,4 @@ - [This solution](#this-solution)

[![Build Status](https://img.shields.io/circleci/project/all-contributors/all-contributors-cli/master.svg)](https://circleci.com/gh/all-contributors/workflows/all-contributors-cli/tree/master)
[![Code Coverage](https://img.shields.io/codecov/c/github/all-contributors/all-contributors-cli.svg)](https://codecov.io/github/all-contributors/all-contributors-cli)
[![Build Status](https://dl.circleci.com/status-badge/img/gh/all-contributors/cli/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/all-contributors/cli/tree/master)
[![Code Coverage](https://codecov.io/gh/all-contributors/cli/branch/master/graph/badge.svg?token=jHIrCqevli)](https://codecov.io/gh/all-contributors/cli)
[![Version](https://img.shields.io/npm/v/all-contributors-cli.svg)](https://www.npmjs.com/package/all-contributors-cli)

@@ -83,82 +86,109 @@ [![Downloads](https://img.shields.io/npm/dm/all-contributors-cli.svg)](http://www.npmtrends.com/all-contributors-cli)

<table>
<tr>
<td align="center"><a href="https://github.com/jfmengels"><img src="https://avatars.githubusercontent.com/u/3869412?v=3" width="100px;" alt=""/><br /><sub><b>Jeroen Engels</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Tests">⚠️</a></td>
<td align="center"><a href="http://kentcdodds.com/"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt=""/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kentcdodds" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kentcdodds" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jccguimaraes"><img src="https://avatars.githubusercontent.com/u/14871650?v=3" width="100px;" alt=""/><br /><sub><b>João Guimarães</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jccguimaraes" title="Code">💻</a></td>
<td align="center"><a href="http://beneb.info"><img src="https://avatars.githubusercontent.com/u/1282980?v=3" width="100px;" alt=""/><br /><sub><b>Ben Briggs</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=ben-eb" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/itaisteinherz"><img src="https://avatars.githubusercontent.com/u/22768990?v=3" width="100px;" alt=""/><br /><sub><b>Itai Steinherz</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=itaisteinherz" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=itaisteinherz" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/alexjoverm"><img src="https://avatars.githubusercontent.com/u/5701162?v=3" width="100px;" alt=""/><br /><sub><b>Alex Jover</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=alexjoverm" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=alexjoverm" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://jerodsanto.net"><img src="https://avatars3.githubusercontent.com/u/8212?v=3" width="100px;" alt=""/><br /><sub><b>Jerod Santo</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jerodsanto" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/kevinjalbert"><img src="https://avatars1.githubusercontent.com/u/574871?v=3" width="100px;" alt=""/><br /><sub><b>Kevin Jalbert</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kevinjalbert" title="Code">💻</a></td>
<td align="center"><a href="https://i.am.charlike.online"><img src="https://avatars3.githubusercontent.com/u/5038030?v=4" width="100px;" alt=""/><br /><sub><b>tunnckoCore</b></sub></a><br /><a href="#tool-charlike" title="Tools">🔧</a></td>
<td align="center"><a href="https://machour.idk.tn/"><img src="https://avatars2.githubusercontent.com/u/304450?v=4" width="100px;" alt=""/><br /><sub><b>Mehdi Achour</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=machour" title="Code">💻</a></td>
<td align="center"><a href="https://codsen.com"><img src="https://avatars1.githubusercontent.com/u/8344688?v=4" width="100px;" alt=""/><br /><sub><b>Roy Revelt</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Arevelt" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/chrisinajar"><img src="https://avatars1.githubusercontent.com/u/422331?v=4" width="100px;" alt=""/><br /><sub><b>Chris Vickery</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chrisinajar" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/brycereynolds"><img src="https://avatars2.githubusercontent.com/u/1026002?v=4" width="100px;" alt=""/><br /><sub><b>Bryce Reynolds</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=brycereynolds" title="Code">💻</a></td>
<td align="center"><a href="http://www.jmeas.com"><img src="https://avatars3.githubusercontent.com/u/2322305?v=4" width="100px;" alt=""/><br /><sub><b>James, please</b></sub></a><br /><a href="#ideas-jmeas" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jmeas" title="Code">💻</a></td>
<td align="center"><a href="http://www.spyros.io"><img src="https://avatars3.githubusercontent.com/u/1057324?v=4" width="100px;" alt=""/><br /><sub><b>Spyros Ioakeimidis</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=spirosikmd" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/fadc80"><img src="https://avatars3.githubusercontent.com/u/12335761?v=4" width="100px;" alt=""/><br /><sub><b>Fernando Costa</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=fadc80" title="Code">💻</a></td>
<td align="center"><a href="https://snipe.net"><img src="https://avatars0.githubusercontent.com/u/197404?v=4" width="100px;" alt=""/><br /><sub><b>snipe</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=snipe" title="Documentation">📖</a></td>
<td align="center"><a href="http://gantlaborde.com/"><img src="https://avatars0.githubusercontent.com/u/997157?v=4" width="100px;" alt=""/><br /><sub><b>Gant Laborde</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=GantMan" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://in.linkedin.com/in/mzubairahmed"><img src="https://avatars2.githubusercontent.com/u/17708702?v=4" width="100px;" alt=""/><br /><sub><b>Md Zubair Ahmed</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3AM-ZubairAhmed" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Tests">⚠️</a></td>
<td align="center"><a href="http://bogas04.github.io"><img src="https://avatars3.githubusercontent.com/u/6177621?v=4" width="100px;" alt=""/><br /><sub><b>Divjot Singh</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=bogas04" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/tigermarques"><img src="https://avatars0.githubusercontent.com/u/15315098?v=4" width="100px;" alt=""/><br /><sub><b>João Marques</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tigermarques" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tigermarques" title="Documentation">📖</a> <a href="#ideas-tigermarques" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="http://hipstersmoothie.com"><img src="https://avatars3.githubusercontent.com/u/1192452?v=4" width="100px;" alt=""/><br /><sub><b>Andrew Lisowski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/chinesedfan"><img src="https://avatars3.githubusercontent.com/u/1736154?v=4" width="100px;" alt=""/><br /><sub><b>Xianming Zhong</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chinesedfan" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/xuchaoying"><img src="https://avatars2.githubusercontent.com/u/8073251?v=4" width="100px;" alt=""/><br /><sub><b>C.Y.Xu</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=xuchaoying" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/chris-dura"><img src="https://avatars3.githubusercontent.com/u/3680914?v=4" width="100px;" alt=""/><br /><sub><b>Dura</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chris-dura" title="Documentation">📖</a></td>
<td align="center"><a href="https://jakebolam.com"><img src="https://avatars2.githubusercontent.com/u/3534236?v=4" width="100px;" alt=""/><br /><sub><b>Jake Bolam</b></sub></a><br /><a href="#infra-jakebolam" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Ajakebolam" title="Reviewed Pull Requests">👀</a> <a href="#question-jakebolam" title="Answering Questions">💬</a></td>
<td align="center"><a href="http://maxcubing.wordpress.com"><img src="https://avatars0.githubusercontent.com/u/8260834?v=4" width="100px;" alt=""/><br /><sub><b>Maximilian Berkmann</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Documentation">📖</a> <a href="#tool-Berkmann18" title="Tools">🔧</a> <a href="#maintenance-Berkmann18" title="Maintenance">🚧</a> <a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3ABerkmann18" title="Reviewed Pull Requests">👀</a> <a href="#question-Berkmann18" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://github.com/tbenning"><img src="https://avatars2.githubusercontent.com/u/7265547?v=4" width="100px;" alt=""/><br /><sub><b>tbenning</b></sub></a><br /><a href="#design-tbenning" title="Design">🎨</a></td>
<td align="center"><a href="https://twitter.com/ehmicky"><img src="https://avatars2.githubusercontent.com/u/8136211?v=4" width="100px;" alt=""/><br /><sub><b>ehmicky</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=ehmicky" title="Code">💻</a></td>
<td align="center"><a href="https://ghuser.io/jamesgeorge007"><img src="https://avatars2.githubusercontent.com/u/25279263?v=4" width="100px;" alt=""/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jamesgeorge007" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/nschonni"><img src="https://avatars2.githubusercontent.com/u/1297909?v=4" width="100px;" alt=""/><br /><sub><b>Nick Schonning</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=nschonni" title="Code">💻</a></td>
<td align="center"><a href="https://cezaraugusto.net/"><img src="https://avatars0.githubusercontent.com/u/4672033?v=4" width="100px;" alt=""/><br /><sub><b>Cezar Augusto</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=cezaraugusto" title="Documentation">📖</a></td>
<td align="center"><a href="https://reinhold.is"><img src="https://avatars1.githubusercontent.com/u/5678122?v=4" width="100px;" alt=""/><br /><sub><b>Jeppe Reinhold</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=JReinhold" title="Code">💻</a></td>
<td align="center"><a href="https://rachelcarmena.github.io"><img src="https://avatars0.githubusercontent.com/u/22792183?v=4" width="100px;" alt=""/><br /><sub><b>Rachel M. Carmena</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=rachelcarmena" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/simon300000"><img src="https://avatars1.githubusercontent.com/u/12656264?v=4" width="100px;" alt=""/><br /><sub><b>simon3000</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=simon300000" title="Tests">⚠️</a></td>
<td align="center"><a href="https://sno2wman.dev/"><img src="https://avatars3.githubusercontent.com/u/15155608?v=4" width="100px;" alt=""/><br /><sub><b>SnO₂WMaN</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=SnO2WMaN" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.destro.me"><img src="https://avatars1.githubusercontent.com/u/7031675?v=4" width="100px;" alt=""/><br /><sub><b>Fabrizio</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Adexpota" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=dexpota" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/kharaone"><img src="https://avatars1.githubusercontent.com/u/6599271?v=4" width="100px;" alt=""/><br /><sub><b>kharaone</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kharaone" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/marceloalves"><img src="https://avatars1.githubusercontent.com/u/216782?v=4" width="100px;" alt=""/><br /><sub><b>Marcelo Alves</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=MarceloAlves" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=MarceloAlves" title="Tests">⚠️</a></td>
<td align="center"><a href="https://anandchowdhary.com/?utm_source=github&utm_campaign=about-link"><img src="https://avatars3.githubusercontent.com/u/2841780?v=4" width="100px;" alt=""/><br /><sub><b>Anand Chowdhary</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=AnandChowdhary" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3AAnandChowdhary" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=AnandChowdhary" title="Code">💻</a></td>
<td align="center"><a href="https://phacks.dev/"><img src="https://avatars1.githubusercontent.com/u/2587348?v=4" width="100px;" alt=""/><br /><sub><b>Nicolas Goutay</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=phacks" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tylerkrupicka"><img src="https://avatars1.githubusercontent.com/u/5761061?s=460&v=4" width="100px;" alt=""/><br /><sub><b>Tyler Krupicka</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tylerkrupicka" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tylerkrupicka" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/smoia"><img src="https://avatars3.githubusercontent.com/u/35300580?v=4" width="100px;" alt=""/><br /><sub><b>Stefano Moia</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=smoia" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/ilai-deutel"><img src="https://avatars0.githubusercontent.com/u/10098207?v=4" width="100px;" alt=""/><br /><sub><b>Ilaï Deutel</b></sub></a><br /><a href="#platform-ilai-deutel" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/jdalrymple"><img src="https://avatars3.githubusercontent.com/u/3743662?v=4" width="100px;" alt=""/><br /><sub><b>Justin Dalrymple</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jdalrymple" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/k3nsei"><img src="https://avatars2.githubusercontent.com/u/190422?v=4" width="100px;" alt=""/><br /><sub><b>Piotr Stępniewski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Ak3nsei" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=k3nsei" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=k3nsei" title="Tests">⚠️</a></td>
<td align="center"><a href="https://dev.to/gr2m"><img src="https://avatars3.githubusercontent.com/u/39992?v=4" width="100px;" alt=""/><br /><sub><b>Gregor Martynus</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Agr2m" title="Reviewed Pull Requests">👀</a> <a href="#question-gr2m" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://sinchang.me/"><img src="https://avatars0.githubusercontent.com/u/3297859?v=4" width="100px;" alt=""/><br /><sub><b>Jeff Wen</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Asinchang" title="Reviewed Pull Requests">👀</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/pavelloz"><img src="https://avatars1.githubusercontent.com/u/546845?v=4" width="100px;" alt=""/><br /><sub><b>Paweł Kowalski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=pavelloz" title="Code">💻</a></td>
<td align="center"><a href="https://www.linkedin.com/in/mloning/"><img src="https://avatars3.githubusercontent.com/u/21020482?v=4" width="100px;" alt=""/><br /><sub><b>Markus Löning</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=mloning" title="Code">💻</a></td>
<td align="center"><a href="https://dlaa.me/"><img src="https://avatars1.githubusercontent.com/u/1828270?v=4" width="100px;" alt=""/><br /><sub><b>David Anson</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3ADavidAnson" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://favware.tech/"><img src="https://avatars3.githubusercontent.com/u/4019718?v=4" width="100px;" alt=""/><br /><sub><b>Jeroen Claassens</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Favna" title="Code">💻</a></td>
<td align="center"><a href="https://erekspeed.com"><img src="https://avatars3.githubusercontent.com/u/1176550?v=4" width="100px;" alt=""/><br /><sub><b>Erek Speed</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=melink14" title="Code">💻</a></td>
<td align="center"><a href="http://www.hirez.io"><img src="https://avatars1.githubusercontent.com/u/1430726?v=4" width="100px;" alt=""/><br /><sub><b>Shai Reznik</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Ashairez" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=shairez" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=shairez" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="https://darekkay.com"><img src="https://avatars0.githubusercontent.com/u/3101914?v=4" width="100px;" alt=""/><br /><sub><b>Darek Kay</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=darekkay" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=darekkay" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/LaChapeliere"><img src="https://avatars2.githubusercontent.com/u/7062546?v=4" width="100px;" alt=""/><br /><sub><b>LaChapeliere</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=LaChapeliere" title="Code">💻</a></td>
</tr>
<tbody>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jfmengels"><img src="https://avatars.githubusercontent.com/u/3869412?v=3?s=100" width="100px;" alt="Jeroen Engels"/><br /><sub><b>Jeroen Engels</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://kentcdodds.com/"><img src="https://avatars.githubusercontent.com/u/1500684?v=3?s=100" width="100px;" alt="Kent C. Dodds"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kentcdodds" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=kentcdodds" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jccguimaraes"><img src="https://avatars.githubusercontent.com/u/14871650?v=3?s=100" width="100px;" alt="João Guimarães"/><br /><sub><b>João Guimarães</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jccguimaraes" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://beneb.info"><img src="https://avatars.githubusercontent.com/u/1282980?v=3?s=100" width="100px;" alt="Ben Briggs"/><br /><sub><b>Ben Briggs</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=ben-eb" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/itaisteinherz"><img src="https://avatars.githubusercontent.com/u/22768990?v=3?s=100" width="100px;" alt="Itai Steinherz"/><br /><sub><b>Itai Steinherz</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=itaisteinherz" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=itaisteinherz" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/alexjoverm"><img src="https://avatars.githubusercontent.com/u/5701162?v=3?s=100" width="100px;" alt="Alex Jover"/><br /><sub><b>Alex Jover</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=alexjoverm" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=alexjoverm" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://jerodsanto.net"><img src="https://avatars3.githubusercontent.com/u/8212?v=3?s=100" width="100px;" alt="Jerod Santo"/><br /><sub><b>Jerod Santo</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jerodsanto" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/kevinjalbert"><img src="https://avatars1.githubusercontent.com/u/574871?v=3?s=100" width="100px;" alt="Kevin Jalbert"/><br /><sub><b>Kevin Jalbert</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kevinjalbert" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://i.am.charlike.online"><img src="https://avatars3.githubusercontent.com/u/5038030?v=4?s=100" width="100px;" alt="tunnckoCore"/><br /><sub><b>tunnckoCore</b></sub></a><br /><a href="#tool-charlike" title="Tools">🔧</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://machour.idk.tn/"><img src="https://avatars2.githubusercontent.com/u/304450?v=4?s=100" width="100px;" alt="Mehdi Achour"/><br /><sub><b>Mehdi Achour</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=machour" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://codsen.com"><img src="https://avatars1.githubusercontent.com/u/8344688?v=4?s=100" width="100px;" alt="Roy Revelt"/><br /><sub><b>Roy Revelt</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Arevelt" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chrisinajar"><img src="https://avatars1.githubusercontent.com/u/422331?v=4?s=100" width="100px;" alt="Chris Vickery"/><br /><sub><b>Chris Vickery</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chrisinajar" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/brycereynolds"><img src="https://avatars2.githubusercontent.com/u/1026002?v=4?s=100" width="100px;" alt="Bryce Reynolds"/><br /><sub><b>Bryce Reynolds</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=brycereynolds" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.jmeas.com"><img src="https://avatars3.githubusercontent.com/u/2322305?v=4?s=100" width="100px;" alt="James, please"/><br /><sub><b>James, please</b></sub></a><br /><a href="#ideas-jmeas" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/all-contributors/cli/commits?author=jmeas" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.spyros.io"><img src="https://avatars3.githubusercontent.com/u/1057324?v=4?s=100" width="100px;" alt="Spyros Ioakeimidis"/><br /><sub><b>Spyros Ioakeimidis</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=spirosikmd" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/fadc80"><img src="https://avatars3.githubusercontent.com/u/12335761?v=4?s=100" width="100px;" alt="Fernando Costa"/><br /><sub><b>Fernando Costa</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=fadc80" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://snipe.net"><img src="https://avatars0.githubusercontent.com/u/197404?v=4?s=100" width="100px;" alt="snipe"/><br /><sub><b>snipe</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=snipe" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://gantlaborde.com/"><img src="https://avatars0.githubusercontent.com/u/997157?v=4?s=100" width="100px;" alt="Gant Laborde"/><br /><sub><b>Gant Laborde</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=GantMan" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://in.linkedin.com/in/mzubairahmed"><img src="https://avatars2.githubusercontent.com/u/17708702?v=4?s=100" width="100px;" alt="Md Zubair Ahmed"/><br /><sub><b>Md Zubair Ahmed</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/issues?q=author%3AM-ZubairAhmed" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://bogas04.github.io"><img src="https://avatars3.githubusercontent.com/u/6177621?v=4?s=100" width="100px;" alt="Divjot Singh"/><br /><sub><b>Divjot Singh</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=bogas04" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tigermarques"><img src="https://avatars0.githubusercontent.com/u/15315098?v=4?s=100" width="100px;" alt="João Marques"/><br /><sub><b>João Marques</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tigermarques" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=tigermarques" title="Documentation">📖</a> <a href="#ideas-tigermarques" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://hipstersmoothie.com"><img src="https://avatars3.githubusercontent.com/u/1192452?v=4?s=100" width="100px;" alt="Andrew Lisowski"/><br /><sub><b>Andrew Lisowski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chinesedfan"><img src="https://avatars3.githubusercontent.com/u/1736154?v=4?s=100" width="100px;" alt="Xianming Zhong"/><br /><sub><b>Xianming Zhong</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chinesedfan" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/xuchaoying"><img src="https://avatars2.githubusercontent.com/u/8073251?v=4?s=100" width="100px;" alt="C.Y.Xu"/><br /><sub><b>C.Y.Xu</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=xuchaoying" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chris-dura"><img src="https://avatars3.githubusercontent.com/u/3680914?v=4?s=100" width="100px;" alt="Dura"/><br /><sub><b>Dura</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chris-dura" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://jakebolam.com"><img src="https://avatars2.githubusercontent.com/u/3534236?v=4?s=100" width="100px;" alt="Jake Bolam"/><br /><sub><b>Jake Bolam</b></sub></a><br /><a href="#infra-jakebolam" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Ajakebolam" title="Reviewed Pull Requests">👀</a> <a href="#question-jakebolam" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://maxcubing.wordpress.com"><img src="https://avatars0.githubusercontent.com/u/8260834?v=4?s=100" width="100px;" alt="Maximilian Berkmann"/><br /><sub><b>Maximilian Berkmann</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Documentation">📖</a> <a href="#tool-Berkmann18" title="Tools">🔧</a> <a href="#maintenance-Berkmann18" title="Maintenance">🚧</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3ABerkmann18" title="Reviewed Pull Requests">👀</a> <a href="#question-Berkmann18" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tbenning"><img src="https://avatars2.githubusercontent.com/u/7265547?v=4?s=100" width="100px;" alt="tbenning"/><br /><sub><b>tbenning</b></sub></a><br /><a href="#design-tbenning" title="Design">🎨</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://twitter.com/ehmicky"><img src="https://avatars2.githubusercontent.com/u/8136211?v=4?s=100" width="100px;" alt="ehmicky"/><br /><sub><b>ehmicky</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=ehmicky" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://ghuser.io/jamesgeorge007"><img src="https://avatars2.githubusercontent.com/u/25279263?v=4?s=100" width="100px;" alt="James George"/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jamesgeorge007" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/nschonni"><img src="https://avatars2.githubusercontent.com/u/1297909?v=4?s=100" width="100px;" alt="Nick Schonning"/><br /><sub><b>Nick Schonning</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=nschonni" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://cezaraugusto.net/"><img src="https://avatars0.githubusercontent.com/u/4672033?v=4?s=100" width="100px;" alt="Cezar Augusto"/><br /><sub><b>Cezar Augusto</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=cezaraugusto" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://reinhold.is"><img src="https://avatars1.githubusercontent.com/u/5678122?v=4?s=100" width="100px;" alt="Jeppe Reinhold"/><br /><sub><b>Jeppe Reinhold</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=JReinhold" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://rachelcarmena.github.io"><img src="https://avatars0.githubusercontent.com/u/22792183?v=4?s=100" width="100px;" alt="Rachel M. Carmena"/><br /><sub><b>Rachel M. Carmena</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=rachelcarmena" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/simon300000"><img src="https://avatars1.githubusercontent.com/u/12656264?v=4?s=100" width="100px;" alt="simon3000"/><br /><sub><b>simon3000</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=simon300000" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://sno2wman.dev/"><img src="https://avatars3.githubusercontent.com/u/15155608?v=4?s=100" width="100px;" alt="SnO₂WMaN"/><br /><sub><b>SnO₂WMaN</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=SnO2WMaN" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://www.destro.me"><img src="https://avatars1.githubusercontent.com/u/7031675?v=4?s=100" width="100px;" alt="Fabrizio"/><br /><sub><b>Fabrizio</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Adexpota" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=dexpota" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/kharaone"><img src="https://avatars1.githubusercontent.com/u/6599271?v=4?s=100" width="100px;" alt="kharaone"/><br /><sub><b>kharaone</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kharaone" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/marceloalves"><img src="https://avatars1.githubusercontent.com/u/216782?v=4?s=100" width="100px;" alt="Marcelo Alves"/><br /><sub><b>Marcelo Alves</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=MarceloAlves" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=MarceloAlves" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://anandchowdhary.com/?utm_source=github&utm_campaign=about-link"><img src="https://avatars3.githubusercontent.com/u/2841780?v=4?s=100" width="100px;" alt="Anand Chowdhary"/><br /><sub><b>Anand Chowdhary</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=AnandChowdhary" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/issues?q=author%3AAnandChowdhary" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=AnandChowdhary" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://phacks.dev/"><img src="https://avatars1.githubusercontent.com/u/2587348?v=4?s=100" width="100px;" alt="Nicolas Goutay"/><br /><sub><b>Nicolas Goutay</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=phacks" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tylerkrupicka"><img src="https://avatars1.githubusercontent.com/u/5761061?s=460&v=4?s=100" width="100px;" alt="Tyler Krupicka"/><br /><sub><b>Tyler Krupicka</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tylerkrupicka" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=tylerkrupicka" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/smoia"><img src="https://avatars3.githubusercontent.com/u/35300580?v=4?s=100" width="100px;" alt="Stefano Moia"/><br /><sub><b>Stefano Moia</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=smoia" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/ilai-deutel"><img src="https://avatars0.githubusercontent.com/u/10098207?v=4?s=100" width="100px;" alt="Ilaï Deutel"/><br /><sub><b>Ilaï Deutel</b></sub></a><br /><a href="#platform-ilai-deutel" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jdalrymple"><img src="https://avatars3.githubusercontent.com/u/3743662?v=4?s=100" width="100px;" alt="Justin Dalrymple"/><br /><sub><b>Justin Dalrymple</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jdalrymple" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jdalrymple" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/k3nsei"><img src="https://avatars2.githubusercontent.com/u/190422?v=4?s=100" width="100px;" alt="Piotr Stępniewski"/><br /><sub><b>Piotr Stępniewski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Ak3nsei" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=k3nsei" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=k3nsei" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://dev.to/gr2m"><img src="https://avatars3.githubusercontent.com/u/39992?v=4?s=100" width="100px;" alt="Gregor Martynus"/><br /><sub><b>Gregor Martynus</b></sub></a><br /><a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Agr2m" title="Reviewed Pull Requests">👀</a> <a href="#question-gr2m" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://sinchang.me/"><img src="https://avatars0.githubusercontent.com/u/3297859?v=4?s=100" width="100px;" alt="Jeff Wen"/><br /><sub><b>Jeff Wen</b></sub></a><br /><a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Asinchang" title="Reviewed Pull Requests">👀</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/pavelloz"><img src="https://avatars1.githubusercontent.com/u/546845?v=4?s=100" width="100px;" alt="Paweł Kowalski"/><br /><sub><b>Paweł Kowalski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=pavelloz" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://www.linkedin.com/in/mloning/"><img src="https://avatars3.githubusercontent.com/u/21020482?v=4?s=100" width="100px;" alt="Markus Löning"/><br /><sub><b>Markus Löning</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=mloning" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://dlaa.me/"><img src="https://avatars1.githubusercontent.com/u/1828270?v=4?s=100" width="100px;" alt="David Anson"/><br /><sub><b>David Anson</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3ADavidAnson" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://favware.tech/"><img src="https://avatars3.githubusercontent.com/u/4019718?v=4?s=100" width="100px;" alt="Jeroen Claassens"/><br /><sub><b>Jeroen Claassens</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Favna" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://erekspeed.com"><img src="https://avatars3.githubusercontent.com/u/1176550?v=4?s=100" width="100px;" alt="Erek Speed"/><br /><sub><b>Erek Speed</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=melink14" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.hirez.io"><img src="https://avatars1.githubusercontent.com/u/1430726?v=4?s=100" width="100px;" alt="Shai Reznik"/><br /><sub><b>Shai Reznik</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Ashairez" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=shairez" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=shairez" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://darekkay.com"><img src="https://avatars0.githubusercontent.com/u/3101914?v=4?s=100" width="100px;" alt="Darek Kay"/><br /><sub><b>Darek Kay</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=darekkay" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=darekkay" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/LaChapeliere"><img src="https://avatars2.githubusercontent.com/u/7062546?v=4?s=100" width="100px;" alt="LaChapeliere"/><br /><sub><b>LaChapeliere</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=LaChapeliere" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/SirWindfield"><img src="https://avatars.githubusercontent.com/u/5113257?v=4?s=100" width="100px;" alt="SirWindfield"/><br /><sub><b>SirWindfield</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=SirWindfield" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://vapurrmaid.ca"><img src="https://avatars.githubusercontent.com/u/11184711?v=4?s=100" width="100px;" alt="G r e y"/><br /><sub><b>G r e y</b></sub></a><br /><a href="#security-vapurrmaid" title="Security">🛡️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://chezsoi.org/lucas/blog/"><img src="https://avatars.githubusercontent.com/u/925560?v=4?s=100" width="100px;" alt="Lucas Cimon"/><br /><sub><b>Lucas Cimon</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Lucas-C" title="Documentation">📖</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.joshuakgoldberg.com"><img src="https://avatars.githubusercontent.com/u/3335181?v=4?s=100" width="100px;" alt="Josh Goldberg"/><br /><sub><b>Josh Goldberg</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3AJoshuaKGoldberg" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://tenshiamd.com"><img src="https://avatars.githubusercontent.com/u/13580338?v=4?s=100" width="100px;" alt="Angel Aviel Domaoan"/><br /><sub><b>Angel Aviel Domaoan</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3AtenshiAMD" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://12rambau.github.io/web-resume/"><img src="https://avatars.githubusercontent.com/u/12596392?v=4?s=100" width="100px;" alt="Rambaud Pierrick"/><br /><sub><b>Rambaud Pierrick</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=12rambau" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://www.lieret.net"><img src="https://avatars.githubusercontent.com/u/13602468?v=4?s=100" width="100px;" alt="Kilian Lieret"/><br /><sub><b>Kilian Lieret</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Aklieret" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/KnorpelSenf"><img src="https://avatars.githubusercontent.com/u/12952387?v=4?s=100" width="100px;" alt="KnorpelSenf"/><br /><sub><b>KnorpelSenf</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3AKnorpelSenf" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="16.66%"><a href="https://rea9lizer.carrd.co"><img src="https://avatars.githubusercontent.com/u/68494132?v=4?s=100" width="100px;" alt="QriLa &#124; Hyeon Gu"/><br /><sub><b>QriLa &#124; Hyeon Gu</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=qyurila" title="Code">💻</a></td>
<td align="center" valign="top" width="16.66%"><a href="http://www.dwmkerr.com"><img src="https://avatars.githubusercontent.com/u/1926984?v=4?s=100" width="100px;" alt="Dave Kerr"/><br /><sub><b>Dave Kerr</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Adwmkerr" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=dwmkerr" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/commits?author=dwmkerr" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="16.66%"><a href="https://github.com/schweden1997"><img src="https://avatars.githubusercontent.com/u/6765735?v=4?s=100" width="100px;" alt="Marco De Gaetano"/><br /><sub><b>Marco De Gaetano</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Aschweden1997" title="Bug reports">🐛</a></td>
</tr>
</tbody>
<tfoot>
<tr>
<td align="center" size="13px" colspan="6">
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
</img>
</td>
</tr>
</tfoot>
</table>
<!-- markdownlint-enable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->

@@ -165,0 +195,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc