From 72b22181e0bdbdb286f849cc31818a2a7ff67540 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Thu, 11 Apr 2019 17:33:16 +0100 Subject: [PATCH 01/28] feat: added NYC for auto-fetching Added `name-your-contributors` for the upcoming auto-fetching feature --- .gitignore | 1 + package.json | 1 + src/cli.js | 71 +++++++++++++++++++++++++++++++++++++++++++ src/discover/index.js | 18 +++++++++++ 4 files changed, 91 insertions(+) create mode 100644 src/discover/index.js diff --git a/.gitignore b/.gitignore index 09048d22..f662033a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ dist # when working with contributors package-lock.json yarn.lock +.vscode diff --git a/package.json b/package.json index 6f2ba89a..b4650480 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "chalk": "^2.3.0", "inquirer": "^6.2.1", "lodash": "^4.11.2", + "name-your-contributors": "^3.4.0", "pify": "^4.0.1", "request": "^2.72.0", "yargs": "^13.1.0" diff --git a/src/cli.js b/src/cli.js index 96f0895d..a1dbe7ca 100755 --- a/src/cli.js +++ b/src/cli.js @@ -11,6 +11,7 @@ const generate = require('./generate') const util = require('./util') const repo = require('./repo') const updateContributors = require('./contributors') +const { getContributors } = require('./discover') const cwd = process.cwd() const defaultRCFile = path.join(cwd, '.all-contributorsrc') @@ -83,6 +84,8 @@ function checkContributors(argv) { configData.repoHost, ) .then(repoContributors => { + // console.log('repoContributors=') + // console.dir(repoContributors) //['jfmengels', 'jakebolam', ...] const checkKey = repo.getCheckKey(configData.repoType) const knownContributions = configData.contributors.reduce((obj, item) => { obj[item[checkKey]] = item.contributions @@ -119,6 +122,72 @@ function checkContributors(argv) { }) } +function fetchContributors(argv) { + const configData = util.configFile.readConfig(argv.config) + // console.log('configData') + // console.dir(configData) + + return getContributors( + configData.projectOwner, + configData.projectName, + ) + .then(repoContributors => { + // repoContributors = {prCreators, prCommentators, issueCreators, issueCommentators, reviewers, commitAuthors, commitCommentators} + // console.dir(repoContributors) + + const checkKey = repo.getCheckKey(configData.repoType) + const knownContributions = configData.contributors.reduce((obj, item) => { + obj[item[checkKey]] = item.contributions + return obj + }, {}) + // console.log('knownContributions', knownContributions) //{ jfmengels: ['code', 'test', 'doc'], ...} + const knownContributors = configData.contributors.map( + contributor => contributor[checkKey], + ) + // console.log('knownContributors', knownContributors) //['kentcdodds', 'ben-eb', ...] + + let contributors = new Set(repoContributors.prCreators.map(usr => usr.login)) + + repoContributors.issueCreators.forEach(usr => contributors.add(usr.login)) + repoContributors.reviewers.forEach(usr => contributors.add(usr.login)) + repoContributors.commitAuthors.forEach(usr => contributors.add(usr.login)) + contributors = Array.from(contributors) + + // console.log('ctbs=', contributors); + const missingInConfig = contributors.filter( + key => !knownContributors.includes(key), + ) + + const missingFromRepo = knownContributors.filter(key => { + return ( + !contributors.includes(key) && + (knownContributions[key].includes('code') || + knownContributions[key].includes('test')) + ) + }) + + if (missingInConfig.length) { + process.stdout.write( + chalk.bold('Missing contributors in .all-contributorsrc:\n'), + ) + process.stdout.write(` ${missingInConfig.join(', ')}\n`) + } + + if (missingFromRepo.length) { + process.stdout.write( + chalk.bold('Unknown contributors found in .all-contributorsrc:\n'), + ) + process.stdout.write(`${missingFromRepo.join(', ')}\n`) + } + + //1. Auto-add reviewers for review + //2. Auto-add issue creators for bug/security + //3. Find a way to distinguish bug from security contributions + //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa + }, + err => console.error('checkContributorsFromNYC error:', err)) +} + function onError(error) { if (error) { console.error(error.message) @@ -169,6 +238,8 @@ promptForCommand(yargv) return addContribution(yargv) case 'check': return checkContributors(yargv) + case 'fetch': + return fetchContributors(yargv) default: throw new Error(`Unknown command ${command}`) } diff --git a/src/discover/index.js b/src/discover/index.js new file mode 100644 index 00000000..dfecdc7f --- /dev/null +++ b/src/discover/index.js @@ -0,0 +1,18 @@ +const nyc = require('../../../name-your-contributors') + +const privateToken = (process.env && process.env.PRIVATE_TOKEN) || '' + +/** + * @async + */ +const getContributors = function(owner, name, token = privateToken) { + return nyc.repoContributors({ + token, + user: owner, + repo: name, + commits: true + }) +} + + +module.exports = { getContributors } From 6b668bc96f01cd538e5929d1c0cd36e02b2f1379 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Fri, 12 Apr 2019 18:08:59 +0100 Subject: [PATCH 02/28] chore(discover): addded a label classifier And started improving the auto-fetching --- src/cli.js | 37 ++++++++++++++------- src/discover/__tests__/labelClass.js | 9 ++++++ src/discover/index.js | 5 ++- src/discover/labelClass.js | 48 ++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 src/discover/__tests__/labelClass.js create mode 100644 src/discover/labelClass.js diff --git a/src/cli.js b/src/cli.js index a1dbe7ca..cc3ad342 100755 --- a/src/cli.js +++ b/src/cli.js @@ -11,7 +11,8 @@ const generate = require('./generate') const util = require('./util') const repo = require('./repo') const updateContributors = require('./contributors') -const { getContributors } = require('./discover') +const {getContributors} = require('./discover') +const {classifyLabel} = require('./discover/labelClass') const cwd = process.cwd() const defaultRCFile = path.join(cwd, '.all-contributorsrc') @@ -60,6 +61,7 @@ function startGeneration(argv) { } function addContribution(argv) { + // console.log('argv=', argv); const username = argv._[1] const contributions = argv._[2] // Add or update contributor in the config file @@ -127,11 +129,8 @@ function fetchContributors(argv) { // console.log('configData') // console.dir(configData) - return getContributors( - configData.projectOwner, - configData.projectName, - ) - .then(repoContributors => { + return getContributors(configData.projectOwner, configData.projectName).then( + repoContributors => { // repoContributors = {prCreators, prCommentators, issueCreators, issueCommentators, reviewers, commitAuthors, commitCommentators} // console.dir(repoContributors) @@ -146,7 +145,9 @@ function fetchContributors(argv) { ) // console.log('knownContributors', knownContributors) //['kentcdodds', 'ben-eb', ...] - let contributors = new Set(repoContributors.prCreators.map(usr => usr.login)) + let contributors = new Set( + repoContributors.prCreators.map(usr => usr.login), + ) repoContributors.issueCreators.forEach(usr => contributors.add(usr.login)) repoContributors.reviewers.forEach(usr => contributors.add(usr.login)) @@ -166,7 +167,7 @@ function fetchContributors(argv) { ) }) - if (missingInConfig.length) { + /* if (missingInConfig.length) { process.stdout.write( chalk.bold('Missing contributors in .all-contributorsrc:\n'), ) @@ -178,14 +179,28 @@ function fetchContributors(argv) { chalk.bold('Unknown contributors found in .all-contributorsrc:\n'), ) process.stdout.write(`${missingFromRepo.join(', ')}\n`) - } + } */ //1. Auto-add reviewers for review //2. Auto-add issue creators for bug/security - //3. Find a way to distinguish bug from security contributions + //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa + + let args = Object.assign({}, configData, {_: []}); + repoContributors.reviewers.forEach(usr => { + args._ = ['', usr.login, 'review'] + addContribution(args) + console.log(`Adding Reviewer ${usr.login}`) + }) + + repoContributors.issueCreators.forEach(usr => { + console.log('usr=', usr.login, 'labels=', usr.labels); + console.log('categories', usr.labels.map(lbl => classifyLabel(lbl))) + }) + }, - err => console.error('checkContributorsFromNYC error:', err)) + err => console.error('checkContributorsFromNYC error:', err), + ) } function onError(error) { diff --git a/src/discover/__tests__/labelClass.js b/src/discover/__tests__/labelClass.js new file mode 100644 index 00000000..c751bde5 --- /dev/null +++ b/src/discover/__tests__/labelClass.js @@ -0,0 +1,9 @@ +import classifyLabel from '../labelClass' + +test('simple labels', () => { + expect(classifyLabel('bug')).toStrictEqual('bug'); + // expect(classifyLabel('feature')).toStrictEqual('code'); + expect(classifyLabel('code')).toStrictEqual('code'); + // expect(classifyLabel('test')).toStrictEqual('test'); + // expect(classifyLabel('testing')).toStrictEqual('test'); +}); \ No newline at end of file diff --git a/src/discover/index.js b/src/discover/index.js index dfecdc7f..be5fba64 100644 --- a/src/discover/index.js +++ b/src/discover/index.js @@ -10,9 +10,8 @@ const getContributors = function(owner, name, token = privateToken) { token, user: owner, repo: name, - commits: true + commits: true, }) } - -module.exports = { getContributors } +module.exports = {getContributors} diff --git a/src/discover/labelClass.js b/src/discover/labelClass.js new file mode 100644 index 00000000..e53ee430 --- /dev/null +++ b/src/discover/labelClass.js @@ -0,0 +1,48 @@ +// const ctrbType = require('../util/contributions-types'); + +const CATEGORIES = ['blog', 'bug', 'business', 'code', 'content', 'design', 'doc', 'eventOrganizing', 'example', 'financial', 'fundingFinding', 'ideas', 'infra', 'maintenance', 'platform', 'plugin', 'projectManagement', 'question', 'review', 'security', 'talk', 'test', 'tool', 'translation', 'tutorial', 'userTesting', 'video'];//Object.keys(ctrbType('github')); +/* +['blog', 'bug', 'business', 'code', 'content', 'design', 'doc', 'eventOrganizing', 'example', 'financial', 'fundingFinding', 'ideas', 'infra', 'maintenance', 'platform', 'plugin', 'projectManagement', 'question', 'review', 'security', 'talk', 'test', 'tool', 'translation', 'tutorial', 'userTesting', 'video'] +*/ + +const labelPrefixes = [ + 'type:', + 'cat:', + 'type-', + 'cat-', +]; + +const RE = /(type|cat|category)?\s*[:-]?\s*(\w+)/gi; + +module.exports = function classifyLabel(label) { + const match = RE.exec(label); + console.log('match=', match); + if (match === null) throw new Error(`The label ${label} couldn't be classified`); + const extractedLabel = match[match.length - 1]; + if (CATEGORIES.includes(extractedLabel)) return extractedLabel; + else { + switch (extractedLabel) { + case 'graphic': + case 'ui': + case 'ux': + return 'design' + case 'dev': + case 'front-end': + case 'back-end': + case 'feature': + return 'code' + case 'event': + return 'eventOrganizing' + case 'finance': + return 'financial' + case 'funding': + return 'fundingFinding' + case 'add-on': + return 'plugin' + case 'testing': + return 'test' + default: + throw new Error(`The label ${extractedLabel} couldn't be associated to a category from https://allcontributors.org/docs/en/emoji-key`); + } + } +} \ No newline at end of file From a6dedd82be1815e438bc1c4c11430f875980c0d5 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Sat, 13 Apr 2019 00:16:11 +0100 Subject: [PATCH 03/28] feat(discover): improved the "label matcher" Went for a string comparison approach because RE seemed ineffective and NLP being overkill for matching repo labels to categories. --- package.json | 1 + src/discover/__tests__/labelClass.js | 40 ++++++++++--- src/discover/labelClass.js | 84 ++++++++++++++++++++++------ 3 files changed, 100 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index b4650480..9b9cf07b 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "name-your-contributors": "^3.4.0", "pify": "^4.0.1", "request": "^2.72.0", + "string-similarity": "^3.0.0", "yargs": "^13.1.0" }, "devDependencies": { diff --git a/src/discover/__tests__/labelClass.js b/src/discover/__tests__/labelClass.js index c751bde5..7c2df5ec 100644 --- a/src/discover/__tests__/labelClass.js +++ b/src/discover/__tests__/labelClass.js @@ -1,9 +1,31 @@ -import classifyLabel from '../labelClass' - -test('simple labels', () => { - expect(classifyLabel('bug')).toStrictEqual('bug'); - // expect(classifyLabel('feature')).toStrictEqual('code'); - expect(classifyLabel('code')).toStrictEqual('code'); - // expect(classifyLabel('test')).toStrictEqual('test'); - // expect(classifyLabel('testing')).toStrictEqual('test'); -}); \ No newline at end of file +import findBestCat from '../labelClass' + +// test('simple labels', () => { +// expect(classifyLabel('bug')).toStrictEqual('bug'); +// // expect(classifyLabel('feature')).toStrictEqual('code'); +// expect(classifyLabel('code')).toStrictEqual('code'); +// expect(classifyLabel('test')).toStrictEqual('test'); +// // expect(classifyLabel('testing')).toStrictEqual('test'); +// }); + +test('exact labels', () => { + expect(findBestCat('bug')).toStrictEqual('bug') + expect(findBestCat('code')).toStrictEqual('code') + expect(findBestCat('test')).toStrictEqual('test') +}) + +test('almost the same', () => { + expect(findBestCat('testing')).toStrictEqual('test') + expect(findBestCat('sec')).toStrictEqual('security') +}) + +test('exceptions', () => { + expect(findBestCat('build')).toStrictEqual('infra') + expect(findBestCat('back-end')).toStrictEqual('code') +}) + +test('nothing found', () => { + expect(() => findBestCat('doing')).toThrowError( + 'Match threshold of 0.4 not met for "doing"', + ) +}) diff --git a/src/discover/labelClass.js b/src/discover/labelClass.js index e53ee430..03c82b20 100644 --- a/src/discover/labelClass.js +++ b/src/discover/labelClass.js @@ -1,25 +1,50 @@ // const ctrbType = require('../util/contributions-types'); +const strSim = require('string-similarity') -const CATEGORIES = ['blog', 'bug', 'business', 'code', 'content', 'design', 'doc', 'eventOrganizing', 'example', 'financial', 'fundingFinding', 'ideas', 'infra', 'maintenance', 'platform', 'plugin', 'projectManagement', 'question', 'review', 'security', 'talk', 'test', 'tool', 'translation', 'tutorial', 'userTesting', 'video'];//Object.keys(ctrbType('github')); +const CATEGORIES = [ + 'blog', + 'bug', + 'business', + 'code', + 'content', + 'design', + 'doc', + 'eventOrganizing', + 'example', + 'financial', + 'fundingFinding', + 'ideas', + 'infra', + 'maintenance', + 'platform', + 'plugin', + 'projectManagement', + 'question', + 'review', + 'security', + 'talk', + 'test', + 'tool', + 'translation', + 'tutorial', + 'userTesting', + 'video', +] //Object.keys(ctrbType('github')); /* ['blog', 'bug', 'business', 'code', 'content', 'design', 'doc', 'eventOrganizing', 'example', 'financial', 'fundingFinding', 'ideas', 'infra', 'maintenance', 'platform', 'plugin', 'projectManagement', 'question', 'review', 'security', 'talk', 'test', 'tool', 'translation', 'tutorial', 'userTesting', 'video'] */ -const labelPrefixes = [ - 'type:', - 'cat:', - 'type-', - 'cat-', -]; +/*const labelPrefixes = ['type:', 'cat:', 'type-', 'cat-'] -const RE = /(type|cat|category)?\s*[:-]?\s*(\w+)/gi; +const RE = /(type|cat|category)?\s*[:-]?\s*(\w+)/gi -module.exports = function classifyLabel(label) { - const match = RE.exec(label); - console.log('match=', match); - if (match === null) throw new Error(`The label ${label} couldn't be classified`); - const extractedLabel = match[match.length - 1]; - if (CATEGORIES.includes(extractedLabel)) return extractedLabel; +function classifyLabel(label) { + const match = RE.exec(label) + console.log('match=', match) + if (match === null) + throw new Error(`The label ${label} couldn't be classified`) + const extractedLabel = match[match.length - 1] + if (CATEGORIES.includes(extractedLabel)) return extractedLabel else { switch (extractedLabel) { case 'graphic': @@ -42,7 +67,34 @@ module.exports = function classifyLabel(label) { case 'testing': return 'test' default: - throw new Error(`The label ${extractedLabel} couldn't be associated to a category from https://allcontributors.org/docs/en/emoji-key`); + throw new Error( + `The label ${extractedLabel} couldn't be associated to a category from https://allcontributors.org/docs/en/emoji-key`, + ) } } -} \ No newline at end of file +}*/ + +const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories +const SIM_EXCEPTIONS = { + //Those are matched wrongly + graphic: 'design', + 'front-end': 'code', + 'back-end': 'code', + ux: 'design', + ui: 'design', //or code + ci: 'infra', + cd: 'infra', + build: 'infra', +} + +function findBestCat(label) { + const lbl = label.toLowerCase() + if (lbl in SIM_EXCEPTIONS) return SIM_EXCEPTIONS[lbl] + const match = strSim.findBestMatch(lbl, CATEGORIES) + if (match.bestMatch.rating >= MATCH_THRESHOLD) return match.bestMatch.target + throw new Error( + `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"`, + ) +} + +module.exports = findBestCat From 2111d5bfecaf995e9d14f2d1b798cdf30e15d013 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Sat, 13 Apr 2019 10:32:21 +0100 Subject: [PATCH 04/28] refactor(discover): renamed label matcher And removed uneeded code --- src/cli.js | 29 +++++++------- src/discover/__tests__/labelClass.js | 44 +++++++++++++--------- src/discover/labelClass.js | 56 +++++----------------------- 3 files changed, 50 insertions(+), 79 deletions(-) diff --git a/src/cli.js b/src/cli.js index cc3ad342..4b13b166 100755 --- a/src/cli.js +++ b/src/cli.js @@ -12,7 +12,7 @@ const util = require('./util') const repo = require('./repo') const updateContributors = require('./contributors') const {getContributors} = require('./discover') -const {classifyLabel} = require('./discover/labelClass') +const findCategory = require('./discover/findCategory') const cwd = process.cwd() const defaultRCFile = path.join(cwd, '.all-contributorsrc') @@ -134,15 +134,15 @@ function fetchContributors(argv) { // repoContributors = {prCreators, prCommentators, issueCreators, issueCommentators, reviewers, commitAuthors, commitCommentators} // console.dir(repoContributors) - const checkKey = repo.getCheckKey(configData.repoType) - const knownContributions = configData.contributors.reduce((obj, item) => { - obj[item[checkKey]] = item.contributions - return obj - }, {}) + // const checkKey = repo.getCheckKey(configData.repoType) + // const knownContributions = configData.contributors.reduce((obj, item) => { + // obj[item[checkKey]] = item.contributions + // return obj + // }, {}) // console.log('knownContributions', knownContributions) //{ jfmengels: ['code', 'test', 'doc'], ...} - const knownContributors = configData.contributors.map( - contributor => contributor[checkKey], - ) + // const knownContributors = configData.contributors.map( + // contributor => contributor[checkKey], + // ) // console.log('knownContributors', knownContributors) //['kentcdodds', 'ben-eb', ...] let contributors = new Set( @@ -155,7 +155,7 @@ function fetchContributors(argv) { contributors = Array.from(contributors) // console.log('ctbs=', contributors); - const missingInConfig = contributors.filter( + /*const missingInConfig = contributors.filter( key => !knownContributors.includes(key), ) @@ -165,7 +165,7 @@ function fetchContributors(argv) { (knownContributions[key].includes('code') || knownContributions[key].includes('test')) ) - }) + })*/ /* if (missingInConfig.length) { process.stdout.write( @@ -186,7 +186,7 @@ function fetchContributors(argv) { //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa - let args = Object.assign({}, configData, {_: []}); + const args = Object.assign({}, configData, {_: []}) repoContributors.reviewers.forEach(usr => { args._ = ['', usr.login, 'review'] addContribution(args) @@ -194,10 +194,9 @@ function fetchContributors(argv) { }) repoContributors.issueCreators.forEach(usr => { - console.log('usr=', usr.login, 'labels=', usr.labels); - console.log('categories', usr.labels.map(lbl => classifyLabel(lbl))) + console.log('usr=', usr.login, 'labels=', usr.labels) + console.log('categories', usr.labels.map(lbl => findCategory(lbl))) }) - }, err => console.error('checkContributorsFromNYC error:', err), ) diff --git a/src/discover/__tests__/labelClass.js b/src/discover/__tests__/labelClass.js index 7c2df5ec..05ae150f 100644 --- a/src/discover/__tests__/labelClass.js +++ b/src/discover/__tests__/labelClass.js @@ -1,31 +1,41 @@ -import findBestCat from '../labelClass' - -// test('simple labels', () => { -// expect(classifyLabel('bug')).toStrictEqual('bug'); -// // expect(classifyLabel('feature')).toStrictEqual('code'); -// expect(classifyLabel('code')).toStrictEqual('code'); -// expect(classifyLabel('test')).toStrictEqual('test'); -// // expect(classifyLabel('testing')).toStrictEqual('test'); -// }); +import findBestCategory from '../labelClass' test('exact labels', () => { - expect(findBestCat('bug')).toStrictEqual('bug') - expect(findBestCat('code')).toStrictEqual('code') - expect(findBestCat('test')).toStrictEqual('test') + expect(findBestCategory('bug')).toStrictEqual('bug') + expect(findBestCategory('code')).toStrictEqual('code') + expect(findBestCategory('test')).toStrictEqual('test') +}) + +test('GH labels', () => { + expect(findBestCategory('duplicate')).toStrictEqual(null) + expect(findBestCategory('enhancement')).toStrictEqual('maintenance') //or code? + expect(findBestCategory('good first issue')).toStrictEqual(null) + expect(findBestCategory('help wanted')).toStrictEqual(null) //maintenance? + expect(findBestCategory('invalid')).toStrictEqual(null) + expect(findBestCategory('wontfix')).toStrictEqual(null) }) test('almost the same', () => { - expect(findBestCat('testing')).toStrictEqual('test') - expect(findBestCat('sec')).toStrictEqual('security') + expect(findBestCategory('testing')).toStrictEqual('test') + expect(findBestCategory('sec')).toStrictEqual('security') }) test('exceptions', () => { - expect(findBestCat('build')).toStrictEqual('infra') - expect(findBestCat('back-end')).toStrictEqual('code') + expect(findBestCategory('build')).toStrictEqual('infra') + expect(findBestCategory('back-end')).toStrictEqual('code') }) test('nothing found', () => { - expect(() => findBestCat('doing')).toThrowError( + expect(() => findBestCategory('doing')).toThrowError( 'Match threshold of 0.4 not met for "doing"', ) }) + +test('namespaced labels', () => { + expect(findBestCategory('type: bug')).toStrictEqual('bug') + expect(findBestCategory('Type: Bug')).toStrictEqual('bug') + expect(findBestCategory('type-bug')).toStrictEqual('bug') + expect(findBestCategory('cat:bug')).toStrictEqual('bug') + expect(findBestCategory('cat-bug')).toStrictEqual('bug') + expect(findBestCategory('Bug 🐛')).toStrictEqual('bug') +}) diff --git a/src/discover/labelClass.js b/src/discover/labelClass.js index 03c82b20..046d85d1 100644 --- a/src/discover/labelClass.js +++ b/src/discover/labelClass.js @@ -1,4 +1,3 @@ -// const ctrbType = require('../util/contributions-types'); const strSim = require('string-similarity') const CATEGORIES = [ @@ -30,49 +29,6 @@ const CATEGORIES = [ 'userTesting', 'video', ] //Object.keys(ctrbType('github')); -/* -['blog', 'bug', 'business', 'code', 'content', 'design', 'doc', 'eventOrganizing', 'example', 'financial', 'fundingFinding', 'ideas', 'infra', 'maintenance', 'platform', 'plugin', 'projectManagement', 'question', 'review', 'security', 'talk', 'test', 'tool', 'translation', 'tutorial', 'userTesting', 'video'] -*/ - -/*const labelPrefixes = ['type:', 'cat:', 'type-', 'cat-'] - -const RE = /(type|cat|category)?\s*[:-]?\s*(\w+)/gi - -function classifyLabel(label) { - const match = RE.exec(label) - console.log('match=', match) - if (match === null) - throw new Error(`The label ${label} couldn't be classified`) - const extractedLabel = match[match.length - 1] - if (CATEGORIES.includes(extractedLabel)) return extractedLabel - else { - switch (extractedLabel) { - case 'graphic': - case 'ui': - case 'ux': - return 'design' - case 'dev': - case 'front-end': - case 'back-end': - case 'feature': - return 'code' - case 'event': - return 'eventOrganizing' - case 'finance': - return 'financial' - case 'funding': - return 'fundingFinding' - case 'add-on': - return 'plugin' - case 'testing': - return 'test' - default: - throw new Error( - `The label ${extractedLabel} couldn't be associated to a category from https://allcontributors.org/docs/en/emoji-key`, - ) - } - } -}*/ const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories const SIM_EXCEPTIONS = { @@ -86,9 +42,17 @@ const SIM_EXCEPTIONS = { cd: 'infra', build: 'infra', } +const NON_CATEGORY_LABELS = [ + 'duplicate', + 'good first issue', + 'help wanted', + 'invalid', + 'wontfix', +] -function findBestCat(label) { +module.exports = function findBestCategory(label) { const lbl = label.toLowerCase() + if (NON_CATEGORY_LABELS.includes(lbl)) return null if (lbl in SIM_EXCEPTIONS) return SIM_EXCEPTIONS[lbl] const match = strSim.findBestMatch(lbl, CATEGORIES) if (match.bestMatch.rating >= MATCH_THRESHOLD) return match.bestMatch.target @@ -96,5 +60,3 @@ function findBestCat(label) { `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"`, ) } - -module.exports = findBestCat From 695df58f816c76006776941e3eea8ff4198cae11 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Tue, 16 Apr 2019 23:51:36 +0100 Subject: [PATCH 05/28] feat(discover): improved category mapping [wip] Re-arranged some label lists/dicts and added more edge case handling (when the label is not categorisable or when it's similar to one of the exceptions). --- package.json | 2 +- .../{labelClass.js => findCategory.js} | 0 .../{labelClass.js => findCategory.js} | 28 +++++++++++++++---- src/discover/index.js | 2 +- 4 files changed, 24 insertions(+), 8 deletions(-) rename src/discover/__tests__/{labelClass.js => findCategory.js} (100%) rename src/discover/{labelClass.js => findCategory.js} (72%) diff --git a/package.json b/package.json index 9b9cf07b..334e1361 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "chalk": "^2.3.0", "inquirer": "^6.2.1", "lodash": "^4.11.2", - "name-your-contributors": "^3.4.0", + "name-your-contributors": "mntnr/name-your-contributors#master", "pify": "^4.0.1", "request": "^2.72.0", "string-similarity": "^3.0.0", diff --git a/src/discover/__tests__/labelClass.js b/src/discover/__tests__/findCategory.js similarity index 100% rename from src/discover/__tests__/labelClass.js rename to src/discover/__tests__/findCategory.js diff --git a/src/discover/labelClass.js b/src/discover/findCategory.js similarity index 72% rename from src/discover/labelClass.js rename to src/discover/findCategory.js index 046d85d1..17765b0e 100644 --- a/src/discover/labelClass.js +++ b/src/discover/findCategory.js @@ -33,14 +33,20 @@ const CATEGORIES = [ const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories const SIM_EXCEPTIONS = { //Those are matched wrongly - graphic: 'design', - 'front-end': 'code', + adapter: 'plugin', 'back-end': 'code', - ux: 'design', - ui: 'design', //or code - ci: 'infra', - cd: 'infra', build: 'infra', + cd: 'infra', + ci: 'infra', + cli: 'code', //or tool + dep: 'maintenance', + dependency: 'maintenance', + 'front-end': 'code', + graphic: 'design', + lib: 'tool', //or code + library: 'tool', //or code + ui: 'design', //or code + ux: 'design', } const NON_CATEGORY_LABELS = [ 'duplicate', @@ -48,6 +54,8 @@ const NON_CATEGORY_LABELS = [ 'help wanted', 'invalid', 'wontfix', + 'question', + 'wip', ] module.exports = function findBestCategory(label) { @@ -56,6 +64,14 @@ module.exports = function findBestCategory(label) { if (lbl in SIM_EXCEPTIONS) return SIM_EXCEPTIONS[lbl] const match = strSim.findBestMatch(lbl, CATEGORIES) if (match.bestMatch.rating >= MATCH_THRESHOLD) return match.bestMatch.target + + const nclMatch = strSim.findBestMatch(lbl, NON_CATEGORY_LABELS) + if (nclMatch.bestMatch.rating >= MATCH_THRESHOLD) return null + + const seMatch = strSim.findBestMatch(lbl, Object.keys(SIM_EXCEPTIONS)) + if (seMatch.bestMatch.rating >= MATCH_THRESHOLD) + return SIM_EXCEPTIONS[match.bestMatch.target] + throw new Error( `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"`, ) diff --git a/src/discover/index.js b/src/discover/index.js index be5fba64..3d7bc9dc 100644 --- a/src/discover/index.js +++ b/src/discover/index.js @@ -1,4 +1,4 @@ -const nyc = require('../../../name-your-contributors') +const nyc = require('name-your-contributors') const privateToken = (process.env && process.env.PRIVATE_TOKEN) || '' From 88b9c359aad7dfc8adbb92e8c9eff1fb459a4bcd Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 17 Apr 2019 09:30:22 +0100 Subject: [PATCH 06/28] chore(findCategory): corrected jest disfunction --- .gitignore | 1 + src/discover/__tests__/findCategory.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f662033a..ab4f4cb3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ dist package-lock.json yarn.lock .vscode +cache diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js index 05ae150f..67f06d63 100644 --- a/src/discover/__tests__/findCategory.js +++ b/src/discover/__tests__/findCategory.js @@ -1,4 +1,4 @@ -import findBestCategory from '../labelClass' +import findBestCategory from '../findCategory' test('exact labels', () => { expect(findBestCategory('bug')).toStrictEqual('bug') From 0743d16253bbbc804fec826e24634788aecdf018 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Fri, 19 Apr 2019 20:33:16 +0100 Subject: [PATCH 07/28] chore(discover): added more label stuff Added a dataset of labels with categories with the files to test and use them. --- src/discover/__tests__/findCategory.js | 4 + src/discover/__tests__/labels.js | 57 + src/discover/categories.json | 29 + src/discover/findCategory.js | 30 +- src/discover/labels.js | 26 + src/discover/labels.json | 1582 ++++++++++++++++++++++++ 6 files changed, 1699 insertions(+), 29 deletions(-) create mode 100644 src/discover/__tests__/labels.js create mode 100644 src/discover/categories.json create mode 100644 src/discover/labels.js create mode 100644 src/discover/labels.json diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js index 05ae150f..384fce41 100644 --- a/src/discover/__tests__/findCategory.js +++ b/src/discover/__tests__/findCategory.js @@ -39,3 +39,7 @@ test('namespaced labels', () => { expect(findBestCategory('cat-bug')).toStrictEqual('bug') expect(findBestCategory('Bug 🐛')).toStrictEqual('bug') }) + +test('accurate guessing', () => { + /* @todo Test findBestCategory() on each items of labels.json */ +}) diff --git a/src/discover/__tests__/labels.js b/src/discover/__tests__/labels.js new file mode 100644 index 00000000..bcd39837 --- /dev/null +++ b/src/discover/__tests__/labels.js @@ -0,0 +1,57 @@ +import labels from '../labels' +import categories from '../categories' + +const LEN = 395 + +test('All data', () => { + const data = labels.getAll() + expect(data.length).toStrictEqual(LEN) + expect(Array.isArray(data)).toBeTruthy() + expect(data[9]).toEqual({label: ':bug: bug', category: 'bug'}) +}) + +test('Labels', () => { + const lbls = labels.getLabels() + expect(lbls.length).toStrictEqual(LEN) + expect(Array.isArray(lbls)).toBeTruthy() + expect(lbls[9]).toEqual(':bug: bug') +}) + +test('Categories', () => { + const cats = labels.getCategories() + expect(cats.length).toStrictEqual(LEN) + expect(Array.isArray(cats)).toBeTruthy() + expect(cats[9]).toEqual('bug') +}) + +test('Distinct cats', () => { + const dc = labels.getDistinctCategories() + expect(dc.length).toStrictEqual(categories.length + 1) + expect(dc.includes('null')).toBeTruthy() +}) + +test('Size', () => { + expect(labels.size()).toStrictEqual(LEN) +}) + +test('Labels with categories', () => { + const cl = labels.getCategorisedLabels() + expect(cl.length > categories.length).toBeTruthy() + expect(cl[9]).toEqual({label: ':bug: bug', category: 'bug'}) +}) + +test('Labels with a `null` category', () => { + const nl = labels.getNullCatLabels() + expect(nl.length < LEN - categories.length).toBeTruthy() + expect(nl[0]).toEqual({label: '0 - backlog', category: 'null'}) +}) + +test('Labels with a valid category', () => { + const vl = labels.getValidCatLabels() + expect(vl.length > categories.length).toBeTruthy() + expect(vl[0]).toEqual({label: '0 - backlog', category: 'null'}) +}) + +test('Bad data', () => { + expect(labels.getBadData()).toEqual([]) +}) diff --git a/src/discover/categories.json b/src/discover/categories.json new file mode 100644 index 00000000..88c2b2f6 --- /dev/null +++ b/src/discover/categories.json @@ -0,0 +1,29 @@ +[ + "blog", + "bug", + "business", + "code", + "content", + "design", + "doc", + "eventOrganizing", + "example", + "financial", + "fundingFinding", + "ideas", + "infra", + "maintenance", + "platform", + "plugin", + "projectManagement", + "question", + "review", + "security", + "talk", + "test", + "tool", + "translation", + "tutorial", + "userTesting", + "video" +] diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 17765b0e..f85072a3 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -1,34 +1,6 @@ const strSim = require('string-similarity') -const CATEGORIES = [ - 'blog', - 'bug', - 'business', - 'code', - 'content', - 'design', - 'doc', - 'eventOrganizing', - 'example', - 'financial', - 'fundingFinding', - 'ideas', - 'infra', - 'maintenance', - 'platform', - 'plugin', - 'projectManagement', - 'question', - 'review', - 'security', - 'talk', - 'test', - 'tool', - 'translation', - 'tutorial', - 'userTesting', - 'video', -] //Object.keys(ctrbType('github')); +const CATEGORIES = require('./categories.json') //Object.keys(ctrbType('github')); const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories const SIM_EXCEPTIONS = { diff --git a/src/discover/labels.js b/src/discover/labels.js new file mode 100644 index 00000000..bd9ed052 --- /dev/null +++ b/src/discover/labels.js @@ -0,0 +1,26 @@ +const labels = require('./labels.json') + +const getDistinctCategories = () => { + const cats = new Set() + labels.forEach(d => cats.add(d.category)) + return Array.from(cats) +} + +const CATEGORIES = getDistinctCategories().filter(Boolean) + +module.exports = { + getAll: () => [...labels], + getLabels: () => labels.map(d => d.label), + getCategories: () => labels.map(d => d.category), + getDistinctCategories: () => CATEGORIES, + size: () => labels.length, + getCategorisedLabels: () => labels.filter(l => !!l.category), + getNullCatLabels: () => labels.filter(l => l.category == 'null'), + getValidCatLabels: () => labels.filter(l => CATEGORIES.includes(l.category)), + getBadData: () => + labels.filter( + l => + !!l.category && + /* l.category != 'null' && */ !CATEGORIES.includes(l.category), + ), +} diff --git a/src/discover/labels.json b/src/discover/labels.json new file mode 100644 index 00000000..53afb0c4 --- /dev/null +++ b/src/discover/labels.json @@ -0,0 +1,1582 @@ +[ + { + "label": "0 - backlog", + "category": "null" + }, + { + "label": "1 - ready", + "category": "null" + }, + { + "label": "2 - working", + "category": "null" + }, + { + "label": "2.x", + "category": "null" + }, + { + "label": "3 - done", + "category": "null" + }, + { + "label": "6.x: backport", + "category": "null" + }, + { + "label": "7.x: regression", + "category": "bug" + }, + { + "label": ":arrow_heading_down: pull", + "category": "maintenance" + }, + { + "label": ":boom: regression", + "category": "bug" + }, + { + "label": ":bug: bug", + "category": "bug" + }, + { + "label": ":rocket: enhancement", + "category": "maintenance" + }, + { + "label": ":rocket: feature request", + "category": "ideas" + }, + { + "label": ":speech_balloon: question", + "category": "null" + }, + { + "label": "@font-face", + "category": "null" + }, + { + "label": "abandoned", + "category": "null" + }, + { + "label": "accepted", + "category": "null" + }, + { + "label": "accessibility", + "category": "null" + }, + { + "label": "acked", + "category": "" + }, + { + "label": "adapter", + "category": "plugin" + }, + { + "label": "advance developer workflow", + "category": "projectManagement" + }, + { + "label": "android", + "category": "" + }, + { + "label": "angular", + "category": "code" + }, + { + "label": "animals (category)", + "category": "" + }, + { + "label": "answered", + "category": "null" + }, + { + "label": "approved", + "category": "null" + }, + { + "label": "area: concurrent", + "category": "null" + }, + { + "label": "area: crash", + "category": "bug" + }, + { + "label": "arrows (category)", + "category": "null" + }, + { + "label": "automotive (category)", + "category": "null" + }, + { + "label": "available in fa pro", + "category": "null" + }, + { + "label": "awaiting-review", + "category": "" + }, + { + "label": "beginner-friendly", + "category": "null" + }, + { + "label": "beverage (category)", + "category": "null" + }, + { + "label": "blocked", + "category": "null" + }, + { + "label": "blocker", + "category": "null" + }, + { + "label": "bootstrap", + "category": "tool" + }, + { + "label": "brand icon", + "category": "design" + }, + { + "label": "breaking change", + "category": "code" + }, + { + "label": "browser bug", + "category": "bug" + }, + { + "label": "browser: ie", + "category": "" + }, + { + "label": "browser: safari", + "category": "" + }, + { + "label": "bug", + "category": "bug" + }, + { + "label": "bug report", + "category": "bug" + }, + { + "label": "business (category)", + "category": "business" + }, + { + "label": "c/c++", + "category": "" + }, + { + "label": "cannot reproduce", + "category": "null" + }, + { + "label": "cantfix", + "category": "null" + }, + { + "label": "cdn", + "category": "platform" + }, + { + "label": "chat (category)", + "category": "ideas" + }, + { + "label": "chore", + "category": "maintenance" + }, + { + "label": "cla signed", + "category": "null" + }, + { + "label": "cla signed :heavy_check_mark:", + "category": "null" + }, + { + "label": "cla: no", + "category": "null" + }, + { + "label": "cla: yes", + "category": "null" + }, + { + "label": "cli", + "category": "code" + }, + { + "label": "closed due to inactivity", + "category": "null" + }, + { + "label": "cmty:bug-report", + "category": "" + }, + { + "label": "cmty:feature-request", + "category": "" + }, + { + "label": "cmty:question", + "category": "" + }, + { + "label": "cmty:status:cancelled", + "category": "" + }, + { + "label": "cmty:status:fixed", + "category": "" + }, + { + "label": "cmty:status:implemented", + "category": "" + }, + { + "label": "cmty:status:resolved", + "category": "" + }, + { + "label": "community", + "category": "null" + }, + { + "label": "component: build infrastructure", + "category": "infra" + }, + { + "label": "component: component api", + "category": "code" + }, + { + "label": "component: concurrent mode", + "category": "null" + }, + { + "label": "component: core utilities", + "category": "code" + }, + { + "label": "component: developer tools", + "category": "tool" + }, + { + "label": "component: dom", + "category": "code" + }, + { + "label": "component: eslint rules", + "category": "" + }, + { + "label": "component: hooks", + "category": "" + }, + { + "label": "component: optimizing compiler", + "category": "code" + }, + { + "label": "component: reactis", + "category": "plugin" + }, + { + "label": "component: reconciler", + "category": "" + }, + { + "label": "component: scheduler", + "category": "" + }, + { + "label": "component: server rendering", + "category": "code" + }, + { + "label": "component: shallow renderer", + "category": "code" + }, + { + "label": "component: suspense", + "category": "null" + }, + { + "label": "component: test renderer", + "category": "test" + }, + { + "label": "component: test utils", + "category": "test" + }, + { + "label": "configuration", + "category": "code" + }, + { + "label": "confirmed", + "category": "null" + }, + { + "label": "conflicts", + "category": "" + }, + { + "label": "contribution welcome", + "category": "null" + }, + { + "label": "core", + "category": "" + }, + { + "label": "critical", + "category": "null" + }, + { + "label": "csharp", + "category": "" + }, + { + "label": "css", + "category": "code" + }, + { + "label": "css-select", + "category": "code" + }, + { + "label": "currency (category)", + "category": "financial" + }, + { + "label": "defect", + "category": "bug" + }, + { + "label": "dependencies", + "category": "maintenance" + }, + { + "label": "dependency related", + "category": "maintenance" + }, + { + "label": "design", + "category": "design" + }, + { + "label": "design (category)", + "category": "design" + }, + { + "label": "difficulty: challenging", + "category": "null" + }, + { + "label": "difficulty: easy", + "category": "null" + }, + { + "label": "difficulty: hard", + "category": "null" + }, + { + "label": "difficulty: medium", + "category": "null" + }, + { + "label": "difficulty: starter", + "category": "null" + }, + { + "label": "difficulty: unknown or n/a", + "category": "null" + }, + { + "label": "difficulty: very hard", + "category": "null" + }, + { + "label": "discussion", + "category": "ideas" + }, + { + "label": "do not merge", + "category": "null" + }, + { + "label": "doc", + "category": "doc" + }, + { + "label": "docs", + "category": "doc" + }, + { + "label": "documentation", + "category": "doc" + }, + { + "label": "documentation :book:", + "category": "doc" + }, + { + "label": "duplicate", + "category": "null" + }, + { + "label": "electron", + "category": "" + }, + { + "label": "enhancement", + "category": "maintenance" + }, + { + "label": "enterprise", + "category": "" + }, + { + "label": "enterprise-2.0-backport", + "category": "" + }, + { + "label": "enterprise-2.1-backport", + "category": "" + }, + { + "label": "enterprise-2.2-backport", + "category": "" + }, + { + "label": "es6", + "category": "code" + }, + { + "label": "es7", + "category": "code" + }, + { + "label": "external", + "category": "" + }, + { + "label": "externs", + "category": "plugin" + }, + { + "label": "feat/cli", + "category": "code" + }, + { + "label": "feat: babel", + "category": "code" + }, + { + "label": "feat: cli", + "category": "code" + }, + { + "label": "feat: cli-service build", + "category": "code" + }, + { + "label": "feat: cli-service serve", + "category": "code" + }, + { + "label": "feat: e2e-cypress", + "category": "plugin" + }, + { + "label": "feat: e2e-nightwatch", + "category": "plugin" + }, + { + "label": "feat: eslint", + "category": "tool" + }, + { + "label": "feat: plugin api", + "category": "plugin" + }, + { + "label": "feat: pwa", + "category": "code" + }, + { + "label": "feat: typescript", + "category": "code" + }, + { + "label": "feat: ui", + "category": "design" + }, + { + "label": "feat: unit-jest", + "category": "tool" + }, + { + "label": "feat: unit-mocha", + "category": "tool" + }, + { + "label": "feature", + "category": "ideas" + }, + { + "label": "feature request", + "category": "ideas" + }, + { + "label": "feedback requested", + "category": "null" + }, + { + "label": "files (category)", + "category": "null" + }, + { + "label": "first-timers-only", + "category": "null" + }, + { + "label": "flags (category)", + "category": "null" + }, + { + "label": "flashsocket", + "category": "null" + }, + { + "label": "fontawesome.com", + "category": "code" + }, + { + "label": "food (category)", + "category": "null" + }, + { + "label": "freemasonry icons", + "category": "design" + }, + { + "label": "frontend", + "category": "" + }, + { + "label": "future architecture enhancements", + "category": "" + }, + { + "label": "future crypto enhancements", + "category": "" + }, + { + "label": "genders (category)", + "category": "null" + }, + { + "label": "general js", + "category": "code" + }, + { + "label": "gh review: accepted", + "category": "null" + }, + { + "label": "go client internal release", + "category": "" + }, + { + "label": "good first issue", + "category": "null" + }, + { + "label": "good first issue :+1:", + "category": "null" + }, + { + "label": "great insight", + "category": "ideas" + }, + { + "label": "greenkeeper", + "category": "infra" + }, + { + "label": "hack", + "category": "code" + }, + { + "label": "hacktoberfest", + "category": "code" + }, + { + "label": "handshakes", + "category": "business" + }, + { + "label": "has bounty", + "category": "null" + }, + { + "label": "has pr", + "category": "null" + }, + { + "label": "help", + "category": "null" + }, + { + "label": "help / pr wanted", + "category": "null" + }, + { + "label": "help wanted", + "category": "null" + }, + { + "label": "help wanted :sos:", + "category": "null" + }, + { + "label": "hi-pri", + "category": "null" + }, + { + "label": "high-priority", + "category": "null" + }, + { + "label": "hodor", + "category": "null" + }, + { + "label": "hot discussion", + "category": "ideas" + }, + { + "label": "html", + "category": "code" + }, + { + "label": "htmlfile", + "category": "code" + }, + { + "label": "https", + "category": "" + }, + { + "label": "icebox", + "category": "projectManagement" + }, + { + "label": "ie8", + "category": "" + }, + { + "label": "import in progress", + "category": "null" + }, + { + "label": "import started", + "category": "null" + }, + { + "label": "in progress", + "category": "null" + }, + { + "label": "in review", + "category": "review" + }, + { + "label": "infrastructure :hammer_and_wrench:", + "category": "infra" + }, + { + "label": "installer", + "category": "" + }, + { + "label": "internal cleanup", + "category": "maintenance" + }, + { + "label": "internal-issue-created", + "category": "bug" + }, + { + "label": "invalid", + "category": "null" + }, + { + "label": "ios", + "category": "" + }, + { + "label": "jquery differences", + "category": "null" + }, + { + "label": "jsonp-polling", + "category": "null" + }, + { + "label": "kbfs", + "category": "" + }, + { + "label": "lang-crystal", + "category": "" + }, + { + "label": "lang-dart", + "category": "" + }, + { + "label": "lang-elixir", + "category": "" + }, + { + "label": "lang-go", + "category": "" + }, + { + "label": "lang-julia", + "category": "" + }, + { + "label": "lang-objc", + "category": "" + }, + { + "label": "lang-r", + "category": "" + }, + { + "label": "lang-scala", + "category": "" + }, + { + "label": "legal", + "category": "security" + }, + { + "label": "library", + "category": "tool" + }, + { + "label": "lint", + "category": "" + }, + { + "label": "linux", + "category": "" + }, + { + "label": "lks", + "category": "" + }, + { + "label": "m1.s0", + "category": "" + }, + { + "label": "m1.s1", + "category": "" + }, + { + "label": "m1.s2", + "category": "" + }, + { + "label": "macos", + "category": "" + }, + { + "label": "maintenance", + "category": "maintenance" + }, + { + "label": "major", + "category": "null" + }, + { + "label": "mass purge 2015.10.26", + "category": "" + }, + { + "label": "minor", + "category": "null" + }, + { + "label": "mobile device support", + "category": "" + }, + { + "label": "mode: proxy", + "category": "null" + }, + { + "label": "modules", + "category": "code" + }, + { + "label": "must-triage", + "category": "null" + }, + { + "label": "namespaces", + "category": "null" + }, + { + "label": "need-info", + "category": "null" + }, + { + "label": "needs a example app.", + "category": "null" + }, + { + "label": "needs a failing test", + "category": "null" + }, + { + "label": "needs browser testing", + "category": "null" + }, + { + "label": "needs changelog", + "category": "null" + }, + { + "label": "needs docs", + "category": "null" + }, + { + "label": "needs documentation", + "category": "null" + }, + { + "label": "needs info", + "category": "null" + }, + { + "label": "needs more info :man_shrugging:", + "category": "null" + }, + { + "label": "needs repro", + "category": "null" + }, + { + "label": "needs review", + "category": "null" + }, + { + "label": "needs triage", + "category": "null" + }, + { + "label": "needs-more-info", + "category": "null" + }, + { + "label": "needs-research", + "category": "null" + }, + { + "label": "new api proposal", + "category": "ideas" + }, + { + "label": "new best practice", + "category": "doc" + }, + { + "label": "node", + "category": "platform" + }, + { + "label": "node next", + "category": "platform" + }, + { + "label": "not a bug", + "category": "null" + }, + { + "label": "on hold", + "category": "null" + }, + { + "label": "open", + "category": "null" + }, + { + "label": "operations", + "category": "" + }, + { + "label": "opinions needed", + "category": "ideas" + }, + { + "label": "optimisation", + "category": "code" + }, + { + "label": "other language integration feature", + "category": "ideas" + }, + { + "label": "p0", + "category": "null" + }, + { + "label": "p1", + "category": "null" + }, + { + "label": "p2", + "category": "null" + }, + { + "label": "p3", + "category": "null" + }, + { + "label": "packaging", + "category": "platform" + }, + { + "label": "parser", + "category": "tool" + }, + { + "label": "parser-specific", + "category": "tool" + }, + { + "label": "pending release", + "category": "null" + }, + { + "label": "performance", + "category": "code" + }, + { + "label": "planned feature", + "category": "null" + }, + { + "label": "planned for next release", + "category": "null" + }, + { + "label": "pr welcome", + "category": "null" + }, + { + "label": "pr-existing", + "category": "null" + }, + { + "label": "pr: breaking change", + "category": "null" + }, + { + "label": "pr: breaking change :boom:", + "category": "null" + }, + { + "label": "pr: bug fix", + "category": "bug" + }, + { + "label": "pr: bug fix :bug:", + "category": "bug" + }, + { + "label": "pr: dependency ⬆️", + "category": "maintenance" + }, + { + "label": "pr: deprecation", + "category": "null" + }, + { + "label": "pr: docs :memo:", + "category": "doc" + }, + { + "label": "pr: documentation", + "category": "doc" + }, + { + "label": "pr: good example", + "category": "example" + }, + { + "label": "pr: internal", + "category": "code" + }, + { + "label": "pr: internal :house:", + "category": "code" + }, + { + "label": "pr: merged", + "category": "null" + }, + { + "label": "pr: needs review", + "category": "null" + }, + { + "label": "pr: new dependency", + "category": "maintenance" + }, + { + "label": "pr: new feature", + "category": "maintenance" + }, + { + "label": "pr: new feature :rocket:", + "category": "maintenance" + }, + { + "label": "pr: polish :nail_care:", + "category": "maintenance" + }, + { + "label": "pr: ready for review", + "category": "null" + }, + { + "label": "pr: ready to be merged", + "category": "null" + }, + { + "label": "pr: reviewed-approved", + "category": "null" + }, + { + "label": "pr: reviewed-changes-requested", + "category": "null" + }, + { + "label": "pr: spec compliance :eyeglasses:", + "category": "null" + }, + { + "label": "pr: underlying tools", + "category": "tool" + }, + { + "label": "pr: unreviewed", + "category": "null" + }, + { + "label": "pr: wip", + "category": "null" + }, + { + "label": "priority: critical", + "category": "null" + }, + { + "label": "priority: high", + "category": "null" + }, + { + "label": "priority: low", + "category": "null" + }, + { + "label": "priority: medium", + "category": "null" + }, + { + "label": "production", + "category": "null" + }, + { + "label": "project management", + "category": "" + }, + { + "label": "question", + "category": "null" + }, + { + "label": "react flare", + "category": "code" + }, + { + "label": "react native", + "category": "code" + }, + { + "label": "ready", + "category": "null" + }, + { + "label": "refactor", + "category": "maintenance" + }, + { + "label": "regression", + "category": "bug" + }, + { + "label": "release: alpha", + "category": "null" + }, + { + "label": "released", + "category": "null" + }, + { + "label": "reminder", + "category": "null" + }, + { + "label": "resolution: duplicate", + "category": "null" + }, + { + "label": "resolution: invalid", + "category": "null" + }, + { + "label": "resolution: needs more information", + "category": "null" + }, + { + "label": "resolution: support redirect", + "category": "null" + }, + { + "label": "review", + "category": "review" + }, + { + "label": "review in progress", + "category": "null" + }, + { + "label": "revisitinfuture", + "category": "maintenance" + }, + { + "label": "rfc", + "category": "ideas" + }, + { + "label": "ruby", + "category": "" + }, + { + "label": "security", + "category": "security" + }, + { + "label": "shell", + "category": "tool" + }, + { + "label": "socket.io client", + "category": "code" + }, + { + "label": "spam", + "category": "null" + }, + { + "label": "spammy", + "category": "null" + }, + { + "label": "spec: async functions", + "category": "code" + }, + { + "label": "spec: async generators", + "category": "code" + }, + { + "label": "spec: bigint", + "category": "code" + }, + { + "label": "spec: class fields", + "category": "code" + }, + { + "label": "spec: classes", + "category": "code" + }, + { + "label": "spec: decorators", + "category": "code" + }, + { + "label": "spec: decorators (legacy)", + "category": "code" + }, + { + "label": "spec: do expressions", + "category": "code" + }, + { + "label": "stale", + "category": "null" + }, + { + "label": "status: accepted", + "category": "null" + }, + { + "label": "status: accepted :heavy_check_mark:", + "category": "null" + }, + { + "label": "status: available", + "category": "null" + }, + { + "label": "status: available :free:", + "category": "null" + }, + { + "label": "status: cla not signed", + "category": "null" + }, + { + "label": "status: code review request", + "category": "null" + }, + { + "label": "status: duplicate", + "category": "null" + }, + { + "label": "status: hacktoberfest approved", + "category": "null" + }, + { + "label": "status: help wanted", + "category": "null" + }, + { + "label": "status: in progress", + "category": "null" + }, + { + "label": "status: in progress :construction_worker:", + "category": "null" + }, + { + "label": "status: in review", + "category": "null" + }, + { + "label": "status: in review :detective:", + "category": "null" + }, + { + "label": "status: invalid", + "category": "null" + }, + { + "label": "status: left out", + "category": "null" + }, + { + "label": "status: left out :left_luggage:", + "category": "null" + }, + { + "label": "status: on hold", + "category": "null" + }, + { + "label": "status: on hold :stop_sign:", + "category": "null" + }, + { + "label": "status: ready for deploy", + "category": "null" + }, + { + "label": "status: review needed", + "category": "null" + }, + { + "label": "status: review needed :passport_control:", + "category": "null" + }, + { + "label": "status: waiting for feedback", + "category": "null" + }, + { + "label": "status: wontfix", + "category": "null" + }, + { + "label": "status: work in progress", + "category": "null" + }, + { + "label": "suggestion", + "category": "ideas" + }, + { + "label": "support", + "category": "maintenance" + }, + { + "label": "syntax feature request", + "category": "ideas" + }, + { + "label": "technical debt", + "category": "maintenance" + }, + { + "label": "technical-debt", + "category": "maintenance" + }, + { + "label": "test", + "category": "test" + }, + { + "label": "test needed", + "category": "null" + }, + { + "label": "tests", + "category": "test" + }, + { + "label": "tips", + "category": "ideas" + }, + { + "label": "to do", + "category": "null" + }, + { + "label": "to merge", + "category": "null" + }, + { + "label": "todo :spiral_notepad:", + "category": "maintenance" + }, + { + "label": "translation", + "category": "translation" + }, + { + "label": "travis-yml", + "category": "" + }, + { + "label": "triage", + "category": "null" + }, + { + "label": "triage-done", + "category": "null" + }, + { + "label": "trivial", + "category": "null" + }, + { + "label": "type: archive", + "category": "maintenance" + }, + { + "label": "type: bug", + "category": "bug" + }, + { + "label": "type: bug :bug:", + "category": "bug" + }, + { + "label": "type: community enhancement", + "category": "maintenance" + }, + { + "label": "type: discuss :speech_balloon:", + "category": "ideas" + }, + { + "label": "type: docs update", + "category": "doc" + }, + { + "label": "type: documentation :book:", + "category": "doc" + }, + { + "label": "type: duplicate :repeat:", + "category": "null" + }, + { + "label": "type: enhancement", + "category": "maintenance" + }, + { + "label": "type: enhancement :bulb:", + "category": "maintenance" + }, + { + "label": "type: getting started", + "category": "" + }, + { + "label": "type: invalid :x:", + "category": "null" + }, + { + "label": "type: maintenance :construction:", + "category": "maintenance" + }, + { + "label": "type: non-library issue", + "category": "null" + }, + { + "label": "type: question", + "category": "null" + }, + { + "label": "type: question :grey_question:", + "category": "null" + }, + { + "label": "type: regression :boom:", + "category": "bug" + }, + { + "label": "type: security", + "category": "security" + }, + { + "label": "type: sendgrid enhancement", + "category": "maintenance" + }, + { + "label": "type: support", + "category": "null" + }, + { + "label": "type: vulnerability :warning:", + "category": "security" + }, + { + "label": "types", + "category": "" + }, + { + "label": "ui", + "category": "design" + }, + { + "label": "unable to reproduce", + "category": "null" + }, + { + "label": "unconfirmed", + "category": "null" + }, + { + "label": "update", + "category": "maintenance" + }, + { + "label": "upstream", + "category": "null" + }, + { + "label": "upstream bug", + "category": "bug" + }, + { + "label": "ux", + "category": "design" + }, + { + "label": "v3", + "category": "null" + }, + { + "label": "vulnerability", + "category": "security" + }, + { + "label": "website", + "category": "code" + }, + { + "label": "websocket", + "category": "tool" + }, + { + "label": "weekly-digest", + "category": "" + }, + { + "label": "windows", + "category": "" + }, + { + "label": "wip", + "category": "null" + }, + { + "label": "wontfix", + "category": "null" + }, + { + "label": "work in progress", + "category": "null" + }, + { + "label": "writer-needed", + "category": "null" + }, + { + "label": "wrong repo", + "category": "null" + }, + { + "label": "xhr-polling", + "category": "" + } +] From c13360767f65bed91438779d80e51f71bf0805bc Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Sun, 21 Apr 2019 17:38:28 +0100 Subject: [PATCH 08/28] chore(labels): added a `getAt` method + test --- src/discover/__tests__/labels.js | 6 +++++- src/discover/labels.js | 1 + src/discover/labels.json | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/discover/__tests__/labels.js b/src/discover/__tests__/labels.js index bcd39837..73b7fb6d 100644 --- a/src/discover/__tests__/labels.js +++ b/src/discover/__tests__/labels.js @@ -10,6 +10,11 @@ test('All data', () => { expect(data[9]).toEqual({label: ':bug: bug', category: 'bug'}) }) +test('get', () => { + expect(labels.getAt(0)).toEqual({label: '0 - backlog', category: 'null'}) + expect(labels.getAt(9)).toEqual({label: ':bug: bug', category: 'bug'}) +}) + test('Labels', () => { const lbls = labels.getLabels() expect(lbls.length).toStrictEqual(LEN) @@ -26,7 +31,6 @@ test('Categories', () => { test('Distinct cats', () => { const dc = labels.getDistinctCategories() - expect(dc.length).toStrictEqual(categories.length + 1) expect(dc.includes('null')).toBeTruthy() }) diff --git a/src/discover/labels.js b/src/discover/labels.js index bd9ed052..fc168b77 100644 --- a/src/discover/labels.js +++ b/src/discover/labels.js @@ -10,6 +10,7 @@ const CATEGORIES = getDistinctCategories().filter(Boolean) module.exports = { getAll: () => [...labels], + getAt: idx => labels[idx], getLabels: () => labels.map(d => d.label), getCategories: () => labels.map(d => d.category), getDistinctCategories: () => CATEGORIES, diff --git a/src/discover/labels.json b/src/discover/labels.json index 53afb0c4..9c721e9f 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -68,8 +68,8 @@ "category": "null" }, { - "label": "acked", - "category": "" + "label": "hacked", + "category": "null" }, { "label": "adapter", From 730dd1212238f119e608ea3821192c7725e5627b Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 22 Apr 2019 01:07:39 +0100 Subject: [PATCH 09/28] feat(discover): improved `findBestCategory` [wip] The `labels` dataset is more robust (although a long way from being robust enough), there's **finally** a test case checking how well `findBestCategory` does in regards to the dataset --- src/cli.js | 2 +- src/discover/__tests__/findCategory.js | 27 +++++++++++++-- src/discover/findCategory.js | 48 +++++++++++++++++++++++--- src/discover/index.js | 3 -- src/discover/labels.json | 10 +++--- 5 files changed, 74 insertions(+), 16 deletions(-) diff --git a/src/cli.js b/src/cli.js index 4b13b166..01c6eb1a 100755 --- a/src/cli.js +++ b/src/cli.js @@ -186,7 +186,7 @@ function fetchContributors(argv) { //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa - const args = Object.assign({}, configData, {_: []}) + const args = {...configData, _: []} repoContributors.reviewers.forEach(usr => { args._ = ['', usr.login, 'review'] addContribution(args) diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js index 384fce41..5a20fe84 100644 --- a/src/discover/__tests__/findCategory.js +++ b/src/discover/__tests__/findCategory.js @@ -1,4 +1,6 @@ -import findBestCategory from '../labelClass' +import chalk from 'chalk' +import findBestCategory from '../findCategory' +import {getAt, size} from '../labels' test('exact labels', () => { expect(findBestCategory('bug')).toStrictEqual('bug') @@ -26,9 +28,10 @@ test('exceptions', () => { }) test('nothing found', () => { - expect(() => findBestCategory('doing')).toThrowError( + /* expect(() => findBestCategory('doing')).toThrowError( 'Match threshold of 0.4 not met for "doing"', - ) + ) */ + expect(findBestCategory('archive')).toStrictEqual(null) }) test('namespaced labels', () => { @@ -42,4 +45,22 @@ test('namespaced labels', () => { test('accurate guessing', () => { /* @todo Test findBestCategory() on each items of labels.json */ + for (let i = 0; i < size(); ++i) { + const data = getAt(i) + let expectedCat = '' + /* @todo remove this line soon */ + /* eslint-disable no-continue */ + if (data.category === 'null') continue //skip the unclassifiable ones (for now) + /* eslint-enable no-continue */ + process.stdout.write(`\n${chalk.cyan(`label guess: ${data.label}`)}\n`) + try { + expectedCat = findBestCategory(data.label) + } catch (err) { + process.stdout.write( + `${chalk.yellow(`Oooh boi! err= ${err.message}`)}\n\n`, + ) + expectedCat = 'null' + } + expect(expectedCat).toStrictEqual(data.category) + } }) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index f85072a3..c685b866 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -6,19 +6,36 @@ const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of catego const SIM_EXCEPTIONS = { //Those are matched wrongly adapter: 'plugin', + android: 'platform', + angular: 'code', 'back-end': 'code', + bootstrap: 'tool', + breaking: 'code', //or null build: 'infra', cd: 'infra', ci: 'infra', cli: 'code', //or tool + crash: 'bug', //or null dep: 'maintenance', dependency: 'maintenance', + 'feature request': 'ideas', 'front-end': 'code', graphic: 'design', lib: 'tool', //or code library: 'tool', //or code + linux: 'platform', + logo: 'design', + icon: 'design', + ios: 'platform', + osx: 'platform', + pull: 'maintenance', + react: 'code', + regression: 'bug', ui: 'design', //or code ux: 'design', + vue: 'code', + windows: 'platform', + workflow: 'infra', //or projectManagement? } const NON_CATEGORY_LABELS = [ 'duplicate', @@ -30,6 +47,24 @@ const NON_CATEGORY_LABELS = [ 'wip', ] +const EMOJIS = { + ':arrow_heading_down:': 'maintenance', + ':book:': 'doc', + ':boom:': 'bug', //or null (for breaking change) + ':bug:': 'bug', //not really needed + ':bulb:': 'ideas', + ':construction:': 'maintenance', //or null (for WIP) + ':detective:': 'null', + ':heavy_check_mark:': 'null', + ':rocket:': 'maintenance', //or code + ':sos:': 'null', + ':speech_balloon:': 'null', + ':warning:': 'security', +} + +const SE = Object.keys(SIM_EXCEPTIONS) +const EMO = Object.keys(EMOJIS) + module.exports = function findBestCategory(label) { const lbl = label.toLowerCase() if (NON_CATEGORY_LABELS.includes(lbl)) return null @@ -40,11 +75,16 @@ module.exports = function findBestCategory(label) { const nclMatch = strSim.findBestMatch(lbl, NON_CATEGORY_LABELS) if (nclMatch.bestMatch.rating >= MATCH_THRESHOLD) return null - const seMatch = strSim.findBestMatch(lbl, Object.keys(SIM_EXCEPTIONS)) + const seMatch = strSim.findBestMatch(lbl, SE) if (seMatch.bestMatch.rating >= MATCH_THRESHOLD) - return SIM_EXCEPTIONS[match.bestMatch.target] + return SIM_EXCEPTIONS[seMatch.bestMatch.target] + + const eMatch = strSim.findBestMatch(lbl, EMO) + if (eMatch.bestMatch.rating >= MATCH_THRESHOLD) + return EMOJIS[eMatch.bestMatch.target] - throw new Error( + return null + /* throw new Error( `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"`, - ) + ) */ } diff --git a/src/discover/index.js b/src/discover/index.js index 3d7bc9dc..dde62b48 100644 --- a/src/discover/index.js +++ b/src/discover/index.js @@ -2,9 +2,6 @@ const nyc = require('name-your-contributors') const privateToken = (process.env && process.env.PRIVATE_TOKEN) || '' -/** - * @async - */ const getContributors = function(owner, name, token = privateToken) { return nyc.repoContributors({ token, diff --git a/src/discover/labels.json b/src/discover/labels.json index 9c721e9f..a4228afd 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -77,11 +77,11 @@ }, { "label": "advance developer workflow", - "category": "projectManagement" + "category": "infra" }, { "label": "android", - "category": "" + "category": "platform" }, { "label": "angular", @@ -89,7 +89,7 @@ }, { "label": "animals (category)", - "category": "" + "category": "null" }, { "label": "answered", @@ -121,7 +121,7 @@ }, { "label": "awaiting-review", - "category": "" + "category": "null" }, { "label": "beginner-friendly", @@ -177,7 +177,7 @@ }, { "label": "c/c++", - "category": "" + "category": "code" }, { "label": "cannot reproduce", From 5810b3526e515a19bf19a7af6e5245536bd3ca87 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 22 Apr 2019 19:02:49 +0100 Subject: [PATCH 10/28] chore(discover): tokenizer and more [wip] - Added a tokenizer - Improved the dataset (might not be the last time) - Refactored the category finder and the tests (to be done again) --- package.json | 1 + src/discover/__tests__/findCategory.js | 53 ++++++----- src/discover/__tests__/token.js | 21 +++++ src/discover/findCategory.js | 90 ++++++++++++++++--- src/discover/labels.json | 118 ++++++++++++------------- src/discover/token.js | 9 ++ 6 files changed, 197 insertions(+), 95 deletions(-) create mode 100644 src/discover/__tests__/token.js create mode 100644 src/discover/token.js diff --git a/package.json b/package.json index 334e1361..6253f899 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "async": "^2.0.0-rc.1", "chalk": "^2.3.0", "inquirer": "^6.2.1", + "js-tokens": "^4.0.0", "lodash": "^4.11.2", "name-your-contributors": "mntnr/name-your-contributors#master", "pify": "^4.0.1", diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js index 5a20fe84..097042f3 100644 --- a/src/discover/__tests__/findCategory.js +++ b/src/discover/__tests__/findCategory.js @@ -1,6 +1,6 @@ -import chalk from 'chalk' +// import chalk from 'chalk' import findBestCategory from '../findCategory' -import {getAt, size} from '../labels' +import {getAll} from '../labels' test('exact labels', () => { expect(findBestCategory('bug')).toStrictEqual('bug') @@ -43,24 +43,33 @@ test('namespaced labels', () => { expect(findBestCategory('Bug 🐛')).toStrictEqual('bug') }) -test('accurate guessing', () => { - /* @todo Test findBestCategory() on each items of labels.json */ - for (let i = 0; i < size(); ++i) { - const data = getAt(i) - let expectedCat = '' - /* @todo remove this line soon */ - /* eslint-disable no-continue */ - if (data.category === 'null') continue //skip the unclassifiable ones (for now) - /* eslint-enable no-continue */ - process.stdout.write(`\n${chalk.cyan(`label guess: ${data.label}`)}\n`) - try { - expectedCat = findBestCategory(data.label) - } catch (err) { - process.stdout.write( - `${chalk.yellow(`Oooh boi! err= ${err.message}`)}\n\n`, - ) - expectedCat = 'null' - } - expect(expectedCat).toStrictEqual(data.category) - } +// test('accurate guessing', () => { +/* @todo Test findBestCategory() on each items of labels.json */ +// for (let i = 0; i < size(); ++i) { +// const data = getAt(i) +// let expectedCat = '' +// /* @todo remove this line soon */ +// /* eslint-disable no-continue */ +// if (data.category === 'null') continue //skip the unclassifiable ones (for now) +// /* eslint-enable no-continue */ +// try { +// expectedCat = findBestCategory(data.label) +// } catch (err) { +// process.stdout.write( +// `${chalk.yellow(`Oooh boi! err= ${err.message}`)}\n\n`, +// ) +// expectedCat = 'null' +// } +// expect(expectedCat).toStrictEqual(data.category) +// process.stdout.write(`\n${chalk.cyan(`label guessed: ${data.label}`)}\n`) +// } +// }) + +describe('accurate guessing', () => { + const labels = getAll() + .filter(data => data.category !== 'null') + .map(data => [data.label, data.category, findBestCategory(data.label)]) + test.each(labels)('guess "%s" in %s', (label, actual, expected) => { + expect(expected).toStrictEqual(actual) + }) }) diff --git a/src/discover/__tests__/token.js b/src/discover/__tests__/token.js new file mode 100644 index 00000000..cef50863 --- /dev/null +++ b/src/discover/__tests__/token.js @@ -0,0 +1,21 @@ +import {tokenize} from '../token' + +test('split spaced words', () => { + expect(tokenize('hello world')).toEqual(['hello', 'world']) +}) + +test('split barrelled words', () => { + expect(tokenize('hello-world')).toEqual(['hello', 'world']) +}) + +test('split namespaced words', () => { + expect(tokenize('hello:world')).toEqual(['hello', 'world']) +}) + +test('no uneeded tokens', () => { + expect(tokenize('')).toEqual([]) + expect(tokenize('-')).toEqual([]) + expect(tokenize(' ')).toEqual([]) + expect(tokenize(':')).toEqual([]) + expect(tokenize('=')).toEqual([]) +}) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index c685b866..c7b5c26c 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -1,5 +1,5 @@ const strSim = require('string-similarity') - +const {tokenize} = require('./token') const CATEGORIES = require('./categories.json') //Object.keys(ctrbType('github')); const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories @@ -8,43 +8,68 @@ const SIM_EXCEPTIONS = { adapter: 'plugin', android: 'platform', angular: 'code', + api: 'code', 'back-end': 'code', bootstrap: 'tool', breaking: 'code', //or null build: 'infra', cd: 'infra', + cdn: 'platform', ci: 'infra', cli: 'code', //or tool + chat: 'ideas', + core: 'maintenance', + chore: 'maintenance', crash: 'bug', //or null + css: 'code', dep: 'maintenance', dependency: 'maintenance', - 'feature request': 'ideas', - 'front-end': 'code', + device: 'platform', + discuss: 'ideas', + document: 'doc', + dom: 'code', + external: 'plugin', + frontend: 'code', + future: 'ideas', graphic: 'design', + html: 'code', lib: 'tool', //or code library: 'tool', //or code linux: 'platform', logo: 'design', icon: 'design', + internal: 'code', + // issue: 'bug', ios: 'platform', + javascript: 'code', + js: 'code', + mac: 'platform', + meet: 'eventOrganizing', + new: 'ideas', + optim: 'code', osx: 'platform', + php: 'code', pull: 'maintenance', react: 'code', regression: 'bug', + request: 'ideas', + rfc: 'ideas', ui: 'design', //or code ux: 'design', vue: 'code', + vuln: 'security', windows: 'platform', workflow: 'infra', //or projectManagement? } const NON_CATEGORY_LABELS = [ + 'component', 'duplicate', 'good first issue', 'help wanted', 'invalid', - 'wontfix', 'question', 'wip', + 'wontfix', ] const EMOJIS = { @@ -56,7 +81,7 @@ const EMOJIS = { ':construction:': 'maintenance', //or null (for WIP) ':detective:': 'null', ':heavy_check_mark:': 'null', - ':rocket:': 'maintenance', //or code + ':rocket:': 'maintenance', //or code or ideas ':sos:': 'null', ':speech_balloon:': 'null', ':warning:': 'security', @@ -65,26 +90,63 @@ const EMOJIS = { const SE = Object.keys(SIM_EXCEPTIONS) const EMO = Object.keys(EMOJIS) -module.exports = function findBestCategory(label) { +function bestCat(label, showRating) { const lbl = label.toLowerCase() - if (NON_CATEGORY_LABELS.includes(lbl)) return null - if (lbl in SIM_EXCEPTIONS) return SIM_EXCEPTIONS[lbl] + if (lbl in SIM_EXCEPTIONS) { + const target = SIM_EXCEPTIONS[lbl] + return showRating ? {target, rating: 1} : target + } const match = strSim.findBestMatch(lbl, CATEGORIES) - if (match.bestMatch.rating >= MATCH_THRESHOLD) return match.bestMatch.target + if (match.bestMatch.rating >= MATCH_THRESHOLD) { + return showRating ? match.bestMatch : match.bestMatch.target + } const nclMatch = strSim.findBestMatch(lbl, NON_CATEGORY_LABELS) if (nclMatch.bestMatch.rating >= MATCH_THRESHOLD) return null const seMatch = strSim.findBestMatch(lbl, SE) - if (seMatch.bestMatch.rating >= MATCH_THRESHOLD) - return SIM_EXCEPTIONS[seMatch.bestMatch.target] - + if (seMatch.bestMatch.rating >= MATCH_THRESHOLD) { + const target = SIM_EXCEPTIONS[seMatch.bestMatch.target] + return showRating + ? { + seTarget: seMatch.bestMatch.target, + rating: seMatch.bestMatch.rating, + target, + } + : target + } const eMatch = strSim.findBestMatch(lbl, EMO) - if (eMatch.bestMatch.rating >= MATCH_THRESHOLD) - return EMOJIS[eMatch.bestMatch.target] + if (eMatch.bestMatch.rating >= MATCH_THRESHOLD) { + const target = EMOJIS[eMatch.bestMatch.target] + return showRating + ? { + eTarget: eMatch.bestMatch.target, + rating: eMatch.bestMatch.rating, + target, + } + : target + } + + return null +} + +function findBestCategory(label, showRating) { + if (NON_CATEGORY_LABELS.includes(label.toLowerCase())) return null + const tokens = tokenize(label) + if (tokens.length > 1) { + //If `lbl` can be split into * several* tokens + const cats = tokens + .map(tk => bestCat(tk, true)) + .filter(cat => cat !== null) + .sort((a, b) => b.rating - a.rating) + if (!cats.length) return null + return showRating ? cats[0] : cats[0].target + } else if (tokens.length === 1) return bestCat(tokens[0], showRating) return null /* throw new Error( `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"`, ) */ } + +module.exports = findBestCategory diff --git a/src/discover/labels.json b/src/discover/labels.json index a4228afd..b08f5c6c 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -157,11 +157,11 @@ }, { "label": "browser: ie", - "category": "" + "category": "null" }, { "label": "browser: safari", - "category": "" + "category": "null" }, { "label": "bug", @@ -177,7 +177,7 @@ }, { "label": "c/c++", - "category": "code" + "category": "null" }, { "label": "cannot reproduce", @@ -225,31 +225,31 @@ }, { "label": "cmty:bug-report", - "category": "" + "category": "bug" }, { "label": "cmty:feature-request", - "category": "" + "category": "ideas" }, { "label": "cmty:question", - "category": "" + "category": "null" }, { "label": "cmty:status:cancelled", - "category": "" + "category": "null" }, { "label": "cmty:status:fixed", - "category": "" + "category": "null" }, { "label": "cmty:status:implemented", - "category": "" + "category": "null" }, { "label": "cmty:status:resolved", - "category": "" + "category": "null" }, { "label": "community", @@ -269,7 +269,7 @@ }, { "label": "component: core utilities", - "category": "code" + "category": "maintenance" }, { "label": "component: developer tools", @@ -281,11 +281,11 @@ }, { "label": "component: eslint rules", - "category": "" + "category": "null" }, { "label": "component: hooks", - "category": "" + "category": "code" }, { "label": "component: optimizing compiler", @@ -293,15 +293,15 @@ }, { "label": "component: reactis", - "category": "plugin" + "category": "code" }, { "label": "component: reconciler", - "category": "" + "category": "null" }, { "label": "component: scheduler", - "category": "" + "category": "null" }, { "label": "component: server rendering", @@ -333,7 +333,7 @@ }, { "label": "conflicts", - "category": "" + "category": "null" }, { "label": "contribution welcome", @@ -341,7 +341,7 @@ }, { "label": "core", - "category": "" + "category": "maintenance" }, { "label": "critical", @@ -349,7 +349,7 @@ }, { "label": "csharp", - "category": "" + "category": "code" }, { "label": "css", @@ -441,7 +441,7 @@ }, { "label": "electron", - "category": "" + "category": "tool" }, { "label": "enhancement", @@ -449,19 +449,19 @@ }, { "label": "enterprise", - "category": "" + "category": "null" }, { "label": "enterprise-2.0-backport", - "category": "" + "category": "null" }, { "label": "enterprise-2.1-backport", - "category": "" + "category": "null" }, { "label": "enterprise-2.2-backport", - "category": "" + "category": "null" }, { "label": "es6", @@ -473,7 +473,7 @@ }, { "label": "external", - "category": "" + "category": "null" }, { "label": "externs", @@ -577,15 +577,15 @@ }, { "label": "frontend", - "category": "" + "category": "code" }, { "label": "future architecture enhancements", - "category": "" + "category": "ideas" }, { "label": "future crypto enhancements", - "category": "" + "category": "ideas" }, { "label": "genders (category)", @@ -601,7 +601,7 @@ }, { "label": "go client internal release", - "category": "" + "category": "null" }, { "label": "good first issue", @@ -681,7 +681,7 @@ }, { "label": "https", - "category": "" + "category": "null" }, { "label": "icebox", @@ -689,7 +689,7 @@ }, { "label": "ie8", - "category": "" + "category": "null" }, { "label": "import in progress", @@ -713,7 +713,7 @@ }, { "label": "installer", - "category": "" + "category": "tool" }, { "label": "internal cleanup", @@ -729,7 +729,7 @@ }, { "label": "ios", - "category": "" + "category": "platform" }, { "label": "jquery differences", @@ -741,39 +741,39 @@ }, { "label": "kbfs", - "category": "" + "category": "null" }, { "label": "lang-crystal", - "category": "" + "category": "null" }, { "label": "lang-dart", - "category": "" + "category": "null" }, { "label": "lang-elixir", - "category": "" + "category": "null" }, { "label": "lang-go", - "category": "" + "category": "null" }, { "label": "lang-julia", - "category": "" + "category": "null" }, { "label": "lang-objc", - "category": "" + "category": "null" }, { "label": "lang-r", - "category": "" + "category": "null" }, { "label": "lang-scala", - "category": "" + "category": "null" }, { "label": "legal", @@ -789,27 +789,27 @@ }, { "label": "linux", - "category": "" + "category": "platform" }, { "label": "lks", - "category": "" + "category": "null" }, { "label": "m1.s0", - "category": "" + "category": "null" }, { "label": "m1.s1", - "category": "" + "category": "null" }, { "label": "m1.s2", - "category": "" + "category": "null" }, { "label": "macos", - "category": "" + "category": "platform" }, { "label": "maintenance", @@ -821,7 +821,7 @@ }, { "label": "mass purge 2015.10.26", - "category": "" + "category": "null" }, { "label": "minor", @@ -829,7 +829,7 @@ }, { "label": "mobile device support", - "category": "" + "category": "platform" }, { "label": "mode: proxy", @@ -933,7 +933,7 @@ }, { "label": "operations", - "category": "" + "category": "null" }, { "label": "opinions needed", @@ -1121,7 +1121,7 @@ }, { "label": "project management", - "category": "" + "category": "projectManagement" }, { "label": "question", @@ -1193,7 +1193,7 @@ }, { "label": "ruby", - "category": "" + "category": "code" }, { "label": "security", @@ -1401,7 +1401,7 @@ }, { "label": "travis-yml", - "category": "" + "category": "infra" }, { "label": "triage", @@ -1457,7 +1457,7 @@ }, { "label": "type: getting started", - "category": "" + "category": "null" }, { "label": "type: invalid :x:", @@ -1501,7 +1501,7 @@ }, { "label": "types", - "category": "" + "category": "null" }, { "label": "ui", @@ -1549,11 +1549,11 @@ }, { "label": "weekly-digest", - "category": "" + "category": "blog" }, { "label": "windows", - "category": "" + "category": "platform" }, { "label": "wip", @@ -1577,6 +1577,6 @@ }, { "label": "xhr-polling", - "category": "" + "category": "null" } ] diff --git a/src/discover/token.js b/src/discover/token.js new file mode 100644 index 00000000..5d5dad18 --- /dev/null +++ b/src/discover/token.js @@ -0,0 +1,9 @@ +const jst = require('js-tokens').default + +const tokenize = data => { + return data.match(jst).filter(chr => !['', ' ', '-', ':', '='].includes(chr)) +} + +module.exports = { + tokenize, +} From 0190a411c907a7ec298de0954bc98741376856bb Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 22 Apr 2019 19:34:18 +0100 Subject: [PATCH 11/28] refactor(discover): refactor `findCategory` and `labels` --- src/discover/__tests__/findCategory.js | 25 +------------------------ src/discover/findCategory.js | 23 +++++++++++++++++++++++ src/discover/labels.json | 14 +++++++------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js index 097042f3..060c6db1 100644 --- a/src/discover/__tests__/findCategory.js +++ b/src/discover/__tests__/findCategory.js @@ -1,4 +1,3 @@ -// import chalk from 'chalk' import findBestCategory from '../findCategory' import {getAll} from '../labels' @@ -43,31 +42,9 @@ test('namespaced labels', () => { expect(findBestCategory('Bug 🐛')).toStrictEqual('bug') }) -// test('accurate guessing', () => { -/* @todo Test findBestCategory() on each items of labels.json */ -// for (let i = 0; i < size(); ++i) { -// const data = getAt(i) -// let expectedCat = '' -// /* @todo remove this line soon */ -// /* eslint-disable no-continue */ -// if (data.category === 'null') continue //skip the unclassifiable ones (for now) -// /* eslint-enable no-continue */ -// try { -// expectedCat = findBestCategory(data.label) -// } catch (err) { -// process.stdout.write( -// `${chalk.yellow(`Oooh boi! err= ${err.message}`)}\n\n`, -// ) -// expectedCat = 'null' -// } -// expect(expectedCat).toStrictEqual(data.category) -// process.stdout.write(`\n${chalk.cyan(`label guessed: ${data.label}`)}\n`) -// } -// }) - describe('accurate guessing', () => { const labels = getAll() - .filter(data => data.category !== 'null') + .filter(data => data.category !== 'null') //skip the unclassifiable ones (for now) .map(data => [data.label, data.category, findBestCategory(data.label)]) test.each(labels)('guess "%s" in %s', (label, actual, expected) => { expect(expected).toStrictEqual(actual) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index c7b5c26c..f72bab6e 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -16,44 +16,66 @@ const SIM_EXCEPTIONS = { cd: 'infra', cdn: 'platform', ci: 'infra', + cleanup: 'maintenance', cli: 'code', //or tool chat: 'ideas', + configuration: 'code', core: 'maintenance', chore: 'maintenance', crash: 'bug', //or null + csharp: 'code', css: 'code', + currency: 'financial', + defect: 'bug', dep: 'maintenance', dependency: 'maintenance', device: 'platform', discuss: 'ideas', document: 'doc', dom: 'code', + e2e: 'test', + es6: 'code', external: 'plugin', frontend: 'code', future: 'ideas', graphic: 'design', + greenkeeper: 'infra', + hack: 'code', html: 'code', + legal: 'security', lib: 'tool', //or code library: 'tool', //or code + lint: 'maintenance', linux: 'platform', logo: 'design', icon: 'design', + insight: 'ideas', + install: 'tool', internal: 'code', + 'internal-issue': 'bug', // issue: 'bug', ios: 'platform', javascript: 'code', js: 'code', mac: 'platform', meet: 'eventOrganizing', + module: 'code', new: 'ideas', + node: 'platform', + opinion: 'ideas', optim: 'code', osx: 'platform', + package: 'platform', + parser: 'tool', php: 'code', pull: 'maintenance', react: 'code', regression: 'bug', request: 'ideas', rfc: 'ideas', + ruby: 'code', + shell: 'tool', + todo: 'maintenance', ui: 'design', //or code ux: 'design', vue: 'code', @@ -92,6 +114,7 @@ const EMO = Object.keys(EMOJIS) function bestCat(label, showRating) { const lbl = label.toLowerCase() + if (NON_CATEGORY_LABELS.includes(lbl)) return null if (lbl in SIM_EXCEPTIONS) { const target = SIM_EXCEPTIONS[lbl] return showRating ? {target, rating: 1} : target diff --git a/src/discover/labels.json b/src/discover/labels.json index b08f5c6c..d9a80e96 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -785,7 +785,7 @@ }, { "label": "lint", - "category": "" + "category": "maintenance" }, { "label": "linux", @@ -909,7 +909,7 @@ }, { "label": "new best practice", - "category": "doc" + "category": "ideas" }, { "label": "node", @@ -981,7 +981,7 @@ }, { "label": "performance", - "category": "code" + "category": "maintenance" }, { "label": "planned feature", @@ -1053,7 +1053,7 @@ }, { "label": "pr: new dependency", - "category": "maintenance" + "category": "ideas" }, { "label": "pr: new feature", @@ -1061,7 +1061,7 @@ }, { "label": "pr: new feature :rocket:", - "category": "maintenance" + "category": "ideas" }, { "label": "pr: polish :nail_care:", @@ -1141,7 +1141,7 @@ }, { "label": "refactor", - "category": "maintenance" + "category": "code" }, { "label": "regression", @@ -1185,7 +1185,7 @@ }, { "label": "revisitinfuture", - "category": "maintenance" + "category": "ideas" }, { "label": "rfc", From 46b98395a0036d92179ecf23c85c23c4632bc8ba Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 22 Apr 2019 21:21:57 +0100 Subject: [PATCH 12/28] refactor(discover): tweaks [wip] Improved `findCategory` and `labels`. --- src/discover/findCategory.js | 12 +++++++++--- src/discover/labels.json | 30 +++++++++++++++--------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index f72bab6e..6b9921f3 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -9,6 +9,7 @@ const SIM_EXCEPTIONS = { android: 'platform', angular: 'code', api: 'code', + babel: 'tool', 'back-end': 'code', bootstrap: 'tool', breaking: 'code', //or null @@ -71,10 +72,12 @@ const SIM_EXCEPTIONS = { pull: 'maintenance', react: 'code', regression: 'bug', + rendering: 'code', request: 'ideas', rfc: 'ideas', ruby: 'code', shell: 'tool', + spec: 'doc', todo: 'maintenance', ui: 'design', //or code ux: 'design', @@ -120,15 +123,18 @@ function bestCat(label, showRating) { return showRating ? {target, rating: 1} : target } const match = strSim.findBestMatch(lbl, CATEGORIES) - if (match.bestMatch.rating >= MATCH_THRESHOLD) { + const seMatch = strSim.findBestMatch(lbl, SE) + const goodMatch = match.bestMatch.rating >= MATCH_THRESHOLD + const goodSeMatch = seMatch.bestMatch.rating >= MATCH_THRESHOLD + + if (goodMatch && match.bestMatch.rating >= seMatch.bestMatch.rating) { return showRating ? match.bestMatch : match.bestMatch.target } const nclMatch = strSim.findBestMatch(lbl, NON_CATEGORY_LABELS) if (nclMatch.bestMatch.rating >= MATCH_THRESHOLD) return null - const seMatch = strSim.findBestMatch(lbl, SE) - if (seMatch.bestMatch.rating >= MATCH_THRESHOLD) { + if (goodSeMatch) { const target = SIM_EXCEPTIONS[seMatch.bestMatch.target] return showRating ? { diff --git a/src/discover/labels.json b/src/discover/labels.json index d9a80e96..7cf260b9 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -485,7 +485,7 @@ }, { "label": "feat: babel", - "category": "code" + "category": "tool" }, { "label": "feat: cli", @@ -509,7 +509,7 @@ }, { "label": "feat: eslint", - "category": "tool" + "category": "maintenance" }, { "label": "feat: plugin api", @@ -529,11 +529,11 @@ }, { "label": "feat: unit-jest", - "category": "tool" + "category": "test" }, { "label": "feat: unit-mocha", - "category": "tool" + "category": "test" }, { "label": "feature", @@ -685,7 +685,7 @@ }, { "label": "icebox", - "category": "projectManagement" + "category": "platform" }, { "label": "ie8", @@ -1057,7 +1057,7 @@ }, { "label": "pr: new feature", - "category": "maintenance" + "category": "ideas" }, { "label": "pr: new feature :rocket:", @@ -1085,7 +1085,7 @@ }, { "label": "pr: spec compliance :eyeglasses:", - "category": "null" + "category": "doc" }, { "label": "pr: underlying tools", @@ -1217,35 +1217,35 @@ }, { "label": "spec: async functions", - "category": "code" + "category": "doc" }, { "label": "spec: async generators", - "category": "code" + "category": "doc" }, { "label": "spec: bigint", - "category": "code" + "category": "doc" }, { "label": "spec: class fields", - "category": "code" + "category": "doc" }, { "label": "spec: classes", - "category": "code" + "category": "doc" }, { "label": "spec: decorators", - "category": "code" + "category": "doc" }, { "label": "spec: decorators (legacy)", - "category": "code" + "category": "doc" }, { "label": "spec: do expressions", - "category": "code" + "category": "doc" }, { "label": "stale", From 76abf6e2f4fd0b92b1f8916bd555391b5a6355ce Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 22 Apr 2019 21:47:36 +0100 Subject: [PATCH 13/28] feat(discover): further improvements [wip] --- src/discover/findCategory.js | 14 +++++++++++--- src/discover/labels.json | 10 +++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 6b9921f3..d2ccd2e4 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -27,14 +27,17 @@ const SIM_EXCEPTIONS = { csharp: 'code', css: 'code', currency: 'financial', + update: 'maintenance', defect: 'bug', dep: 'maintenance', dependency: 'maintenance', device: 'platform', + digest: 'blog', discuss: 'ideas', document: 'doc', dom: 'code', e2e: 'test', + electron: 'tool', es6: 'code', external: 'plugin', frontend: 'code', @@ -42,6 +45,7 @@ const SIM_EXCEPTIONS = { graphic: 'design', greenkeeper: 'infra', hack: 'code', + handshake: 'business', html: 'code', legal: 'security', lib: 'tool', //or code @@ -60,6 +64,7 @@ const SIM_EXCEPTIONS = { js: 'code', mac: 'platform', meet: 'eventOrganizing', + mocha: test, module: 'code', new: 'ideas', node: 'platform', @@ -77,6 +82,8 @@ const SIM_EXCEPTIONS = { rfc: 'ideas', ruby: 'code', shell: 'tool', + socket: 'tool', + site: 'code', //website spec: 'doc', todo: 'maintenance', ui: 'design', //or code @@ -124,8 +131,10 @@ function bestCat(label, showRating) { } const match = strSim.findBestMatch(lbl, CATEGORIES) const seMatch = strSim.findBestMatch(lbl, SE) + const eMatch = strSim.findBestMatch(lbl, EMO) const goodMatch = match.bestMatch.rating >= MATCH_THRESHOLD const goodSeMatch = seMatch.bestMatch.rating >= MATCH_THRESHOLD + const goodEMatch = eMatch.bestMatch.rating >= MATCH_THRESHOLD if (goodMatch && match.bestMatch.rating >= seMatch.bestMatch.rating) { return showRating ? match.bestMatch : match.bestMatch.target @@ -134,7 +143,7 @@ function bestCat(label, showRating) { const nclMatch = strSim.findBestMatch(lbl, NON_CATEGORY_LABELS) if (nclMatch.bestMatch.rating >= MATCH_THRESHOLD) return null - if (goodSeMatch) { + if (goodSeMatch && seMatch.bestMatch.rating >= eMatch.bestMatch.rating) { const target = SIM_EXCEPTIONS[seMatch.bestMatch.target] return showRating ? { @@ -144,8 +153,7 @@ function bestCat(label, showRating) { } : target } - const eMatch = strSim.findBestMatch(lbl, EMO) - if (eMatch.bestMatch.rating >= MATCH_THRESHOLD) { + if (goodEMatch) { const target = EMOJIS[eMatch.bestMatch.target] return showRating ? { diff --git a/src/discover/labels.json b/src/discover/labels.json index 7cf260b9..2ce4266f 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -501,11 +501,11 @@ }, { "label": "feat: e2e-cypress", - "category": "plugin" + "category": "test" }, { "label": "feat: e2e-nightwatch", - "category": "plugin" + "category": "test" }, { "label": "feat: eslint", @@ -1205,7 +1205,7 @@ }, { "label": "socket.io client", - "category": "code" + "category": "tool" }, { "label": "spam", @@ -1353,7 +1353,7 @@ }, { "label": "support", - "category": "maintenance" + "category": "null" }, { "label": "syntax feature request", @@ -1436,7 +1436,7 @@ "category": "ideas" }, { - "label": "type: docs update", + "label": "type: doc update", "category": "doc" }, { From aba6cd99211673418bf01c631d3e22d74930a9c4 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Tue, 23 Apr 2019 21:39:57 +0100 Subject: [PATCH 14/28] style(discover): lint fix --- src/discover/findCategory.js | 35 ++++++++++++++++++++++------------- src/discover/simExceptions.js | 2 +- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 37a8d649..d14b9daa 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -21,7 +21,7 @@ const COMPOSED_LABELS = { 'code-clean': 'maintenance', 'front-end': 'code', 'internal-issue': 'bug', - 'internal-cleanup': 'maintenance' + 'internal-cleanup': 'maintenance', } const SE = Object.keys(SIM_EXCEPTIONS) @@ -35,8 +35,8 @@ function bestCat(label, showRating) { return showRating ? {target, rating: 1} : target } const match = strSim.findBestMatch(lbl, CATEGORIES).bestMatch - const seMatch = { ...strSim.findBestMatch(lbl, SE).bestMatch, ref: 'SE' } - const clMatch = { ...strSim.findBestMatch(lbl, CL).bestMatch, ref: 'CL' } + const seMatch = {...strSim.findBestMatch(lbl, SE).bestMatch, ref: 'SE'} + const clMatch = {...strSim.findBestMatch(lbl, CL).bestMatch, ref: 'CL'} const scores = [match, seMatch, clMatch].sort((a, b) => b.rating - a.rating) if (process.env.DEBUG) console.log('scores=', scores) @@ -44,7 +44,15 @@ function bestCat(label, showRating) { while (scores[idx++].rating < MATCH_THRESHOLD && idx < scores.length) { /* */ } - if (process.env.DEBUG) console.log('idx-1=', idx - 1, 'score=', scores[idx - 1], 'len=', scores.length) + if (process.env.DEBUG) + console.log( + 'idx-1=', + idx - 1, + 'score=', + scores[idx - 1], + 'len=', + scores.length, + ) switch (idx) { case scores.length: return null @@ -54,12 +62,13 @@ function bestCat(label, showRating) { let target = scores[idx].target // console.log('target=', target) if (scores[idx].ref === 'SE') target = SIM_EXCEPTIONS[scores[idx].target] - else if (scores[idx].ref === 'CL') target = COMPOSED_LABELS[scores[idx].target] - + else if (scores[idx].ref === 'CL') + target = COMPOSED_LABELS[scores[idx].target] + if (showRating) { return { ...scores[idx], - target + target, } } return target @@ -67,7 +76,7 @@ function bestCat(label, showRating) { } function findBestCategory(label, showRating) { - const lbl = label.toLowerCase(); + const lbl = label.toLowerCase() if (NON_CATEGORY_LABELS.includes(lbl)) return null if (CL.includes(lbl)) return bestCat(lbl, showRating) const tokens = tokenize(lbl) @@ -77,21 +86,21 @@ function findBestCategory(label, showRating) { const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch const target = COMPOSED_LABELS[composedMatch.target] if (composedMatch.rating >= COMPLEX_THRESHOLD) { - return showRating ? { ...composedMatch, target, ref: 'CPX' } : target + return showRating ? {...composedMatch, target, ref: 'CPX'} : target } } if (process.env.DEBUG) console.log('tokens=', tokens) if (tokens.length > 1) { //If `lbl` can be split into *several* tokens - const cats = tokens - .map(tk => bestCat(tk, true)) - .filter(cat => cat !== null) + const cats = tokens.map(tk => bestCat(tk, true)).filter(cat => cat !== null) if (!cats.length) return null cats.sort((a, b) => b.rating - a.rating) return showRating ? cats[0] : cats[0].target } else if (tokens.length === 1) return bestCat(tokens[0], showRating) - process.stdout.write(`Match threshold of ${MATCH_THRESHOLD} not met for "${label}"\n`) + process.stdout.write( + `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"\n`, + ) return null } diff --git a/src/discover/simExceptions.js b/src/discover/simExceptions.js index 2c1a2edf..da4681a9 100644 --- a/src/discover/simExceptions.js +++ b/src/discover/simExceptions.js @@ -104,4 +104,4 @@ module.exports = { ':sos:': 'null', ':speech_balloon:': 'null', ':warning:': 'security', -} \ No newline at end of file +} From 9cbbceca180490647c29d2f67ebec506dd87a8d3 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 24 Apr 2019 09:19:57 +0100 Subject: [PATCH 15/28] feat(discover): added labels --- src/discover/findCategory.js | 43 ++++++++++++----------------------- src/discover/labels.json | 2 +- src/discover/simExceptions.js | 2 ++ 3 files changed, 17 insertions(+), 30 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index d14b9daa..e65ce577 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -22,6 +22,7 @@ const COMPOSED_LABELS = { 'front-end': 'code', 'internal-issue': 'bug', 'internal-cleanup': 'maintenance', + 'other-feature': 'ideas', } const SE = Object.keys(SIM_EXCEPTIONS) @@ -39,40 +40,25 @@ function bestCat(label, showRating) { const clMatch = {...strSim.findBestMatch(lbl, CL).bestMatch, ref: 'CL'} const scores = [match, seMatch, clMatch].sort((a, b) => b.rating - a.rating) - if (process.env.DEBUG) console.log('scores=', scores) let idx = 0 while (scores[idx++].rating < MATCH_THRESHOLD && idx < scores.length) { /* */ } - if (process.env.DEBUG) - console.log( - 'idx-1=', - idx - 1, - 'score=', - scores[idx - 1], - 'len=', - scores.length, - ) - switch (idx) { - case scores.length: - return null - default: - --idx - // console.log('after --idx:', idx, 'score=', scores[idx]) - let target = scores[idx].target - // console.log('target=', target) - if (scores[idx].ref === 'SE') target = SIM_EXCEPTIONS[scores[idx].target] - else if (scores[idx].ref === 'CL') - target = COMPOSED_LABELS[scores[idx].target] - if (showRating) { - return { - ...scores[idx], - target, - } - } - return target + if (idx === scores.length) return null + --idx + let target = scores[idx].target + if (scores[idx].ref === 'SE') target = SIM_EXCEPTIONS[scores[idx].target] + else if (scores[idx].ref === 'CL') + target = COMPOSED_LABELS[scores[idx].target] + + if (showRating) { + return { + ...scores[idx], + target, + } } + return target } function findBestCategory(label, showRating) { @@ -89,7 +75,6 @@ function findBestCategory(label, showRating) { return showRating ? {...composedMatch, target, ref: 'CPX'} : target } } - if (process.env.DEBUG) console.log('tokens=', tokens) if (tokens.length > 1) { //If `lbl` can be split into *several* tokens const cats = tokens.map(tk => bestCat(tk, true)).filter(cat => cat !== null) diff --git a/src/discover/labels.json b/src/discover/labels.json index 760fb1a1..64bee742 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -1453,7 +1453,7 @@ }, { "label": "type: enhancement :bulb:", - "category": "maintenance" + "category": "ideas" }, { "label": "type: getting started", diff --git a/src/discover/simExceptions.js b/src/discover/simExceptions.js index da4681a9..36f7e5bb 100644 --- a/src/discover/simExceptions.js +++ b/src/discover/simExceptions.js @@ -83,6 +83,7 @@ module.exports = { spa: 'code', spec: 'doc', suggestion: 'ideas', + tip: 'ideas', todo: 'maintenance', travis: 'infra', ui: 'design', //or code @@ -100,6 +101,7 @@ module.exports = { ':construction:': 'maintenance', //or null (for WIP) ':detective:': 'null', ':heavy_check_mark:': 'null', + ':nail_care:': 'maintenance', ':rocket:': 'maintenance', //or code or ideas ':sos:': 'null', ':speech_balloon:': 'null', From 21ef61788ea264be6e5bd4b1b180d16605afa41f Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 24 Apr 2019 17:23:33 +0100 Subject: [PATCH 16/28] feat(discover): improvements More labels to work with, a more correct **category finder** (from ~55% accuracy to ~79.5%). --- src/discover/findCategory.js | 70 +++++++++++++++++++++++++++++++---- src/discover/labels.js | 4 +- src/discover/labels.json | 26 ++++++------- src/discover/simExceptions.js | 3 ++ 4 files changed, 79 insertions(+), 24 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index e65ce577..d14a7726 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -6,40 +6,91 @@ const SIM_EXCEPTIONS = require('./simExceptions') const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories const COMPLEX_THRESHOLD = 0.7 //70% to make sure really similar composed labels are matchable const NON_CATEGORY_LABELS = [ + 'area', + 'available', + 'awaiting', + 'backlog', //or could be a projectManagement one + 'beginner-friendly', + 'block', + 'cla', + 'closed', 'component', + 'concurrent', + 'confirm', + 'conflict', + 'contribution welcome', + 'difficulty', + 'done', 'duplicate', + 'enterprise', + 'gender', + 'feedback', 'good first issue', 'help wanted', + 'hold', + 'in progress', 'invalid', + 'merge', + 'n/a', + 'needs', + 'priority', 'question', + 'reminder', + 'repo', + 'resolution', + 'signed', + 'spam', + 'stale', + 'start', + 'unknown', 'wip', 'wontfix', + 'working', + 'wrong', ] const COMPOSED_LABELS = { + 'awaiting-review': 'null', 'back-end': 'code', + 'cla-no': 'null', + 'cla-sign': 'null', + 'cla-yes': 'null', 'code-clean': 'maintenance', + 'current-mod': 'null', + 'difficulty-easy': 'null', + 'first-time': 'null', 'front-end': 'code', 'internal-issue': 'bug', 'internal-cleanup': 'maintenance', 'other-feature': 'ideas', + 'work-in-progress': 'null', } const SE = Object.keys(SIM_EXCEPTIONS) const CL = Object.keys(COMPOSED_LABELS) -function bestCat(label, showRating) { +function bestCat(label, showRating = false, log = false) { const lbl = label.toLowerCase() if (NON_CATEGORY_LABELS.includes(lbl)) return null if (lbl in SIM_EXCEPTIONS) { const target = SIM_EXCEPTIONS[lbl] return showRating ? {target, rating: 1} : target } - const match = strSim.findBestMatch(lbl, CATEGORIES).bestMatch + const match = {...strSim.findBestMatch(lbl, CATEGORIES).bestMatch, ref: ''} const seMatch = {...strSim.findBestMatch(lbl, SE).bestMatch, ref: 'SE'} + const nclMatch = { + ...strSim.findBestMatch(lbl, NON_CATEGORY_LABELS).bestMatch, + ref: 'NC', + } const clMatch = {...strSim.findBestMatch(lbl, CL).bestMatch, ref: 'CL'} - const scores = [match, seMatch, clMatch].sort((a, b) => b.rating - a.rating) + const scores = [match, seMatch, clMatch, nclMatch].sort( + (a, b) => b.rating - a.rating, + ) + if (log) { + //eslint-disable-next-line no-console + console.log('scores=', scores) + } let idx = 0 while (scores[idx++].rating < MATCH_THRESHOLD && idx < scores.length) { /* */ @@ -51,6 +102,7 @@ function bestCat(label, showRating) { if (scores[idx].ref === 'SE') target = SIM_EXCEPTIONS[scores[idx].target] else if (scores[idx].ref === 'CL') target = COMPOSED_LABELS[scores[idx].target] + if (scores[idx].ref === 'NC' || target === 'null') return null //target = null if (showRating) { return { @@ -61,13 +113,13 @@ function bestCat(label, showRating) { return target } -function findBestCategory(label, showRating) { +function findBestCategory(label, showRating = false, log = false) { const lbl = label.toLowerCase() if (NON_CATEGORY_LABELS.includes(lbl)) return null - if (CL.includes(lbl)) return bestCat(lbl, showRating) + if (CL.includes(lbl)) return bestCat(lbl, showRating, log) const tokens = tokenize(lbl) const composition = tokens.join('-') - if (CL.includes(composition)) return bestCat(composition, showRating) + if (CL.includes(composition)) return bestCat(composition, showRating, log) else { const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch const target = COMPOSED_LABELS[composedMatch.target] @@ -77,11 +129,13 @@ function findBestCategory(label, showRating) { } if (tokens.length > 1) { //If `lbl` can be split into *several* tokens - const cats = tokens.map(tk => bestCat(tk, true)).filter(cat => cat !== null) + const cats = tokens + .map(tk => bestCat(tk, true, log)) + .filter(cat => cat !== null) if (!cats.length) return null cats.sort((a, b) => b.rating - a.rating) return showRating ? cats[0] : cats[0].target - } else if (tokens.length === 1) return bestCat(tokens[0], showRating) + } else if (tokens.length === 1) return bestCat(tokens[0], showRating, log) process.stdout.write( `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"\n`, diff --git a/src/discover/labels.js b/src/discover/labels.js index fc168b77..80425ac5 100644 --- a/src/discover/labels.js +++ b/src/discover/labels.js @@ -20,8 +20,6 @@ module.exports = { getValidCatLabels: () => labels.filter(l => CATEGORIES.includes(l.category)), getBadData: () => labels.filter( - l => - !!l.category && - /* l.category != 'null' && */ !CATEGORIES.includes(l.category), + l => (!!l.category && !CATEGORIES.includes(l.category)) || !l.category, ), } diff --git a/src/discover/labels.json b/src/discover/labels.json index 64bee742..c62ade42 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -53,7 +53,7 @@ }, { "label": "@font-face", - "category": "null" + "category": "design" }, { "label": "abandoned", @@ -69,7 +69,7 @@ }, { "label": "hacked", - "category": "null" + "category": "security" }, { "label": "adapter", @@ -265,7 +265,7 @@ }, { "label": "component: concurrent mode", - "category": "null" + "category": "code" }, { "label": "component: core utilities", @@ -281,7 +281,7 @@ }, { "label": "component: eslint rules", - "category": "null" + "category": "maintenance" }, { "label": "component: hooks", @@ -561,7 +561,7 @@ }, { "label": "flashsocket", - "category": "null" + "category": "tool" }, { "label": "fontawesome.com", @@ -745,35 +745,35 @@ }, { "label": "lang-crystal", - "category": "null" + "category": "code" }, { "label": "lang-dart", - "category": "null" + "category": "code" }, { "label": "lang-elixir", - "category": "null" + "category": "code" }, { "label": "lang-go", - "category": "null" + "category": "code" }, { "label": "lang-julia", - "category": "null" + "category": "code" }, { "label": "lang-objc", - "category": "null" + "category": "code" }, { "label": "lang-r", - "category": "null" + "category": "code" }, { "label": "lang-scala", - "category": "null" + "category": "code" }, { "label": "legal", diff --git a/src/discover/simExceptions.js b/src/discover/simExceptions.js index 36f7e5bb..106d9f80 100644 --- a/src/discover/simExceptions.js +++ b/src/discover/simExceptions.js @@ -6,6 +6,7 @@ module.exports = { api: 'code', babel: 'tool', 'back-end': 'code', + // block: null, bootstrap: 'tool', breaking: 'code', //or null build: 'infra', @@ -35,11 +36,13 @@ module.exports = { electron: 'tool', es6: 'code', external: 'plugin', + font: 'design', frontend: 'code', future: 'ideas', graphic: 'design', greenkeeper: 'infra', hack: 'code', + hacked: 'security', handshake: 'business', hook: 'code', html: 'code', From 66f21eb2b4a4751dfbab5601a964b58d26bb2d1c Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 24 Apr 2019 18:14:10 +0100 Subject: [PATCH 17/28] chore(discover): added helpers And improved the `tokenizer` --- src/discover/__tests__/token.js | 6 ++++ src/discover/check.js | 39 ++++++++++++++++++++++ src/discover/token.js | 17 +++++++++- src/discover/valid.js | 57 +++++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 src/discover/check.js create mode 100644 src/discover/valid.js diff --git a/src/discover/__tests__/token.js b/src/discover/__tests__/token.js index cef50863..0305efa7 100644 --- a/src/discover/__tests__/token.js +++ b/src/discover/__tests__/token.js @@ -19,3 +19,9 @@ test('no uneeded tokens', () => { expect(tokenize(':')).toEqual([]) expect(tokenize('=')).toEqual([]) }) + +test('no conjunctions', () => { + expect(tokenize('a or b')).toEqual(['a', 'b']) + expect(tokenize('a and b')).toEqual(['a', 'b']) + expect(tokenize('a nor b')).toEqual(['a', 'b']) +}) diff --git a/src/discover/check.js b/src/discover/check.js new file mode 100644 index 00000000..9855a2e8 --- /dev/null +++ b/src/discover/check.js @@ -0,0 +1,39 @@ +const ck = require('chalk') +const valid = require('./valid') +const labels = require('./labels') + +if (labels.getBadData().length) throw new Error('Bad data!') + +const portion = labels.size() ** -1 * 100 + +const nulLabels = labels.getNullCatLabels() +const allLabels = labels.getAll() +/* eslint-disable no-console */ +console.log(ck.blueBright('\tNull labels'), '*', nulLabels.length) +const nulScore = { + yes: 0, + no: 0, +} +const score = { + yes: 0, + no: 0, +} + +nulLabels.forEach(data => { + return valid(data, process.env.LOGN) ? nulScore.yes++ : nulScore.no++ +}) + +const perc = s => Math.round(s.yes * portion * 1000) / 1000 + +nulScore.total = nulScore.yes - nulScore.no +console.log(`Null scores= ${ck.yellow(nulScore.total)} (${perc(nulScore)}%) +yes = ${ck.green(nulScore.yes)}\tno = ${ck.red(nulScore.no)}`) + +allLabels.forEach(data => { + return valid(data, process.env.LOG || false) ? score.yes++ : score.no++ +}) + +score.total = score.yes - score.no +console.log(`\nAll scores= ${ck.yellow(score.total)} (${perc(score)}%) +yes = ${ck.green(score.yes)}\tno = ${ck.red(score.no)}`) +/* eslint-enable no-console */ diff --git a/src/discover/token.js b/src/discover/token.js index 5d5dad18..1016be9c 100644 --- a/src/discover/token.js +++ b/src/discover/token.js @@ -1,7 +1,22 @@ const jst = require('js-tokens').default +const BAD_TOKENS = [ + '', + ' ', + '-', + ':', + '=', //separators + 'for', + 'and', + 'nor', + 'but', + 'or', + 'yet', + 'so', //conjunctions +] + const tokenize = data => { - return data.match(jst).filter(chr => !['', ' ', '-', ':', '='].includes(chr)) + return data.match(jst).filter(chr => !BAD_TOKENS.includes(chr)) } module.exports = { diff --git a/src/discover/valid.js b/src/discover/valid.js new file mode 100644 index 00000000..b0185e21 --- /dev/null +++ b/src/discover/valid.js @@ -0,0 +1,57 @@ +const ck = require('chalk') +const findCat = require('./findCategory') + +const str = res => + `{target: ${ck.green(res.target)}, rating: ${ck.green( + res.rating, + )}, ref: ${ck.green(res.ref)}}` + +/* eslint-disable no-console */ +module.exports = (data, log = true) => { + const actual = findCat(data.label, true) + if (actual === null) { + const equal = `${actual}` === data.category + if (log) { + /* eslint-disable babel/no-unused-expressions */ + equal + ? console.log( + ck.green('OK'), + ck.magenta(data.label), + 'in', + ck.cyan(data.category), + ) + : console.log( + ck.red('NO'), + ck.magenta(data.label), + ': actual/expected', + ck.yellow(actual), + ck.cyan(data.category), + ) + /* eslint-enable babel/no-unused-expressions */ + } + return equal + } + const equal = actual.target === data.category + if (log) { + /* eslint-disable babel/no-unused-expressions */ + equal + ? console.log( + ck.green('OK'), + ck.magenta(data.label), + 'in', + ck.cyan(data.category), + ) + : console.log( + ck.red('NO'), + ck.magenta(data.label), + ': actual/expected', + ck.yellow(actual.target), + ck.cyan(data.category), + '\n\tactual (full)=', + str(actual), + ) + /* eslint-disable babel/no-unused-expressions */ + } + return equal +} +/* eslint-enable no-console */ From fd8c62dfdb0916b111e3ad2f4c88a4ac4dd75e6d Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Thu, 25 Apr 2019 12:27:54 +0100 Subject: [PATCH 18/28] chore(discover): refactoring and various changes Refactored `token`, tweaked labels and added exceptions and commented out some code (82.025% accuracy :party_hat:) --- src/discover/__tests__/token.js | 10 +++++++++- src/discover/findCategory.js | 32 ++++++++++++++++++++++---------- src/discover/labels.json | 2 +- src/discover/simExceptions.js | 1 + src/discover/token.js | 20 +++++++++++++------- 5 files changed, 46 insertions(+), 19 deletions(-) diff --git a/src/discover/__tests__/token.js b/src/discover/__tests__/token.js index 0305efa7..e2a911ac 100644 --- a/src/discover/__tests__/token.js +++ b/src/discover/__tests__/token.js @@ -1,4 +1,4 @@ -import {tokenize} from '../token' +import tokenize from '../token' test('split spaced words', () => { expect(tokenize('hello world')).toEqual(['hello', 'world']) @@ -25,3 +25,11 @@ test('no conjunctions', () => { expect(tokenize('a and b')).toEqual(['a', 'b']) expect(tokenize('a nor b')).toEqual(['a', 'b']) }) + +test('no (ad)verb modifying adverbs', () => { + expect(tokenize('too good')).toEqual(['good']) + expect(tokenize('enough code')).toEqual(['code']) + expect(tokenize('very hard')).toEqual(['hard']) + expect(tokenize('just done')).toEqual(['done']) + expect(tokenize('almost ready')).toEqual(['ready']) +}) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index d14a7726..dd87d8b7 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -1,10 +1,10 @@ const strSim = require('string-similarity') -const {tokenize} = require('./token') +const tokenize = require('./token') const CATEGORIES = require('./categories.json') //Object.keys(ctrbType('github')); const SIM_EXCEPTIONS = require('./simExceptions') const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories -const COMPLEX_THRESHOLD = 0.7 //70% to make sure really similar composed labels are matchable +// const COMPLEX_THRESHOLD = 0.7 //70% to make sure really similar composed labels are matchable const NON_CATEGORY_LABELS = [ 'area', 'available', @@ -12,6 +12,7 @@ const NON_CATEGORY_LABELS = [ 'backlog', //or could be a projectManagement one 'beginner-friendly', 'block', + 'bounty', 'cla', 'closed', 'component', @@ -26,9 +27,12 @@ const NON_CATEGORY_LABELS = [ 'gender', 'feedback', 'good first issue', + 'help', 'help wanted', 'hold', 'in progress', + 'inactive', + 'info', 'invalid', 'merge', 'n/a', @@ -37,6 +41,8 @@ const NON_CATEGORY_LABELS = [ 'question', 'reminder', 'repo', + 'reproduce', + 'requested', 'resolution', 'signed', 'spam', @@ -60,9 +66,15 @@ const COMPOSED_LABELS = { 'difficulty-easy': 'null', 'first-time': 'null', 'front-end': 'code', - 'internal-issue': 'bug', + 'internal-issue-created': 'bug', 'internal-cleanup': 'maintenance', + 'needs-a': 'null', + 'needs-more': 'null', + 'non-library': 'null', + 'not-a-bug': 'null', 'other-feature': 'ideas', + 'review-in-progress': 'null', + 'review-request': 'null', 'work-in-progress': 'null', } @@ -120,13 +132,13 @@ function findBestCategory(label, showRating = false, log = false) { const tokens = tokenize(lbl) const composition = tokens.join('-') if (CL.includes(composition)) return bestCat(composition, showRating, log) - else { - const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch - const target = COMPOSED_LABELS[composedMatch.target] - if (composedMatch.rating >= COMPLEX_THRESHOLD) { - return showRating ? {...composedMatch, target, ref: 'CPX'} : target - } - } + + // const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch + // const target = COMPOSED_LABELS[composedMatch.target] + // if (composedMatch.rating >= COMPLEX_THRESHOLD) { + // return showRating ? {...composedMatch, target, ref: 'CPX'} : target + // } + if (tokens.length > 1) { //If `lbl` can be split into *several* tokens const cats = tokens diff --git a/src/discover/labels.json b/src/discover/labels.json index c62ade42..8b995635 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -473,7 +473,7 @@ }, { "label": "external", - "category": "null" + "category": "plugin" }, { "label": "externs", diff --git a/src/discover/simExceptions.js b/src/discover/simExceptions.js index 106d9f80..e82aaa81 100644 --- a/src/discover/simExceptions.js +++ b/src/discover/simExceptions.js @@ -103,6 +103,7 @@ module.exports = { ':bulb:': 'ideas', ':construction:': 'maintenance', //or null (for WIP) ':detective:': 'null', + ':grey_question:': 'null', ':heavy_check_mark:': 'null', ':nail_care:': 'maintenance', ':rocket:': 'maintenance', //or code or ideas diff --git a/src/discover/token.js b/src/discover/token.js index 1016be9c..5df7a218 100644 --- a/src/discover/token.js +++ b/src/discover/token.js @@ -1,24 +1,30 @@ const jst = require('js-tokens').default const BAD_TOKENS = [ + //Separators '', ' ', '-', ':', - '=', //separators - 'for', + '=', + //conjunctions 'and', - 'nor', 'but', + 'for', + 'nor', 'or', + 'so', 'yet', - 'so', //conjunctions + //some adverbs + 'almost', + 'enough', + 'just', + 'too', + 'very', ] const tokenize = data => { return data.match(jst).filter(chr => !BAD_TOKENS.includes(chr)) } -module.exports = { - tokenize, -} +module.exports = tokenize From 19301a207d01d8a3225baba6e8163603c3ebd442 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Thu, 25 Apr 2019 17:24:13 +0100 Subject: [PATCH 19/28] refactor(discover): multiple refactoring + improvements The accuracy of `findCategory` is now at 95.696% (:hooray:). --- src/discover/findCategory.js | 111 ++++++++++------------- src/discover/labels.json | 22 ++--- src/discover/sets/noCategory.js | 64 +++++++++++++ src/discover/{ => sets}/simExceptions.js | 2 + src/discover/token.js | 3 + 5 files changed, 130 insertions(+), 72 deletions(-) create mode 100644 src/discover/sets/noCategory.js rename src/discover/{ => sets}/simExceptions.js (97%) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index dd87d8b7..5dc92eb0 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -1,81 +1,64 @@ const strSim = require('string-similarity') const tokenize = require('./token') const CATEGORIES = require('./categories.json') //Object.keys(ctrbType('github')); -const SIM_EXCEPTIONS = require('./simExceptions') +const SIM_EXCEPTIONS = require('./sets/simExceptions') +const NON_CATEGORY_LABELS = require('./sets/noCategory') const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories // const COMPLEX_THRESHOLD = 0.7 //70% to make sure really similar composed labels are matchable -const NON_CATEGORY_LABELS = [ - 'area', - 'available', - 'awaiting', - 'backlog', //or could be a projectManagement one - 'beginner-friendly', - 'block', - 'bounty', - 'cla', - 'closed', - 'component', - 'concurrent', - 'confirm', - 'conflict', - 'contribution welcome', - 'difficulty', - 'done', - 'duplicate', - 'enterprise', - 'gender', - 'feedback', - 'good first issue', - 'help', - 'help wanted', - 'hold', - 'in progress', - 'inactive', - 'info', - 'invalid', - 'merge', - 'n/a', - 'needs', - 'priority', - 'question', - 'reminder', - 'repo', - 'reproduce', - 'requested', - 'resolution', - 'signed', - 'spam', - 'stale', - 'start', - 'unknown', - 'wip', - 'wontfix', - 'working', - 'wrong', -] const COMPOSED_LABELS = { 'awaiting-review': 'null', 'back-end': 'code', - 'cla-no': 'null', - 'cla-sign': 'null', - 'cla-yes': 'null', 'code-clean': 'maintenance', + 'code-review-request': 'null', 'current-mod': 'null', 'difficulty-easy': 'null', + 'do-not-merge': 'null', 'first-time': 'null', 'front-end': 'code', 'internal-issue-created': 'bug', 'internal-cleanup': 'maintenance', - 'needs-a': 'null', - 'needs-more': 'null', 'non-library': 'null', - 'not-a-bug': 'null', + 'non-library-issue': 'bug', 'other-feature': 'ideas', - 'review-in-progress': 'null', + 'ready-review': 'null', + 'review-changes': 'null', 'review-request': 'null', - 'work-in-progress': 'null', + 'to-do': 'maintenance', +} + +const FORBIDDEN_PREFIXES = [ + //start with + // 'cla', + 'has', + 'need', + 'not', + 'pending', + 'planned', +] +const FORBIDDEN_SUFFIXES = [ + 'accepted', + 'approved', + 'hold', + 'progress', + 'missing', + 'needed', + 'rejected', + 'required', +] + +const NAMESPACE_RE = /^(\w+):\s*(.*?)/ + +const badStartEnd = label => { + const lbl = label.replace(NAMESPACE_RE, '$2') //Removes the namespace + for (const prefix of FORBIDDEN_PREFIXES) { + if (label.startsWith(prefix) || lbl.startsWith(prefix)) return true + } + for (const suffix of FORBIDDEN_SUFFIXES) { + if (label.endsWith(suffix) || lbl.endsWith(suffix)) return true + } + return false } const SE = Object.keys(SIM_EXCEPTIONS) @@ -83,12 +66,11 @@ const CL = Object.keys(COMPOSED_LABELS) function bestCat(label, showRating = false, log = false) { const lbl = label.toLowerCase() - if (NON_CATEGORY_LABELS.includes(lbl)) return null if (lbl in SIM_EXCEPTIONS) { const target = SIM_EXCEPTIONS[lbl] return showRating ? {target, rating: 1} : target } - const match = {...strSim.findBestMatch(lbl, CATEGORIES).bestMatch, ref: ''} + const match = {...strSim.findBestMatch(lbl, CATEGORIES).bestMatch, ref: 'M'} const seMatch = {...strSim.findBestMatch(lbl, SE).bestMatch, ref: 'SE'} const nclMatch = { ...strSim.findBestMatch(lbl, NON_CATEGORY_LABELS).bestMatch, @@ -127,11 +109,18 @@ function bestCat(label, showRating = false, log = false) { function findBestCategory(label, showRating = false, log = false) { const lbl = label.toLowerCase() - if (NON_CATEGORY_LABELS.includes(lbl)) return null + const lblSubset = lbl.replace(NAMESPACE_RE, '$2') //Removes the namespace + if (badStartEnd(lbl) || NON_CATEGORY_LABELS.includes(lbl)) return null if (CL.includes(lbl)) return bestCat(lbl, showRating, log) + if (CL.includes(lblSubset)) return bestCat(lblSubset, showRating, log) + // if (bestCat(lbl.replace(NAMESPACE_RE, '$2')) === null) return null const tokens = tokenize(lbl) const composition = tokens.join('-') + const tokenSubset = tokenize(lblSubset) + const compositionSubset = tokenSubset.join('-') if (CL.includes(composition)) return bestCat(composition, showRating, log) + if (CL.includes(compositionSubset)) + return bestCat(compositionSubset, showRating, log) // const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch // const target = COMPOSED_LABELS[composedMatch.target] diff --git a/src/discover/labels.json b/src/discover/labels.json index 8b995635..1dfdeac2 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -49,7 +49,7 @@ }, { "label": ":speech_balloon: question", - "category": "null" + "category": "question" }, { "label": "@font-face", @@ -233,7 +233,7 @@ }, { "label": "cmty:question", - "category": "null" + "category": "question" }, { "label": "cmty:status:cancelled", @@ -265,7 +265,7 @@ }, { "label": "component: concurrent mode", - "category": "code" + "category": "null" }, { "label": "component: core utilities", @@ -933,11 +933,11 @@ }, { "label": "operations", - "category": "null" + "category": "maintenance" }, { "label": "opinions needed", - "category": "ideas" + "category": "null" }, { "label": "optimisation", @@ -1001,11 +1001,11 @@ }, { "label": "pr: breaking change", - "category": "null" + "category": "code" }, { "label": "pr: breaking change :boom:", - "category": "null" + "category": "code" }, { "label": "pr: bug fix", @@ -1125,7 +1125,7 @@ }, { "label": "question", - "category": "null" + "category": "question" }, { "label": "react flare", @@ -1385,7 +1385,7 @@ }, { "label": "to do", - "category": "null" + "category": "maintenance" }, { "label": "to merge", @@ -1473,11 +1473,11 @@ }, { "label": "type: question", - "category": "null" + "category": "question" }, { "label": "type: question :grey_question:", - "category": "null" + "category": "question" }, { "label": "type: regression :boom:", diff --git a/src/discover/sets/noCategory.js b/src/discover/sets/noCategory.js new file mode 100644 index 00000000..578acc08 --- /dev/null +++ b/src/discover/sets/noCategory.js @@ -0,0 +1,64 @@ +module.exports = [ + 'area', + 'available', + 'awaiting', + 'backlog', //or could be a projectManagement one + 'beginner-friendly', + 'block', + 'bounty', + 'cla', + 'closed', + 'component', + 'concurrent', + 'confirm', + 'conflict', + 'contribution welcome', + 'deprecate', + 'difficulty', + 'done', + 'duplicate', + 'easy', + 'enterprise', + 'exist', + 'gender', + 'feedback', + 'good first issue', + 'good first issue :+1:', + 'hard', + 'help', + 'help wanted', + 'high', + 'hold', + 'in progress', + 'inactive', + 'info', + 'invalid', + 'low', + 'medium', + 'merge', + 'mode', + 'n/a', + 'needs', + 'no', + 'priority', + 'proxy', + 'purge', + 'reminder', + 'repo', + 'reproduce', + 'requested', + 'resolution', + 'reviewed', + 'signed', + 'spam', + 'stale', + 'start', + 'to', + 'trivial', + 'unknown', + 'yes', + 'wip', + 'wontfix', + 'working', + 'wrong', +] diff --git a/src/discover/simExceptions.js b/src/discover/sets/simExceptions.js similarity index 97% rename from src/discover/simExceptions.js rename to src/discover/sets/simExceptions.js index e82aaa81..3e1cf248 100644 --- a/src/discover/simExceptions.js +++ b/src/discover/sets/simExceptions.js @@ -67,6 +67,7 @@ module.exports = { new: 'ideas', node: 'platform', opinion: 'ideas', + operation: 'maintenance', optim: 'code', osx: 'platform', package: 'platform', @@ -109,5 +110,6 @@ module.exports = { ':rocket:': 'maintenance', //or code or ideas ':sos:': 'null', ':speech_balloon:': 'null', + ':stop_sign:': 'null', ':warning:': 'security', } diff --git a/src/discover/token.js b/src/discover/token.js index 5df7a218..9b801786 100644 --- a/src/discover/token.js +++ b/src/discover/token.js @@ -21,6 +21,9 @@ const BAD_TOKENS = [ 'just', 'too', 'very', + //other + 'due', + 'be', ] const tokenize = data => { From b00621f1b01e6f6b9d493fd5d683b817218a3a9e Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Thu, 25 Apr 2019 17:29:59 +0100 Subject: [PATCH 20/28] chore(discover): small tweak --- src/discover/findCategory.js | 1 + src/discover/labels.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 5dc92eb0..6ea80924 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -17,6 +17,7 @@ const COMPOSED_LABELS = { 'do-not-merge': 'null', 'first-time': 'null', 'front-end': 'code', + 'in-review': 'null', 'internal-issue-created': 'bug', 'internal-cleanup': 'maintenance', 'non-library': 'null', diff --git a/src/discover/labels.json b/src/discover/labels.json index 1dfdeac2..6bc8a6c3 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -705,7 +705,7 @@ }, { "label": "in review", - "category": "review" + "category": "null" }, { "label": "infrastructure :hammer_and_wrench:", From 0ffb9beedb63cbfec570b3e4bed073ef45a211d5 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Fri, 26 Apr 2019 17:26:54 +0100 Subject: [PATCH 21/28] feat(findCategory): improved accuracy Now to 97.468% --- src/discover/findCategory.js | 7 +++++-- src/discover/labels.json | 2 +- src/discover/sets/noCategory.js | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 6ea80924..5e319091 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -25,18 +25,21 @@ const COMPOSED_LABELS = { 'other-feature': 'ideas', 'ready-review': 'null', 'review-changes': 'null', + 'review-needed-passport_control': 'null', 'review-request': 'null', 'to-do': 'maintenance', } const FORBIDDEN_PREFIXES = [ - //start with - // 'cla', 'has', + 'in progress', + 'in review', 'need', 'not', + 'on hold', 'pending', 'planned', + 'review-needed', ] const FORBIDDEN_SUFFIXES = [ 'accepted', diff --git a/src/discover/labels.json b/src/discover/labels.json index 6bc8a6c3..7563ae17 100644 --- a/src/discover/labels.json +++ b/src/discover/labels.json @@ -1469,7 +1469,7 @@ }, { "label": "type: non-library issue", - "category": "null" + "category": "bug" }, { "label": "type: question", diff --git a/src/discover/sets/noCategory.js b/src/discover/sets/noCategory.js index 578acc08..4c53ccaa 100644 --- a/src/discover/sets/noCategory.js +++ b/src/discover/sets/noCategory.js @@ -13,6 +13,7 @@ module.exports = [ 'confirm', 'conflict', 'contribution welcome', + 'deploy', 'deprecate', 'difficulty', 'done', From 3d374198d158d0749f3d2d6bc5948a9ae953bddd Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Mon, 13 May 2019 15:58:33 +0100 Subject: [PATCH 22/28] chore(findCategory): removed commented code --- src/discover/findCategory.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js index 5e319091..7af51724 100644 --- a/src/discover/findCategory.js +++ b/src/discover/findCategory.js @@ -126,12 +126,6 @@ function findBestCategory(label, showRating = false, log = false) { if (CL.includes(compositionSubset)) return bestCat(compositionSubset, showRating, log) - // const composedMatch = strSim.findBestMatch(lbl, CL).bestMatch - // const target = COMPOSED_LABELS[composedMatch.target] - // if (composedMatch.rating >= COMPLEX_THRESHOLD) { - // return showRating ? {...composedMatch, target, ref: 'CPX'} : target - // } - if (tokens.length > 1) { //If `lbl` can be split into *several* tokens const cats = tokens From e2e5d4516071aa4ae37bfc977380ba021e4fd218 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Tue, 21 May 2019 08:49:33 +0100 Subject: [PATCH 23/28] feat: added `ac-learn` Added a learner component utilising `ac-learn` with a saved classifier (`learner.json`). Added the missing `fetch` option in the prompt choices and improved the fetching process --- package.json | 1 + src/cli.js | 23 +- src/discover/learner.js | 22 + src/discover/learner.json | 25359 ++++++++++++++++++++++++++++++++++++ 4 files changed, 25400 insertions(+), 5 deletions(-) create mode 100644 src/discover/learner.js create mode 100644 src/discover/learner.json diff --git a/package.json b/package.json index 6253f899..b4e2a5d0 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "homepage": "https://github.com/all-contributors/all-contributors-cli#readme", "dependencies": { "@babel/runtime": "^7.2.0", + "ac-learn": "^1.0.1", "async": "^2.0.0-rc.1", "chalk": "^2.3.0", "inquirer": "^6.2.1", diff --git a/src/cli.js b/src/cli.js index 01c6eb1a..e8b0c5d5 100755 --- a/src/cli.js +++ b/src/cli.js @@ -12,7 +12,7 @@ const util = require('./util') const repo = require('./repo') const updateContributors = require('./contributors') const {getContributors} = require('./discover') -const findCategory = require('./discover/findCategory') +const learner = require('./discover/learner') const cwd = process.cwd() const defaultRCFile = path.join(cwd, '.all-contributorsrc') @@ -181,21 +181,30 @@ function fetchContributors(argv) { process.stdout.write(`${missingFromRepo.join(', ')}\n`) } */ - //1. Auto-add reviewers for review + //~1. Auto-add reviewers for review~ //2. Auto-add issue creators for bug/security //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) - //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa + //4. Roll onto other contribution categories foll owing https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa const args = {...configData, _: []} repoContributors.reviewers.forEach(usr => { args._ = ['', usr.login, 'review'] addContribution(args) - console.log(`Adding Reviewer ${usr.login}`) + console.log( + `Adding ${chalk.underline('Reviewer')} ${chalk.blue(usr.login)}`, + ) }) repoContributors.issueCreators.forEach(usr => { console.log('usr=', usr.login, 'labels=', usr.labels) - console.log('categories', usr.labels.map(lbl => findCategory(lbl))) + usr.labels.forEach(lbl => { + const category = learner.classify(lbl)[0] + args._ = ['', usr.login, category] + addContribution(args) + console.log( + `Adding ${chalk.blue(usr.login)} for ${chalk.underline(category)}`, + ) + }) }) }, err => console.error('checkContributorsFromNYC error:', err), @@ -230,6 +239,10 @@ function promptForCommand(argv) { 'Compare contributors from the repository with the credited ones', value: 'check', }, + { + name: 'Fetch contributors from the repository', + value: 'fetch', + }, ], when: !argv._[0], default: 0, diff --git a/src/discover/learner.js b/src/discover/learner.js new file mode 100644 index 00000000..56a2f4bd --- /dev/null +++ b/src/discover/learner.js @@ -0,0 +1,22 @@ +const {existsSync} = require('fs') +const Learner = require('ac-learn') + +const JSON_PATH = `${__dirname}/learner.json` + +const learner = new Learner() +/* eslint-disable no-console */ +if (existsSync(JSON_PATH)) { + learner.loadAndDeserializeClassifier(JSON_PATH).then(classifier => { + learner.classifier = classifier + // console.log('Re-using existing classifier') + }, console.error) +} else { + learner.crossValidate(6) + learner.eval() + learner.serializeAndSaveClassifier(JSON_PATH).then(_ => { + // console.log('Classifier saved', classifier) + }, console.error) +} +/* eslint-enable no-console */ + +module.exports = learner diff --git a/src/discover/learner.json b/src/discover/learner.json new file mode 100644 index 00000000..a6abac31 --- /dev/null +++ b/src/discover/learner.json @@ -0,0 +1,25359 @@ +{ + "createNewObjectString": "(pastTrainingSamples = []) => {\n const {\n multilabel,\n Winnow,\n EnhancedClassifier\n } = require('limdu').classifiers; // Word extractor - a function that takes a sample and adds features to a given features set:\n\n\n const TextClassifier = multilabel.BinaryRelevance.bind(0, {\n binaryClassifierType: Winnow.bind(0, {\n retrain_count: 10\n })\n });\n const classifier = new EnhancedClassifier({\n classifierType: TextClassifier,\n featureExtractor: (input, features) => {\n //similar to limdu.features.NGramsOfWords(1)\n input.split(/[ \\t,;:.-_]/) //perhaps remove _ to keep emoji words joint\n .filter(Boolean).forEach(word => {\n features[word.toLowerCase()] = 1;\n });\n },\n //or extract\n pastTrainingSamples\n });\n return classifier;\n}", + "object": { + "classifier": { + "null": { + "positive_weights": { + "component": 0.00012083569345122674, + "concurrent": 13.18359375, + "mode": 13.18359375, + "bias": 1.807724459469599e-36, + "reconciler": 16, + "scheduler": 16, + "suspense": 8, + "confirmed": 10.125, + "conflicts": 4.5, + "contribution": 4, + "welcome": 8, + "critical": 9, + "difficulty": 7, + "challenging": 4, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 3.5, + "or": 3.5, + "n": 3.5, + "a": 11.812499999999998, + "very": 2, + "do": 0.09765625000000003, + "not": 13.18359375, + "merge": 7.03125, + "duplicate": 9, + "enterprise": 4.5, + "enterprise-": 4, + "-backport": 4, + "feedback": 4, + "requested": 4, + "files": 8, + "(category)": 3.3295737438398647, + "first-timers-only": 4.5, + "flags": 8, + "fontawesome": 4, + "com": 4, + "food": 8, + "genders": 4, + "gh": 3.75, + "review": 0.21093749999999997, + "accepted": 7.5, + "go": 6.479999999999999, + "client": 2.4299999999999997, + "internal": 0.09000000000000001, + "release": 6.479999999999999, + "good": 0.37078857421875, + "first": 7.03125, + "issue": 7.03125, + "+": 2, + "has": 16, + "bounty": 4, + "pr": 0.4036552734375, + "help": 8.4375, + "wanted": 3.75, + "sos": 3.75, + "hi-pri": 4.5, + "high-priority": 4.5, + "hodor": 4.5, + "https": 4.5, + "ie": 9, + "import": 7.5, + "in": 7.5, + "progress": 3.75, + "started": 7.5, + "invalid": 8.4375, + "jquery": 4, + "differences": 4, + "jsonp-polling": 4.5, + "kbfs": 4.5, + "lks": 4.5, + "m": 4, + "s": 4, + "major": 4.5, + "mass": 4, + "purge": 4, + "minor": 4.5, + "proxy": 2, + "must-triage": 4.5, + "namespaces": 4.5, + "need-info": 4.5, + "needs": 12.599999999999998, + "example": 0.18984374999999998, + "app": 3.5999999999999996, + "failing": 2, + "test": 0.5625, + "browser": 8, + "testing": 2, + "changelog": 2, + "docs": 0.09375, + "documentation": 0.1875, + "info": 3.5, + "more": 3.5, + "man": 3.5, + "shrugging": 3.5, + "repro": 2, + "triage": 4.5, + "needs-more-info": 4.5, + "needs-research": 4.5, + "bug": 0.01736111111111112, + "on": 4, + "hold": 4, + "open": 4.5, + "opinions": 4, + "needed": 8, + "p": 4.5, + "pending": 2, + "planned": 16, + "feature": 0.13333333333333336, + "for": 3.5999999999999996, + "next": 2, + "pr-existing": 4.5, + "deprecation": 8, + "merged": 7, + "ready": 14.174999999999999, + "to": 0.8203125000000002, + "be": 3.5, + "reviewed-approved": 8, + "reviewed-changes-requested": 8, + "unreviewed": 8, + "wip": 9, + "priority": 8, + "high": 4, + "low": 2, + "production": 4.5, + "alpha": 2, + "released": 4.5, + "reminder": 4.5, + "resolution": 7.5, + "information": 2, + "support": 9.010162353515625, + "redirect": 3.75, + "spam": 4.5, + "spammy": 4.5, + "stale": 4.5, + "status": 15, + "heavy": 3.5, + "check": 3.5, + "mark": 3.5, + "available": 4, + "free": 2, + "cla": 7, + "signed": 7, + "code": 2, + "request": 0.6666666666666667, + "hacktoberfest": 0.234375, + "approved": 8.4375, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 4.5, + "work": 2, + "triage-done": 4.5, + "trivial": 4.5, + "type": 0.2966308593750001, + "archive": 8, + "repeat": 2, + "getting": 3.75, + "x": 7.119140625000002, + "non-library": 2, + "types": 4.5, + "unable": 7.03125, + "reproduce": 7.03125, + "unconfirmed": 4.5, + "upstream": 4.271484375000001, + "v": 4.5, + "writer-needed": 4.5, + "wrong": 4, + "repo": 4, + "xhr-polling": 4.5, + "core": 0.10546875, + "utilities": 0.10546875, + "developer": 0.10546875, + "tools": 0.10546875, + "dom": 0.22222222222222227, + "eslint": 0.28125, + "rules": 0.28125, + "hooks": 0.6666666666666667, + "optimizing": 0.75, + "compiler": 0.75, + "reactis": 0.6666666666666667, + "server": 0.75, + "rendering": 0.75, + "shallow": 0.75, + "renderer": 0.28125, + "utils": 0.75, + "configuration": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.0740740740740741, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.25, + "related": 0.6666666666666667, + "design": 0.16666666666666669, + "discussion": 0.5, + "doc": 0.5, + "book": 0.75, + "electron": 0.5, + "enhancement": 0.0703125, + "es": 0.5, + "external": 0.5, + "externs": 0.5, + "feat": 0.28125, + "cli": 0.5, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 0.75, + "e-cypress": 0.75, + "e-nightwatch": 2, + "plugin": 2, + "api": 0.75, + "pwa": 2, + "typescript": 2, + "ui": 0.5, + "unit-jest": 2, + "unit-mocha": 2, + "flashsocket": 0.5, + "freemasonry": 0.6666666666666667, + "icons": 0.6666666666666667, + "frontend": 0.5, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "general": 0.6666666666666667, + "js": 0.6666666666666667, + "great": 0.6666666666666667, + "insight": 0.6666666666666667, + "greenkeeper": 0.5, + "hack": 0.5, + "hacked": 0.5, + "handshakes": 0.5, + "hot": 2, + "html": 0.5, + "htmlfile": 0.5, + "icebox": 0.5, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 0.5, + "cleanup": 0.22222222222222227, + "internal-issue-created": 0.5, + "ios": 0.5, + "lang-crystal": 0.5, + "lang-dart": 0.5, + "lang-elixir": 0.5, + "lang-go": 0.5, + "lang-julia": 0.5, + "lang-objc": 0.5, + "lang-r": 0.5, + "lang-scala": 0.5, + "legal": 0.5, + "library": 0.5, + "lint": 0.5, + "linux": 0.5, + "macos": 0.5, + "maintenance": 0.5, + "mobile": 0.10546875, + "device": 0.10546875, + "modules": 0.5, + "new": 0.28125, + "proposal": 0.75, + "best": 0.75, + "practice": 0.75, + "node": 0.5, + "operations": 0.5, + "optimisation": 0.5, + "other": 0.8, + "language": 0.8, + "integration": 0.8, + "packaging": 0.5, + "parser": 0.5, + "parser-specific": 0.5, + "performance": 0.5, + "breaking": 0.28125, + "change": 0.28125, + "boom": 2, + "fix": 0.75, + "⬆️": 0.75, + "memo": 0.75, + "house": 0.75, + "rocket": 2, + "polish": 0.8, + "nail": 0.8, + "care": 0.8, + "spec": 0.11250000000000002, + "compliance": 0.8, + "eyeglasses": 0.8, + "underlying": 2, + "project": 0.6666666666666667, + "management": 0.6666666666666667, + "question": 0.5, + "react": 0.6666666666666667, + "flare": 0.6666666666666667, + "native": 2, + "refactor": 0.5, + "regression": 0.018518518518518524, + "revisitinfuture": 0.5, + "rfc": 0.5, + "ruby": 0.5, + "security": 0.5, + "shell": 0.5, + "socket": 0.75, + "io": 0.75, + "async": 0.75, + "functions": 0.75, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 0.75, + "suggestion": 0.5, + "syntax": 2, + "technical": 0.6666666666666667, + "debt": 0.6666666666666667, + "technical-debt": 0.5, + "tests": 0.5, + "tips": 0.5, + "todo": 0.75, + "spiral": 0.75, + "notepad": 0.75, + "translation": 0.5, + "travis-yml": 0.5, + "community": 7.2081298828125, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 0.5, + "bulb": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 0.75, + "warning": 0.75, + "ux": 0.5, + "website": 0.5, + "websocket": 0.5, + "weekly-digest": 0.5, + "windows": 0.5, + "-": 8, + "backlog": 4, + "working": 4, + "done": 2, + "backport": 4, + "abandoned": 4.5, + "accessibility": 4.5, + "animals": 8, + "answered": 4.5, + "area": 0.6666666666666667, + "arrows": 8, + "automotive": 8, + "fa": 2, + "pro": 2, + "awaiting-review": 4.5, + "beginner-friendly": 4.5, + "beverage": 8, + "blocked": 4.5, + "blocker": 4.5, + "safari": 4, + "c": 4, + "c++": 4, + "cannot": 2, + "cantfix": 4.5, + "no": 2, + "yes": 2, + "closed": 3.5999999999999996, + "due": 3.5999999999999996, + "inactivity": 3.5999999999999996, + "cmty": 0.6666666666666667, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 0.5, + "adapter": 0.5, + "advance": 2, + "workflow": 2, + "android": 0.5, + "angular": 0.5, + "crash": 0.6666666666666667, + "bootstrap": 0.5, + "brand": 0.6666666666666667, + "icon": 0.6666666666666667, + "report": 2, + "business": 0.0740740740740741, + "cdn": 0.5, + "chat": 0.22222222222222227, + "chore": 0.5, + "bug-report": 0.6666666666666667, + "feature-request": 2 + }, + "negative_weights": { + "component": 0.4552608290353539, + "concurrent": 0.052734375, + "mode": 0.052734375, + "bias": 3.2652041419610736e-33, + "reconciler": 0.03703703703703705, + "scheduler": 0.03703703703703705, + "suspense": 0.11111111111111113, + "confirmed": 0.0625, + "conflicts": 0.25, + "contribution": 0.33333333333333337, + "welcome": 0.11111111111111113, + "critical": 0.08333333333333334, + "difficulty": 0.13888888888888892, + "challenging": 0.33333333333333337, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 0.4166666666666667, + "or": 0.4166666666666667, + "n": 0.4166666666666667, + "a": 0.0625, + "very": 1, + "do": 2.109375, + "not": 0.052734375, + "merge": 0.140625, + "duplicate": 0.08333333333333334, + "enterprise": 0.25, + "enterprise-": 0.33333333333333337, + "-backport": 0.33333333333333337, + "feedback": 0.33333333333333337, + "requested": 0.33333333333333337, + "files": 0.11111111111111113, + "(category)": 0.00003568216032064329, + "first-timers-only": 0.25, + "flags": 0.11111111111111113, + "fontawesome": 0.33333333333333337, + "com": 0.33333333333333337, + "food": 0.11111111111111113, + "genders": 0.33333333333333337, + "gh": 0.375, + "review": 0.56953125, + "accepted": 0.125, + "go": 0.16000000000000003, + "client": 0.30000000000000004, + "internal": 2.4000000000000004, + "release": 0.16000000000000003, + "good": 0.926971435546875, + "first": 0.140625, + "issue": 0.140625, + "+": 1, + "has": 0.03703703703703705, + "bounty": 0.33333333333333337, + "pr": 0.00019402553637822503, + "help": 0.09375, + "wanted": 0.375, + "sos": 0.375, + "hi-pri": 0.25, + "high-priority": 0.25, + "hodor": 0.25, + "https": 0.25, + "ie": 0.08333333333333334, + "import": 0.125, + "in": 0.125, + "progress": 0.375, + "started": 0.125, + "invalid": 0.09375, + "jquery": 0.33333333333333337, + "differences": 0.33333333333333337, + "jsonp-polling": 0.25, + "kbfs": 0.25, + "lks": 0.25, + "m": 0.33333333333333337, + "s": 0.33333333333333337, + "major": 0.25, + "mass": 0.33333333333333337, + "purge": 0.33333333333333337, + "minor": 0.25, + "proxy": 1, + "must-triage": 0.25, + "namespaces": 0.25, + "need-info": 0.25, + "needs": 0.055555555555555566, + "example": 2.63671875, + "app": 0.4, + "failing": 1, + "test": 1.1718750000000002, + "browser": 0.11111111111111113, + "testing": 1, + "changelog": 1, + "docs": 3.1640625000000004, + "documentation": 4.21875, + "info": 0.4166666666666667, + "more": 0.4166666666666667, + "man": 0.4166666666666667, + "shrugging": 0.4166666666666667, + "repro": 1, + "triage": 0.25, + "needs-more-info": 0.25, + "needs-research": 0.25, + "bug": 11.25, + "on": 0.33333333333333337, + "hold": 0.33333333333333337, + "open": 0.25, + "opinions": 0.33333333333333337, + "needed": 0.11111111111111113, + "p": 0.25, + "pending": 1, + "planned": 0.03703703703703705, + "feature": 0.6750000000000002, + "for": 0.4, + "next": 1, + "pr-existing": 0.25, + "deprecation": 0.11111111111111113, + "merged": 0.13888888888888892, + "ready": 0.04166666666666667, + "to": 0.1875, + "be": 0.4166666666666667, + "reviewed-approved": 0.11111111111111113, + "reviewed-changes-requested": 0.11111111111111113, + "unreviewed": 0.11111111111111113, + "wip": 0.08333333333333334, + "priority": 0.11111111111111113, + "high": 0.33333333333333337, + "low": 1, + "production": 0.25, + "alpha": 1, + "released": 0.25, + "reminder": 0.25, + "resolution": 0.125, + "information": 1, + "support": 0.004291534423828126, + "redirect": 0.375, + "spam": 0.25, + "spammy": 0.25, + "stale": 0.25, + "status": 0.04166666666666667, + "heavy": 0.4166666666666667, + "check": 0.4166666666666667, + "mark": 0.4166666666666667, + "available": 0.33333333333333337, + "free": 1, + "cla": 0.13888888888888892, + "signed": 0.13888888888888892, + "code": 1, + "request": 2, + "hacktoberfest": 1.8984375, + "approved": 0.09375, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 0.25, + "work": 1, + "triage-done": 0.25, + "trivial": 0.25, + "type": 0.07724761962890629, + "archive": 0.11111111111111113, + "repeat": 1, + "getting": 0.375, + "x": 0.00390625, + "non-library": 1, + "types": 0.25, + "unable": 0.140625, + "reproduce": 0.140625, + "unconfirmed": 0.25, + "upstream": 0.0078125, + "v": 0.25, + "writer-needed": 0.25, + "wrong": 0.33333333333333337, + "repo": 0.33333333333333337, + "xhr-polling": 0.25, + "core": 6.591796875, + "utilities": 6.591796875, + "developer": 6.591796875, + "tools": 6.591796875, + "dom": 4, + "eslint": 3.515625, + "rules": 3.515625, + "hooks": 2, + "optimizing": 1.875, + "compiler": 1.875, + "reactis": 2, + "server": 1.875, + "rendering": 1.875, + "shallow": 1.875, + "renderer": 3.515625, + "utils": 1.875, + "configuration": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 8, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 3.75, + "related": 2, + "design": 4.5, + "discussion": 2.25, + "doc": 2.25, + "book": 1.875, + "electron": 2.25, + "enhancement": 7.91015625, + "es": 2.25, + "external": 2.25, + "externs": 2.25, + "feat": 3.515625, + "cli": 2.25, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1.875, + "e-cypress": 1.875, + "e-nightwatch": 1, + "plugin": 1, + "api": 1.875, + "pwa": 1, + "typescript": 1, + "ui": 2.25, + "unit-jest": 1, + "unit-mocha": 1, + "flashsocket": 2.25, + "freemasonry": 2, + "icons": 2, + "frontend": 2.25, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "general": 2, + "js": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2.25, + "hack": 2.25, + "hacked": 2.25, + "handshakes": 2.25, + "hot": 1, + "html": 2.25, + "htmlfile": 2.25, + "icebox": 2.25, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 2.25, + "cleanup": 4, + "internal-issue-created": 2.25, + "ios": 2.25, + "lang-crystal": 2.25, + "lang-dart": 2.25, + "lang-elixir": 2.25, + "lang-go": 2.25, + "lang-julia": 2.25, + "lang-objc": 2.25, + "lang-r": 2.25, + "lang-scala": 2.25, + "legal": 2.25, + "library": 2.25, + "lint": 2.25, + "linux": 2.25, + "macos": 2.25, + "maintenance": 2.25, + "mobile": 6.591796875, + "device": 6.591796875, + "modules": 2.25, + "new": 3.515625, + "proposal": 1.875, + "best": 1.875, + "practice": 1.875, + "node": 2.25, + "operations": 2.25, + "optimisation": 2.25, + "other": 1.7999999999999998, + "language": 1.7999999999999998, + "integration": 1.7999999999999998, + "packaging": 2.25, + "parser": 2.25, + "parser-specific": 2.25, + "performance": 2.25, + "breaking": 3.515625, + "change": 3.515625, + "boom": 1, + "fix": 1.875, + "⬆️": 1.875, + "memo": 1.875, + "house": 1.875, + "rocket": 1, + "polish": 1.7999999999999998, + "nail": 1.7999999999999998, + "care": 1.7999999999999998, + "spec": 6.328124999999999, + "compliance": 1.7999999999999998, + "eyeglasses": 1.7999999999999998, + "underlying": 1, + "project": 2, + "management": 2, + "question": 2.25, + "react": 2, + "flare": 2, + "native": 1, + "refactor": 2.25, + "regression": 18, + "revisitinfuture": 2.25, + "rfc": 2.25, + "ruby": 2.25, + "security": 2.25, + "shell": 2.25, + "socket": 1.875, + "io": 1.875, + "async": 1.875, + "functions": 1.875, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1.875, + "suggestion": 2.25, + "syntax": 1, + "technical": 2, + "debt": 2, + "technical-debt": 2.25, + "tests": 2.25, + "tips": 2.25, + "todo": 1.875, + "spiral": 1.875, + "notepad": 1.875, + "translation": 2.25, + "travis-yml": 2.25, + "community": 0.01373291015625, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 2.25, + "bulb": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1.875, + "warning": 1.875, + "ux": 2.25, + "website": 2.25, + "websocket": 2.25, + "weekly-digest": 2.25, + "windows": 2.25, + "-": 0.11111111111111113, + "backlog": 0.33333333333333337, + "working": 0.33333333333333337, + "done": 1, + "backport": 0.33333333333333337, + "abandoned": 0.25, + "accessibility": 0.25, + "animals": 0.11111111111111113, + "answered": 0.25, + "area": 2, + "arrows": 0.11111111111111113, + "automotive": 0.11111111111111113, + "fa": 1, + "pro": 1, + "awaiting-review": 0.25, + "beginner-friendly": 0.25, + "beverage": 0.11111111111111113, + "blocked": 0.25, + "blocker": 0.25, + "safari": 0.33333333333333337, + "c": 0.33333333333333337, + "c++": 0.33333333333333337, + "cannot": 1, + "cantfix": 0.25, + "no": 1, + "yes": 1, + "closed": 0.4, + "due": 0.4, + "inactivity": 0.4, + "cmty": 2, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 2.25, + "adapter": 2.25, + "advance": 1, + "workflow": 1, + "android": 2.25, + "angular": 2.25, + "crash": 2, + "bootstrap": 2.25, + "brand": 2, + "icon": 2, + "report": 1, + "business": 8, + "cdn": 2.25, + "chat": 4, + "chore": 2.25, + "bug-report": 2, + "feature-request": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "maintenance": { + "positive_weights": { + "component": 0.0007866907125730911, + "core": 24.71923828125, + "utilities": 24.71923828125, + "bias": 6.604639423977464e-36, + "eslint": 26.3671875, + "rules": 13.18359375, + "dependencies": 51.2578125, + "dependency": 5.56182861328125, + "related": 16, + "enhancement": 22.83272596032475, + "feat": 0.16666666666666669, + "internal": 2.4000000000000004, + "cleanup": 16, + "lint": 10.125, + "maintenance": 15.8203125, + "operations": 10.125, + "performance": 10.125, + "pr": 0.018331222236156453, + "⬆️": 13.18359375, + "polish": 6.479999999999999, + "nail": 6.479999999999999, + "care": 6.479999999999999, + "technical": 8, + "debt": 8, + "technical-debt": 10.125, + "to": 3.555555555555556, + "do": 7.59375, + "todo": 7.03125, + "spiral": 7.03125, + "notepad": 7.03125, + "type": 0.009666855476098135, + "community": 1.7578125, + "construction": 2.9296874999999996, + "sendgrid": 2, + "update": 7.2081298828125, + "concurrent": 0.28125, + "mode": 0.28125, + "developer": 0.28125, + "tools": 0.28125, + "dom": 0.6666666666666667, + "hooks": 0.6666666666666667, + "optimizing": 0.75, + "compiler": 0.75, + "reactis": 0.6666666666666667, + "reconciler": 0.6666666666666667, + "scheduler": 2, + "server": 0.75, + "rendering": 0.75, + "shallow": 0.75, + "renderer": 0.75, + "suspense": 2, + "test": 0.75, + "utils": 0.75, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 0.5, + "design": 0.5, + "difficulty": 0.2777777777777778, + "challenging": 0.6666666666666667, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 0.5, + "not": 0.28125, + "merge": 0.09375000000000001, + "doc": 0.0703125, + "docs": 0.5, + "documentation": 0.5, + "book": 2, + "duplicate": 0.5, + "electron": 0.5, + "enterprise": 0.5, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 0.5, + "external": 0.5, + "externs": 0.5, + "cli": 0.6666666666666667, + "babel": 0.6666666666666667, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.1875, + "request": 0.75, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 0.5, + "flags": 2, + "flashsocket": 0.5, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 0.6666666666666667, + "icons": 0.6666666666666667, + "frontend": 0.5, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 0.6666666666666667, + "js": 0.6666666666666667, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "release": 0.8, + "good": 0.75, + "first": 0.75, + "issue": 0.75, + "+": 2, + "great": 0.6666666666666667, + "insight": 0.6666666666666667, + "greenkeeper": 0.5, + "hack": 0.5, + "hacked": 0.5, + "hacktoberfest": 0.5, + "handshakes": 0.5, + "has": 0.6666666666666667, + "bounty": 2, + "help": 0.75, + "wanted": 0.75, + "sos": 2, + "hi-pri": 0.5, + "high-priority": 0.5, + "hodor": 0.5, + "hot": 2, + "html": 0.5, + "htmlfile": 0.5, + "https": 0.5, + "icebox": 0.5, + "ie": 0.5, + "import": 0.6666666666666667, + "in": 0.3333333333333333, + "progress": 0.8333333333333333, + "started": 0.6666666666666667, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 0.6666666666666667, + "differences": 0.6666666666666667, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "linux": 2, + "lks": 2, + "m": 0.6666666666666667, + "s": 0.6666666666666667, + "macos": 2, + "major": 2, + "mass": 0.6666666666666667, + "purge": 0.6666666666666667, + "minor": 2, + "mobile": 0.75, + "device": 0.75, + "support": 0.75, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.3125, + "example": 2, + "app": 2, + "failing": 2, + "browser": 0.75, + "testing": 0.75, + "changelog": 2, + "info": 0.8333333333333333, + "more": 0.8333333333333333, + "man": 0.8333333333333333, + "shrugging": 0.8333333333333333, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 0.10546875, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 0.6666666666666667, + "next": 0.6666666666666667, + "bug": 0.5, + "on": 0.8333333333333333, + "hold": 0.8333333333333333, + "open": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 0.6666666666666667, + "change": 0.6666666666666667, + "boom": 0.6666666666666667, + "fix": 2, + "deprecation": 2, + "memo": 2, + "house": 0.75, + "merged": 0.34722222222222215, + "rocket": 3, + "ready": 0.34722222222222215, + "be": 0.34722222222222215, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 0.10546875, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 0.10546875, + "stale": 2, + "status": 0.34722222222222215, + "heavy": 0.8333333333333334, + "check": 0.8333333333333334, + "mark": 0.8333333333333334, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333334, + "signed": 0.8333333333333334, + "code": 2, + "approved": 2, + "worker": 0.8333333333333333, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 0.8333333333333333, + "sign": 0.8333333333333333, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "tests": 2, + "tips": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "repeat": 2, + "bulb": 0.00556182861328125, + "getting": 2, + "x": 0.5, + "non-library": 2, + "grey": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 0.75, + "reproduce": 0.75, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "arrow": 6.479999999999999, + "heading": 6.479999999999999, + "down": 6.479999999999999, + "pull": 6.479999999999999, + "chore": 22.78125, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 0.6666666666666667, + "crash": 0.6666666666666667, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 0.6666666666666667, + "icon": 0.6666666666666667, + "safari": 2, + "report": 2, + "business": 2, + "c": 0.6666666666666667, + "c++": 0.6666666666666667, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "no": 2, + "yes": 2, + "closed": 0.32000000000000006, + "due": 0.32000000000000006, + "inactivity": 0.32000000000000006, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "component": 2.548877908736813, + "core": 0.019775390625, + "utilities": 0.019775390625, + "bias": 3.0997513812354103, + "eslint": 0.017578125, + "rules": 0.052734375, + "dependencies": 0.00390625, + "dependency": 0.01287460327148438, + "related": 0.03703703703703705, + "enhancement": 0.000041438852349529056, + "feat": 2.5000000000000004, + "internal": 0.125, + "cleanup": 0.03703703703703705, + "lint": 0.0625, + "maintenance": 0.03515625, + "operations": 0.0625, + "performance": 0.0625, + "pr": 1.197639852762223, + "⬆️": 0.052734375, + "polish": 0.16000000000000003, + "nail": 0.16000000000000003, + "care": 0.16000000000000003, + "technical": 0.11111111111111113, + "debt": 0.11111111111111113, + "technical-debt": 0.0625, + "to": 0.0018904320987654336, + "do": 0.0011773756992669768, + "todo": 0.140625, + "spiral": 0.140625, + "notepad": 0.140625, + "type": 3.0208923362806672, + "community": 0.31640625, + "construction": 0.24609375, + "sendgrid": 1, + "update": 0.01373291015625, + "concurrent": 3.515625, + "mode": 3.515625, + "developer": 3.515625, + "tools": 3.515625, + "dom": 2, + "hooks": 2, + "optimizing": 1.875, + "compiler": 1.875, + "reactis": 2, + "reconciler": 2, + "scheduler": 1, + "server": 1.875, + "rendering": 1.875, + "shallow": 1.875, + "renderer": 1.875, + "suspense": 1, + "test": 1.875, + "utils": 1.875, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 2.25, + "design": 2.25, + "difficulty": 3.5, + "challenging": 2, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 2.25, + "not": 3.515625, + "merge": 7.03125, + "doc": 7.91015625, + "docs": 2.25, + "documentation": 2.25, + "book": 1, + "duplicate": 2.25, + "electron": 2.25, + "enterprise": 2.25, + "enterprise-": 2, + "-backport": 2, + "es": 2.25, + "external": 2.25, + "externs": 2.25, + "cli": 2, + "babel": 2, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 4.21875, + "request": 1.875, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 2.25, + "flags": 1, + "flashsocket": 2.25, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 2, + "icons": 2, + "frontend": 2.25, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 2, + "js": 2, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.875, + "first": 1.875, + "issue": 1.875, + "+": 1, + "great": 2, + "insight": 2, + "greenkeeper": 2.25, + "hack": 2.25, + "hacked": 2.25, + "hacktoberfest": 2.25, + "handshakes": 2.25, + "has": 2, + "bounty": 1, + "help": 1.875, + "wanted": 1.875, + "sos": 1, + "hi-pri": 2.25, + "high-priority": 2.25, + "hodor": 2.25, + "hot": 1, + "html": 2.25, + "htmlfile": 2.25, + "https": 2.25, + "icebox": 2.25, + "ie": 2.25, + "import": 2, + "in": 3.1499999999999995, + "progress": 1.75, + "started": 2, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 2, + "differences": 2, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "linux": 1, + "lks": 1, + "m": 2, + "s": 2, + "macos": 1, + "major": 1, + "mass": 2, + "purge": 2, + "minor": 1, + "mobile": 1.875, + "device": 1.875, + "support": 1.875, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 3.28125, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1.875, + "testing": 1.875, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 6.591796875, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 2, + "next": 2, + "bug": 2.25, + "on": 1.75, + "hold": 1.75, + "open": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 1, + "deprecation": 1, + "memo": 1, + "house": 1.875, + "merged": 3.0625, + "rocket": 0.2083333333333334, + "ready": 3.0625, + "be": 3.0625, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 6.591796875, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 6.591796875, + "stale": 1, + "status": 3.0625, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1.75, + "sign": 1.75, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "tests": 1, + "tips": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "repeat": 1, + "bulb": 43.451786041259766, + "getting": 1, + "x": 2.25, + "non-library": 1, + "grey": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1.875, + "reproduce": 1.875, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "arrow": 0.16000000000000003, + "heading": 0.16000000000000003, + "down": 0.16000000000000003, + "pull": 0.16000000000000003, + "chore": 0.015625, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 2, + "crash": 2, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 2, + "icon": 2, + "safari": 1, + "report": 1, + "business": 1, + "c": 2, + "c++": 2, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "no": 1, + "yes": 1, + "closed": 3.2399999999999993, + "due": 3.2399999999999993, + "inactivity": 3.2399999999999993, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "tool": { + "positive_weights": { + "component": 0.03258883953094484, + "developer": 4.94384765625, + "tools": 24.71923828125, + "bias": 3.3690379710489825e-21, + "electron": 22.78125, + "feat": 0.03125000000000001, + "babel": 16, + "flashsocket": 22.78125, + "installer": 22.78125, + "library": 22.78125, + "parser": 22.78125, + "parser-specific": 22.78125, + "pr": 0.5859375, + "underlying": 3.75, + "shell": 22.78125, + "socket": 7.03125, + "io": 7.03125, + "client": 2.8125, + "websocket": 10.125, + "concurrent": 0.28125, + "mode": 0.28125, + "core": 0.75, + "utilities": 0.75, + "dom": 0.6666666666666667, + "eslint": 0.75, + "rules": 0.75, + "hooks": 2, + "optimizing": 0.75, + "compiler": 0.75, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.27777777777777785, + "challenging": 0.6666666666666667, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 0.5, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 0.5, + "docs": 0.5, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 0.5, + "enhancement": 0.5, + "enterprise": 0.5, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 0.5, + "external": 0.5, + "externs": 0.5, + "cli": 0.6666666666666667, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 0.75, + "e-cypress": 0.75, + "e-nightwatch": 2, + "plugin": 0.75, + "api": 0.75, + "pwa": 0.6666666666666667, + "typescript": 0.6666666666666667, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.5, + "request": 2, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 0.5, + "flags": 2, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 0.6666666666666667, + "icons": 0.6666666666666667, + "frontend": 0.5, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 0.6666666666666667, + "js": 0.6666666666666667, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 0.6666666666666667, + "insight": 0.6666666666666667, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 0.6666666666666667, + "bounty": 0.6666666666666667, + "help": 0.75, + "wanted": 0.75, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 0.6666666666666667, + "in": 0.8333333333333334, + "progress": 0.8333333333333334, + "started": 0.6666666666666667, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 0.8333333333333334, + "hold": 0.8333333333333334, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.34722222222222227, + "heavy": 0.8333333333333334, + "check": 0.8333333333333334, + "mark": 0.8333333333333334, + "available": 2, + "free": 2, + "cla": 0.8333333333333334, + "signed": 0.8333333333333334, + "code": 2, + "approved": 2, + "construction": 0.8333333333333334, + "worker": 0.8333333333333334, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 0.8333333333333334, + "sign": 0.8333333333333334, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 0.8, + "archive": 2, + "community": 2, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "bootstrap": 10.125, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "component": 2.444162964820862, + "developer": 0.098876953125, + "tools": 0.019775390625, + "bias": 5.158420355345094, + "electron": 0.015625, + "feat": 1.9531250000000004, + "babel": 0.03703703703703705, + "flashsocket": 0.015625, + "installer": 0.015625, + "library": 0.015625, + "parser": 0.015625, + "parser-specific": 0.015625, + "pr": 1.23046875, + "underlying": 0.375, + "shell": 0.015625, + "socket": 0.140625, + "io": 0.140625, + "client": 0.253125, + "websocket": 0.0625, + "concurrent": 3.515625, + "mode": 3.515625, + "core": 1.875, + "utilities": 1.875, + "dom": 2, + "eslint": 1.875, + "rules": 1.875, + "hooks": 1, + "optimizing": 1.875, + "compiler": 1.875, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "design": 2.25, + "difficulty": 3.5, + "challenging": 2, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 2.25, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 2.25, + "docs": 2.25, + "documentation": 2, + "book": 2, + "duplicate": 2.25, + "enhancement": 2.25, + "enterprise": 2.25, + "enterprise-": 2, + "-backport": 2, + "es": 2.25, + "external": 2.25, + "externs": 2.25, + "cli": 2, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1.875, + "e-cypress": 1.875, + "e-nightwatch": 1, + "plugin": 1.875, + "api": 1.875, + "pwa": 2, + "typescript": 2, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 2.25, + "request": 1, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 2.25, + "flags": 1, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 2, + "icons": 2, + "frontend": 2.25, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 2, + "js": 2, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 2, + "insight": 2, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 2, + "bounty": 2, + "help": 1.875, + "wanted": 1.875, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 2, + "in": 1.75, + "progress": 1.75, + "started": 2, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1.75, + "hold": 1.75, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 3.0625, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1.75, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1.75, + "sign": 1.75, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1.7999999999999998, + "archive": 1, + "community": 1, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "bootstrap": 0.0625, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "code": { + "positive_weights": { + "component": 2.039102326989452, + "dom": 32, + "bias": 4.708793418760055e-61, + "hooks": 32, + "optimizing": 7.03125, + "compiler": 7.03125, + "reactis": 16, + "server": 7.03125, + "rendering": 7.03125, + "shallow": 13.18359375, + "renderer": 0.6952285766601562, + "configuration": 10.125, + "csharp": 10.125, + "css": 10.125, + "css-select": 10.125, + "es": 10.125, + "feat": 0.02574920654296877, + "cli": 16, + "cli-service": 13.18359375, + "build": 0.98876953125, + "serve": 3.75, + "pwa": 16, + "typescript": 16, + "frontend": 10.125, + "general": 8, + "js": 8, + "hack": 10.125, + "hacktoberfest": 7.2081298828125, + "html": 10.125, + "htmlfile": 10.125, + "lang-crystal": 10.125, + "lang-dart": 10.125, + "lang-elixir": 10.125, + "lang-go": 10.125, + "lang-julia": 10.125, + "lang-objc": 10.125, + "lang-r": 10.125, + "lang-scala": 10.125, + "modules": 10.125, + "optimisation": 10.125, + "pr": 0.061035156250000035, + "breaking": 7.03125, + "change": 7.03125, + "boom": 2, + "internal": 8.533333333333337, + "house": 7.03125, + "react": 8, + "flare": 4, + "native": 4, + "refactor": 10.125, + "ruby": 10.125, + "website": 10.125, + "concurrent": 0.10546875, + "mode": 0.10546875, + "core": 0.28125, + "utilities": 0.28125, + "developer": 0.28125, + "tools": 0.28125, + "eslint": 0.09375, + "rules": 0.28125, + "reconciler": 0.22222222222222227, + "scheduler": 0.22222222222222227, + "suspense": 0.22222222222222227, + "test": 0.10546875, + "utils": 2, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.2777777777777778, + "challenging": 0.6666666666666667, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.3333333333333333, + "very": 2, + "discussion": 0.5, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 0.5, + "docs": 0.5, + "documentation": 0.5, + "book": 2, + "duplicate": 0.5, + "electron": 0.5, + "enhancement": 0.5, + "enterprise": 0.5, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "external": 0.5, + "externs": 0.5, + "babel": 0.22222222222222227, + "e": 0.28125, + "e-cypress": 0.75, + "e-nightwatch": 0.75, + "plugin": 0.03955078125, + "api": 8.54296875, + "ui": 0.6666666666666667, + "unit-jest": 0.6666666666666667, + "unit-mocha": 0.6666666666666667, + "feature": 0.2, + "request": 2, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 0.5, + "flags": 2, + "flashsocket": 0.5, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 0.6666666666666667, + "icons": 0.6666666666666667, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.12800000000000003, + "client": 0.12800000000000003, + "release": 0.12800000000000003, + "good": 0.75, + "first": 0.75, + "issue": 0.75, + "+": 2, + "great": 0.6666666666666667, + "insight": 0.6666666666666667, + "greenkeeper": 0.5, + "hacked": 0.5, + "handshakes": 0.5, + "has": 0.22222222222222227, + "bounty": 0.6666666666666667, + "help": 0.28125, + "wanted": 0.28125, + "sos": 2, + "hi-pri": 0.5, + "high-priority": 0.5, + "hodor": 0.5, + "hot": 2, + "https": 0.5, + "icebox": 0.5, + "ie": 0.5, + "import": 0.75, + "in": 0.30000000000000004, + "progress": 0.75, + "started": 2, + "infrastructure": 0.11250000000000002, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 0.5, + "cleanup": 0.0740740740740741, + "internal-issue-created": 0.5, + "invalid": 0.5, + "ios": 0.5, + "jquery": 0.6666666666666667, + "differences": 0.6666666666666667, + "jsonp-polling": 0.5, + "kbfs": 0.5, + "legal": 0.5, + "library": 0.5, + "lint": 0.5, + "linux": 0.5, + "lks": 0.5, + "m": 0.6666666666666667, + "s": 0.6666666666666667, + "macos": 0.5, + "maintenance": 0.5, + "major": 0.5, + "mass": 0.6666666666666667, + "purge": 0.6666666666666667, + "minor": 0.5, + "mobile": 0.75, + "device": 0.75, + "support": 0.28125, + "proxy": 2, + "must-triage": 0.5, + "namespaces": 0.5, + "need-info": 0.5, + "needs": 0.3333333333333333, + "example": 0.8, + "app": 0.8, + "failing": 2, + "browser": 0.6666666666666667, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333333, + "more": 0.8333333333333333, + "man": 0.8333333333333333, + "shrugging": 0.8333333333333333, + "repro": 2, + "triage": 2, + "needs-more-info": 0.5, + "needs-research": 0.5, + "new": 0.03955078125, + "proposal": 0.10546875, + "best": 0.75, + "practice": 0.75, + "node": 0.6666666666666667, + "next": 0.6666666666666667, + "bug": 0.75, + "on": 0.6666666666666667, + "hold": 0.6666666666666667, + "open": 0.5, + "operations": 0.5, + "opinions": 0.6666666666666667, + "needed": 0.6666666666666667, + "other": 0.8, + "language": 0.8, + "integration": 0.8, + "p": 0.5, + "packaging": 0.5, + "parser": 0.5, + "parser-specific": 0.5, + "pending": 2, + "performance": 0.5, + "planned": 2, + "for": 2, + "pr-existing": 0.5, + "fix": 0.75, + "⬆️": 2, + "deprecation": 0.6666666666666667, + "memo": 2, + "merged": 0.8333333333333333, + "rocket": 2, + "polish": 0.8, + "nail": 0.8, + "care": 0.8, + "ready": 0.8333333333333333, + "to": 0.3333333333333333, + "be": 0.8333333333333333, + "reviewed-approved": 0.6666666666666667, + "reviewed-changes-requested": 0.6666666666666667, + "spec": 0.30000000000000004, + "compliance": 0.8, + "eyeglasses": 0.8, + "underlying": 2, + "unreviewed": 0.6666666666666667, + "wip": 0.6666666666666667, + "priority": 0.6666666666666667, + "high": 0.6666666666666667, + "low": 2, + "production": 0.5, + "project": 0.6666666666666667, + "management": 0.6666666666666667, + "question": 0.5, + "regression": 0.5, + "alpha": 2, + "released": 0.5, + "reminder": 0.5, + "resolution": 0.75, + "information": 2, + "redirect": 0.75, + "revisitinfuture": 0.5, + "rfc": 0.5, + "security": 0.5, + "shell": 0.5, + "socket": 2, + "io": 2, + "spam": 0.5, + "spammy": 0.5, + "async": 0.75, + "functions": 0.75, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 0.5, + "status": 0.28125, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 0.28125, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 0.6666666666666667, + "debt": 0.6666666666666667, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 0.75, + "spiral": 0.75, + "notepad": 0.75, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 0.8, + "archive": 2, + "community": 0.5, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.5, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 0.6666666666666667, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 0.6666666666666667, + "repo": 0.6666666666666667, + "xhr-polling": 2, + "angular": 22.78125, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 0.5, + "abandoned": 0.5, + "accessibility": 0.5, + "adapter": 0.5, + "advance": 2, + "workflow": 2, + "android": 0.5, + "animals": 2, + "answered": 0.5, + "area": 0.6666666666666667, + "crash": 0.6666666666666667, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 0.5, + "beginner-friendly": 0.5, + "beverage": 2, + "blocked": 0.5, + "blocker": 0.5, + "bootstrap": 0.5, + "brand": 0.6666666666666667, + "icon": 0.6666666666666667, + "safari": 0.6666666666666667, + "report": 2, + "business": 2, + "c": 0.6666666666666667, + "c++": 0.6666666666666667, + "cannot": 0.6666666666666667, + "cantfix": 0.5, + "cdn": 0.5, + "chat": 2, + "chore": 0.5, + "no": 2, + "yes": 2, + "closed": 0.8, + "due": 0.8, + "inactivity": 0.8, + "cmty": 0.6666666666666667, + "bug-report": 0.6666666666666667, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "component": 4.70573859585724e-9, + "dom": 0.012345679012345684, + "bias": 2.0098499515670714, + "hooks": 0.012345679012345684, + "optimizing": 0.140625, + "compiler": 0.140625, + "reactis": 0.03703703703703705, + "server": 0.140625, + "rendering": 0.140625, + "shallow": 0.052734375, + "renderer": 0.3476142883300781, + "configuration": 0.0625, + "csharp": 0.0625, + "css": 0.0625, + "css-select": 0.0625, + "es": 0.0625, + "feat": 0.007450580596923835, + "cli": 0.03703703703703705, + "cli-service": 0.052734375, + "build": 0.494384765625, + "serve": 0.375, + "pwa": 0.03703703703703705, + "typescript": 0.03703703703703705, + "frontend": 0.0625, + "general": 0.11111111111111113, + "js": 0.11111111111111113, + "hack": 0.0625, + "hacktoberfest": 0.01373291015625, + "html": 0.0625, + "htmlfile": 0.0625, + "lang-crystal": 0.0625, + "lang-dart": 0.0625, + "lang-elixir": 0.0625, + "lang-go": 0.0625, + "lang-julia": 0.0625, + "lang-objc": 0.0625, + "lang-r": 0.0625, + "lang-scala": 0.0625, + "modules": 0.0625, + "optimisation": 0.0625, + "pr": 0.0024032592773437526, + "breaking": 0.140625, + "change": 0.140625, + "boom": 1, + "internal": 0.00033333333333333354, + "house": 0.140625, + "react": 0.11111111111111113, + "flare": 0.33333333333333337, + "native": 0.33333333333333337, + "refactor": 0.0625, + "ruby": 0.0625, + "website": 0.0625, + "concurrent": 6.591796875, + "mode": 6.591796875, + "core": 3.515625, + "utilities": 3.515625, + "developer": 3.515625, + "tools": 3.515625, + "eslint": 7.03125, + "rules": 3.515625, + "reconciler": 4, + "scheduler": 4, + "suspense": 4, + "test": 6.591796875, + "utils": 1, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "currency": 2, + "(category)": 2, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "design": 2.25, + "difficulty": 3.5, + "challenging": 2, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 3.1499999999999995, + "very": 1, + "discussion": 2.25, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 2.25, + "docs": 2.25, + "documentation": 2.25, + "book": 1, + "duplicate": 2.25, + "electron": 2.25, + "enhancement": 2.25, + "enterprise": 2.25, + "enterprise-": 2, + "-backport": 2, + "external": 2.25, + "externs": 2.25, + "babel": 4, + "e": 3.515625, + "e-cypress": 1.875, + "e-nightwatch": 1.875, + "plugin": 12.359619140625, + "api": 0.00015330412750872102, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 4.05, + "request": 1, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 2.25, + "flags": 1, + "flashsocket": 2.25, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 2, + "icons": 2, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 5.831999999999998, + "client": 5.831999999999998, + "release": 5.831999999999998, + "good": 1.875, + "first": 1.875, + "issue": 1.875, + "+": 1, + "great": 2, + "insight": 2, + "greenkeeper": 2.25, + "hacked": 2.25, + "handshakes": 2.25, + "has": 4, + "bounty": 2, + "help": 3.515625, + "wanted": 3.515625, + "sos": 1, + "hi-pri": 2.25, + "high-priority": 2.25, + "hodor": 2.25, + "hot": 1, + "https": 2.25, + "icebox": 2.25, + "ie": 2.25, + "import": 1.875, + "in": 3.3749999999999996, + "progress": 1.875, + "started": 1, + "infrastructure": 6.328124999999999, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 2.25, + "cleanup": 8, + "internal-issue-created": 2.25, + "invalid": 2.25, + "ios": 2.25, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2.25, + "kbfs": 2.25, + "legal": 2.25, + "library": 2.25, + "lint": 2.25, + "linux": 2.25, + "lks": 2.25, + "m": 2, + "s": 2, + "macos": 2.25, + "maintenance": 2.25, + "major": 2.25, + "mass": 2, + "purge": 2, + "minor": 2.25, + "mobile": 1.875, + "device": 1.875, + "support": 3.515625, + "proxy": 1, + "must-triage": 2.25, + "namespaces": 2.25, + "need-info": 2.25, + "needs": 3.1499999999999995, + "example": 1.7999999999999998, + "app": 1.7999999999999998, + "failing": 1, + "browser": 2, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 2.25, + "needs-research": 2.25, + "new": 12.359619140625, + "proposal": 6.591796875, + "best": 1.875, + "practice": 1.875, + "node": 2, + "next": 2, + "bug": 1.875, + "on": 2, + "hold": 2, + "open": 2.25, + "operations": 2.25, + "opinions": 2, + "needed": 2, + "other": 1.7999999999999998, + "language": 1.7999999999999998, + "integration": 1.7999999999999998, + "p": 2.25, + "packaging": 2.25, + "parser": 2.25, + "parser-specific": 2.25, + "pending": 1, + "performance": 2.25, + "planned": 1, + "for": 1, + "pr-existing": 2.25, + "fix": 1.875, + "⬆️": 1, + "deprecation": 2, + "memo": 1, + "merged": 1.75, + "rocket": 1, + "polish": 1.7999999999999998, + "nail": 1.7999999999999998, + "care": 1.7999999999999998, + "ready": 1.75, + "to": 3.1499999999999995, + "be": 1.75, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 3.3749999999999996, + "compliance": 1.7999999999999998, + "eyeglasses": 1.7999999999999998, + "underlying": 1, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 1, + "production": 2.25, + "project": 2, + "management": 2, + "question": 2.25, + "regression": 2.25, + "alpha": 1, + "released": 2.25, + "reminder": 2.25, + "resolution": 1.875, + "information": 1, + "redirect": 1.875, + "revisitinfuture": 2.25, + "rfc": 2.25, + "security": 2.25, + "shell": 2.25, + "socket": 1, + "io": 1, + "spam": 2.25, + "spammy": 2.25, + "async": 1.875, + "functions": 1.875, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 2.25, + "status": 3.515625, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 3.515625, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 2, + "debt": 2, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1.875, + "spiral": 1.875, + "notepad": 1.875, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1.7999999999999998, + "archive": 1, + "community": 2.25, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2.25, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 2, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 2, + "repo": 2, + "xhr-polling": 1, + "angular": 0.015625, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 2.25, + "abandoned": 2.25, + "accessibility": 2.25, + "adapter": 2.25, + "advance": 1, + "workflow": 1, + "android": 2.25, + "animals": 1, + "answered": 2.25, + "area": 2, + "crash": 2, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 2.25, + "beginner-friendly": 2.25, + "beverage": 1, + "blocked": 2.25, + "blocker": 2.25, + "bootstrap": 2.25, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 1, + "business": 1, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2.25, + "cdn": 2.25, + "chat": 1, + "chore": 2.25, + "no": 1, + "yes": 1, + "closed": 1.7999999999999998, + "due": 1.7999999999999998, + "inactivity": 1.7999999999999998, + "cmty": 2, + "bug-report": 2, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "test": { + "positive_weights": { + "component": 0.012305921948413965, + "test": 18.125354017684014, + "renderer": 11.328346261052502, + "bias": 1.3430604975016468e-14, + "utils": 7.03125, + "feat": 1.9531250000000018, + "e": 13.18359375, + "e-cypress": 7.03125, + "e-nightwatch": 3.75, + "unit-jest": 32, + "unit-mocha": 32, + "tests": 22.78125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 0.75, + "dom": 0.6666666666666667, + "eslint": 0.75, + "rules": 0.75, + "hooks": 0.6666666666666667, + "optimizing": 0.75, + "compiler": 0.75, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 0.75, + "rendering": 0.75, + "shallow": 0.03955078125, + "suspense": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.053333333333333344, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "cli": 0.22222222222222227, + "babel": 0.6666666666666667, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "plugin": 0.75, + "api": 0.75, + "pwa": 0.6666666666666667, + "typescript": 0.6666666666666667, + "ui": 2, + "feature": 0.75, + "request": 0.75, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 0.8333333333333334, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.8333333333333334, + "progress": 0.8333333333333334, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.12800000000000003, + "example": 2, + "app": 2, + "failing": 0.12800000000000003, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 0.024691358024691367, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 0.6666666666666667, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "rocket": 0.75, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.8333333333333334, + "heavy": 0.8333333333333334, + "check": 0.8333333333333334, + "mark": 0.8333333333333334, + "available": 2, + "free": 2, + "cla": 0.8333333333333334, + "signed": 0.8333333333333334, + "code": 2, + "approved": 2, + "construction": 0.8333333333333334, + "worker": 0.8333333333333334, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 0.8, + "archive": 2, + "community": 2, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "component": 0.044301319014290255, + "test": 0.00003006778727285564, + "renderer": 0.0018125354017684003, + "bias": 6.557379904904883, + "utils": 0.140625, + "feat": 0.0009042245370370377, + "e": 0.052734375, + "e-cypress": 0.140625, + "e-nightwatch": 0.375, + "unit-jest": 0.012345679012345684, + "unit-mocha": 0.012345679012345684, + "tests": 0.015625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1.875, + "dom": 2, + "eslint": 1.875, + "rules": 1.875, + "hooks": 2, + "optimizing": 1.875, + "compiler": 1.875, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1.875, + "rendering": 1.875, + "shallow": 12.359619140625, + "suspense": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 10.205999999999996, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 2, + "book": 2, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "cli": 4, + "babel": 2, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "plugin": 1.875, + "api": 1.875, + "pwa": 2, + "typescript": 2, + "ui": 1, + "feature": 1.875, + "request": 1.875, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1.75, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1.75, + "progress": 1.75, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 5.831999999999998, + "example": 1, + "app": 1, + "failing": 5.831999999999998, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 16, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 2, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "rocket": 1.875, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1.75, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1.75, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1.7999999999999998, + "archive": 1, + "community": 1, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "financial": { + "positive_weights": { + "currency": 16, + "(category)": 1.7777777777777781, + "bias": 0.0036168981481481486, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "defect": 2, + "dependencies": 2, + "dependency": 2, + "related": 2, + "design": 0.22222222222222227, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 2, + "client": 2, + "internal": 2, + "release": 2, + "good": 2, + "first": 2, + "issue": 2, + "+": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333333, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333333, + "more": 0.8333333333333333, + "man": 0.8333333333333333, + "shrugging": 0.8333333333333333, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "currency": 0.03703703703703705, + "(category)": 0.1481481481481482, + "bias": 7.1777343750000036, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "defect": 1, + "dependencies": 1, + "dependency": 1, + "related": 1, + "design": 4, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1, + "client": 1, + "internal": 1, + "release": 1, + "good": 1, + "first": 1, + "issue": 1, + "+": 1, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "bug": { + "positive_weights": { + "defect": 22.78125, + "bias": 1.899062029076233e-14, + "internal-issue-created": 22.78125, + "pr": 1.3732910156250002, + "bug": 20.856857299804688, + "fix": 24.71923828125, + "regression": 42.71484375, + "type": 1.333333333333334, + "boom": 1.5, + "upstream": 4, + "component": 0.28125, + "concurrent": 0.25, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.3125, + "challenging": 2, + "easy": 2, + "hard": 0.75, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.0439453125, + "very": 0.75, + "discussion": 2, + "do": 0.75, + "not": 0.03955078125, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 2, + "electron": 2, + "enhancement": 0.6666666666666667, + "enterprise": 2, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.75, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.8, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 0.6666666666666667, + "bounty": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.33333333333333337, + "progress": 0.8333333333333334, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 0.8, + "language": 0.8, + "integration": 0.8, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 0.8, + "change": 0.8, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "rocket": 0.6666666666666667, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.6666666666666667, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.8333333333333334, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 2, + "construction": 0.8333333333333334, + "worker": 0.8333333333333334, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 0.22222222222222227, + "community": 2, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "area": 5.333333333333334, + "crash": 16, + "report": 2, + "cmty": 3.5555555555555562, + "bug-report": 32, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "feature-request": 0.6666666666666667, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "defect": 0.015625, + "bias": 7.042542783818394, + "internal-issue-created": 0.015625, + "pr": 0.12458496093749999, + "bug": 0.001609325408935548, + "fix": 0.019775390625, + "regression": 0.005859375, + "type": 0.1, + "boom": 0.6749999999999999, + "upstream": 0.33333333333333337, + "component": 3.515625, + "concurrent": 3.75, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "design": 2.25, + "difficulty": 3.28125, + "challenging": 1, + "easy": 1, + "hard": 1.875, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 11.53564453125, + "very": 1.875, + "discussion": 1, + "do": 1.875, + "not": 12.359619140625, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 2, + "book": 2, + "duplicate": 1, + "electron": 1, + "enhancement": 2, + "enterprise": 1, + "enterprise-": 2, + "-backport": 2, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1.875, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1.7999999999999998, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 2, + "bounty": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 3.1499999999999995, + "progress": 1.75, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1.7999999999999998, + "language": 1.7999999999999998, + "integration": 1.7999999999999998, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1.7999999999999998, + "change": 1.7999999999999998, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "rocket": 2, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 2, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1.75, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1.75, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 4, + "community": 1, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "area": 0.0740740740740741, + "crash": 0.03703703703703705, + "report": 1, + "cmty": 0.049382716049382734, + "bug-report": 0.012345679012345684, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "feature-request": 2, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "design": { + "positive_weights": { + "design": 22.78125, + "bias": 3.982621732401273e-10, + "(category)": 0.6666666666666667, + "feat": 1, + "ui": 18, + "freemasonry": 8, + "icons": 8, + "ux": 10.125, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 0.6666666666666667, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "cli": 0.6666666666666667, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 2, + "client": 2, + "internal": 2, + "release": 2, + "good": 2, + "first": 2, + "issue": 2, + "+": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.8, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333333, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333333, + "more": 0.8333333333333333, + "man": 0.8333333333333333, + "shrugging": 0.8333333333333333, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 0.6666666666666667, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 0.6666666666666667, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 0.8, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.5, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "font-face": 22.78125, + "brand": 8, + "icon": 8, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 0.8, + "due": 0.8, + "inactivity": 0.8, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "design": 0.015625, + "bias": 5.671634900769914, + "(category)": 2, + "feat": 0.4166666666666668, + "ui": 0.027777777777777783, + "freemasonry": 0.11111111111111113, + "icons": 0.11111111111111113, + "ux": 0.0625, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 2, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "cli": 2, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1, + "client": 1, + "internal": 1, + "release": 1, + "good": 1, + "first": 1, + "issue": 1, + "+": 1, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1.7999999999999998, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 2, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 2, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1.7999999999999998, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2.25, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "font-face": 0.015625, + "brand": 0.11111111111111113, + "icon": 0.11111111111111113, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1.7999999999999998, + "due": 1.7999999999999998, + "inactivity": 1.7999999999999998, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "ideas": { + "positive_weights": { + "discussion": 22.78125, + "bias": 2.4984015715481654e-24, + "feature": 32.84204177856447, + "request": 4, + "future": 7.03125, + "architecture": 3.75, + "enhancements": 7.03125, + "crypto": 3.75, + "great": 8, + "insight": 8, + "hot": 2, + "new": 24.71923828125, + "api": 1.40625, + "proposal": 3.75, + "best": 3.75, + "practice": 3.75, + "other": 3.5999999999999996, + "language": 3.5999999999999996, + "integration": 3.5999999999999996, + "pr": 0.4119873046875, + "dependency": 0.8789062500000002, + "rocket": 2, + "revisitinfuture": 10.125, + "rfc": 10.125, + "suggestion": 10.125, + "syntax": 2, + "tips": 10.125, + "type": 1.2013549804687498, + "discuss": 11.663999999999996, + "speech": 1.6402499999999995, + "balloon": 1.6402499999999995, + "enhancement": 0.308990478515625, + "bulb": 13.18359375, + "component": 0.10546875, + "concurrent": 0.28125, + "mode": 0.28125, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.125, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.5925925925925928, + "defect": 0.5, + "dependencies": 0.5, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.3125, + "challenging": 2, + "easy": 2, + "hard": 0.75, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 0.75, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 0.5, + "docs": 0.5, + "documentation": 0.5, + "book": 2, + "duplicate": 0.5, + "electron": 0.5, + "enterprise": 0.5, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 0.5, + "external": 0.5, + "externs": 0.5, + "feat": 0.28125, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 0.75, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 0.5, + "flags": 2, + "flashsocket": 0.5, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 0.6666666666666667, + "icons": 0.6666666666666667, + "frontend": 2, + "genders": 2, + "general": 0.6666666666666667, + "js": 0.6666666666666667, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 0.6666666666666667, + "bounty": 0.6666666666666667, + "help": 0.75, + "wanted": 0.75, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 0.75, + "in": 0.75, + "progress": 0.75, + "started": 0.75, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 0.6666666666666667, + "differences": 0.6666666666666667, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 0.75, + "device": 0.75, + "support": 0.75, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "node": 2, + "next": 2, + "bug": 0.6666666666666667, + "on": 0.8333333333333334, + "hold": 0.8333333333333334, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 0.002743484224965708, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 0.6666666666666667, + "fix": 2, + "⬆️": 0.75, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 0.75, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.28125, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 0.75, + "functions": 0.75, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.3125, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 2, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 0.8333333333333334, + "sign": 0.8333333333333334, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 0.6666666666666667, + "community": 0.75, + "update": 2, + "repeat": 2, + "getting": 0.75, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "chat": 16, + "cmty": 2, + "feature-request": 16, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "android": 2, + "angular": 2, + "animals": 0.6666666666666667, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 0.6666666666666667, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "bug-report": 0.6666666666666667, + "cancelled": 0.75, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "discussion": 0.015625, + "bias": 5.464809510798253, + "feature": 0.000008138020833333335, + "request": 0.33333333333333337, + "future": 0.140625, + "architecture": 0.375, + "enhancements": 0.140625, + "crypto": 0.375, + "great": 0.11111111111111113, + "insight": 0.11111111111111113, + "hot": 1, + "new": 0.019775390625, + "api": 0.703125, + "proposal": 0.375, + "best": 0.375, + "practice": 0.375, + "other": 0.4, + "language": 0.4, + "integration": 0.4, + "pr": 0.86517333984375, + "dependency": 0.52734375, + "rocket": 1, + "revisitinfuture": 0.0625, + "rfc": 0.0625, + "suggestion": 0.0625, + "syntax": 1, + "tips": 0.0625, + "type": 0.047460937500000015, + "discuss": 0.06400000000000002, + "speech": 0.22500000000000006, + "balloon": 0.22500000000000006, + "enhancement": 0.5005645751953125, + "bulb": 0.052734375, + "component": 6.591796875, + "concurrent": 3.515625, + "mode": 3.515625, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 5.0625, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 0.2962962962962964, + "defect": 2.25, + "dependencies": 2.25, + "related": 2, + "design": 2.25, + "difficulty": 3.28125, + "challenging": 1, + "easy": 1, + "hard": 1.875, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1.875, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 2.25, + "docs": 2.25, + "documentation": 2.25, + "book": 1, + "duplicate": 2.25, + "electron": 2.25, + "enterprise": 2.25, + "enterprise-": 2, + "-backport": 2, + "es": 2.25, + "external": 2.25, + "externs": 2.25, + "feat": 3.515625, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1.875, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 2.25, + "flags": 1, + "flashsocket": 2.25, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 2, + "icons": 2, + "frontend": 1, + "genders": 1, + "general": 2, + "js": 2, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 2, + "bounty": 2, + "help": 1.875, + "wanted": 1.875, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1.875, + "in": 1.875, + "progress": 1.875, + "started": 1.875, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 2, + "differences": 2, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1.875, + "device": 1.875, + "support": 1.875, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "node": 1, + "next": 1, + "bug": 2, + "on": 1.75, + "hold": 1.75, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 64, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 2, + "fix": 1, + "⬆️": 1.875, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1.875, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 3.515625, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1.875, + "functions": 1.875, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 3.28125, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1.75, + "sign": 1.75, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 2, + "community": 1.875, + "update": 1, + "repeat": 1, + "getting": 1.875, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "chat": 0.03703703703703705, + "cmty": 0.13888888888888892, + "feature-request": 0.03703703703703705, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "android": 1, + "angular": 1, + "animals": 2, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 2, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "bug-report": 2, + "cancelled": 1.875, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "doc": { + "positive_weights": { + "doc": 22.78125, + "bias": 6.489451027483932e-13, + "docs": 18.020324707031254, + "documentation": 22.781250000000004, + "book": 4, + "pr": 0.28125, + "memo": 3.75, + "spec": 23.730468749999996, + "compliance": 3.5999999999999996, + "eyeglasses": 3.5999999999999996, + "async": 3.75, + "functions": 3.75, + "generators": 2, + "bigint": 2, + "class": 3.75, + "fields": 3.75, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "do": 1.40625, + "expressions": 3.75, + "type": 2, + "update": 2, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.3125, + "challenging": 2, + "easy": 2, + "hard": 0.75, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 0.75, + "discussion": 0.5, + "not": 0.75, + "merge": 0.75, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.6666666666666667, + "cli": 0.6666666666666667, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.6666666666666667, + "request": 0.6666666666666667, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 0.6666666666666667, + "bounty": 2, + "help": 0.75, + "wanted": 0.75, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.8333333333333333, + "progress": 0.8333333333333333, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.008230452674897124, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 0.8, + "change": 0.8, + "boom": 0.8, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "house": 2, + "merged": 0.8333333333333333, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333333, + "to": 0.8333333333333333, + "be": 0.8333333333333333, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "stale": 2, + "status": 0.8333333333333333, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 0.8333333333333333, + "worker": 0.8333333333333333, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "doc": 0.015625, + "bias": 7.358738582275542, + "docs": 0.000732421875, + "documentation": 0.0017361111111111114, + "book": 0.33333333333333337, + "pr": 0.590625, + "memo": 0.375, + "spec": 0.02109375, + "compliance": 0.4, + "eyeglasses": 0.4, + "async": 0.375, + "functions": 0.375, + "generators": 1, + "bigint": 1, + "class": 0.375, + "fields": 0.375, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "do": 0.703125, + "expressions": 0.375, + "type": 1, + "update": 1, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "design": 2.25, + "difficulty": 3.28125, + "challenging": 1, + "easy": 1, + "hard": 1.875, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1.875, + "discussion": 2.25, + "not": 1.875, + "merge": 1.875, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 2, + "-backport": 2, + "es": 1, + "external": 1, + "externs": 1, + "feat": 2, + "cli": 2, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 2, + "bounty": 1, + "help": 1.875, + "wanted": 1.875, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1.75, + "progress": 1.75, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 32, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1.7999999999999998, + "change": 1.7999999999999998, + "boom": 1.7999999999999998, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "house": 1, + "merged": 1.75, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "stale": 1, + "status": 1.75, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1.75, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "plugin": { + "positive_weights": { + "external": 22.78125, + "bias": 6.22284645687699e-8, + "externs": 22.78125, + "feat": 0.5493164062500002, + "plugin": 13.18359375, + "api": 4.94384765625, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "cli": 0.6666666666666667, + "babel": 0.6666666666666667, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 2, + "client": 2, + "internal": 2, + "release": 2, + "good": 2, + "first": 2, + "issue": 2, + "+": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.8, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 0.75, + "proposal": 0.75, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 0.8333333333333334, + "check": 0.8333333333333334, + "mark": 0.8333333333333334, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333334, + "signed": 0.8333333333333334, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "adapter": 10.125, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "external": 0.015625, + "bias": 6.049743894154572, + "externs": 0.015625, + "feat": 0.3955078125, + "plugin": 0.052734375, + "api": 0.098876953125, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "cli": 2, + "babel": 2, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1, + "client": 1, + "internal": 1, + "release": 1, + "good": 1, + "first": 1, + "issue": 1, + "+": 1, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1.7999999999999998, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1.875, + "proposal": 1.875, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "adapter": 0.0625, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "infra": { + "positive_weights": { + "greenkeeper": 22.78125, + "bias": 1.890189611276385e-8, + "infrastructure": 22.781249999999993, + "hammer": 6.479999999999999, + "and": 6.479999999999999, + "wrench": 6.479999999999999, + "travis-yml": 22.78125, + "component": 0.37078857421875, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 4.94384765625, + "tools": 0.75, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 2, + "related": 2, + "design": 2, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.75, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 2.63671875, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.75, + "request": 0.75, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.8, + "progress": 2, + "started": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333333, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333333, + "more": 0.8333333333333333, + "man": 0.8333333333333333, + "shrugging": 0.8333333333333333, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 0.8333333333333333, + "hold": 0.8333333333333333, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 0.75, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 0.8, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.8333333333333333, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 0.8333333333333333, + "sign": 0.8333333333333333, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "advance": 13.18359375, + "workflow": 13.18359375, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 0.8, + "due": 0.8, + "inactivity": 0.8, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "greenkeeper": 0.015625, + "bias": 8.682705869588654, + "infrastructure": 0.022500000000000006, + "hammer": 0.16000000000000003, + "and": 0.16000000000000003, + "wrench": 0.16000000000000003, + "travis-yml": 0.015625, + "component": 0.926971435546875, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 0.098876953125, + "tools": 1.875, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 1, + "related": 1, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1.875, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 0.263671875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1.875, + "request": 1.875, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1.7999999999999998, + "progress": 1, + "started": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1.75, + "hold": 1.75, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1.875, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1.7999999999999998, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1.75, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1.75, + "sign": 1.75, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "advance": 0.052734375, + "workflow": 0.052734375, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1.7999999999999998, + "due": 1.7999999999999998, + "inactivity": 1.7999999999999998, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "security": { + "positive_weights": { + "hacked": 22.78125, + "bias": 1.0753078677483436e-8, + "legal": 22.78125, + "security": 20.25, + "type": 3, + "vulnerability": 18.984375, + "warning": 3.75, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.75, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.6666666666666667, + "request": 0.6666666666666667, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 0.8333333333333334, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 2, + "community": 2, + "discuss": 0.8, + "speech": 0.8, + "balloon": 0.8, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "hacked": 0.015625, + "bias": 5.444769504739113, + "legal": 0.015625, + "security": 0.020833333333333336, + "type": 0.225, + "vulnerability": 0.0234375, + "warning": 0.375, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 2, + "book": 2, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 2, + "-backport": 2, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1.875, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 2, + "request": 2, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1.75, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 1, + "community": 1, + "discuss": 1.7999999999999998, + "speech": 1.7999999999999998, + "balloon": 1.7999999999999998, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "business": { + "positive_weights": { + "handshakes": 22.78125, + "bias": 0.00004119873046875003, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 1.7777777777777781, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.75, + "request": 0.75, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 2, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 0.75, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 2, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "business": 16, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 0.6666666666666667, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "handshakes": 0.015625, + "bias": 9.197874069213865, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 0.1481481481481482, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1.875, + "request": 1.875, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1.875, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "business": 0.03703703703703705, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 2, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "platform": { + "positive_weights": { + "icebox": 22.78125, + "bias": 1.8087384880796939e-16, + "ios": 22.78125, + "linux": 22.78125, + "macos": 22.78125, + "mobile": 7.03125, + "device": 7.03125, + "support": 2.63671875, + "node": 20.25, + "next": 1.6, + "packaging": 10.125, + "windows": 10.125, + "component": 0.10546875, + "concurrent": 0.28125, + "mode": 0.28125, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.125, + "confirmed": 0.5, + "conflicts": 0.5, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 0.5, + "csharp": 0.5, + "css": 0.5, + "css-select": 0.5, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 0.5, + "dependencies": 0.5, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 0.5, + "difficulty": 0.3125, + "challenging": 2, + "easy": 2, + "hard": 0.75, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 0.75, + "discussion": 0.5, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 0.5, + "docs": 0.5, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 0.5, + "electron": 0.5, + "enhancement": 0.5, + "enterprise": 2, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.75, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.6666666666666667, + "request": 0.6666666666666667, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 0.6666666666666667, + "com": 0.6666666666666667, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.75, + "review": 0.75, + "accepted": 0.75, + "go": 2, + "client": 2, + "internal": 2, + "release": 0.8, + "good": 0.75, + "first": 0.75, + "issue": 0.75, + "+": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 0.8333333333333334, + "help": 0.75, + "wanted": 0.75, + "sos": 0.75, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "ie": 2, + "import": 2, + "in": 0.33333333333333337, + "progress": 0.8333333333333334, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "lks": 2, + "m": 2, + "s": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 0.8, + "for": 0.8, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 0.6666666666666667, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 0.8333333333333334, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.8333333333333334, + "to": 0.8333333333333334, + "be": 0.8333333333333334, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 0.75, + "information": 2, + "redirect": 0.75, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.8333333333333334, + "heavy": 0.8333333333333334, + "check": 0.8333333333333334, + "mark": 0.8333333333333334, + "available": 0.8, + "free": 2, + "cla": 0.8333333333333334, + "signed": 0.8333333333333334, + "code": 2, + "approved": 2, + "construction": 0.8333333333333334, + "worker": 0.8333333333333334, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.5, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "android": 10.125, + "cdn": 10.125, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 0.8, + "pro": 0.8, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "icebox": 0.015625, + "bias": 3.6349927989092317, + "ios": 0.015625, + "linux": 0.015625, + "macos": 0.015625, + "mobile": 0.140625, + "device": 0.140625, + "support": 0.263671875, + "node": 0.020833333333333336, + "next": 0.6, + "packaging": 0.0625, + "windows": 0.0625, + "component": 6.591796875, + "concurrent": 3.515625, + "mode": 3.515625, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 5.0625, + "confirmed": 2.25, + "conflicts": 2.25, + "contribution": 2, + "welcome": 2, + "critical": 2.25, + "csharp": 2.25, + "css": 2.25, + "css-select": 2.25, + "currency": 2, + "(category)": 2, + "defect": 2.25, + "dependencies": 2.25, + "dependency": 2, + "related": 2, + "design": 2.25, + "difficulty": 3.28125, + "challenging": 1, + "easy": 1, + "hard": 1.875, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1.875, + "discussion": 2.25, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 2.25, + "docs": 2.25, + "documentation": 2, + "book": 2, + "duplicate": 2.25, + "electron": 2.25, + "enhancement": 2.25, + "enterprise": 1, + "enterprise-": 2, + "-backport": 2, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1.875, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 2, + "com": 2, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1.875, + "review": 1.875, + "accepted": 1.875, + "go": 1, + "client": 1, + "internal": 1, + "release": 1.7999999999999998, + "good": 1.875, + "first": 1.875, + "issue": 1.875, + "+": 1, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1.75, + "help": 1.875, + "wanted": 1.875, + "sos": 1.875, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "ie": 1, + "import": 1, + "in": 3.1499999999999995, + "progress": 1.75, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "lks": 1, + "m": 1, + "s": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1.7999999999999998, + "for": 1.7999999999999998, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 2, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1.75, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1.75, + "to": 1.75, + "be": 1.75, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1.875, + "information": 1, + "redirect": 1.875, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1.75, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1.7999999999999998, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 1, + "approved": 1, + "construction": 1.75, + "worker": 1.75, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2.25, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "android": 0.0625, + "cdn": 0.0625, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1.7999999999999998, + "pro": 1.7999999999999998, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "example": { + "positive_weights": { + "pr": 3.6209821701049822, + "good": 4.888325929641724, + "example": 13.904571533203125, + "bias": 0.00019095023162662988, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 2, + "welcome": 2, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 2, + "(category)": 2, + "defect": 2, + "dependencies": 2, + "dependency": 2, + "related": 2, + "design": 2, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.13333333333333333, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "first": 0.1125, + "issue": 0.1125, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 0.22222222222222227, + "bounty": 2, + "help": 0.75, + "wanted": 0.75, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.32000000000000006, + "app": 0.32000000000000006, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "pr": 0.020856857299804688, + "good": 0.0175979733467102, + "example": 0.009010162353515625, + "bias": 10.655272114818212, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 1, + "welcome": 1, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 1, + "(category)": 1, + "defect": 1, + "dependencies": 1, + "dependency": 1, + "related": 1, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 5.669999999999998, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "first": 6.328124999999999, + "issue": 6.328124999999999, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 4, + "bounty": 1, + "help": 1.875, + "wanted": 1.875, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 3.2399999999999993, + "app": 3.2399999999999993, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "projectManagement": { + "positive_weights": { + "project": 8, + "management": 8, + "bias": 0.018310546875, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 2, + "welcome": 2, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 2, + "(category)": 2, + "defect": 2, + "dependencies": 2, + "dependency": 2, + "related": 2, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 2, + "client": 2, + "internal": 2, + "release": 2, + "good": 2, + "first": 2, + "issue": 2, + "+": 2, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.8333333333333334, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "project": 0.11111111111111113, + "management": 0.11111111111111113, + "bias": 5.046844482421877, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 1, + "welcome": 1, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 1, + "(category)": 1, + "defect": 1, + "dependencies": 1, + "dependency": 1, + "related": 1, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1, + "client": 1, + "internal": 1, + "release": 1, + "good": 1, + "first": 1, + "issue": 1, + "+": 1, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1.75, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "question": { + "positive_weights": { + "question": 22.78125, + "bias": 0.0019775390625000008, + "type": 2, + "grey": 2, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 2, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "cmty": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "question": 0.015625, + "bias": 5.606323242187498, + "type": 1, + "grey": 1, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "cmty": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "review": { + "positive_weights": { + "review": 10.798176094667998, + "bias": 1.0346281030491287e-14, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 0.75, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 2, + "do": 0.75, + "not": 0.75, + "merge": 0.75, + "doc": 2, + "docs": 2, + "documentation": 0.6666666666666667, + "book": 0.6666666666666667, + "duplicate": 2, + "electron": 2, + "enhancement": 0.6666666666666667, + "enterprise": 2, + "enterprise-": 0.6666666666666667, + "-backport": 0.6666666666666667, + "es": 2, + "external": 2, + "externs": 2, + "feat": 0.75, + "cli": 2, + "babel": 2, + "cli-service": 0.75, + "build": 0.75, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 0.75, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 0.8, + "request": 0.32000000000000006, + "feedback": 0.6666666666666667, + "requested": 0.6666666666666667, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 0.75, + "architecture": 0.75, + "enhancements": 0.75, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 0.03955078125, + "accepted": 0.03955078125, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 0.32000000000000006, + "help": 0.75, + "wanted": 0.75, + "sos": 0.75, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 0.024691358024691367, + "progress": 2, + "started": 2, + "infrastructure": 0.8, + "hammer": 0.8, + "and": 0.8, + "wrench": 0.8, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 0.75, + "device": 0.75, + "support": 0.75, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 0.030864197530864213, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 0.8333333333333334, + "more": 0.8333333333333334, + "man": 0.8333333333333334, + "shrugging": 0.8333333333333334, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 0.75, + "proposal": 0.75, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 0.8333333333333334, + "optimisation": 2, + "other": 0.8, + "language": 0.8, + "integration": 0.8, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 0.32000000000000006, + "pr-existing": 2, + "breaking": 0.6666666666666667, + "change": 0.6666666666666667, + "boom": 0.6666666666666667, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 0.6666666666666667, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 0.32000000000000006, + "to": 0.8, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 0.75, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 0.75, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 0.6666666666666667, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 0.75, + "functions": 0.75, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 0.13333333333333336, + "heavy": 0.8333333333333333, + "check": 0.8333333333333333, + "mark": 0.8333333333333333, + "available": 2, + "free": 2, + "cla": 0.8333333333333333, + "signed": 0.8333333333333333, + "code": 0.32000000000000006, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 0.8333333333333334, + "control": 0.8333333333333334, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 0.75, + "balloon": 0.75, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 0.6666666666666667, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 0.6666666666666667, + "backlog": 0.6666666666666667, + "working": 2, + "done": 2, + "backport": 0.6666666666666667, + "arrow": 0.8, + "heading": 0.8, + "down": 0.8, + "pull": 0.8, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 0.75, + "workflow": 0.75, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 0.6666666666666667, + "crash": 0.6666666666666667, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 0.6666666666666667, + "icon": 0.6666666666666667, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 0.8, + "due": 0.8, + "inactivity": 0.8, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "review": 1.652050496403489e-9, + "bias": 5.58931966969713, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1.875, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1.875, + "not": 1.875, + "merge": 1.875, + "doc": 1, + "docs": 1, + "documentation": 2, + "book": 2, + "duplicate": 1, + "electron": 1, + "enhancement": 2, + "enterprise": 1, + "enterprise-": 2, + "-backport": 2, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1.875, + "cli": 1, + "babel": 1, + "cli-service": 1.875, + "build": 1.875, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1.875, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1.7999999999999998, + "request": 3.2399999999999993, + "feedback": 2, + "requested": 2, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1.875, + "architecture": 1.875, + "enhancements": 1.875, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 12.359619140625, + "accepted": 12.359619140625, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 3.2399999999999993, + "help": 1.875, + "wanted": 1.875, + "sos": 1.875, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 16, + "progress": 1, + "started": 1, + "infrastructure": 1.7999999999999998, + "hammer": 1.7999999999999998, + "and": 1.7999999999999998, + "wrench": 1.7999999999999998, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1.875, + "device": 1.875, + "support": 1.875, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 14, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1.75, + "more": 1.75, + "man": 1.75, + "shrugging": 1.75, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1.875, + "proposal": 1.875, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1.75, + "optimisation": 1, + "other": 1.7999999999999998, + "language": 1.7999999999999998, + "integration": 1.7999999999999998, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 3.2399999999999993, + "pr-existing": 1, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 2, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 3.2399999999999993, + "to": 1.7999999999999998, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1.875, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1.875, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 2, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1.875, + "functions": 1.875, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 5.669999999999998, + "heavy": 1.75, + "check": 1.75, + "mark": 1.75, + "available": 1, + "free": 1, + "cla": 1.75, + "signed": 1.75, + "code": 3.2399999999999993, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1.75, + "control": 1.75, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1.875, + "balloon": 1.875, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 2, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 2, + "backlog": 2, + "working": 1, + "done": 1, + "backport": 2, + "arrow": 1.7999999999999998, + "heading": 1.7999999999999998, + "down": 1.7999999999999998, + "pull": 1.7999999999999998, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1.875, + "workflow": 1.875, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 2, + "crash": 2, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 2, + "icon": 2, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1.7999999999999998, + "due": 1.7999999999999998, + "inactivity": 1.7999999999999998, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "translation": { + "positive_weights": { + "translation": 22.78125, + "bias": 0.0019775390625000008, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333333, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333333, + "or": 0.8333333333333333, + "n": 0.8333333333333333, + "a": 0.8333333333333333, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 2, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "weekly-digest": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "translation": 0.015625, + "bias": 5.606323242187498, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "weekly-digest": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + }, + "blog": { + "positive_weights": { + "weekly-digest": 22.78125, + "bias": 0.0019775390625000008, + "component": 0.28125, + "concurrent": 0.75, + "mode": 0.75, + "core": 0.75, + "utilities": 0.75, + "developer": 2, + "tools": 2, + "dom": 2, + "eslint": 2, + "rules": 2, + "hooks": 2, + "optimizing": 2, + "compiler": 2, + "reactis": 2, + "reconciler": 2, + "scheduler": 2, + "server": 2, + "rendering": 2, + "shallow": 2, + "renderer": 2, + "suspense": 2, + "test": 2, + "utils": 2, + "configuration": 0.5, + "confirmed": 2, + "conflicts": 2, + "contribution": 0.6666666666666667, + "welcome": 0.6666666666666667, + "critical": 2, + "csharp": 2, + "css": 2, + "css-select": 2, + "currency": 0.6666666666666667, + "(category)": 0.6666666666666667, + "defect": 2, + "dependencies": 2, + "dependency": 0.6666666666666667, + "related": 0.6666666666666667, + "design": 2, + "difficulty": 0.8333333333333334, + "challenging": 2, + "easy": 2, + "hard": 2, + "medium": 2, + "starter": 2, + "unknown": 0.8333333333333334, + "or": 0.8333333333333334, + "n": 0.8333333333333334, + "a": 0.8333333333333334, + "very": 2, + "discussion": 2, + "do": 2, + "not": 2, + "merge": 2, + "doc": 2, + "docs": 2, + "documentation": 2, + "book": 2, + "duplicate": 2, + "electron": 2, + "enhancement": 2, + "enterprise": 2, + "enterprise-": 2, + "-backport": 2, + "es": 2, + "external": 2, + "externs": 2, + "feat": 2, + "cli": 2, + "babel": 2, + "cli-service": 2, + "build": 2, + "serve": 2, + "e": 2, + "e-cypress": 2, + "e-nightwatch": 2, + "plugin": 2, + "api": 2, + "pwa": 2, + "typescript": 2, + "ui": 2, + "unit-jest": 2, + "unit-mocha": 2, + "feature": 2, + "request": 2, + "feedback": 2, + "requested": 2, + "files": 2, + "first-timers-only": 2, + "flags": 2, + "flashsocket": 2, + "fontawesome": 2, + "com": 2, + "food": 2, + "freemasonry": 2, + "icons": 2, + "frontend": 2, + "future": 2, + "architecture": 2, + "enhancements": 2, + "crypto": 2, + "genders": 2, + "general": 2, + "js": 2, + "gh": 2, + "review": 2, + "accepted": 2, + "go": 0.8, + "client": 0.8, + "internal": 0.8, + "release": 0.8, + "good": 0.8, + "first": 0.8, + "issue": 0.8, + "+": 0.8, + "great": 2, + "insight": 2, + "greenkeeper": 2, + "hack": 2, + "hacked": 2, + "hacktoberfest": 2, + "handshakes": 2, + "has": 2, + "bounty": 2, + "pr": 2, + "help": 2, + "wanted": 2, + "sos": 2, + "hi-pri": 2, + "high-priority": 2, + "hodor": 2, + "hot": 2, + "html": 2, + "htmlfile": 2, + "https": 2, + "icebox": 2, + "ie": 2, + "import": 2, + "in": 2, + "progress": 2, + "started": 2, + "infrastructure": 2, + "hammer": 2, + "and": 2, + "wrench": 2, + "installer": 2, + "cleanup": 2, + "internal-issue-created": 2, + "invalid": 2, + "ios": 2, + "jquery": 2, + "differences": 2, + "jsonp-polling": 2, + "kbfs": 2, + "lang-crystal": 2, + "lang-dart": 2, + "lang-elixir": 2, + "lang-go": 2, + "lang-julia": 2, + "lang-objc": 2, + "lang-r": 2, + "lang-scala": 2, + "legal": 2, + "library": 2, + "lint": 2, + "linux": 2, + "lks": 2, + "m": 2, + "s": 2, + "macos": 2, + "maintenance": 2, + "major": 2, + "mass": 2, + "purge": 2, + "minor": 2, + "mobile": 2, + "device": 2, + "support": 2, + "proxy": 2, + "modules": 2, + "must-triage": 2, + "namespaces": 2, + "need-info": 2, + "needs": 2, + "example": 2, + "app": 2, + "failing": 2, + "browser": 2, + "testing": 2, + "changelog": 2, + "info": 2, + "more": 2, + "man": 2, + "shrugging": 2, + "repro": 2, + "triage": 2, + "needs-more-info": 2, + "needs-research": 2, + "new": 2, + "proposal": 2, + "best": 2, + "practice": 2, + "node": 2, + "next": 2, + "bug": 2, + "on": 2, + "hold": 2, + "open": 2, + "operations": 2, + "opinions": 2, + "needed": 2, + "optimisation": 2, + "other": 2, + "language": 2, + "integration": 2, + "p": 2, + "packaging": 2, + "parser": 2, + "parser-specific": 2, + "pending": 2, + "performance": 2, + "planned": 2, + "for": 2, + "pr-existing": 2, + "breaking": 2, + "change": 2, + "boom": 2, + "fix": 2, + "⬆️": 2, + "deprecation": 2, + "memo": 2, + "house": 2, + "merged": 2, + "rocket": 2, + "polish": 2, + "nail": 2, + "care": 2, + "ready": 2, + "to": 2, + "be": 2, + "reviewed-approved": 2, + "reviewed-changes-requested": 2, + "spec": 2, + "compliance": 2, + "eyeglasses": 2, + "underlying": 2, + "unreviewed": 2, + "wip": 2, + "priority": 2, + "high": 2, + "low": 2, + "production": 2, + "project": 2, + "management": 2, + "question": 2, + "react": 2, + "flare": 2, + "native": 2, + "refactor": 2, + "regression": 2, + "alpha": 2, + "released": 2, + "reminder": 2, + "resolution": 2, + "information": 2, + "redirect": 2, + "revisitinfuture": 2, + "rfc": 2, + "ruby": 2, + "security": 2, + "shell": 2, + "socket": 2, + "io": 2, + "spam": 2, + "spammy": 2, + "async": 2, + "functions": 2, + "generators": 2, + "bigint": 2, + "class": 2, + "fields": 2, + "classes": 2, + "decorators": 2, + "(legacy)": 2, + "expressions": 2, + "stale": 2, + "status": 2, + "heavy": 2, + "check": 2, + "mark": 2, + "available": 2, + "free": 2, + "cla": 2, + "signed": 2, + "code": 2, + "approved": 2, + "construction": 2, + "worker": 2, + "detective": 2, + "left": 2, + "out": 2, + "luggage": 2, + "stop": 2, + "sign": 2, + "deploy": 2, + "passport": 2, + "control": 2, + "waiting": 2, + "wontfix": 2, + "work": 2, + "suggestion": 2, + "syntax": 2, + "technical": 2, + "debt": 2, + "technical-debt": 2, + "tests": 2, + "tips": 2, + "todo": 2, + "spiral": 2, + "notepad": 2, + "translation": 2, + "travis-yml": 2, + "triage-done": 2, + "trivial": 2, + "type": 2, + "archive": 2, + "community": 2, + "discuss": 2, + "speech": 2, + "balloon": 2, + "update": 2, + "repeat": 2, + "bulb": 2, + "getting": 2, + "x": 2, + "non-library": 2, + "grey": 2, + "sendgrid": 2, + "vulnerability": 2, + "warning": 2, + "types": 2, + "unable": 2, + "reproduce": 2, + "unconfirmed": 2, + "upstream": 2, + "ux": 2, + "v": 2, + "website": 2, + "websocket": 2, + "windows": 2, + "writer-needed": 2, + "wrong": 2, + "repo": 2, + "xhr-polling": 2, + "-": 2, + "backlog": 2, + "working": 2, + "done": 2, + "backport": 2, + "arrow": 2, + "heading": 2, + "down": 2, + "pull": 2, + "font-face": 2, + "abandoned": 2, + "accessibility": 2, + "adapter": 2, + "advance": 2, + "workflow": 2, + "android": 2, + "angular": 2, + "animals": 2, + "answered": 2, + "area": 2, + "crash": 2, + "arrows": 2, + "automotive": 2, + "fa": 2, + "pro": 2, + "awaiting-review": 2, + "beginner-friendly": 2, + "beverage": 2, + "blocked": 2, + "blocker": 2, + "bootstrap": 2, + "brand": 2, + "icon": 2, + "safari": 2, + "report": 2, + "business": 2, + "c": 2, + "c++": 2, + "cannot": 2, + "cantfix": 2, + "cdn": 2, + "chat": 2, + "chore": 2, + "no": 2, + "yes": 2, + "closed": 2, + "due": 2, + "inactivity": 2, + "cmty": 2, + "bug-report": 2, + "feature-request": 2, + "cancelled": 2, + "fixed": 2, + "implemented": 2, + "resolved": 2 + }, + "negative_weights": { + "weekly-digest": 0.015625, + "bias": 5.606323242187498, + "component": 3.515625, + "concurrent": 1.875, + "mode": 1.875, + "core": 1.875, + "utilities": 1.875, + "developer": 1, + "tools": 1, + "dom": 1, + "eslint": 1, + "rules": 1, + "hooks": 1, + "optimizing": 1, + "compiler": 1, + "reactis": 1, + "reconciler": 1, + "scheduler": 1, + "server": 1, + "rendering": 1, + "shallow": 1, + "renderer": 1, + "suspense": 1, + "test": 1, + "utils": 1, + "configuration": 2.25, + "confirmed": 1, + "conflicts": 1, + "contribution": 2, + "welcome": 2, + "critical": 1, + "csharp": 1, + "css": 1, + "css-select": 1, + "currency": 2, + "(category)": 2, + "defect": 1, + "dependencies": 1, + "dependency": 2, + "related": 2, + "design": 1, + "difficulty": 1.75, + "challenging": 1, + "easy": 1, + "hard": 1, + "medium": 1, + "starter": 1, + "unknown": 1.75, + "or": 1.75, + "n": 1.75, + "a": 1.75, + "very": 1, + "discussion": 1, + "do": 1, + "not": 1, + "merge": 1, + "doc": 1, + "docs": 1, + "documentation": 1, + "book": 1, + "duplicate": 1, + "electron": 1, + "enhancement": 1, + "enterprise": 1, + "enterprise-": 1, + "-backport": 1, + "es": 1, + "external": 1, + "externs": 1, + "feat": 1, + "cli": 1, + "babel": 1, + "cli-service": 1, + "build": 1, + "serve": 1, + "e": 1, + "e-cypress": 1, + "e-nightwatch": 1, + "plugin": 1, + "api": 1, + "pwa": 1, + "typescript": 1, + "ui": 1, + "unit-jest": 1, + "unit-mocha": 1, + "feature": 1, + "request": 1, + "feedback": 1, + "requested": 1, + "files": 1, + "first-timers-only": 1, + "flags": 1, + "flashsocket": 1, + "fontawesome": 1, + "com": 1, + "food": 1, + "freemasonry": 1, + "icons": 1, + "frontend": 1, + "future": 1, + "architecture": 1, + "enhancements": 1, + "crypto": 1, + "genders": 1, + "general": 1, + "js": 1, + "gh": 1, + "review": 1, + "accepted": 1, + "go": 1.7999999999999998, + "client": 1.7999999999999998, + "internal": 1.7999999999999998, + "release": 1.7999999999999998, + "good": 1.7999999999999998, + "first": 1.7999999999999998, + "issue": 1.7999999999999998, + "+": 1.7999999999999998, + "great": 1, + "insight": 1, + "greenkeeper": 1, + "hack": 1, + "hacked": 1, + "hacktoberfest": 1, + "handshakes": 1, + "has": 1, + "bounty": 1, + "pr": 1, + "help": 1, + "wanted": 1, + "sos": 1, + "hi-pri": 1, + "high-priority": 1, + "hodor": 1, + "hot": 1, + "html": 1, + "htmlfile": 1, + "https": 1, + "icebox": 1, + "ie": 1, + "import": 1, + "in": 1, + "progress": 1, + "started": 1, + "infrastructure": 1, + "hammer": 1, + "and": 1, + "wrench": 1, + "installer": 1, + "cleanup": 1, + "internal-issue-created": 1, + "invalid": 1, + "ios": 1, + "jquery": 1, + "differences": 1, + "jsonp-polling": 1, + "kbfs": 1, + "lang-crystal": 1, + "lang-dart": 1, + "lang-elixir": 1, + "lang-go": 1, + "lang-julia": 1, + "lang-objc": 1, + "lang-r": 1, + "lang-scala": 1, + "legal": 1, + "library": 1, + "lint": 1, + "linux": 1, + "lks": 1, + "m": 1, + "s": 1, + "macos": 1, + "maintenance": 1, + "major": 1, + "mass": 1, + "purge": 1, + "minor": 1, + "mobile": 1, + "device": 1, + "support": 1, + "proxy": 1, + "modules": 1, + "must-triage": 1, + "namespaces": 1, + "need-info": 1, + "needs": 1, + "example": 1, + "app": 1, + "failing": 1, + "browser": 1, + "testing": 1, + "changelog": 1, + "info": 1, + "more": 1, + "man": 1, + "shrugging": 1, + "repro": 1, + "triage": 1, + "needs-more-info": 1, + "needs-research": 1, + "new": 1, + "proposal": 1, + "best": 1, + "practice": 1, + "node": 1, + "next": 1, + "bug": 1, + "on": 1, + "hold": 1, + "open": 1, + "operations": 1, + "opinions": 1, + "needed": 1, + "optimisation": 1, + "other": 1, + "language": 1, + "integration": 1, + "p": 1, + "packaging": 1, + "parser": 1, + "parser-specific": 1, + "pending": 1, + "performance": 1, + "planned": 1, + "for": 1, + "pr-existing": 1, + "breaking": 1, + "change": 1, + "boom": 1, + "fix": 1, + "⬆️": 1, + "deprecation": 1, + "memo": 1, + "house": 1, + "merged": 1, + "rocket": 1, + "polish": 1, + "nail": 1, + "care": 1, + "ready": 1, + "to": 1, + "be": 1, + "reviewed-approved": 1, + "reviewed-changes-requested": 1, + "spec": 1, + "compliance": 1, + "eyeglasses": 1, + "underlying": 1, + "unreviewed": 1, + "wip": 1, + "priority": 1, + "high": 1, + "low": 1, + "production": 1, + "project": 1, + "management": 1, + "question": 1, + "react": 1, + "flare": 1, + "native": 1, + "refactor": 1, + "regression": 1, + "alpha": 1, + "released": 1, + "reminder": 1, + "resolution": 1, + "information": 1, + "redirect": 1, + "revisitinfuture": 1, + "rfc": 1, + "ruby": 1, + "security": 1, + "shell": 1, + "socket": 1, + "io": 1, + "spam": 1, + "spammy": 1, + "async": 1, + "functions": 1, + "generators": 1, + "bigint": 1, + "class": 1, + "fields": 1, + "classes": 1, + "decorators": 1, + "(legacy)": 1, + "expressions": 1, + "stale": 1, + "status": 1, + "heavy": 1, + "check": 1, + "mark": 1, + "available": 1, + "free": 1, + "cla": 1, + "signed": 1, + "code": 1, + "approved": 1, + "construction": 1, + "worker": 1, + "detective": 1, + "left": 1, + "out": 1, + "luggage": 1, + "stop": 1, + "sign": 1, + "deploy": 1, + "passport": 1, + "control": 1, + "waiting": 1, + "wontfix": 1, + "work": 1, + "suggestion": 1, + "syntax": 1, + "technical": 1, + "debt": 1, + "technical-debt": 1, + "tests": 1, + "tips": 1, + "todo": 1, + "spiral": 1, + "notepad": 1, + "translation": 1, + "travis-yml": 1, + "triage-done": 1, + "trivial": 1, + "type": 1, + "archive": 1, + "community": 1, + "discuss": 1, + "speech": 1, + "balloon": 1, + "update": 1, + "repeat": 1, + "bulb": 1, + "getting": 1, + "x": 1, + "non-library": 1, + "grey": 1, + "sendgrid": 1, + "vulnerability": 1, + "warning": 1, + "types": 1, + "unable": 1, + "reproduce": 1, + "unconfirmed": 1, + "upstream": 1, + "ux": 1, + "v": 1, + "website": 1, + "websocket": 1, + "windows": 1, + "writer-needed": 1, + "wrong": 1, + "repo": 1, + "xhr-polling": 1, + "-": 1, + "backlog": 1, + "working": 1, + "done": 1, + "backport": 1, + "arrow": 1, + "heading": 1, + "down": 1, + "pull": 1, + "font-face": 1, + "abandoned": 1, + "accessibility": 1, + "adapter": 1, + "advance": 1, + "workflow": 1, + "android": 1, + "angular": 1, + "animals": 1, + "answered": 1, + "area": 1, + "crash": 1, + "arrows": 1, + "automotive": 1, + "fa": 1, + "pro": 1, + "awaiting-review": 1, + "beginner-friendly": 1, + "beverage": 1, + "blocked": 1, + "blocker": 1, + "bootstrap": 1, + "brand": 1, + "icon": 1, + "safari": 1, + "report": 1, + "business": 1, + "c": 1, + "c++": 1, + "cannot": 1, + "cantfix": 1, + "cdn": 1, + "chat": 1, + "chore": 1, + "no": 1, + "yes": 1, + "closed": 1, + "due": 1, + "inactivity": 1, + "cmty": 1, + "bug-report": 1, + "feature-request": 1, + "cancelled": 1, + "fixed": 1, + "implemented": 1, + "resolved": 1 + }, + "positive_weights_sum": {}, + "negative_weights_sum": {} + } + }, + "pastTrainingSamples": [ + { + "input": "component: concurrent mode", + "output": ["null"] + }, + { + "input": "component: core utilities", + "output": ["maintenance"] + }, + { + "input": "component: developer tools", + "output": ["tool"] + }, + { + "input": "component: dom", + "output": ["code"] + }, + { + "input": "component: eslint rules", + "output": ["maintenance"] + }, + { + "input": "component: hooks", + "output": ["code"] + }, + { + "input": "component: optimizing compiler", + "output": ["code"] + }, + { + "input": "component: reactis", + "output": ["code"] + }, + { + "input": "component: reconciler", + "output": ["null"] + }, + { + "input": "component: scheduler", + "output": ["null"] + }, + { + "input": "component: server rendering", + "output": ["code"] + }, + { + "input": "component: shallow renderer", + "output": ["code"] + }, + { + "input": "component: suspense", + "output": ["null"] + }, + { + "input": "component: test renderer", + "output": ["test"] + }, + { + "input": "component: test utils", + "output": ["test"] + }, + { + "input": "configuration", + "output": ["code"] + }, + { + "input": "confirmed", + "output": ["null"] + }, + { + "input": "conflicts", + "output": ["null"] + }, + { + "input": "contribution welcome", + "output": ["null"] + }, + { + "input": "core", + "output": ["maintenance"] + }, + { + "input": "critical", + "output": ["null"] + }, + { + "input": "csharp", + "output": ["code"] + }, + { + "input": "css", + "output": ["code"] + }, + { + "input": "css-select", + "output": ["code"] + }, + { + "input": "currency (category)", + "output": ["financial"] + }, + { + "input": "defect", + "output": ["bug"] + }, + { + "input": "dependencies", + "output": ["maintenance"] + }, + { + "input": "dependency related", + "output": ["maintenance"] + }, + { + "input": "design", + "output": ["design"] + }, + { + "input": "design (category)", + "output": ["design"] + }, + { + "input": "difficulty: challenging", + "output": ["null"] + }, + { + "input": "difficulty: easy", + "output": ["null"] + }, + { + "input": "difficulty: hard", + "output": ["null"] + }, + { + "input": "difficulty: medium", + "output": ["null"] + }, + { + "input": "difficulty: starter", + "output": ["null"] + }, + { + "input": "difficulty: unknown or n/a", + "output": ["null"] + }, + { + "input": "difficulty: very hard", + "output": ["null"] + }, + { + "input": "discussion", + "output": ["ideas"] + }, + { + "input": "do not merge", + "output": ["null"] + }, + { + "input": "doc", + "output": ["doc"] + }, + { + "input": "docs", + "output": ["doc"] + }, + { + "input": "documentation", + "output": ["doc"] + }, + { + "input": "documentation :book:", + "output": ["doc"] + }, + { + "input": "duplicate", + "output": ["null"] + }, + { + "input": "electron", + "output": ["tool"] + }, + { + "input": "enhancement", + "output": ["maintenance"] + }, + { + "input": "enterprise", + "output": ["null"] + }, + { + "input": "enterprise-2.0-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.1-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.2-backport", + "output": ["null"] + }, + { + "input": "es6", + "output": ["code"] + }, + { + "input": "es7", + "output": ["code"] + }, + { + "input": "external", + "output": ["plugin"] + }, + { + "input": "externs", + "output": ["plugin"] + }, + { + "input": "feat/cli", + "output": ["code"] + }, + { + "input": "feat: babel", + "output": ["tool"] + }, + { + "input": "feat: cli", + "output": ["code"] + }, + { + "input": "feat: cli-service build", + "output": ["code"] + }, + { + "input": "feat: cli-service serve", + "output": ["code"] + }, + { + "input": "feat: e2e-cypress", + "output": ["test"] + }, + { + "input": "feat: e2e-nightwatch", + "output": ["test"] + }, + { + "input": "feat: eslint", + "output": ["maintenance"] + }, + { + "input": "feat: plugin api", + "output": ["plugin"] + }, + { + "input": "feat: pwa", + "output": ["code"] + }, + { + "input": "feat: typescript", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "feat: unit-jest", + "output": ["test"] + }, + { + "input": "feat: unit-mocha", + "output": ["test"] + }, + { + "input": "feature", + "output": ["ideas"] + }, + { + "input": "feature request", + "output": ["ideas"] + }, + { + "input": "feedback requested", + "output": ["null"] + }, + { + "input": "files (category)", + "output": ["null"] + }, + { + "input": "first-timers-only", + "output": ["null"] + }, + { + "input": "flags (category)", + "output": ["null"] + }, + { + "input": "flashsocket", + "output": ["tool"] + }, + { + "input": "fontawesome.com", + "output": ["null"] + }, + { + "input": "food (category)", + "output": ["null"] + }, + { + "input": "freemasonry icons", + "output": ["design"] + }, + { + "input": "frontend", + "output": ["code"] + }, + { + "input": "future architecture enhancements", + "output": ["ideas"] + }, + { + "input": "future crypto enhancements", + "output": ["ideas"] + }, + { + "input": "genders (category)", + "output": ["null"] + }, + { + "input": "general js", + "output": ["code"] + }, + { + "input": "gh review: accepted", + "output": ["null"] + }, + { + "input": "go client internal release", + "output": ["null"] + }, + { + "input": "good first issue", + "output": ["null"] + }, + { + "input": "good first issue :+1:", + "output": ["null"] + }, + { + "input": "great insight", + "output": ["ideas"] + }, + { + "input": "greenkeeper", + "output": ["infra"] + }, + { + "input": "hack", + "output": ["code"] + }, + { + "input": "hacked", + "output": ["security"] + }, + { + "input": "hacktoberfest", + "output": ["code"] + }, + { + "input": "handshakes", + "output": ["business"] + }, + { + "input": "has bounty", + "output": ["null"] + }, + { + "input": "has pr", + "output": ["null"] + }, + { + "input": "help", + "output": ["null"] + }, + { + "input": "help / pr wanted", + "output": ["null"] + }, + { + "input": "help wanted", + "output": ["null"] + }, + { + "input": "help wanted :sos:", + "output": ["null"] + }, + { + "input": "hi-pri", + "output": ["null"] + }, + { + "input": "high-priority", + "output": ["null"] + }, + { + "input": "hodor", + "output": ["null"] + }, + { + "input": "hot discussion", + "output": ["ideas"] + }, + { + "input": "html", + "output": ["code"] + }, + { + "input": "htmlfile", + "output": ["code"] + }, + { + "input": "https", + "output": ["null"] + }, + { + "input": "icebox", + "output": ["platform"] + }, + { + "input": "ie8", + "output": ["null"] + }, + { + "input": "import in progress", + "output": ["null"] + }, + { + "input": "import started", + "output": ["null"] + }, + { + "input": "in progress", + "output": ["null"] + }, + { + "input": "in review", + "output": ["null"] + }, + { + "input": "infrastructure :hammer_and_wrench:", + "output": ["infra"] + }, + { + "input": "installer", + "output": ["tool"] + }, + { + "input": "internal cleanup", + "output": ["maintenance"] + }, + { + "input": "internal-issue-created", + "output": ["bug"] + }, + { + "input": "invalid", + "output": ["null"] + }, + { + "input": "ios", + "output": ["platform"] + }, + { + "input": "jquery differences", + "output": ["null"] + }, + { + "input": "jsonp-polling", + "output": ["null"] + }, + { + "input": "kbfs", + "output": ["null"] + }, + { + "input": "lang-crystal", + "output": ["code"] + }, + { + "input": "lang-dart", + "output": ["code"] + }, + { + "input": "lang-elixir", + "output": ["code"] + }, + { + "input": "lang-go", + "output": ["code"] + }, + { + "input": "lang-julia", + "output": ["code"] + }, + { + "input": "lang-objc", + "output": ["code"] + }, + { + "input": "lang-r", + "output": ["code"] + }, + { + "input": "lang-scala", + "output": ["code"] + }, + { + "input": "legal", + "output": ["security"] + }, + { + "input": "library", + "output": ["tool"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "linux", + "output": ["platform"] + }, + { + "input": "lks", + "output": ["null"] + }, + { + "input": "m1.s0", + "output": ["null"] + }, + { + "input": "m1.s1", + "output": ["null"] + }, + { + "input": "m1.s2", + "output": ["null"] + }, + { + "input": "macos", + "output": ["platform"] + }, + { + "input": "maintenance", + "output": ["maintenance"] + }, + { + "input": "major", + "output": ["null"] + }, + { + "input": "mass purge 2015.10.26", + "output": ["null"] + }, + { + "input": "minor", + "output": ["null"] + }, + { + "input": "mobile device support", + "output": ["platform"] + }, + { + "input": "mode: proxy", + "output": ["null"] + }, + { + "input": "modules", + "output": ["code"] + }, + { + "input": "must-triage", + "output": ["null"] + }, + { + "input": "namespaces", + "output": ["null"] + }, + { + "input": "need-info", + "output": ["null"] + }, + { + "input": "needs a example app.", + "output": ["null"] + }, + { + "input": "needs a failing test", + "output": ["null"] + }, + { + "input": "needs browser testing", + "output": ["null"] + }, + { + "input": "needs changelog", + "output": ["null"] + }, + { + "input": "needs docs", + "output": ["null"] + }, + { + "input": "needs documentation", + "output": ["null"] + }, + { + "input": "needs info", + "output": ["null"] + }, + { + "input": "needs more info :man_shrugging:", + "output": ["null"] + }, + { + "input": "needs repro", + "output": ["null"] + }, + { + "input": "needs review", + "output": ["null"] + }, + { + "input": "needs triage", + "output": ["null"] + }, + { + "input": "needs-more-info", + "output": ["null"] + }, + { + "input": "needs-research", + "output": ["null"] + }, + { + "input": "new api proposal", + "output": ["ideas"] + }, + { + "input": "new best practice", + "output": ["ideas"] + }, + { + "input": "node", + "output": ["platform"] + }, + { + "input": "node next", + "output": ["platform"] + }, + { + "input": "not a bug", + "output": ["null"] + }, + { + "input": "on hold", + "output": ["null"] + }, + { + "input": "open", + "output": ["null"] + }, + { + "input": "operations", + "output": ["maintenance"] + }, + { + "input": "opinions needed", + "output": ["null"] + }, + { + "input": "optimisation", + "output": ["code"] + }, + { + "input": "other language integration feature", + "output": ["ideas"] + }, + { + "input": "p0", + "output": ["null"] + }, + { + "input": "p1", + "output": ["null"] + }, + { + "input": "p2", + "output": ["null"] + }, + { + "input": "p3", + "output": ["null"] + }, + { + "input": "packaging", + "output": ["platform"] + }, + { + "input": "parser", + "output": ["tool"] + }, + { + "input": "parser-specific", + "output": ["tool"] + }, + { + "input": "pending release", + "output": ["null"] + }, + { + "input": "performance", + "output": ["maintenance"] + }, + { + "input": "planned feature", + "output": ["null"] + }, + { + "input": "planned for next release", + "output": ["null"] + }, + { + "input": "pr welcome", + "output": ["null"] + }, + { + "input": "pr-existing", + "output": ["null"] + }, + { + "input": "pr: breaking change", + "output": ["code"] + }, + { + "input": "pr: breaking change :boom:", + "output": ["code"] + }, + { + "input": "pr: bug fix", + "output": ["bug"] + }, + { + "input": "pr: bug fix :bug:", + "output": ["bug"] + }, + { + "input": "pr: dependency ⬆️", + "output": ["maintenance"] + }, + { + "input": "pr: deprecation", + "output": ["null"] + }, + { + "input": "pr: docs :memo:", + "output": ["doc"] + }, + { + "input": "pr: documentation", + "output": ["doc"] + }, + { + "input": "pr: good example", + "output": ["example"] + }, + { + "input": "pr: internal", + "output": ["code"] + }, + { + "input": "pr: internal :house:", + "output": ["code"] + }, + { + "input": "pr: merged", + "output": ["null"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "pr: new dependency", + "output": ["ideas"] + }, + { + "input": "pr: new feature", + "output": ["ideas"] + }, + { + "input": "pr: new feature :rocket:", + "output": ["ideas"] + }, + { + "input": "pr: polish :nail_care:", + "output": ["maintenance"] + }, + { + "input": "pr: ready for review", + "output": ["null"] + }, + { + "input": "pr: ready to be merged", + "output": ["null"] + }, + { + "input": "pr: reviewed-approved", + "output": ["null"] + }, + { + "input": "pr: reviewed-changes-requested", + "output": ["null"] + }, + { + "input": "pr: spec compliance :eyeglasses:", + "output": ["doc"] + }, + { + "input": "pr: underlying tools", + "output": ["tool"] + }, + { + "input": "pr: unreviewed", + "output": ["null"] + }, + { + "input": "pr: wip", + "output": ["null"] + }, + { + "input": "priority: critical", + "output": ["null"] + }, + { + "input": "priority: high", + "output": ["null"] + }, + { + "input": "priority: low", + "output": ["null"] + }, + { + "input": "priority: medium", + "output": ["null"] + }, + { + "input": "production", + "output": ["null"] + }, + { + "input": "project management", + "output": ["projectManagement"] + }, + { + "input": "question", + "output": ["question"] + }, + { + "input": "react flare", + "output": ["code"] + }, + { + "input": "react native", + "output": ["code"] + }, + { + "input": "ready", + "output": ["null"] + }, + { + "input": "refactor", + "output": ["code"] + }, + { + "input": "regression", + "output": ["bug"] + }, + { + "input": "release: alpha", + "output": ["null"] + }, + { + "input": "released", + "output": ["null"] + }, + { + "input": "reminder", + "output": ["null"] + }, + { + "input": "resolution: duplicate", + "output": ["null"] + }, + { + "input": "resolution: invalid", + "output": ["null"] + }, + { + "input": "resolution: needs more information", + "output": ["null"] + }, + { + "input": "resolution: support redirect", + "output": ["null"] + }, + { + "input": "review", + "output": ["review"] + }, + { + "input": "review in progress", + "output": ["null"] + }, + { + "input": "revisitinfuture", + "output": ["ideas"] + }, + { + "input": "rfc", + "output": ["ideas"] + }, + { + "input": "ruby", + "output": ["code"] + }, + { + "input": "security", + "output": ["security"] + }, + { + "input": "shell", + "output": ["tool"] + }, + { + "input": "socket.io client", + "output": ["tool"] + }, + { + "input": "spam", + "output": ["null"] + }, + { + "input": "spammy", + "output": ["null"] + }, + { + "input": "spec: async functions", + "output": ["doc"] + }, + { + "input": "spec: async generators", + "output": ["doc"] + }, + { + "input": "spec: bigint", + "output": ["doc"] + }, + { + "input": "spec: class fields", + "output": ["doc"] + }, + { + "input": "spec: classes", + "output": ["doc"] + }, + { + "input": "spec: decorators", + "output": ["doc"] + }, + { + "input": "spec: decorators (legacy)", + "output": ["doc"] + }, + { + "input": "spec: do expressions", + "output": ["doc"] + }, + { + "input": "stale", + "output": ["null"] + }, + { + "input": "status: accepted", + "output": ["null"] + }, + { + "input": "status: accepted :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "status: available", + "output": ["null"] + }, + { + "input": "status: available :free:", + "output": ["null"] + }, + { + "input": "status: cla not signed", + "output": ["null"] + }, + { + "input": "status: code review request", + "output": ["null"] + }, + { + "input": "status: duplicate", + "output": ["null"] + }, + { + "input": "status: hacktoberfest approved", + "output": ["null"] + }, + { + "input": "status: help wanted", + "output": ["null"] + }, + { + "input": "status: in progress", + "output": ["null"] + }, + { + "input": "status: in progress :construction_worker:", + "output": ["null"] + }, + { + "input": "status: in review", + "output": ["null"] + }, + { + "input": "status: in review :detective:", + "output": ["null"] + }, + { + "input": "status: invalid", + "output": ["null"] + }, + { + "input": "status: left out", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "status: on hold", + "output": ["null"] + }, + { + "input": "status: on hold :stop_sign:", + "output": ["null"] + }, + { + "input": "status: ready for deploy", + "output": ["null"] + }, + { + "input": "status: review needed", + "output": ["null"] + }, + { + "input": "status: review needed :passport_control:", + "output": ["null"] + }, + { + "input": "status: waiting for feedback", + "output": ["null"] + }, + { + "input": "status: wontfix", + "output": ["null"] + }, + { + "input": "status: work in progress", + "output": ["null"] + }, + { + "input": "suggestion", + "output": ["ideas"] + }, + { + "input": "support", + "output": ["null"] + }, + { + "input": "syntax feature request", + "output": ["ideas"] + }, + { + "input": "technical debt", + "output": ["maintenance"] + }, + { + "input": "technical-debt", + "output": ["maintenance"] + }, + { + "input": "test", + "output": ["test"] + }, + { + "input": "test needed", + "output": ["null"] + }, + { + "input": "tests", + "output": ["test"] + }, + { + "input": "tips", + "output": ["ideas"] + }, + { + "input": "to do", + "output": ["maintenance"] + }, + { + "input": "to merge", + "output": ["null"] + }, + { + "input": "todo :spiral_notepad:", + "output": ["maintenance"] + }, + { + "input": "translation", + "output": ["translation"] + }, + { + "input": "travis-yml", + "output": ["infra"] + }, + { + "input": "triage", + "output": ["null"] + }, + { + "input": "triage-done", + "output": ["null"] + }, + { + "input": "trivial", + "output": ["null"] + }, + { + "input": "type: archive", + "output": ["null"] + }, + { + "input": "type: bug", + "output": ["bug"] + }, + { + "input": "type: bug :bug:", + "output": ["bug"] + }, + { + "input": "type: community enhancement", + "output": ["maintenance"] + }, + { + "input": "type: discuss :speech_balloon:", + "output": ["ideas"] + }, + { + "input": "type: doc update", + "output": ["doc"] + }, + { + "input": "type: documentation :book:", + "output": ["doc"] + }, + { + "input": "type: duplicate :repeat:", + "output": ["null"] + }, + { + "input": "type: enhancement", + "output": ["maintenance"] + }, + { + "input": "type: enhancement :bulb:", + "output": ["ideas"] + }, + { + "input": "type: getting started", + "output": ["null"] + }, + { + "input": "type: invalid :x:", + "output": ["null"] + }, + { + "input": "type: maintenance :construction:", + "output": ["maintenance"] + }, + { + "input": "type: non-library issue", + "output": ["null"] + }, + { + "input": "type: question", + "output": ["question"] + }, + { + "input": "type: question :grey_question:", + "output": ["question"] + }, + { + "input": "type: regression :boom:", + "output": ["bug"] + }, + { + "input": "type: security", + "output": ["security"] + }, + { + "input": "type: sendgrid enhancement", + "output": ["maintenance"] + }, + { + "input": "type: support", + "output": ["null"] + }, + { + "input": "type: vulnerability :warning:", + "output": ["security"] + }, + { + "input": "types", + "output": ["null"] + }, + { + "input": "ui", + "output": ["design"] + }, + { + "input": "unable to reproduce", + "output": ["null"] + }, + { + "input": "unconfirmed", + "output": ["null"] + }, + { + "input": "update", + "output": ["maintenance"] + }, + { + "input": "upstream", + "output": ["null"] + }, + { + "input": "upstream bug", + "output": ["bug"] + }, + { + "input": "ux", + "output": ["design"] + }, + { + "input": "v3", + "output": ["null"] + }, + { + "input": "vulnerability", + "output": ["security"] + }, + { + "input": "website", + "output": ["code"] + }, + { + "input": "websocket", + "output": ["tool"] + }, + { + "input": "weekly-digest", + "output": ["blog"] + }, + { + "input": "windows", + "output": ["platform"] + }, + { + "input": "wip", + "output": ["null"] + }, + { + "input": "wontfix", + "output": ["null"] + }, + { + "input": "work in progress", + "output": ["null"] + }, + { + "input": "writer-needed", + "output": ["null"] + }, + { + "input": "wrong repo", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + }, + { + "input": "0 - backlog", + "output": ["null"] + }, + { + "input": "1 - ready", + "output": ["null"] + }, + { + "input": "2 - working", + "output": ["null"] + }, + { + "input": "2.x", + "output": ["null"] + }, + { + "input": "3 - done", + "output": ["null"] + }, + { + "input": "6.x: backport", + "output": ["null"] + }, + { + "input": "7.x: regression", + "output": ["bug"] + }, + { + "input": ":arrow_heading_down: pull", + "output": ["maintenance"] + }, + { + "input": ":boom: regression", + "output": ["bug"] + }, + { + "input": ":bug: bug", + "output": ["bug"] + }, + { + "input": ":rocket: enhancement", + "output": ["maintenance"] + }, + { + "input": ":rocket: feature request", + "output": ["ideas"] + }, + { + "input": ":speech_balloon: question", + "output": ["question"] + }, + { + "input": "@font-face", + "output": ["design"] + }, + { + "input": "abandoned", + "output": ["null"] + }, + { + "input": "accepted", + "output": ["null"] + }, + { + "input": "accessibility", + "output": ["null"] + }, + { + "input": "adapter", + "output": ["plugin"] + }, + { + "input": "advance developer workflow", + "output": ["infra"] + }, + { + "input": "android", + "output": ["platform"] + }, + { + "input": "angular", + "output": ["code"] + }, + { + "input": "animals (category)", + "output": ["null"] + }, + { + "input": "answered", + "output": ["null"] + }, + { + "input": "approved", + "output": ["null"] + }, + { + "input": "area: concurrent", + "output": ["null"] + }, + { + "input": "area: crash", + "output": ["bug"] + }, + { + "input": "arrows (category)", + "output": ["null"] + }, + { + "input": "automotive (category)", + "output": ["null"] + }, + { + "input": "available in fa pro", + "output": ["null"] + }, + { + "input": "awaiting-review", + "output": ["null"] + }, + { + "input": "beginner-friendly", + "output": ["null"] + }, + { + "input": "beverage (category)", + "output": ["null"] + }, + { + "input": "blocked", + "output": ["null"] + }, + { + "input": "blocker", + "output": ["null"] + }, + { + "input": "bootstrap", + "output": ["tool"] + }, + { + "input": "brand icon", + "output": ["design"] + }, + { + "input": "breaking change", + "output": ["code"] + }, + { + "input": "browser bug", + "output": ["bug"] + }, + { + "input": "browser: ie", + "output": ["null"] + }, + { + "input": "browser: safari", + "output": ["null"] + }, + { + "input": "bug", + "output": ["bug"] + }, + { + "input": "bug report", + "output": ["bug"] + }, + { + "input": "business (category)", + "output": ["business"] + }, + { + "input": "c/c++", + "output": ["null"] + }, + { + "input": "cannot reproduce", + "output": ["null"] + }, + { + "input": "cantfix", + "output": ["null"] + }, + { + "input": "cdn", + "output": ["platform"] + }, + { + "input": "chat (category)", + "output": ["ideas"] + }, + { + "input": "chore", + "output": ["maintenance"] + }, + { + "input": "cla signed", + "output": ["null"] + }, + { + "input": "cla signed :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "cla: no", + "output": ["null"] + }, + { + "input": "cla: yes", + "output": ["null"] + }, + { + "input": "cli", + "output": ["code"] + }, + { + "input": "closed due to inactivity", + "output": ["null"] + }, + { + "input": "cmty:bug-report", + "output": ["bug"] + }, + { + "input": "cmty:feature-request", + "output": ["ideas"] + }, + { + "input": "cmty:question", + "output": ["question"] + }, + { + "input": "cmty:status:cancelled", + "output": ["null"] + }, + { + "input": "cmty:status:fixed", + "output": ["null"] + }, + { + "input": "cmty:status:implemented", + "output": ["null"] + }, + { + "input": "cmty:status:resolved", + "output": ["null"] + }, + { + "input": "community", + "output": ["null"] + }, + { + "input": "component: build infrastructure", + "output": ["infra"] + }, + { + "input": "component: component api", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "feat: unit-jest", + "output": ["test"] + }, + { + "input": "feat: unit-mocha", + "output": ["test"] + }, + { + "input": "feature", + "output": ["ideas"] + }, + { + "input": "feature request", + "output": ["ideas"] + }, + { + "input": "feedback requested", + "output": ["null"] + }, + { + "input": "files (category)", + "output": ["null"] + }, + { + "input": "first-timers-only", + "output": ["null"] + }, + { + "input": "flags (category)", + "output": ["null"] + }, + { + "input": "flashsocket", + "output": ["tool"] + }, + { + "input": "fontawesome.com", + "output": ["null"] + }, + { + "input": "food (category)", + "output": ["null"] + }, + { + "input": "freemasonry icons", + "output": ["design"] + }, + { + "input": "frontend", + "output": ["code"] + }, + { + "input": "future architecture enhancements", + "output": ["ideas"] + }, + { + "input": "future crypto enhancements", + "output": ["ideas"] + }, + { + "input": "genders (category)", + "output": ["null"] + }, + { + "input": "general js", + "output": ["code"] + }, + { + "input": "gh review: accepted", + "output": ["null"] + }, + { + "input": "go client internal release", + "output": ["null"] + }, + { + "input": "good first issue", + "output": ["null"] + }, + { + "input": "good first issue :+1:", + "output": ["null"] + }, + { + "input": "great insight", + "output": ["ideas"] + }, + { + "input": "greenkeeper", + "output": ["infra"] + }, + { + "input": "hack", + "output": ["code"] + }, + { + "input": "hacked", + "output": ["security"] + }, + { + "input": "hacktoberfest", + "output": ["code"] + }, + { + "input": "handshakes", + "output": ["business"] + }, + { + "input": "has bounty", + "output": ["null"] + }, + { + "input": "has pr", + "output": ["null"] + }, + { + "input": "help", + "output": ["null"] + }, + { + "input": "help / pr wanted", + "output": ["null"] + }, + { + "input": "help wanted", + "output": ["null"] + }, + { + "input": "help wanted :sos:", + "output": ["null"] + }, + { + "input": "hi-pri", + "output": ["null"] + }, + { + "input": "high-priority", + "output": ["null"] + }, + { + "input": "hodor", + "output": ["null"] + }, + { + "input": "hot discussion", + "output": ["ideas"] + }, + { + "input": "html", + "output": ["code"] + }, + { + "input": "htmlfile", + "output": ["code"] + }, + { + "input": "https", + "output": ["null"] + }, + { + "input": "icebox", + "output": ["platform"] + }, + { + "input": "ie8", + "output": ["null"] + }, + { + "input": "import in progress", + "output": ["null"] + }, + { + "input": "import started", + "output": ["null"] + }, + { + "input": "in progress", + "output": ["null"] + }, + { + "input": "in review", + "output": ["null"] + }, + { + "input": "infrastructure :hammer_and_wrench:", + "output": ["infra"] + }, + { + "input": "installer", + "output": ["tool"] + }, + { + "input": "internal cleanup", + "output": ["maintenance"] + }, + { + "input": "internal-issue-created", + "output": ["bug"] + }, + { + "input": "invalid", + "output": ["null"] + }, + { + "input": "ios", + "output": ["platform"] + }, + { + "input": "jquery differences", + "output": ["null"] + }, + { + "input": "jsonp-polling", + "output": ["null"] + }, + { + "input": "kbfs", + "output": ["null"] + }, + { + "input": "lang-crystal", + "output": ["code"] + }, + { + "input": "lang-dart", + "output": ["code"] + }, + { + "input": "lang-elixir", + "output": ["code"] + }, + { + "input": "lang-go", + "output": ["code"] + }, + { + "input": "lang-julia", + "output": ["code"] + }, + { + "input": "lang-objc", + "output": ["code"] + }, + { + "input": "lang-r", + "output": ["code"] + }, + { + "input": "lang-scala", + "output": ["code"] + }, + { + "input": "legal", + "output": ["security"] + }, + { + "input": "library", + "output": ["tool"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "linux", + "output": ["platform"] + }, + { + "input": "lks", + "output": ["null"] + }, + { + "input": "m1.s0", + "output": ["null"] + }, + { + "input": "m1.s1", + "output": ["null"] + }, + { + "input": "m1.s2", + "output": ["null"] + }, + { + "input": "macos", + "output": ["platform"] + }, + { + "input": "maintenance", + "output": ["maintenance"] + }, + { + "input": "major", + "output": ["null"] + }, + { + "input": "mass purge 2015.10.26", + "output": ["null"] + }, + { + "input": "minor", + "output": ["null"] + }, + { + "input": "mobile device support", + "output": ["platform"] + }, + { + "input": "mode: proxy", + "output": ["null"] + }, + { + "input": "modules", + "output": ["code"] + }, + { + "input": "must-triage", + "output": ["null"] + }, + { + "input": "namespaces", + "output": ["null"] + }, + { + "input": "need-info", + "output": ["null"] + }, + { + "input": "needs a example app.", + "output": ["null"] + }, + { + "input": "needs a failing test", + "output": ["null"] + }, + { + "input": "needs browser testing", + "output": ["null"] + }, + { + "input": "needs changelog", + "output": ["null"] + }, + { + "input": "needs docs", + "output": ["null"] + }, + { + "input": "needs documentation", + "output": ["null"] + }, + { + "input": "needs info", + "output": ["null"] + }, + { + "input": "needs more info :man_shrugging:", + "output": ["null"] + }, + { + "input": "needs repro", + "output": ["null"] + }, + { + "input": "needs review", + "output": ["null"] + }, + { + "input": "needs triage", + "output": ["null"] + }, + { + "input": "needs-more-info", + "output": ["null"] + }, + { + "input": "needs-research", + "output": ["null"] + }, + { + "input": "new api proposal", + "output": ["ideas"] + }, + { + "input": "new best practice", + "output": ["ideas"] + }, + { + "input": "node", + "output": ["platform"] + }, + { + "input": "node next", + "output": ["platform"] + }, + { + "input": "not a bug", + "output": ["null"] + }, + { + "input": "on hold", + "output": ["null"] + }, + { + "input": "open", + "output": ["null"] + }, + { + "input": "operations", + "output": ["maintenance"] + }, + { + "input": "opinions needed", + "output": ["null"] + }, + { + "input": "optimisation", + "output": ["code"] + }, + { + "input": "other language integration feature", + "output": ["ideas"] + }, + { + "input": "p0", + "output": ["null"] + }, + { + "input": "p1", + "output": ["null"] + }, + { + "input": "p2", + "output": ["null"] + }, + { + "input": "p3", + "output": ["null"] + }, + { + "input": "packaging", + "output": ["platform"] + }, + { + "input": "parser", + "output": ["tool"] + }, + { + "input": "parser-specific", + "output": ["tool"] + }, + { + "input": "pending release", + "output": ["null"] + }, + { + "input": "performance", + "output": ["maintenance"] + }, + { + "input": "planned feature", + "output": ["null"] + }, + { + "input": "planned for next release", + "output": ["null"] + }, + { + "input": "pr welcome", + "output": ["null"] + }, + { + "input": "pr-existing", + "output": ["null"] + }, + { + "input": "pr: breaking change", + "output": ["code"] + }, + { + "input": "pr: breaking change :boom:", + "output": ["code"] + }, + { + "input": "pr: bug fix", + "output": ["bug"] + }, + { + "input": "pr: bug fix :bug:", + "output": ["bug"] + }, + { + "input": "pr: dependency ⬆️", + "output": ["maintenance"] + }, + { + "input": "pr: deprecation", + "output": ["null"] + }, + { + "input": "pr: docs :memo:", + "output": ["doc"] + }, + { + "input": "pr: documentation", + "output": ["doc"] + }, + { + "input": "pr: good example", + "output": ["example"] + }, + { + "input": "pr: internal", + "output": ["code"] + }, + { + "input": "pr: internal :house:", + "output": ["code"] + }, + { + "input": "pr: merged", + "output": ["null"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "pr: new dependency", + "output": ["ideas"] + }, + { + "input": "pr: new feature", + "output": ["ideas"] + }, + { + "input": "pr: new feature :rocket:", + "output": ["ideas"] + }, + { + "input": "pr: polish :nail_care:", + "output": ["maintenance"] + }, + { + "input": "pr: ready for review", + "output": ["null"] + }, + { + "input": "pr: ready to be merged", + "output": ["null"] + }, + { + "input": "pr: reviewed-approved", + "output": ["null"] + }, + { + "input": "pr: reviewed-changes-requested", + "output": ["null"] + }, + { + "input": "pr: spec compliance :eyeglasses:", + "output": ["doc"] + }, + { + "input": "pr: underlying tools", + "output": ["tool"] + }, + { + "input": "pr: unreviewed", + "output": ["null"] + }, + { + "input": "pr: wip", + "output": ["null"] + }, + { + "input": "priority: critical", + "output": ["null"] + }, + { + "input": "priority: high", + "output": ["null"] + }, + { + "input": "priority: low", + "output": ["null"] + }, + { + "input": "priority: medium", + "output": ["null"] + }, + { + "input": "production", + "output": ["null"] + }, + { + "input": "project management", + "output": ["projectManagement"] + }, + { + "input": "question", + "output": ["question"] + }, + { + "input": "react flare", + "output": ["code"] + }, + { + "input": "react native", + "output": ["code"] + }, + { + "input": "ready", + "output": ["null"] + }, + { + "input": "refactor", + "output": ["code"] + }, + { + "input": "regression", + "output": ["bug"] + }, + { + "input": "release: alpha", + "output": ["null"] + }, + { + "input": "released", + "output": ["null"] + }, + { + "input": "reminder", + "output": ["null"] + }, + { + "input": "resolution: duplicate", + "output": ["null"] + }, + { + "input": "resolution: invalid", + "output": ["null"] + }, + { + "input": "resolution: needs more information", + "output": ["null"] + }, + { + "input": "resolution: support redirect", + "output": ["null"] + }, + { + "input": "review", + "output": ["review"] + }, + { + "input": "review in progress", + "output": ["null"] + }, + { + "input": "revisitinfuture", + "output": ["ideas"] + }, + { + "input": "rfc", + "output": ["ideas"] + }, + { + "input": "ruby", + "output": ["code"] + }, + { + "input": "security", + "output": ["security"] + }, + { + "input": "shell", + "output": ["tool"] + }, + { + "input": "socket.io client", + "output": ["tool"] + }, + { + "input": "spam", + "output": ["null"] + }, + { + "input": "spammy", + "output": ["null"] + }, + { + "input": "spec: async functions", + "output": ["doc"] + }, + { + "input": "spec: async generators", + "output": ["doc"] + }, + { + "input": "spec: bigint", + "output": ["doc"] + }, + { + "input": "spec: class fields", + "output": ["doc"] + }, + { + "input": "spec: classes", + "output": ["doc"] + }, + { + "input": "spec: decorators", + "output": ["doc"] + }, + { + "input": "spec: decorators (legacy)", + "output": ["doc"] + }, + { + "input": "spec: do expressions", + "output": ["doc"] + }, + { + "input": "stale", + "output": ["null"] + }, + { + "input": "status: accepted", + "output": ["null"] + }, + { + "input": "status: accepted :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "status: available", + "output": ["null"] + }, + { + "input": "status: available :free:", + "output": ["null"] + }, + { + "input": "status: cla not signed", + "output": ["null"] + }, + { + "input": "status: code review request", + "output": ["null"] + }, + { + "input": "status: duplicate", + "output": ["null"] + }, + { + "input": "status: hacktoberfest approved", + "output": ["null"] + }, + { + "input": "status: help wanted", + "output": ["null"] + }, + { + "input": "status: in progress", + "output": ["null"] + }, + { + "input": "status: in progress :construction_worker:", + "output": ["null"] + }, + { + "input": "status: in review", + "output": ["null"] + }, + { + "input": "status: in review :detective:", + "output": ["null"] + }, + { + "input": "status: invalid", + "output": ["null"] + }, + { + "input": "status: left out", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "status: on hold", + "output": ["null"] + }, + { + "input": "status: on hold :stop_sign:", + "output": ["null"] + }, + { + "input": "status: ready for deploy", + "output": ["null"] + }, + { + "input": "status: review needed", + "output": ["null"] + }, + { + "input": "status: review needed :passport_control:", + "output": ["null"] + }, + { + "input": "status: waiting for feedback", + "output": ["null"] + }, + { + "input": "status: wontfix", + "output": ["null"] + }, + { + "input": "status: work in progress", + "output": ["null"] + }, + { + "input": "suggestion", + "output": ["ideas"] + }, + { + "input": "support", + "output": ["null"] + }, + { + "input": "syntax feature request", + "output": ["ideas"] + }, + { + "input": "technical debt", + "output": ["maintenance"] + }, + { + "input": "technical-debt", + "output": ["maintenance"] + }, + { + "input": "test", + "output": ["test"] + }, + { + "input": "test needed", + "output": ["null"] + }, + { + "input": "tests", + "output": ["test"] + }, + { + "input": "tips", + "output": ["ideas"] + }, + { + "input": "to do", + "output": ["maintenance"] + }, + { + "input": "to merge", + "output": ["null"] + }, + { + "input": "todo :spiral_notepad:", + "output": ["maintenance"] + }, + { + "input": "translation", + "output": ["translation"] + }, + { + "input": "travis-yml", + "output": ["infra"] + }, + { + "input": "triage", + "output": ["null"] + }, + { + "input": "triage-done", + "output": ["null"] + }, + { + "input": "trivial", + "output": ["null"] + }, + { + "input": "type: archive", + "output": ["null"] + }, + { + "input": "type: bug", + "output": ["bug"] + }, + { + "input": "type: bug :bug:", + "output": ["bug"] + }, + { + "input": "type: community enhancement", + "output": ["maintenance"] + }, + { + "input": "type: discuss :speech_balloon:", + "output": ["ideas"] + }, + { + "input": "type: doc update", + "output": ["doc"] + }, + { + "input": "type: documentation :book:", + "output": ["doc"] + }, + { + "input": "type: duplicate :repeat:", + "output": ["null"] + }, + { + "input": "type: enhancement", + "output": ["maintenance"] + }, + { + "input": "type: enhancement :bulb:", + "output": ["ideas"] + }, + { + "input": "type: getting started", + "output": ["null"] + }, + { + "input": "type: invalid :x:", + "output": ["null"] + }, + { + "input": "type: maintenance :construction:", + "output": ["maintenance"] + }, + { + "input": "type: non-library issue", + "output": ["null"] + }, + { + "input": "type: question", + "output": ["question"] + }, + { + "input": "type: question :grey_question:", + "output": ["question"] + }, + { + "input": "type: regression :boom:", + "output": ["bug"] + }, + { + "input": "type: security", + "output": ["security"] + }, + { + "input": "type: sendgrid enhancement", + "output": ["maintenance"] + }, + { + "input": "type: support", + "output": ["null"] + }, + { + "input": "type: vulnerability :warning:", + "output": ["security"] + }, + { + "input": "types", + "output": ["null"] + }, + { + "input": "ui", + "output": ["design"] + }, + { + "input": "unable to reproduce", + "output": ["null"] + }, + { + "input": "unconfirmed", + "output": ["null"] + }, + { + "input": "update", + "output": ["maintenance"] + }, + { + "input": "upstream", + "output": ["null"] + }, + { + "input": "upstream bug", + "output": ["bug"] + }, + { + "input": "ux", + "output": ["design"] + }, + { + "input": "v3", + "output": ["null"] + }, + { + "input": "vulnerability", + "output": ["security"] + }, + { + "input": "website", + "output": ["code"] + }, + { + "input": "websocket", + "output": ["tool"] + }, + { + "input": "weekly-digest", + "output": ["blog"] + }, + { + "input": "windows", + "output": ["platform"] + }, + { + "input": "wip", + "output": ["null"] + }, + { + "input": "wontfix", + "output": ["null"] + }, + { + "input": "work in progress", + "output": ["null"] + }, + { + "input": "writer-needed", + "output": ["null"] + }, + { + "input": "wrong repo", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + }, + { + "input": "0 - backlog", + "output": ["null"] + }, + { + "input": "1 - ready", + "output": ["null"] + }, + { + "input": "2 - working", + "output": ["null"] + }, + { + "input": "2.x", + "output": ["null"] + }, + { + "input": "3 - done", + "output": ["null"] + }, + { + "input": "6.x: backport", + "output": ["null"] + }, + { + "input": "7.x: regression", + "output": ["bug"] + }, + { + "input": ":arrow_heading_down: pull", + "output": ["maintenance"] + }, + { + "input": ":boom: regression", + "output": ["bug"] + }, + { + "input": ":bug: bug", + "output": ["bug"] + }, + { + "input": ":rocket: enhancement", + "output": ["maintenance"] + }, + { + "input": ":rocket: feature request", + "output": ["ideas"] + }, + { + "input": ":speech_balloon: question", + "output": ["question"] + }, + { + "input": "@font-face", + "output": ["design"] + }, + { + "input": "abandoned", + "output": ["null"] + }, + { + "input": "accepted", + "output": ["null"] + }, + { + "input": "accessibility", + "output": ["null"] + }, + { + "input": "adapter", + "output": ["plugin"] + }, + { + "input": "advance developer workflow", + "output": ["infra"] + }, + { + "input": "android", + "output": ["platform"] + }, + { + "input": "angular", + "output": ["code"] + }, + { + "input": "animals (category)", + "output": ["null"] + }, + { + "input": "answered", + "output": ["null"] + }, + { + "input": "approved", + "output": ["null"] + }, + { + "input": "area: concurrent", + "output": ["null"] + }, + { + "input": "area: crash", + "output": ["bug"] + }, + { + "input": "arrows (category)", + "output": ["null"] + }, + { + "input": "automotive (category)", + "output": ["null"] + }, + { + "input": "available in fa pro", + "output": ["null"] + }, + { + "input": "awaiting-review", + "output": ["null"] + }, + { + "input": "beginner-friendly", + "output": ["null"] + }, + { + "input": "beverage (category)", + "output": ["null"] + }, + { + "input": "blocked", + "output": ["null"] + }, + { + "input": "blocker", + "output": ["null"] + }, + { + "input": "bootstrap", + "output": ["tool"] + }, + { + "input": "brand icon", + "output": ["design"] + }, + { + "input": "breaking change", + "output": ["code"] + }, + { + "input": "browser bug", + "output": ["bug"] + }, + { + "input": "browser: ie", + "output": ["null"] + }, + { + "input": "browser: safari", + "output": ["null"] + }, + { + "input": "bug", + "output": ["bug"] + }, + { + "input": "bug report", + "output": ["bug"] + }, + { + "input": "business (category)", + "output": ["business"] + }, + { + "input": "c/c++", + "output": ["null"] + }, + { + "input": "cannot reproduce", + "output": ["null"] + }, + { + "input": "cantfix", + "output": ["null"] + }, + { + "input": "cdn", + "output": ["platform"] + }, + { + "input": "chat (category)", + "output": ["ideas"] + }, + { + "input": "chore", + "output": ["maintenance"] + }, + { + "input": "cla signed", + "output": ["null"] + }, + { + "input": "cla signed :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "cla: no", + "output": ["null"] + }, + { + "input": "cla: yes", + "output": ["null"] + }, + { + "input": "cli", + "output": ["code"] + }, + { + "input": "closed due to inactivity", + "output": ["null"] + }, + { + "input": "cmty:bug-report", + "output": ["bug"] + }, + { + "input": "cmty:feature-request", + "output": ["ideas"] + }, + { + "input": "cmty:question", + "output": ["question"] + }, + { + "input": "cmty:status:cancelled", + "output": ["null"] + }, + { + "input": "cmty:status:fixed", + "output": ["null"] + }, + { + "input": "cmty:status:implemented", + "output": ["null"] + }, + { + "input": "cmty:status:resolved", + "output": ["null"] + }, + { + "input": "community", + "output": ["null"] + }, + { + "input": "component: build infrastructure", + "output": ["infra"] + }, + { + "input": "component: component api", + "output": ["code"] + }, + { + "input": "component: concurrent mode", + "output": ["null"] + }, + { + "input": "component: core utilities", + "output": ["maintenance"] + }, + { + "input": "component: developer tools", + "output": ["tool"] + }, + { + "input": "component: dom", + "output": ["code"] + }, + { + "input": "component: eslint rules", + "output": ["maintenance"] + }, + { + "input": "component: hooks", + "output": ["code"] + }, + { + "input": "component: optimizing compiler", + "output": ["code"] + }, + { + "input": "component: reactis", + "output": ["code"] + }, + { + "input": "component: reconciler", + "output": ["null"] + }, + { + "input": "component: scheduler", + "output": ["null"] + }, + { + "input": "component: server rendering", + "output": ["code"] + }, + { + "input": "component: shallow renderer", + "output": ["code"] + }, + { + "input": "component: suspense", + "output": ["null"] + }, + { + "input": "component: test renderer", + "output": ["test"] + }, + { + "input": "component: test utils", + "output": ["test"] + }, + { + "input": "configuration", + "output": ["code"] + }, + { + "input": "confirmed", + "output": ["null"] + }, + { + "input": "conflicts", + "output": ["null"] + }, + { + "input": "contribution welcome", + "output": ["null"] + }, + { + "input": "core", + "output": ["maintenance"] + }, + { + "input": "critical", + "output": ["null"] + }, + { + "input": "csharp", + "output": ["code"] + }, + { + "input": "css", + "output": ["code"] + }, + { + "input": "css-select", + "output": ["code"] + }, + { + "input": "currency (category)", + "output": ["financial"] + }, + { + "input": "defect", + "output": ["bug"] + }, + { + "input": "dependencies", + "output": ["maintenance"] + }, + { + "input": "dependency related", + "output": ["maintenance"] + }, + { + "input": "design", + "output": ["design"] + }, + { + "input": "design (category)", + "output": ["design"] + }, + { + "input": "difficulty: challenging", + "output": ["null"] + }, + { + "input": "difficulty: easy", + "output": ["null"] + }, + { + "input": "difficulty: hard", + "output": ["null"] + }, + { + "input": "difficulty: medium", + "output": ["null"] + }, + { + "input": "difficulty: starter", + "output": ["null"] + }, + { + "input": "difficulty: unknown or n/a", + "output": ["null"] + }, + { + "input": "difficulty: very hard", + "output": ["null"] + }, + { + "input": "discussion", + "output": ["ideas"] + }, + { + "input": "do not merge", + "output": ["null"] + }, + { + "input": "doc", + "output": ["doc"] + }, + { + "input": "docs", + "output": ["doc"] + }, + { + "input": "documentation", + "output": ["doc"] + }, + { + "input": "documentation :book:", + "output": ["doc"] + }, + { + "input": "duplicate", + "output": ["null"] + }, + { + "input": "electron", + "output": ["tool"] + }, + { + "input": "enhancement", + "output": ["maintenance"] + }, + { + "input": "enterprise", + "output": ["null"] + }, + { + "input": "enterprise-2.0-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.1-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.2-backport", + "output": ["null"] + }, + { + "input": "es6", + "output": ["code"] + }, + { + "input": "es7", + "output": ["code"] + }, + { + "input": "external", + "output": ["plugin"] + }, + { + "input": "externs", + "output": ["plugin"] + }, + { + "input": "feat/cli", + "output": ["code"] + }, + { + "input": "feat: babel", + "output": ["tool"] + }, + { + "input": "feat: cli", + "output": ["code"] + }, + { + "input": "feat: cli-service build", + "output": ["code"] + }, + { + "input": "feat: cli-service serve", + "output": ["code"] + }, + { + "input": "feat: e2e-cypress", + "output": ["test"] + }, + { + "input": "feat: e2e-nightwatch", + "output": ["test"] + }, + { + "input": "feat: eslint", + "output": ["maintenance"] + }, + { + "input": "feat: plugin api", + "output": ["plugin"] + }, + { + "input": "feat: pwa", + "output": ["code"] + }, + { + "input": "feat: typescript", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "linux", + "output": ["platform"] + }, + { + "input": "lks", + "output": ["null"] + }, + { + "input": "m1.s0", + "output": ["null"] + }, + { + "input": "m1.s1", + "output": ["null"] + }, + { + "input": "m1.s2", + "output": ["null"] + }, + { + "input": "macos", + "output": ["platform"] + }, + { + "input": "maintenance", + "output": ["maintenance"] + }, + { + "input": "major", + "output": ["null"] + }, + { + "input": "mass purge 2015.10.26", + "output": ["null"] + }, + { + "input": "minor", + "output": ["null"] + }, + { + "input": "mobile device support", + "output": ["platform"] + }, + { + "input": "mode: proxy", + "output": ["null"] + }, + { + "input": "modules", + "output": ["code"] + }, + { + "input": "must-triage", + "output": ["null"] + }, + { + "input": "namespaces", + "output": ["null"] + }, + { + "input": "need-info", + "output": ["null"] + }, + { + "input": "needs a example app.", + "output": ["null"] + }, + { + "input": "needs a failing test", + "output": ["null"] + }, + { + "input": "needs browser testing", + "output": ["null"] + }, + { + "input": "needs changelog", + "output": ["null"] + }, + { + "input": "needs docs", + "output": ["null"] + }, + { + "input": "needs documentation", + "output": ["null"] + }, + { + "input": "needs info", + "output": ["null"] + }, + { + "input": "needs more info :man_shrugging:", + "output": ["null"] + }, + { + "input": "needs repro", + "output": ["null"] + }, + { + "input": "needs review", + "output": ["null"] + }, + { + "input": "needs triage", + "output": ["null"] + }, + { + "input": "needs-more-info", + "output": ["null"] + }, + { + "input": "needs-research", + "output": ["null"] + }, + { + "input": "new api proposal", + "output": ["ideas"] + }, + { + "input": "new best practice", + "output": ["ideas"] + }, + { + "input": "node", + "output": ["platform"] + }, + { + "input": "node next", + "output": ["platform"] + }, + { + "input": "not a bug", + "output": ["null"] + }, + { + "input": "on hold", + "output": ["null"] + }, + { + "input": "open", + "output": ["null"] + }, + { + "input": "operations", + "output": ["maintenance"] + }, + { + "input": "opinions needed", + "output": ["null"] + }, + { + "input": "optimisation", + "output": ["code"] + }, + { + "input": "other language integration feature", + "output": ["ideas"] + }, + { + "input": "p0", + "output": ["null"] + }, + { + "input": "p1", + "output": ["null"] + }, + { + "input": "p2", + "output": ["null"] + }, + { + "input": "p3", + "output": ["null"] + }, + { + "input": "packaging", + "output": ["platform"] + }, + { + "input": "parser", + "output": ["tool"] + }, + { + "input": "parser-specific", + "output": ["tool"] + }, + { + "input": "pending release", + "output": ["null"] + }, + { + "input": "performance", + "output": ["maintenance"] + }, + { + "input": "planned feature", + "output": ["null"] + }, + { + "input": "planned for next release", + "output": ["null"] + }, + { + "input": "pr welcome", + "output": ["null"] + }, + { + "input": "pr-existing", + "output": ["null"] + }, + { + "input": "pr: breaking change", + "output": ["code"] + }, + { + "input": "pr: breaking change :boom:", + "output": ["code"] + }, + { + "input": "pr: bug fix", + "output": ["bug"] + }, + { + "input": "pr: bug fix :bug:", + "output": ["bug"] + }, + { + "input": "pr: dependency ⬆️", + "output": ["maintenance"] + }, + { + "input": "pr: deprecation", + "output": ["null"] + }, + { + "input": "pr: docs :memo:", + "output": ["doc"] + }, + { + "input": "pr: documentation", + "output": ["doc"] + }, + { + "input": "pr: good example", + "output": ["example"] + }, + { + "input": "pr: internal", + "output": ["code"] + }, + { + "input": "pr: internal :house:", + "output": ["code"] + }, + { + "input": "pr: merged", + "output": ["null"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "pr: new dependency", + "output": ["ideas"] + }, + { + "input": "pr: new feature", + "output": ["ideas"] + }, + { + "input": "pr: new feature :rocket:", + "output": ["ideas"] + }, + { + "input": "pr: polish :nail_care:", + "output": ["maintenance"] + }, + { + "input": "pr: ready for review", + "output": ["null"] + }, + { + "input": "pr: ready to be merged", + "output": ["null"] + }, + { + "input": "pr: reviewed-approved", + "output": ["null"] + }, + { + "input": "pr: reviewed-changes-requested", + "output": ["null"] + }, + { + "input": "pr: spec compliance :eyeglasses:", + "output": ["doc"] + }, + { + "input": "pr: underlying tools", + "output": ["tool"] + }, + { + "input": "pr: unreviewed", + "output": ["null"] + }, + { + "input": "pr: wip", + "output": ["null"] + }, + { + "input": "priority: critical", + "output": ["null"] + }, + { + "input": "priority: high", + "output": ["null"] + }, + { + "input": "priority: low", + "output": ["null"] + }, + { + "input": "priority: medium", + "output": ["null"] + }, + { + "input": "production", + "output": ["null"] + }, + { + "input": "project management", + "output": ["projectManagement"] + }, + { + "input": "question", + "output": ["question"] + }, + { + "input": "react flare", + "output": ["code"] + }, + { + "input": "react native", + "output": ["code"] + }, + { + "input": "ready", + "output": ["null"] + }, + { + "input": "refactor", + "output": ["code"] + }, + { + "input": "regression", + "output": ["bug"] + }, + { + "input": "release: alpha", + "output": ["null"] + }, + { + "input": "released", + "output": ["null"] + }, + { + "input": "reminder", + "output": ["null"] + }, + { + "input": "resolution: duplicate", + "output": ["null"] + }, + { + "input": "resolution: invalid", + "output": ["null"] + }, + { + "input": "resolution: needs more information", + "output": ["null"] + }, + { + "input": "resolution: support redirect", + "output": ["null"] + }, + { + "input": "review", + "output": ["review"] + }, + { + "input": "review in progress", + "output": ["null"] + }, + { + "input": "revisitinfuture", + "output": ["ideas"] + }, + { + "input": "rfc", + "output": ["ideas"] + }, + { + "input": "ruby", + "output": ["code"] + }, + { + "input": "security", + "output": ["security"] + }, + { + "input": "shell", + "output": ["tool"] + }, + { + "input": "socket.io client", + "output": ["tool"] + }, + { + "input": "spam", + "output": ["null"] + }, + { + "input": "spammy", + "output": ["null"] + }, + { + "input": "spec: async functions", + "output": ["doc"] + }, + { + "input": "spec: async generators", + "output": ["doc"] + }, + { + "input": "spec: bigint", + "output": ["doc"] + }, + { + "input": "spec: class fields", + "output": ["doc"] + }, + { + "input": "spec: classes", + "output": ["doc"] + }, + { + "input": "spec: decorators", + "output": ["doc"] + }, + { + "input": "spec: decorators (legacy)", + "output": ["doc"] + }, + { + "input": "spec: do expressions", + "output": ["doc"] + }, + { + "input": "stale", + "output": ["null"] + }, + { + "input": "status: accepted", + "output": ["null"] + }, + { + "input": "status: accepted :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "status: available", + "output": ["null"] + }, + { + "input": "status: available :free:", + "output": ["null"] + }, + { + "input": "status: cla not signed", + "output": ["null"] + }, + { + "input": "status: code review request", + "output": ["null"] + }, + { + "input": "status: duplicate", + "output": ["null"] + }, + { + "input": "status: hacktoberfest approved", + "output": ["null"] + }, + { + "input": "status: help wanted", + "output": ["null"] + }, + { + "input": "status: in progress", + "output": ["null"] + }, + { + "input": "status: in progress :construction_worker:", + "output": ["null"] + }, + { + "input": "status: in review", + "output": ["null"] + }, + { + "input": "status: in review :detective:", + "output": ["null"] + }, + { + "input": "status: invalid", + "output": ["null"] + }, + { + "input": "status: left out", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "status: on hold", + "output": ["null"] + }, + { + "input": "status: on hold :stop_sign:", + "output": ["null"] + }, + { + "input": "status: ready for deploy", + "output": ["null"] + }, + { + "input": "status: review needed", + "output": ["null"] + }, + { + "input": "status: review needed :passport_control:", + "output": ["null"] + }, + { + "input": "status: waiting for feedback", + "output": ["null"] + }, + { + "input": "status: wontfix", + "output": ["null"] + }, + { + "input": "status: work in progress", + "output": ["null"] + }, + { + "input": "suggestion", + "output": ["ideas"] + }, + { + "input": "support", + "output": ["null"] + }, + { + "input": "syntax feature request", + "output": ["ideas"] + }, + { + "input": "technical debt", + "output": ["maintenance"] + }, + { + "input": "technical-debt", + "output": ["maintenance"] + }, + { + "input": "test", + "output": ["test"] + }, + { + "input": "test needed", + "output": ["null"] + }, + { + "input": "tests", + "output": ["test"] + }, + { + "input": "tips", + "output": ["ideas"] + }, + { + "input": "to do", + "output": ["maintenance"] + }, + { + "input": "to merge", + "output": ["null"] + }, + { + "input": "todo :spiral_notepad:", + "output": ["maintenance"] + }, + { + "input": "translation", + "output": ["translation"] + }, + { + "input": "travis-yml", + "output": ["infra"] + }, + { + "input": "triage", + "output": ["null"] + }, + { + "input": "triage-done", + "output": ["null"] + }, + { + "input": "trivial", + "output": ["null"] + }, + { + "input": "type: archive", + "output": ["null"] + }, + { + "input": "type: bug", + "output": ["bug"] + }, + { + "input": "type: bug :bug:", + "output": ["bug"] + }, + { + "input": "type: community enhancement", + "output": ["maintenance"] + }, + { + "input": "type: discuss :speech_balloon:", + "output": ["ideas"] + }, + { + "input": "type: doc update", + "output": ["doc"] + }, + { + "input": "type: documentation :book:", + "output": ["doc"] + }, + { + "input": "type: duplicate :repeat:", + "output": ["null"] + }, + { + "input": "type: enhancement", + "output": ["maintenance"] + }, + { + "input": "type: enhancement :bulb:", + "output": ["ideas"] + }, + { + "input": "type: getting started", + "output": ["null"] + }, + { + "input": "type: invalid :x:", + "output": ["null"] + }, + { + "input": "type: maintenance :construction:", + "output": ["maintenance"] + }, + { + "input": "type: non-library issue", + "output": ["null"] + }, + { + "input": "type: question", + "output": ["question"] + }, + { + "input": "type: question :grey_question:", + "output": ["question"] + }, + { + "input": "type: regression :boom:", + "output": ["bug"] + }, + { + "input": "type: security", + "output": ["security"] + }, + { + "input": "type: sendgrid enhancement", + "output": ["maintenance"] + }, + { + "input": "type: support", + "output": ["null"] + }, + { + "input": "type: vulnerability :warning:", + "output": ["security"] + }, + { + "input": "types", + "output": ["null"] + }, + { + "input": "ui", + "output": ["design"] + }, + { + "input": "unable to reproduce", + "output": ["null"] + }, + { + "input": "unconfirmed", + "output": ["null"] + }, + { + "input": "update", + "output": ["maintenance"] + }, + { + "input": "upstream", + "output": ["null"] + }, + { + "input": "upstream bug", + "output": ["bug"] + }, + { + "input": "ux", + "output": ["design"] + }, + { + "input": "v3", + "output": ["null"] + }, + { + "input": "vulnerability", + "output": ["security"] + }, + { + "input": "website", + "output": ["code"] + }, + { + "input": "websocket", + "output": ["tool"] + }, + { + "input": "weekly-digest", + "output": ["blog"] + }, + { + "input": "windows", + "output": ["platform"] + }, + { + "input": "wip", + "output": ["null"] + }, + { + "input": "wontfix", + "output": ["null"] + }, + { + "input": "work in progress", + "output": ["null"] + }, + { + "input": "writer-needed", + "output": ["null"] + }, + { + "input": "wrong repo", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + }, + { + "input": "0 - backlog", + "output": ["null"] + }, + { + "input": "1 - ready", + "output": ["null"] + }, + { + "input": "2 - working", + "output": ["null"] + }, + { + "input": "2.x", + "output": ["null"] + }, + { + "input": "3 - done", + "output": ["null"] + }, + { + "input": "6.x: backport", + "output": ["null"] + }, + { + "input": "7.x: regression", + "output": ["bug"] + }, + { + "input": ":arrow_heading_down: pull", + "output": ["maintenance"] + }, + { + "input": ":boom: regression", + "output": ["bug"] + }, + { + "input": ":bug: bug", + "output": ["bug"] + }, + { + "input": ":rocket: enhancement", + "output": ["maintenance"] + }, + { + "input": ":rocket: feature request", + "output": ["ideas"] + }, + { + "input": ":speech_balloon: question", + "output": ["question"] + }, + { + "input": "@font-face", + "output": ["design"] + }, + { + "input": "abandoned", + "output": ["null"] + }, + { + "input": "accepted", + "output": ["null"] + }, + { + "input": "accessibility", + "output": ["null"] + }, + { + "input": "adapter", + "output": ["plugin"] + }, + { + "input": "advance developer workflow", + "output": ["infra"] + }, + { + "input": "android", + "output": ["platform"] + }, + { + "input": "angular", + "output": ["code"] + }, + { + "input": "animals (category)", + "output": ["null"] + }, + { + "input": "answered", + "output": ["null"] + }, + { + "input": "approved", + "output": ["null"] + }, + { + "input": "area: concurrent", + "output": ["null"] + }, + { + "input": "area: crash", + "output": ["bug"] + }, + { + "input": "arrows (category)", + "output": ["null"] + }, + { + "input": "automotive (category)", + "output": ["null"] + }, + { + "input": "available in fa pro", + "output": ["null"] + }, + { + "input": "awaiting-review", + "output": ["null"] + }, + { + "input": "beginner-friendly", + "output": ["null"] + }, + { + "input": "beverage (category)", + "output": ["null"] + }, + { + "input": "blocked", + "output": ["null"] + }, + { + "input": "blocker", + "output": ["null"] + }, + { + "input": "bootstrap", + "output": ["tool"] + }, + { + "input": "brand icon", + "output": ["design"] + }, + { + "input": "breaking change", + "output": ["code"] + }, + { + "input": "browser bug", + "output": ["bug"] + }, + { + "input": "browser: ie", + "output": ["null"] + }, + { + "input": "browser: safari", + "output": ["null"] + }, + { + "input": "bug", + "output": ["bug"] + }, + { + "input": "bug report", + "output": ["bug"] + }, + { + "input": "business (category)", + "output": ["business"] + }, + { + "input": "c/c++", + "output": ["null"] + }, + { + "input": "cannot reproduce", + "output": ["null"] + }, + { + "input": "cantfix", + "output": ["null"] + }, + { + "input": "cdn", + "output": ["platform"] + }, + { + "input": "chat (category)", + "output": ["ideas"] + }, + { + "input": "chore", + "output": ["maintenance"] + }, + { + "input": "cla signed", + "output": ["null"] + }, + { + "input": "cla signed :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "cla: no", + "output": ["null"] + }, + { + "input": "cla: yes", + "output": ["null"] + }, + { + "input": "cli", + "output": ["code"] + }, + { + "input": "closed due to inactivity", + "output": ["null"] + }, + { + "input": "cmty:bug-report", + "output": ["bug"] + }, + { + "input": "cmty:feature-request", + "output": ["ideas"] + }, + { + "input": "cmty:question", + "output": ["question"] + }, + { + "input": "cmty:status:cancelled", + "output": ["null"] + }, + { + "input": "cmty:status:fixed", + "output": ["null"] + }, + { + "input": "cmty:status:implemented", + "output": ["null"] + }, + { + "input": "cmty:status:resolved", + "output": ["null"] + }, + { + "input": "community", + "output": ["null"] + }, + { + "input": "component: build infrastructure", + "output": ["infra"] + }, + { + "input": "component: component api", + "output": ["code"] + }, + { + "input": "component: concurrent mode", + "output": ["null"] + }, + { + "input": "component: core utilities", + "output": ["maintenance"] + }, + { + "input": "component: developer tools", + "output": ["tool"] + }, + { + "input": "component: dom", + "output": ["code"] + }, + { + "input": "component: eslint rules", + "output": ["maintenance"] + }, + { + "input": "component: hooks", + "output": ["code"] + }, + { + "input": "component: optimizing compiler", + "output": ["code"] + }, + { + "input": "component: reactis", + "output": ["code"] + }, + { + "input": "component: reconciler", + "output": ["null"] + }, + { + "input": "component: scheduler", + "output": ["null"] + }, + { + "input": "component: server rendering", + "output": ["code"] + }, + { + "input": "component: shallow renderer", + "output": ["code"] + }, + { + "input": "component: suspense", + "output": ["null"] + }, + { + "input": "component: test renderer", + "output": ["test"] + }, + { + "input": "component: test utils", + "output": ["test"] + }, + { + "input": "configuration", + "output": ["code"] + }, + { + "input": "confirmed", + "output": ["null"] + }, + { + "input": "conflicts", + "output": ["null"] + }, + { + "input": "contribution welcome", + "output": ["null"] + }, + { + "input": "core", + "output": ["maintenance"] + }, + { + "input": "critical", + "output": ["null"] + }, + { + "input": "csharp", + "output": ["code"] + }, + { + "input": "css", + "output": ["code"] + }, + { + "input": "css-select", + "output": ["code"] + }, + { + "input": "currency (category)", + "output": ["financial"] + }, + { + "input": "defect", + "output": ["bug"] + }, + { + "input": "dependencies", + "output": ["maintenance"] + }, + { + "input": "dependency related", + "output": ["maintenance"] + }, + { + "input": "design", + "output": ["design"] + }, + { + "input": "design (category)", + "output": ["design"] + }, + { + "input": "difficulty: challenging", + "output": ["null"] + }, + { + "input": "difficulty: easy", + "output": ["null"] + }, + { + "input": "difficulty: hard", + "output": ["null"] + }, + { + "input": "difficulty: medium", + "output": ["null"] + }, + { + "input": "difficulty: starter", + "output": ["null"] + }, + { + "input": "difficulty: unknown or n/a", + "output": ["null"] + }, + { + "input": "difficulty: very hard", + "output": ["null"] + }, + { + "input": "discussion", + "output": ["ideas"] + }, + { + "input": "do not merge", + "output": ["null"] + }, + { + "input": "doc", + "output": ["doc"] + }, + { + "input": "docs", + "output": ["doc"] + }, + { + "input": "documentation", + "output": ["doc"] + }, + { + "input": "documentation :book:", + "output": ["doc"] + }, + { + "input": "duplicate", + "output": ["null"] + }, + { + "input": "electron", + "output": ["tool"] + }, + { + "input": "enhancement", + "output": ["maintenance"] + }, + { + "input": "enterprise", + "output": ["null"] + }, + { + "input": "enterprise-2.0-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.1-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.2-backport", + "output": ["null"] + }, + { + "input": "es6", + "output": ["code"] + }, + { + "input": "es7", + "output": ["code"] + }, + { + "input": "external", + "output": ["plugin"] + }, + { + "input": "externs", + "output": ["plugin"] + }, + { + "input": "feat/cli", + "output": ["code"] + }, + { + "input": "feat: babel", + "output": ["tool"] + }, + { + "input": "feat: cli", + "output": ["code"] + }, + { + "input": "feat: cli-service build", + "output": ["code"] + }, + { + "input": "feat: cli-service serve", + "output": ["code"] + }, + { + "input": "feat: e2e-cypress", + "output": ["test"] + }, + { + "input": "feat: e2e-nightwatch", + "output": ["test"] + }, + { + "input": "feat: eslint", + "output": ["maintenance"] + }, + { + "input": "feat: plugin api", + "output": ["plugin"] + }, + { + "input": "feat: pwa", + "output": ["code"] + }, + { + "input": "feat: typescript", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "feat: unit-jest", + "output": ["test"] + }, + { + "input": "feat: unit-mocha", + "output": ["test"] + }, + { + "input": "feature", + "output": ["ideas"] + }, + { + "input": "feature request", + "output": ["ideas"] + }, + { + "input": "feedback requested", + "output": ["null"] + }, + { + "input": "files (category)", + "output": ["null"] + }, + { + "input": "first-timers-only", + "output": ["null"] + }, + { + "input": "flags (category)", + "output": ["null"] + }, + { + "input": "flashsocket", + "output": ["tool"] + }, + { + "input": "fontawesome.com", + "output": ["null"] + }, + { + "input": "food (category)", + "output": ["null"] + }, + { + "input": "freemasonry icons", + "output": ["design"] + }, + { + "input": "frontend", + "output": ["code"] + }, + { + "input": "future architecture enhancements", + "output": ["ideas"] + }, + { + "input": "future crypto enhancements", + "output": ["ideas"] + }, + { + "input": "genders (category)", + "output": ["null"] + }, + { + "input": "general js", + "output": ["code"] + }, + { + "input": "gh review: accepted", + "output": ["null"] + }, + { + "input": "go client internal release", + "output": ["null"] + }, + { + "input": "good first issue", + "output": ["null"] + }, + { + "input": "good first issue :+1:", + "output": ["null"] + }, + { + "input": "great insight", + "output": ["ideas"] + }, + { + "input": "greenkeeper", + "output": ["infra"] + }, + { + "input": "hack", + "output": ["code"] + }, + { + "input": "hacked", + "output": ["security"] + }, + { + "input": "hacktoberfest", + "output": ["code"] + }, + { + "input": "handshakes", + "output": ["business"] + }, + { + "input": "has bounty", + "output": ["null"] + }, + { + "input": "has pr", + "output": ["null"] + }, + { + "input": "help", + "output": ["null"] + }, + { + "input": "help / pr wanted", + "output": ["null"] + }, + { + "input": "help wanted", + "output": ["null"] + }, + { + "input": "help wanted :sos:", + "output": ["null"] + }, + { + "input": "hi-pri", + "output": ["null"] + }, + { + "input": "high-priority", + "output": ["null"] + }, + { + "input": "hodor", + "output": ["null"] + }, + { + "input": "hot discussion", + "output": ["ideas"] + }, + { + "input": "html", + "output": ["code"] + }, + { + "input": "htmlfile", + "output": ["code"] + }, + { + "input": "https", + "output": ["null"] + }, + { + "input": "icebox", + "output": ["platform"] + }, + { + "input": "ie8", + "output": ["null"] + }, + { + "input": "import in progress", + "output": ["null"] + }, + { + "input": "import started", + "output": ["null"] + }, + { + "input": "in progress", + "output": ["null"] + }, + { + "input": "in review", + "output": ["null"] + }, + { + "input": "infrastructure :hammer_and_wrench:", + "output": ["infra"] + }, + { + "input": "installer", + "output": ["tool"] + }, + { + "input": "internal cleanup", + "output": ["maintenance"] + }, + { + "input": "internal-issue-created", + "output": ["bug"] + }, + { + "input": "invalid", + "output": ["null"] + }, + { + "input": "ios", + "output": ["platform"] + }, + { + "input": "jquery differences", + "output": ["null"] + }, + { + "input": "jsonp-polling", + "output": ["null"] + }, + { + "input": "kbfs", + "output": ["null"] + }, + { + "input": "lang-crystal", + "output": ["code"] + }, + { + "input": "lang-dart", + "output": ["code"] + }, + { + "input": "lang-elixir", + "output": ["code"] + }, + { + "input": "lang-go", + "output": ["code"] + }, + { + "input": "lang-julia", + "output": ["code"] + }, + { + "input": "lang-objc", + "output": ["code"] + }, + { + "input": "lang-r", + "output": ["code"] + }, + { + "input": "lang-scala", + "output": ["code"] + }, + { + "input": "legal", + "output": ["security"] + }, + { + "input": "library", + "output": ["tool"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "pr: new dependency", + "output": ["ideas"] + }, + { + "input": "pr: new feature", + "output": ["ideas"] + }, + { + "input": "pr: new feature :rocket:", + "output": ["ideas"] + }, + { + "input": "pr: polish :nail_care:", + "output": ["maintenance"] + }, + { + "input": "pr: ready for review", + "output": ["null"] + }, + { + "input": "pr: ready to be merged", + "output": ["null"] + }, + { + "input": "pr: reviewed-approved", + "output": ["null"] + }, + { + "input": "pr: reviewed-changes-requested", + "output": ["null"] + }, + { + "input": "pr: spec compliance :eyeglasses:", + "output": ["doc"] + }, + { + "input": "pr: underlying tools", + "output": ["tool"] + }, + { + "input": "pr: unreviewed", + "output": ["null"] + }, + { + "input": "pr: wip", + "output": ["null"] + }, + { + "input": "priority: critical", + "output": ["null"] + }, + { + "input": "priority: high", + "output": ["null"] + }, + { + "input": "priority: low", + "output": ["null"] + }, + { + "input": "priority: medium", + "output": ["null"] + }, + { + "input": "production", + "output": ["null"] + }, + { + "input": "project management", + "output": ["projectManagement"] + }, + { + "input": "question", + "output": ["question"] + }, + { + "input": "react flare", + "output": ["code"] + }, + { + "input": "react native", + "output": ["code"] + }, + { + "input": "ready", + "output": ["null"] + }, + { + "input": "refactor", + "output": ["code"] + }, + { + "input": "regression", + "output": ["bug"] + }, + { + "input": "release: alpha", + "output": ["null"] + }, + { + "input": "released", + "output": ["null"] + }, + { + "input": "reminder", + "output": ["null"] + }, + { + "input": "resolution: duplicate", + "output": ["null"] + }, + { + "input": "resolution: invalid", + "output": ["null"] + }, + { + "input": "resolution: needs more information", + "output": ["null"] + }, + { + "input": "resolution: support redirect", + "output": ["null"] + }, + { + "input": "review", + "output": ["review"] + }, + { + "input": "review in progress", + "output": ["null"] + }, + { + "input": "revisitinfuture", + "output": ["ideas"] + }, + { + "input": "rfc", + "output": ["ideas"] + }, + { + "input": "ruby", + "output": ["code"] + }, + { + "input": "security", + "output": ["security"] + }, + { + "input": "shell", + "output": ["tool"] + }, + { + "input": "socket.io client", + "output": ["tool"] + }, + { + "input": "spam", + "output": ["null"] + }, + { + "input": "spammy", + "output": ["null"] + }, + { + "input": "spec: async functions", + "output": ["doc"] + }, + { + "input": "spec: async generators", + "output": ["doc"] + }, + { + "input": "spec: bigint", + "output": ["doc"] + }, + { + "input": "spec: class fields", + "output": ["doc"] + }, + { + "input": "spec: classes", + "output": ["doc"] + }, + { + "input": "spec: decorators", + "output": ["doc"] + }, + { + "input": "spec: decorators (legacy)", + "output": ["doc"] + }, + { + "input": "spec: do expressions", + "output": ["doc"] + }, + { + "input": "stale", + "output": ["null"] + }, + { + "input": "status: accepted", + "output": ["null"] + }, + { + "input": "status: accepted :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "status: available", + "output": ["null"] + }, + { + "input": "status: available :free:", + "output": ["null"] + }, + { + "input": "status: cla not signed", + "output": ["null"] + }, + { + "input": "status: code review request", + "output": ["null"] + }, + { + "input": "status: duplicate", + "output": ["null"] + }, + { + "input": "status: hacktoberfest approved", + "output": ["null"] + }, + { + "input": "status: help wanted", + "output": ["null"] + }, + { + "input": "status: in progress", + "output": ["null"] + }, + { + "input": "status: in progress :construction_worker:", + "output": ["null"] + }, + { + "input": "status: in review", + "output": ["null"] + }, + { + "input": "status: in review :detective:", + "output": ["null"] + }, + { + "input": "status: invalid", + "output": ["null"] + }, + { + "input": "status: left out", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "status: on hold", + "output": ["null"] + }, + { + "input": "status: on hold :stop_sign:", + "output": ["null"] + }, + { + "input": "status: ready for deploy", + "output": ["null"] + }, + { + "input": "status: review needed", + "output": ["null"] + }, + { + "input": "status: review needed :passport_control:", + "output": ["null"] + }, + { + "input": "status: waiting for feedback", + "output": ["null"] + }, + { + "input": "status: wontfix", + "output": ["null"] + }, + { + "input": "status: work in progress", + "output": ["null"] + }, + { + "input": "suggestion", + "output": ["ideas"] + }, + { + "input": "support", + "output": ["null"] + }, + { + "input": "syntax feature request", + "output": ["ideas"] + }, + { + "input": "technical debt", + "output": ["maintenance"] + }, + { + "input": "technical-debt", + "output": ["maintenance"] + }, + { + "input": "test", + "output": ["test"] + }, + { + "input": "test needed", + "output": ["null"] + }, + { + "input": "tests", + "output": ["test"] + }, + { + "input": "tips", + "output": ["ideas"] + }, + { + "input": "to do", + "output": ["maintenance"] + }, + { + "input": "to merge", + "output": ["null"] + }, + { + "input": "todo :spiral_notepad:", + "output": ["maintenance"] + }, + { + "input": "translation", + "output": ["translation"] + }, + { + "input": "travis-yml", + "output": ["infra"] + }, + { + "input": "triage", + "output": ["null"] + }, + { + "input": "triage-done", + "output": ["null"] + }, + { + "input": "trivial", + "output": ["null"] + }, + { + "input": "type: archive", + "output": ["null"] + }, + { + "input": "type: bug", + "output": ["bug"] + }, + { + "input": "type: bug :bug:", + "output": ["bug"] + }, + { + "input": "type: community enhancement", + "output": ["maintenance"] + }, + { + "input": "type: discuss :speech_balloon:", + "output": ["ideas"] + }, + { + "input": "type: doc update", + "output": ["doc"] + }, + { + "input": "type: documentation :book:", + "output": ["doc"] + }, + { + "input": "type: duplicate :repeat:", + "output": ["null"] + }, + { + "input": "type: enhancement", + "output": ["maintenance"] + }, + { + "input": "type: enhancement :bulb:", + "output": ["ideas"] + }, + { + "input": "type: getting started", + "output": ["null"] + }, + { + "input": "type: invalid :x:", + "output": ["null"] + }, + { + "input": "type: maintenance :construction:", + "output": ["maintenance"] + }, + { + "input": "type: non-library issue", + "output": ["null"] + }, + { + "input": "type: question", + "output": ["question"] + }, + { + "input": "type: question :grey_question:", + "output": ["question"] + }, + { + "input": "type: regression :boom:", + "output": ["bug"] + }, + { + "input": "type: security", + "output": ["security"] + }, + { + "input": "type: sendgrid enhancement", + "output": ["maintenance"] + }, + { + "input": "type: support", + "output": ["null"] + }, + { + "input": "type: vulnerability :warning:", + "output": ["security"] + }, + { + "input": "types", + "output": ["null"] + }, + { + "input": "ui", + "output": ["design"] + }, + { + "input": "unable to reproduce", + "output": ["null"] + }, + { + "input": "unconfirmed", + "output": ["null"] + }, + { + "input": "update", + "output": ["maintenance"] + }, + { + "input": "upstream", + "output": ["null"] + }, + { + "input": "upstream bug", + "output": ["bug"] + }, + { + "input": "ux", + "output": ["design"] + }, + { + "input": "v3", + "output": ["null"] + }, + { + "input": "vulnerability", + "output": ["security"] + }, + { + "input": "website", + "output": ["code"] + }, + { + "input": "websocket", + "output": ["tool"] + }, + { + "input": "weekly-digest", + "output": ["blog"] + }, + { + "input": "windows", + "output": ["platform"] + }, + { + "input": "wip", + "output": ["null"] + }, + { + "input": "wontfix", + "output": ["null"] + }, + { + "input": "work in progress", + "output": ["null"] + }, + { + "input": "writer-needed", + "output": ["null"] + }, + { + "input": "wrong repo", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + }, + { + "input": "0 - backlog", + "output": ["null"] + }, + { + "input": "1 - ready", + "output": ["null"] + }, + { + "input": "2 - working", + "output": ["null"] + }, + { + "input": "2.x", + "output": ["null"] + }, + { + "input": "3 - done", + "output": ["null"] + }, + { + "input": "6.x: backport", + "output": ["null"] + }, + { + "input": "7.x: regression", + "output": ["bug"] + }, + { + "input": ":arrow_heading_down: pull", + "output": ["maintenance"] + }, + { + "input": ":boom: regression", + "output": ["bug"] + }, + { + "input": ":bug: bug", + "output": ["bug"] + }, + { + "input": ":rocket: enhancement", + "output": ["maintenance"] + }, + { + "input": ":rocket: feature request", + "output": ["ideas"] + }, + { + "input": ":speech_balloon: question", + "output": ["question"] + }, + { + "input": "@font-face", + "output": ["design"] + }, + { + "input": "abandoned", + "output": ["null"] + }, + { + "input": "accepted", + "output": ["null"] + }, + { + "input": "accessibility", + "output": ["null"] + }, + { + "input": "adapter", + "output": ["plugin"] + }, + { + "input": "advance developer workflow", + "output": ["infra"] + }, + { + "input": "android", + "output": ["platform"] + }, + { + "input": "angular", + "output": ["code"] + }, + { + "input": "animals (category)", + "output": ["null"] + }, + { + "input": "answered", + "output": ["null"] + }, + { + "input": "approved", + "output": ["null"] + }, + { + "input": "area: concurrent", + "output": ["null"] + }, + { + "input": "area: crash", + "output": ["bug"] + }, + { + "input": "arrows (category)", + "output": ["null"] + }, + { + "input": "automotive (category)", + "output": ["null"] + }, + { + "input": "available in fa pro", + "output": ["null"] + }, + { + "input": "awaiting-review", + "output": ["null"] + }, + { + "input": "beginner-friendly", + "output": ["null"] + }, + { + "input": "beverage (category)", + "output": ["null"] + }, + { + "input": "blocked", + "output": ["null"] + }, + { + "input": "blocker", + "output": ["null"] + }, + { + "input": "bootstrap", + "output": ["tool"] + }, + { + "input": "brand icon", + "output": ["design"] + }, + { + "input": "breaking change", + "output": ["code"] + }, + { + "input": "browser bug", + "output": ["bug"] + }, + { + "input": "browser: ie", + "output": ["null"] + }, + { + "input": "browser: safari", + "output": ["null"] + }, + { + "input": "bug", + "output": ["bug"] + }, + { + "input": "bug report", + "output": ["bug"] + }, + { + "input": "business (category)", + "output": ["business"] + }, + { + "input": "c/c++", + "output": ["null"] + }, + { + "input": "cannot reproduce", + "output": ["null"] + }, + { + "input": "cantfix", + "output": ["null"] + }, + { + "input": "cdn", + "output": ["platform"] + }, + { + "input": "chat (category)", + "output": ["ideas"] + }, + { + "input": "chore", + "output": ["maintenance"] + }, + { + "input": "cla signed", + "output": ["null"] + }, + { + "input": "cla signed :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "cla: no", + "output": ["null"] + }, + { + "input": "cla: yes", + "output": ["null"] + }, + { + "input": "cli", + "output": ["code"] + }, + { + "input": "closed due to inactivity", + "output": ["null"] + }, + { + "input": "cmty:bug-report", + "output": ["bug"] + }, + { + "input": "cmty:feature-request", + "output": ["ideas"] + }, + { + "input": "cmty:question", + "output": ["question"] + }, + { + "input": "cmty:status:cancelled", + "output": ["null"] + }, + { + "input": "cmty:status:fixed", + "output": ["null"] + }, + { + "input": "cmty:status:implemented", + "output": ["null"] + }, + { + "input": "cmty:status:resolved", + "output": ["null"] + }, + { + "input": "community", + "output": ["null"] + }, + { + "input": "component: build infrastructure", + "output": ["infra"] + }, + { + "input": "component: component api", + "output": ["code"] + }, + { + "input": "component: concurrent mode", + "output": ["null"] + }, + { + "input": "component: core utilities", + "output": ["maintenance"] + }, + { + "input": "component: developer tools", + "output": ["tool"] + }, + { + "input": "component: dom", + "output": ["code"] + }, + { + "input": "component: eslint rules", + "output": ["maintenance"] + }, + { + "input": "component: hooks", + "output": ["code"] + }, + { + "input": "component: optimizing compiler", + "output": ["code"] + }, + { + "input": "component: reactis", + "output": ["code"] + }, + { + "input": "component: reconciler", + "output": ["null"] + }, + { + "input": "component: scheduler", + "output": ["null"] + }, + { + "input": "component: server rendering", + "output": ["code"] + }, + { + "input": "component: shallow renderer", + "output": ["code"] + }, + { + "input": "component: suspense", + "output": ["null"] + }, + { + "input": "component: test renderer", + "output": ["test"] + }, + { + "input": "component: test utils", + "output": ["test"] + }, + { + "input": "configuration", + "output": ["code"] + }, + { + "input": "confirmed", + "output": ["null"] + }, + { + "input": "conflicts", + "output": ["null"] + }, + { + "input": "contribution welcome", + "output": ["null"] + }, + { + "input": "core", + "output": ["maintenance"] + }, + { + "input": "critical", + "output": ["null"] + }, + { + "input": "csharp", + "output": ["code"] + }, + { + "input": "css", + "output": ["code"] + }, + { + "input": "css-select", + "output": ["code"] + }, + { + "input": "currency (category)", + "output": ["financial"] + }, + { + "input": "defect", + "output": ["bug"] + }, + { + "input": "dependencies", + "output": ["maintenance"] + }, + { + "input": "dependency related", + "output": ["maintenance"] + }, + { + "input": "design", + "output": ["design"] + }, + { + "input": "design (category)", + "output": ["design"] + }, + { + "input": "difficulty: challenging", + "output": ["null"] + }, + { + "input": "difficulty: easy", + "output": ["null"] + }, + { + "input": "difficulty: hard", + "output": ["null"] + }, + { + "input": "difficulty: medium", + "output": ["null"] + }, + { + "input": "difficulty: starter", + "output": ["null"] + }, + { + "input": "difficulty: unknown or n/a", + "output": ["null"] + }, + { + "input": "difficulty: very hard", + "output": ["null"] + }, + { + "input": "discussion", + "output": ["ideas"] + }, + { + "input": "do not merge", + "output": ["null"] + }, + { + "input": "doc", + "output": ["doc"] + }, + { + "input": "docs", + "output": ["doc"] + }, + { + "input": "documentation", + "output": ["doc"] + }, + { + "input": "documentation :book:", + "output": ["doc"] + }, + { + "input": "duplicate", + "output": ["null"] + }, + { + "input": "electron", + "output": ["tool"] + }, + { + "input": "enhancement", + "output": ["maintenance"] + }, + { + "input": "enterprise", + "output": ["null"] + }, + { + "input": "enterprise-2.0-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.1-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.2-backport", + "output": ["null"] + }, + { + "input": "es6", + "output": ["code"] + }, + { + "input": "es7", + "output": ["code"] + }, + { + "input": "external", + "output": ["plugin"] + }, + { + "input": "externs", + "output": ["plugin"] + }, + { + "input": "feat/cli", + "output": ["code"] + }, + { + "input": "feat: babel", + "output": ["tool"] + }, + { + "input": "feat: cli", + "output": ["code"] + }, + { + "input": "feat: cli-service build", + "output": ["code"] + }, + { + "input": "feat: cli-service serve", + "output": ["code"] + }, + { + "input": "feat: e2e-cypress", + "output": ["test"] + }, + { + "input": "feat: e2e-nightwatch", + "output": ["test"] + }, + { + "input": "feat: eslint", + "output": ["maintenance"] + }, + { + "input": "feat: plugin api", + "output": ["plugin"] + }, + { + "input": "feat: pwa", + "output": ["code"] + }, + { + "input": "feat: typescript", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "feat: unit-jest", + "output": ["test"] + }, + { + "input": "feat: unit-mocha", + "output": ["test"] + }, + { + "input": "feature", + "output": ["ideas"] + }, + { + "input": "feature request", + "output": ["ideas"] + }, + { + "input": "feedback requested", + "output": ["null"] + }, + { + "input": "files (category)", + "output": ["null"] + }, + { + "input": "first-timers-only", + "output": ["null"] + }, + { + "input": "flags (category)", + "output": ["null"] + }, + { + "input": "flashsocket", + "output": ["tool"] + }, + { + "input": "fontawesome.com", + "output": ["null"] + }, + { + "input": "food (category)", + "output": ["null"] + }, + { + "input": "freemasonry icons", + "output": ["design"] + }, + { + "input": "frontend", + "output": ["code"] + }, + { + "input": "future architecture enhancements", + "output": ["ideas"] + }, + { + "input": "future crypto enhancements", + "output": ["ideas"] + }, + { + "input": "genders (category)", + "output": ["null"] + }, + { + "input": "general js", + "output": ["code"] + }, + { + "input": "gh review: accepted", + "output": ["null"] + }, + { + "input": "go client internal release", + "output": ["null"] + }, + { + "input": "good first issue", + "output": ["null"] + }, + { + "input": "good first issue :+1:", + "output": ["null"] + }, + { + "input": "great insight", + "output": ["ideas"] + }, + { + "input": "greenkeeper", + "output": ["infra"] + }, + { + "input": "hack", + "output": ["code"] + }, + { + "input": "hacked", + "output": ["security"] + }, + { + "input": "hacktoberfest", + "output": ["code"] + }, + { + "input": "handshakes", + "output": ["business"] + }, + { + "input": "has bounty", + "output": ["null"] + }, + { + "input": "has pr", + "output": ["null"] + }, + { + "input": "help", + "output": ["null"] + }, + { + "input": "help / pr wanted", + "output": ["null"] + }, + { + "input": "help wanted", + "output": ["null"] + }, + { + "input": "help wanted :sos:", + "output": ["null"] + }, + { + "input": "hi-pri", + "output": ["null"] + }, + { + "input": "high-priority", + "output": ["null"] + }, + { + "input": "hodor", + "output": ["null"] + }, + { + "input": "hot discussion", + "output": ["ideas"] + }, + { + "input": "html", + "output": ["code"] + }, + { + "input": "htmlfile", + "output": ["code"] + }, + { + "input": "https", + "output": ["null"] + }, + { + "input": "icebox", + "output": ["platform"] + }, + { + "input": "ie8", + "output": ["null"] + }, + { + "input": "import in progress", + "output": ["null"] + }, + { + "input": "import started", + "output": ["null"] + }, + { + "input": "in progress", + "output": ["null"] + }, + { + "input": "in review", + "output": ["null"] + }, + { + "input": "infrastructure :hammer_and_wrench:", + "output": ["infra"] + }, + { + "input": "installer", + "output": ["tool"] + }, + { + "input": "internal cleanup", + "output": ["maintenance"] + }, + { + "input": "internal-issue-created", + "output": ["bug"] + }, + { + "input": "invalid", + "output": ["null"] + }, + { + "input": "ios", + "output": ["platform"] + }, + { + "input": "jquery differences", + "output": ["null"] + }, + { + "input": "jsonp-polling", + "output": ["null"] + }, + { + "input": "kbfs", + "output": ["null"] + }, + { + "input": "lang-crystal", + "output": ["code"] + }, + { + "input": "lang-dart", + "output": ["code"] + }, + { + "input": "lang-elixir", + "output": ["code"] + }, + { + "input": "lang-go", + "output": ["code"] + }, + { + "input": "lang-julia", + "output": ["code"] + }, + { + "input": "lang-objc", + "output": ["code"] + }, + { + "input": "lang-r", + "output": ["code"] + }, + { + "input": "lang-scala", + "output": ["code"] + }, + { + "input": "legal", + "output": ["security"] + }, + { + "input": "library", + "output": ["tool"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "linux", + "output": ["platform"] + }, + { + "input": "lks", + "output": ["null"] + }, + { + "input": "m1.s0", + "output": ["null"] + }, + { + "input": "m1.s1", + "output": ["null"] + }, + { + "input": "m1.s2", + "output": ["null"] + }, + { + "input": "macos", + "output": ["platform"] + }, + { + "input": "maintenance", + "output": ["maintenance"] + }, + { + "input": "major", + "output": ["null"] + }, + { + "input": "mass purge 2015.10.26", + "output": ["null"] + }, + { + "input": "minor", + "output": ["null"] + }, + { + "input": "mobile device support", + "output": ["platform"] + }, + { + "input": "mode: proxy", + "output": ["null"] + }, + { + "input": "modules", + "output": ["code"] + }, + { + "input": "must-triage", + "output": ["null"] + }, + { + "input": "namespaces", + "output": ["null"] + }, + { + "input": "need-info", + "output": ["null"] + }, + { + "input": "needs a example app.", + "output": ["null"] + }, + { + "input": "needs a failing test", + "output": ["null"] + }, + { + "input": "needs browser testing", + "output": ["null"] + }, + { + "input": "needs changelog", + "output": ["null"] + }, + { + "input": "needs docs", + "output": ["null"] + }, + { + "input": "needs documentation", + "output": ["null"] + }, + { + "input": "needs info", + "output": ["null"] + }, + { + "input": "needs more info :man_shrugging:", + "output": ["null"] + }, + { + "input": "needs repro", + "output": ["null"] + }, + { + "input": "needs review", + "output": ["null"] + }, + { + "input": "needs triage", + "output": ["null"] + }, + { + "input": "needs-more-info", + "output": ["null"] + }, + { + "input": "needs-research", + "output": ["null"] + }, + { + "input": "new api proposal", + "output": ["ideas"] + }, + { + "input": "new best practice", + "output": ["ideas"] + }, + { + "input": "node", + "output": ["platform"] + }, + { + "input": "node next", + "output": ["platform"] + }, + { + "input": "not a bug", + "output": ["null"] + }, + { + "input": "on hold", + "output": ["null"] + }, + { + "input": "open", + "output": ["null"] + }, + { + "input": "operations", + "output": ["maintenance"] + }, + { + "input": "opinions needed", + "output": ["null"] + }, + { + "input": "optimisation", + "output": ["code"] + }, + { + "input": "other language integration feature", + "output": ["ideas"] + }, + { + "input": "p0", + "output": ["null"] + }, + { + "input": "p1", + "output": ["null"] + }, + { + "input": "p2", + "output": ["null"] + }, + { + "input": "p3", + "output": ["null"] + }, + { + "input": "packaging", + "output": ["platform"] + }, + { + "input": "parser", + "output": ["tool"] + }, + { + "input": "parser-specific", + "output": ["tool"] + }, + { + "input": "pending release", + "output": ["null"] + }, + { + "input": "performance", + "output": ["maintenance"] + }, + { + "input": "planned feature", + "output": ["null"] + }, + { + "input": "planned for next release", + "output": ["null"] + }, + { + "input": "pr welcome", + "output": ["null"] + }, + { + "input": "pr-existing", + "output": ["null"] + }, + { + "input": "pr: breaking change", + "output": ["code"] + }, + { + "input": "pr: breaking change :boom:", + "output": ["code"] + }, + { + "input": "pr: bug fix", + "output": ["bug"] + }, + { + "input": "pr: bug fix :bug:", + "output": ["bug"] + }, + { + "input": "pr: dependency ⬆️", + "output": ["maintenance"] + }, + { + "input": "pr: deprecation", + "output": ["null"] + }, + { + "input": "pr: docs :memo:", + "output": ["doc"] + }, + { + "input": "pr: documentation", + "output": ["doc"] + }, + { + "input": "pr: good example", + "output": ["example"] + }, + { + "input": "pr: internal", + "output": ["code"] + }, + { + "input": "pr: internal :house:", + "output": ["code"] + }, + { + "input": "pr: merged", + "output": ["null"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "status: on hold", + "output": ["null"] + }, + { + "input": "status: on hold :stop_sign:", + "output": ["null"] + }, + { + "input": "status: ready for deploy", + "output": ["null"] + }, + { + "input": "status: review needed", + "output": ["null"] + }, + { + "input": "status: review needed :passport_control:", + "output": ["null"] + }, + { + "input": "status: waiting for feedback", + "output": ["null"] + }, + { + "input": "status: wontfix", + "output": ["null"] + }, + { + "input": "status: work in progress", + "output": ["null"] + }, + { + "input": "suggestion", + "output": ["ideas"] + }, + { + "input": "support", + "output": ["null"] + }, + { + "input": "syntax feature request", + "output": ["ideas"] + }, + { + "input": "technical debt", + "output": ["maintenance"] + }, + { + "input": "technical-debt", + "output": ["maintenance"] + }, + { + "input": "test", + "output": ["test"] + }, + { + "input": "test needed", + "output": ["null"] + }, + { + "input": "tests", + "output": ["test"] + }, + { + "input": "tips", + "output": ["ideas"] + }, + { + "input": "to do", + "output": ["maintenance"] + }, + { + "input": "to merge", + "output": ["null"] + }, + { + "input": "todo :spiral_notepad:", + "output": ["maintenance"] + }, + { + "input": "translation", + "output": ["translation"] + }, + { + "input": "travis-yml", + "output": ["infra"] + }, + { + "input": "triage", + "output": ["null"] + }, + { + "input": "triage-done", + "output": ["null"] + }, + { + "input": "trivial", + "output": ["null"] + }, + { + "input": "type: archive", + "output": ["null"] + }, + { + "input": "type: bug", + "output": ["bug"] + }, + { + "input": "type: bug :bug:", + "output": ["bug"] + }, + { + "input": "type: community enhancement", + "output": ["maintenance"] + }, + { + "input": "type: discuss :speech_balloon:", + "output": ["ideas"] + }, + { + "input": "type: doc update", + "output": ["doc"] + }, + { + "input": "type: documentation :book:", + "output": ["doc"] + }, + { + "input": "type: duplicate :repeat:", + "output": ["null"] + }, + { + "input": "type: enhancement", + "output": ["maintenance"] + }, + { + "input": "type: enhancement :bulb:", + "output": ["ideas"] + }, + { + "input": "type: getting started", + "output": ["null"] + }, + { + "input": "type: invalid :x:", + "output": ["null"] + }, + { + "input": "type: maintenance :construction:", + "output": ["maintenance"] + }, + { + "input": "type: non-library issue", + "output": ["null"] + }, + { + "input": "type: question", + "output": ["question"] + }, + { + "input": "type: question :grey_question:", + "output": ["question"] + }, + { + "input": "type: regression :boom:", + "output": ["bug"] + }, + { + "input": "type: security", + "output": ["security"] + }, + { + "input": "type: sendgrid enhancement", + "output": ["maintenance"] + }, + { + "input": "type: support", + "output": ["null"] + }, + { + "input": "type: vulnerability :warning:", + "output": ["security"] + }, + { + "input": "types", + "output": ["null"] + }, + { + "input": "ui", + "output": ["design"] + }, + { + "input": "unable to reproduce", + "output": ["null"] + }, + { + "input": "unconfirmed", + "output": ["null"] + }, + { + "input": "update", + "output": ["maintenance"] + }, + { + "input": "upstream", + "output": ["null"] + }, + { + "input": "upstream bug", + "output": ["bug"] + }, + { + "input": "ux", + "output": ["design"] + }, + { + "input": "v3", + "output": ["null"] + }, + { + "input": "vulnerability", + "output": ["security"] + }, + { + "input": "website", + "output": ["code"] + }, + { + "input": "websocket", + "output": ["tool"] + }, + { + "input": "weekly-digest", + "output": ["blog"] + }, + { + "input": "windows", + "output": ["platform"] + }, + { + "input": "wip", + "output": ["null"] + }, + { + "input": "wontfix", + "output": ["null"] + }, + { + "input": "work in progress", + "output": ["null"] + }, + { + "input": "writer-needed", + "output": ["null"] + }, + { + "input": "wrong repo", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + }, + { + "input": "0 - backlog", + "output": ["null"] + }, + { + "input": "1 - ready", + "output": ["null"] + }, + { + "input": "2 - working", + "output": ["null"] + }, + { + "input": "2.x", + "output": ["null"] + }, + { + "input": "3 - done", + "output": ["null"] + }, + { + "input": "6.x: backport", + "output": ["null"] + }, + { + "input": "7.x: regression", + "output": ["bug"] + }, + { + "input": ":arrow_heading_down: pull", + "output": ["maintenance"] + }, + { + "input": ":boom: regression", + "output": ["bug"] + }, + { + "input": ":bug: bug", + "output": ["bug"] + }, + { + "input": ":rocket: enhancement", + "output": ["maintenance"] + }, + { + "input": ":rocket: feature request", + "output": ["ideas"] + }, + { + "input": ":speech_balloon: question", + "output": ["question"] + }, + { + "input": "@font-face", + "output": ["design"] + }, + { + "input": "abandoned", + "output": ["null"] + }, + { + "input": "accepted", + "output": ["null"] + }, + { + "input": "accessibility", + "output": ["null"] + }, + { + "input": "adapter", + "output": ["plugin"] + }, + { + "input": "advance developer workflow", + "output": ["infra"] + }, + { + "input": "android", + "output": ["platform"] + }, + { + "input": "angular", + "output": ["code"] + }, + { + "input": "animals (category)", + "output": ["null"] + }, + { + "input": "answered", + "output": ["null"] + }, + { + "input": "approved", + "output": ["null"] + }, + { + "input": "area: concurrent", + "output": ["null"] + }, + { + "input": "area: crash", + "output": ["bug"] + }, + { + "input": "arrows (category)", + "output": ["null"] + }, + { + "input": "automotive (category)", + "output": ["null"] + }, + { + "input": "available in fa pro", + "output": ["null"] + }, + { + "input": "awaiting-review", + "output": ["null"] + }, + { + "input": "beginner-friendly", + "output": ["null"] + }, + { + "input": "beverage (category)", + "output": ["null"] + }, + { + "input": "blocked", + "output": ["null"] + }, + { + "input": "blocker", + "output": ["null"] + }, + { + "input": "bootstrap", + "output": ["tool"] + }, + { + "input": "brand icon", + "output": ["design"] + }, + { + "input": "breaking change", + "output": ["code"] + }, + { + "input": "browser bug", + "output": ["bug"] + }, + { + "input": "browser: ie", + "output": ["null"] + }, + { + "input": "browser: safari", + "output": ["null"] + }, + { + "input": "bug", + "output": ["bug"] + }, + { + "input": "bug report", + "output": ["bug"] + }, + { + "input": "business (category)", + "output": ["business"] + }, + { + "input": "c/c++", + "output": ["null"] + }, + { + "input": "cannot reproduce", + "output": ["null"] + }, + { + "input": "cantfix", + "output": ["null"] + }, + { + "input": "cdn", + "output": ["platform"] + }, + { + "input": "chat (category)", + "output": ["ideas"] + }, + { + "input": "chore", + "output": ["maintenance"] + }, + { + "input": "cla signed", + "output": ["null"] + }, + { + "input": "cla signed :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "cla: no", + "output": ["null"] + }, + { + "input": "cla: yes", + "output": ["null"] + }, + { + "input": "cli", + "output": ["code"] + }, + { + "input": "closed due to inactivity", + "output": ["null"] + }, + { + "input": "cmty:bug-report", + "output": ["bug"] + }, + { + "input": "cmty:feature-request", + "output": ["ideas"] + }, + { + "input": "cmty:question", + "output": ["question"] + }, + { + "input": "cmty:status:cancelled", + "output": ["null"] + }, + { + "input": "cmty:status:fixed", + "output": ["null"] + }, + { + "input": "cmty:status:implemented", + "output": ["null"] + }, + { + "input": "cmty:status:resolved", + "output": ["null"] + }, + { + "input": "community", + "output": ["null"] + }, + { + "input": "component: build infrastructure", + "output": ["infra"] + }, + { + "input": "component: component api", + "output": ["code"] + }, + { + "input": "component: concurrent mode", + "output": ["null"] + }, + { + "input": "component: core utilities", + "output": ["maintenance"] + }, + { + "input": "component: developer tools", + "output": ["tool"] + }, + { + "input": "component: dom", + "output": ["code"] + }, + { + "input": "component: eslint rules", + "output": ["maintenance"] + }, + { + "input": "component: hooks", + "output": ["code"] + }, + { + "input": "component: optimizing compiler", + "output": ["code"] + }, + { + "input": "component: reactis", + "output": ["code"] + }, + { + "input": "component: reconciler", + "output": ["null"] + }, + { + "input": "component: scheduler", + "output": ["null"] + }, + { + "input": "component: server rendering", + "output": ["code"] + }, + { + "input": "component: shallow renderer", + "output": ["code"] + }, + { + "input": "component: suspense", + "output": ["null"] + }, + { + "input": "component: test renderer", + "output": ["test"] + }, + { + "input": "component: test utils", + "output": ["test"] + }, + { + "input": "configuration", + "output": ["code"] + }, + { + "input": "confirmed", + "output": ["null"] + }, + { + "input": "conflicts", + "output": ["null"] + }, + { + "input": "contribution welcome", + "output": ["null"] + }, + { + "input": "core", + "output": ["maintenance"] + }, + { + "input": "critical", + "output": ["null"] + }, + { + "input": "csharp", + "output": ["code"] + }, + { + "input": "css", + "output": ["code"] + }, + { + "input": "css-select", + "output": ["code"] + }, + { + "input": "currency (category)", + "output": ["financial"] + }, + { + "input": "defect", + "output": ["bug"] + }, + { + "input": "dependencies", + "output": ["maintenance"] + }, + { + "input": "dependency related", + "output": ["maintenance"] + }, + { + "input": "design", + "output": ["design"] + }, + { + "input": "design (category)", + "output": ["design"] + }, + { + "input": "difficulty: challenging", + "output": ["null"] + }, + { + "input": "difficulty: easy", + "output": ["null"] + }, + { + "input": "difficulty: hard", + "output": ["null"] + }, + { + "input": "difficulty: medium", + "output": ["null"] + }, + { + "input": "difficulty: starter", + "output": ["null"] + }, + { + "input": "difficulty: unknown or n/a", + "output": ["null"] + }, + { + "input": "difficulty: very hard", + "output": ["null"] + }, + { + "input": "discussion", + "output": ["ideas"] + }, + { + "input": "do not merge", + "output": ["null"] + }, + { + "input": "doc", + "output": ["doc"] + }, + { + "input": "docs", + "output": ["doc"] + }, + { + "input": "documentation", + "output": ["doc"] + }, + { + "input": "documentation :book:", + "output": ["doc"] + }, + { + "input": "duplicate", + "output": ["null"] + }, + { + "input": "electron", + "output": ["tool"] + }, + { + "input": "enhancement", + "output": ["maintenance"] + }, + { + "input": "enterprise", + "output": ["null"] + }, + { + "input": "enterprise-2.0-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.1-backport", + "output": ["null"] + }, + { + "input": "enterprise-2.2-backport", + "output": ["null"] + }, + { + "input": "es6", + "output": ["code"] + }, + { + "input": "es7", + "output": ["code"] + }, + { + "input": "external", + "output": ["plugin"] + }, + { + "input": "externs", + "output": ["plugin"] + }, + { + "input": "feat/cli", + "output": ["code"] + }, + { + "input": "feat: babel", + "output": ["tool"] + }, + { + "input": "feat: cli", + "output": ["code"] + }, + { + "input": "feat: cli-service build", + "output": ["code"] + }, + { + "input": "feat: cli-service serve", + "output": ["code"] + }, + { + "input": "feat: e2e-cypress", + "output": ["test"] + }, + { + "input": "feat: e2e-nightwatch", + "output": ["test"] + }, + { + "input": "feat: eslint", + "output": ["maintenance"] + }, + { + "input": "feat: plugin api", + "output": ["plugin"] + }, + { + "input": "feat: pwa", + "output": ["code"] + }, + { + "input": "feat: typescript", + "output": ["code"] + }, + { + "input": "feat: ui", + "output": ["design"] + }, + { + "input": "feat: unit-jest", + "output": ["test"] + }, + { + "input": "feat: unit-mocha", + "output": ["test"] + }, + { + "input": "feature", + "output": ["ideas"] + }, + { + "input": "feature request", + "output": ["ideas"] + }, + { + "input": "feedback requested", + "output": ["null"] + }, + { + "input": "files (category)", + "output": ["null"] + }, + { + "input": "first-timers-only", + "output": ["null"] + }, + { + "input": "flags (category)", + "output": ["null"] + }, + { + "input": "flashsocket", + "output": ["tool"] + }, + { + "input": "fontawesome.com", + "output": ["null"] + }, + { + "input": "food (category)", + "output": ["null"] + }, + { + "input": "freemasonry icons", + "output": ["design"] + }, + { + "input": "frontend", + "output": ["code"] + }, + { + "input": "future architecture enhancements", + "output": ["ideas"] + }, + { + "input": "future crypto enhancements", + "output": ["ideas"] + }, + { + "input": "genders (category)", + "output": ["null"] + }, + { + "input": "general js", + "output": ["code"] + }, + { + "input": "gh review: accepted", + "output": ["null"] + }, + { + "input": "go client internal release", + "output": ["null"] + }, + { + "input": "good first issue", + "output": ["null"] + }, + { + "input": "good first issue :+1:", + "output": ["null"] + }, + { + "input": "great insight", + "output": ["ideas"] + }, + { + "input": "greenkeeper", + "output": ["infra"] + }, + { + "input": "hack", + "output": ["code"] + }, + { + "input": "hacked", + "output": ["security"] + }, + { + "input": "hacktoberfest", + "output": ["code"] + }, + { + "input": "handshakes", + "output": ["business"] + }, + { + "input": "has bounty", + "output": ["null"] + }, + { + "input": "has pr", + "output": ["null"] + }, + { + "input": "help", + "output": ["null"] + }, + { + "input": "help / pr wanted", + "output": ["null"] + }, + { + "input": "help wanted", + "output": ["null"] + }, + { + "input": "help wanted :sos:", + "output": ["null"] + }, + { + "input": "hi-pri", + "output": ["null"] + }, + { + "input": "high-priority", + "output": ["null"] + }, + { + "input": "hodor", + "output": ["null"] + }, + { + "input": "hot discussion", + "output": ["ideas"] + }, + { + "input": "html", + "output": ["code"] + }, + { + "input": "htmlfile", + "output": ["code"] + }, + { + "input": "https", + "output": ["null"] + }, + { + "input": "icebox", + "output": ["platform"] + }, + { + "input": "ie8", + "output": ["null"] + }, + { + "input": "import in progress", + "output": ["null"] + }, + { + "input": "import started", + "output": ["null"] + }, + { + "input": "in progress", + "output": ["null"] + }, + { + "input": "in review", + "output": ["null"] + }, + { + "input": "infrastructure :hammer_and_wrench:", + "output": ["infra"] + }, + { + "input": "installer", + "output": ["tool"] + }, + { + "input": "internal cleanup", + "output": ["maintenance"] + }, + { + "input": "internal-issue-created", + "output": ["bug"] + }, + { + "input": "invalid", + "output": ["null"] + }, + { + "input": "ios", + "output": ["platform"] + }, + { + "input": "jquery differences", + "output": ["null"] + }, + { + "input": "jsonp-polling", + "output": ["null"] + }, + { + "input": "kbfs", + "output": ["null"] + }, + { + "input": "lang-crystal", + "output": ["code"] + }, + { + "input": "lang-dart", + "output": ["code"] + }, + { + "input": "lang-elixir", + "output": ["code"] + }, + { + "input": "lang-go", + "output": ["code"] + }, + { + "input": "lang-julia", + "output": ["code"] + }, + { + "input": "lang-objc", + "output": ["code"] + }, + { + "input": "lang-r", + "output": ["code"] + }, + { + "input": "lang-scala", + "output": ["code"] + }, + { + "input": "legal", + "output": ["security"] + }, + { + "input": "library", + "output": ["tool"] + }, + { + "input": "lint", + "output": ["maintenance"] + }, + { + "input": "linux", + "output": ["platform"] + }, + { + "input": "lks", + "output": ["null"] + }, + { + "input": "m1.s0", + "output": ["null"] + }, + { + "input": "m1.s1", + "output": ["null"] + }, + { + "input": "m1.s2", + "output": ["null"] + }, + { + "input": "macos", + "output": ["platform"] + }, + { + "input": "maintenance", + "output": ["maintenance"] + }, + { + "input": "major", + "output": ["null"] + }, + { + "input": "mass purge 2015.10.26", + "output": ["null"] + }, + { + "input": "minor", + "output": ["null"] + }, + { + "input": "mobile device support", + "output": ["platform"] + }, + { + "input": "mode: proxy", + "output": ["null"] + }, + { + "input": "modules", + "output": ["code"] + }, + { + "input": "must-triage", + "output": ["null"] + }, + { + "input": "namespaces", + "output": ["null"] + }, + { + "input": "need-info", + "output": ["null"] + }, + { + "input": "needs a example app.", + "output": ["null"] + }, + { + "input": "needs a failing test", + "output": ["null"] + }, + { + "input": "needs browser testing", + "output": ["null"] + }, + { + "input": "needs changelog", + "output": ["null"] + }, + { + "input": "needs docs", + "output": ["null"] + }, + { + "input": "needs documentation", + "output": ["null"] + }, + { + "input": "needs info", + "output": ["null"] + }, + { + "input": "needs more info :man_shrugging:", + "output": ["null"] + }, + { + "input": "needs repro", + "output": ["null"] + }, + { + "input": "needs review", + "output": ["null"] + }, + { + "input": "needs triage", + "output": ["null"] + }, + { + "input": "needs-more-info", + "output": ["null"] + }, + { + "input": "needs-research", + "output": ["null"] + }, + { + "input": "new api proposal", + "output": ["ideas"] + }, + { + "input": "new best practice", + "output": ["ideas"] + }, + { + "input": "node", + "output": ["platform"] + }, + { + "input": "node next", + "output": ["platform"] + }, + { + "input": "not a bug", + "output": ["null"] + }, + { + "input": "on hold", + "output": ["null"] + }, + { + "input": "open", + "output": ["null"] + }, + { + "input": "operations", + "output": ["maintenance"] + }, + { + "input": "opinions needed", + "output": ["null"] + }, + { + "input": "optimisation", + "output": ["code"] + }, + { + "input": "other language integration feature", + "output": ["ideas"] + }, + { + "input": "p0", + "output": ["null"] + }, + { + "input": "p1", + "output": ["null"] + }, + { + "input": "p2", + "output": ["null"] + }, + { + "input": "p3", + "output": ["null"] + }, + { + "input": "packaging", + "output": ["platform"] + }, + { + "input": "parser", + "output": ["tool"] + }, + { + "input": "parser-specific", + "output": ["tool"] + }, + { + "input": "pending release", + "output": ["null"] + }, + { + "input": "performance", + "output": ["maintenance"] + }, + { + "input": "planned feature", + "output": ["null"] + }, + { + "input": "planned for next release", + "output": ["null"] + }, + { + "input": "pr welcome", + "output": ["null"] + }, + { + "input": "pr-existing", + "output": ["null"] + }, + { + "input": "pr: breaking change", + "output": ["code"] + }, + { + "input": "pr: breaking change :boom:", + "output": ["code"] + }, + { + "input": "pr: bug fix", + "output": ["bug"] + }, + { + "input": "pr: bug fix :bug:", + "output": ["bug"] + }, + { + "input": "pr: dependency ⬆️", + "output": ["maintenance"] + }, + { + "input": "pr: deprecation", + "output": ["null"] + }, + { + "input": "pr: docs :memo:", + "output": ["doc"] + }, + { + "input": "pr: documentation", + "output": ["doc"] + }, + { + "input": "pr: good example", + "output": ["example"] + }, + { + "input": "pr: internal", + "output": ["code"] + }, + { + "input": "pr: internal :house:", + "output": ["code"] + }, + { + "input": "pr: merged", + "output": ["null"] + }, + { + "input": "pr: needs review", + "output": ["null"] + }, + { + "input": "pr: new dependency", + "output": ["ideas"] + }, + { + "input": "pr: new feature", + "output": ["ideas"] + }, + { + "input": "pr: new feature :rocket:", + "output": ["ideas"] + }, + { + "input": "pr: polish :nail_care:", + "output": ["maintenance"] + }, + { + "input": "pr: ready for review", + "output": ["null"] + }, + { + "input": "pr: ready to be merged", + "output": ["null"] + }, + { + "input": "pr: reviewed-approved", + "output": ["null"] + }, + { + "input": "pr: reviewed-changes-requested", + "output": ["null"] + }, + { + "input": "pr: spec compliance :eyeglasses:", + "output": ["doc"] + }, + { + "input": "pr: underlying tools", + "output": ["tool"] + }, + { + "input": "pr: unreviewed", + "output": ["null"] + }, + { + "input": "pr: wip", + "output": ["null"] + }, + { + "input": "priority: critical", + "output": ["null"] + }, + { + "input": "priority: high", + "output": ["null"] + }, + { + "input": "priority: low", + "output": ["null"] + }, + { + "input": "priority: medium", + "output": ["null"] + }, + { + "input": "production", + "output": ["null"] + }, + { + "input": "project management", + "output": ["projectManagement"] + }, + { + "input": "question", + "output": ["question"] + }, + { + "input": "react flare", + "output": ["code"] + }, + { + "input": "react native", + "output": ["code"] + }, + { + "input": "ready", + "output": ["null"] + }, + { + "input": "refactor", + "output": ["code"] + }, + { + "input": "regression", + "output": ["bug"] + }, + { + "input": "release: alpha", + "output": ["null"] + }, + { + "input": "released", + "output": ["null"] + }, + { + "input": "reminder", + "output": ["null"] + }, + { + "input": "resolution: duplicate", + "output": ["null"] + }, + { + "input": "resolution: invalid", + "output": ["null"] + }, + { + "input": "resolution: needs more information", + "output": ["null"] + }, + { + "input": "resolution: support redirect", + "output": ["null"] + }, + { + "input": "review", + "output": ["review"] + }, + { + "input": "review in progress", + "output": ["null"] + }, + { + "input": "revisitinfuture", + "output": ["ideas"] + }, + { + "input": "rfc", + "output": ["ideas"] + }, + { + "input": "ruby", + "output": ["code"] + }, + { + "input": "security", + "output": ["security"] + }, + { + "input": "shell", + "output": ["tool"] + }, + { + "input": "socket.io client", + "output": ["tool"] + }, + { + "input": "spam", + "output": ["null"] + }, + { + "input": "spammy", + "output": ["null"] + }, + { + "input": "spec: async functions", + "output": ["doc"] + }, + { + "input": "spec: async generators", + "output": ["doc"] + }, + { + "input": "spec: bigint", + "output": ["doc"] + }, + { + "input": "spec: class fields", + "output": ["doc"] + }, + { + "input": "spec: classes", + "output": ["doc"] + }, + { + "input": "spec: decorators", + "output": ["doc"] + }, + { + "input": "spec: decorators (legacy)", + "output": ["doc"] + }, + { + "input": "spec: do expressions", + "output": ["doc"] + }, + { + "input": "stale", + "output": ["null"] + }, + { + "input": "status: accepted", + "output": ["null"] + }, + { + "input": "status: accepted :heavy_check_mark:", + "output": ["null"] + }, + { + "input": "status: available", + "output": ["null"] + }, + { + "input": "status: available :free:", + "output": ["null"] + }, + { + "input": "status: cla not signed", + "output": ["null"] + }, + { + "input": "status: code review request", + "output": ["null"] + }, + { + "input": "status: duplicate", + "output": ["null"] + }, + { + "input": "status: hacktoberfest approved", + "output": ["null"] + }, + { + "input": "status: help wanted", + "output": ["null"] + }, + { + "input": "status: in progress", + "output": ["null"] + }, + { + "input": "status: in progress :construction_worker:", + "output": ["null"] + }, + { + "input": "status: in review", + "output": ["null"] + }, + { + "input": "status: in review :detective:", + "output": ["null"] + }, + { + "input": "status: invalid", + "output": ["null"] + }, + { + "input": "status: left out", + "output": ["null"] + }, + { + "input": "status: left out :left_luggage:", + "output": ["null"] + }, + { + "input": "xhr-polling", + "output": ["null"] + } + ] + } +} From ea219190a1f1eaeeb989cebc400c988911258056 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Tue, 21 May 2019 13:52:35 +0100 Subject: [PATCH 24/28] refactor: wip --- package.json | 1 + src/cli.js | 85 ++++++++++++++++++++++++++++----------- src/contributors/index.js | 18 ++++++--- src/discover/index.js | 7 +++- 4 files changed, 80 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index b4e2a5d0..638f6685 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "ac-learn": "^1.0.1", "async": "^2.0.0-rc.1", "chalk": "^2.3.0", + "clui": "^0.3.6", "inquirer": "^6.2.1", "js-tokens": "^4.0.0", "lodash": "^4.11.2", diff --git a/src/cli.js b/src/cli.js index e8b0c5d5..224f1f5a 100755 --- a/src/cli.js +++ b/src/cli.js @@ -62,17 +62,51 @@ function startGeneration(argv) { function addContribution(argv) { // console.log('argv=', argv); + /* Example: + { + _: [ 'add' ], + projectName: 'cz-cli', + projectOwner: 'commitizen', + repoType: 'github', + repoHost: 'https://github.com', + files: [ 'AC.md' ], + imageSize: 100, + commit: false, + commitConvention: 'angular', + contributors: [], + contributorsPerLine: 7, + 'contributors-per-line': 7, + config: '/mnt/c/Users/max/Projects/cz-cli/.all-contributorsrc', + '$0': '../all-contributors-cli/src/cli.js' +} + */ const username = argv._[1] const contributions = argv._[2] + console.log('username=', username, 'contributions=', contributions) // Add or update contributor in the config file - return updateContributors(argv, username, contributions).then(data => { - argv.contributors = data.contributors - return startGeneration(argv).then(() => { - if (argv.commit) { - return util.git.commit(argv, data) - } - }) - }) + return updateContributors(argv, username, contributions).then( + data => { + argv.contributors = data.contributors + // console.log('argv contributors=', argv.contributors) + /* Example + [ { login: 'Berkmann18', + name: 'Maximilian Berkmann', + avatar_url: 'https://avatars0.githubusercontent.com/u/8260834?v=4', + profile: 'http://maxcubing.wordpress.com', + contributions: [ 'code', 'ideas' ] }, + { already in argv.contributors } ] + */ + return startGeneration(argv).then( + () => { + if (argv.commit) { + return util.git.commit(argv, data) + } + }, + err => console.error('Generation fail:', err), + ) + }, + err => console.error('Contributor Update fail:', err), + ) } function checkContributors(argv) { @@ -125,11 +159,12 @@ function checkContributors(argv) { } function fetchContributors(argv) { - const configData = util.configFile.readConfig(argv.config) + // console.log('argv=', argv); + // const configData = util.configFile.readConfig(argv.config) // console.log('configData') // console.dir(configData) - return getContributors(configData.projectOwner, configData.projectName).then( + return getContributors(argv.projectOwner, argv.projectName).then( repoContributors => { // repoContributors = {prCreators, prCommentators, issueCreators, issueCommentators, reviewers, commitAuthors, commitCommentators} // console.dir(repoContributors) @@ -186,28 +221,30 @@ function fetchContributors(argv) { //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) //4. Roll onto other contribution categories foll owing https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa - const args = {...configData, _: []} + const args = {...argv, _: []} repoContributors.reviewers.forEach(usr => { - args._ = ['', usr.login, 'review'] + args._ = ['add', usr.login, 'review'] addContribution(args) console.log( `Adding ${chalk.underline('Reviewer')} ${chalk.blue(usr.login)}`, ) }) - repoContributors.issueCreators.forEach(usr => { - console.log('usr=', usr.login, 'labels=', usr.labels) - usr.labels.forEach(lbl => { - const category = learner.classify(lbl)[0] - args._ = ['', usr.login, category] - addContribution(args) - console.log( - `Adding ${chalk.blue(usr.login)} for ${chalk.underline(category)}`, - ) - }) - }) + // repoContributors.issueCreators.forEach(usr => { + // console.log('usr=', usr.login, 'labels=', usr.labels) + // usr.labels.forEach(lbl => { + // const category = learner.classify(lbl)[0] + // if (category !== 'null') { + // args._ = ['', usr.login, category] + // addContribution(args) + // console.log( + // `Adding ${chalk.blue(usr.login)} for ${chalk.underline(category)}`, + // ) + // } + // }) + // }) }, - err => console.error('checkContributorsFromNYC error:', err), + err => console.error('fetch error:', err), ) } diff --git a/src/contributors/index.js b/src/contributors/index.js index 3e3544c9..08c02a31 100644 --- a/src/contributors/index.js +++ b/src/contributors/index.js @@ -10,13 +10,18 @@ function isNewContributor(contributorList, username) { module.exports = function addContributor(options, username, contributions) { const answersP = prompt(options, username, contributions) - const contributorsP = answersP.then(answers => - add(options, answers.username, answers.contributions, repo.getUserInfo), - ) + // console.log('options=', options) + const contributorsP = answersP + .then(answers => + add(options, answers.username, answers.contributions, repo.getUserInfo), + ) + .catch(err => console.error('contributorsP error:', err)) - const writeContributorsP = contributorsP.then(contributors => - util.configFile.writeContributors(options.config, contributors), - ) + const writeContributorsP = contributorsP + .then(contributors => { + return util.configFile.writeContributors(options.config, contributors) + }) + .catch(err => console.error('writeContributorsP error:', err)) return Promise.all([answersP, contributorsP, writeContributorsP]).then( res => { @@ -32,5 +37,6 @@ module.exports = function addContributor(options, username, contributions) { ), } }, + err => console.error('contributors fail: ', err), ) } diff --git a/src/discover/index.js b/src/discover/index.js index dde62b48..6c4ee396 100644 --- a/src/discover/index.js +++ b/src/discover/index.js @@ -1,14 +1,19 @@ const nyc = require('name-your-contributors') +const {Spinner} = require('clui') const privateToken = (process.env && process.env.PRIVATE_TOKEN) || '' +const loader = new Spinner('Loading...') const getContributors = function(owner, name, token = privateToken) { - return nyc.repoContributors({ + loader.start() + const contributors = nyc.repoContributors({ token, user: owner, repo: name, commits: true, }) + loader.stop() + return contributors } module.exports = {getContributors} From fa61c95f33baca395786e81503da491f610066b0 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 22 May 2019 16:28:59 +0100 Subject: [PATCH 25/28] refactor: [wip] Changed the contributor adding process within the `fetch` command function and added rejection handlers where appropriate --- src/cli.js | 67 ++++++++++++++++++++++++++++----------- src/contributors/index.js | 4 +++ src/util/config-file.js | 7 +++- 3 files changed, 59 insertions(+), 19 deletions(-) diff --git a/src/cli.js b/src/cli.js index 878552bd..f4ab659e 100755 --- a/src/cli.js +++ b/src/cli.js @@ -95,7 +95,7 @@ function addContribution(argv) { */ const username = argv._[1] const contributions = argv._[2] - console.log('username=', username, 'contributions=', contributions) + // console.log('username=', username, 'contributions=', contributions) // Add or update contributor in the config file return updateContributors(argv, username, contributions).then( data => { @@ -235,27 +235,58 @@ function fetchContributors(argv) { //4. Roll onto other contribution categories foll owing https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa const args = {...argv, _: []} + const contributorsToAdd = [] repoContributors.reviewers.forEach(usr => { - args._ = ['add', usr.login, 'review'] - addContribution(args) + // args._ = ['add', usr.login, 'review'] + // addContribution(args) + contributorsToAdd.push({login: usr.login, contributions: ['review']}) + // console.log( + // `Adding ${chalk.underline('Reviewer')} ${chalk.blue(usr.login)}`, + // ) + }) + + repoContributors.issueCreators.forEach(usr => { + // console.log('usr=', usr.login, 'labels=', usr.labels) + const contributor = { + login: usr.login, + contributions: [], + } + usr.labels.forEach(lbl => { + const guesses = learner.classify(lbl).filter(c => c && c !== 'null') + if (guesses.length) { + const category = guesses[0] + // args._ = ['', usr.login, category] + // addContribution(args) + if (!contributor.contributions.includes(category)) + contributor.contributions.push(category) + // console.log( + // `Adding ${chalk.blue(usr.login)} for ${chalk.underline(category)}`, + // ) + } //else console.warn(`Oops, I couldn't find any category for the "${lbl}" label`) + }) + const existingContributor = contributorsToAdd.filter( + ctrb => ctrb.login === usr.login, + ) + if (existingContributor.length) { + existingContributor[0].contributions = existingContributor[0].contributions.concat( + contributor.contributions, + ) + existingContributor[0].contributions = [ + ...new Set(existingContributor[0].contributions), + ] + } else contributorsToAdd.push(contributor) + }) + // console.log('contributorsToAdd=', contributorsToAdd) + contributorsToAdd.forEach(contributor => { console.log( - `Adding ${chalk.underline('Reviewer')} ${chalk.blue(usr.login)}`, + `Adding ${chalk.blue(contributor.login)} for ${chalk.underline( + contributor.contributions.join('/'), + )}`, ) + args._ = ['', contributor.login, contributor.contributions.join(',')] + if (contributor.contributions.length) addContribution(args) + else console.log('Skipping', contributor.login) }) - - // repoContributors.issueCreators.forEach(usr => { - // console.log('usr=', usr.login, 'labels=', usr.labels) - // usr.labels.forEach(lbl => { - // const category = learner.classify(lbl)[0] - // if (category !== 'null') { - // args._ = ['', usr.login, category] - // addContribution(args) - // console.log( - // `Adding ${chalk.blue(usr.login)} for ${chalk.underline(category)}`, - // ) - // } - // }) - // }) }, err => console.error('fetch error:', err), ) diff --git a/src/contributors/index.js b/src/contributors/index.js index 08c02a31..74211644 100644 --- a/src/contributors/index.js +++ b/src/contributors/index.js @@ -15,12 +15,15 @@ module.exports = function addContributor(options, username, contributions) { .then(answers => add(options, answers.username, answers.contributions, repo.getUserInfo), ) + //eslint-disable-next-line no-console .catch(err => console.error('contributorsP error:', err)) const writeContributorsP = contributorsP .then(contributors => { + // console.log('opts.config=', options.config, 'contributors=', contributors) return util.configFile.writeContributors(options.config, contributors) }) + //eslint-disable-next-line no-console .catch(err => console.error('writeContributorsP error:', err)) return Promise.all([answersP, contributorsP, writeContributorsP]).then( @@ -37,6 +40,7 @@ module.exports = function addContributor(options, username, contributions) { ), } }, + //eslint-disable-next-line no-console err => console.error('contributors fail: ', err), ) } diff --git a/src/util/config-file.js b/src/util/config-file.js index 912d95fb..451d6ae8 100644 --- a/src/util/config-file.js +++ b/src/util/config-file.js @@ -5,7 +5,10 @@ const jf = require('json-fixer') function readConfig(configPath) { try { - const {data: config, changed} = jf(fs.readFileSync(configPath, 'utf-8')) + const configData = fs.readFileSync(configPath, 'utf-8') + // console.log('configData(%s)=', configPath, 'len=', configData.length) + // configData.split('\n').forEach((l, i) => process.stdout.write(`${i} ${l}\n`)) + const {data: config, changed} = jf(configData, true) if (!('repoType' in config)) { config.repoType = 'github' } @@ -51,6 +54,8 @@ function writeConfig(configPath, content) { function writeContributors(configPath, contributors) { let config try { + // console.log('reading from', configPath) + // console.log('contributors=', contributors) config = readConfig(configPath) } catch (error) { return Promise.reject(error) From 4eb95d1e49c7f0fa2f5f692f522395261ce20e25 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 22 May 2019 17:29:28 +0100 Subject: [PATCH 26/28] feat(cli): added commit authors to the list + temp changes --- src/cli.js | 71 +++++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/src/cli.js b/src/cli.js index f4ab659e..db060eb2 100755 --- a/src/cli.js +++ b/src/cli.js @@ -193,41 +193,16 @@ function fetchContributors(argv) { // ) // console.log('knownContributors', knownContributors) //['kentcdodds', 'ben-eb', ...] - let contributors = new Set( - repoContributors.prCreators.map(usr => usr.login), - ) + // let contributors = new Set( + // repoContributors.prCreators.map(usr => usr.login), + // ) - repoContributors.issueCreators.forEach(usr => contributors.add(usr.login)) - repoContributors.reviewers.forEach(usr => contributors.add(usr.login)) - repoContributors.commitAuthors.forEach(usr => contributors.add(usr.login)) - contributors = Array.from(contributors) + // repoContributors.issueCreators.forEach(usr => contributors.add(usr.login)) + // repoContributors.reviewers.forEach(usr => contributors.add(usr.login)) + // repoContributors.commitAuthors.forEach(usr => contributors.add(usr.login)) + // contributors = Array.from(contributors) // console.log('ctbs=', contributors); - /*const missingInConfig = contributors.filter( - key => !knownContributors.includes(key), - ) - - const missingFromRepo = knownContributors.filter(key => { - return ( - !contributors.includes(key) && - (knownContributions[key].includes('code') || - knownContributions[key].includes('test')) - ) - })*/ - - /* if (missingInConfig.length) { - process.stdout.write( - chalk.bold('Missing contributors in .all-contributorsrc:\n'), - ) - process.stdout.write(` ${missingInConfig.join(', ')}\n`) - } - - if (missingFromRepo.length) { - process.stdout.write( - chalk.bold('Unknown contributors found in .all-contributorsrc:\n'), - ) - process.stdout.write(`${missingFromRepo.join(', ')}\n`) - } */ //~1. Auto-add reviewers for review~ //2. Auto-add issue creators for bug/security @@ -268,14 +243,34 @@ function fetchContributors(argv) { ctrb => ctrb.login === usr.login, ) if (existingContributor.length) { - existingContributor[0].contributions = existingContributor[0].contributions.concat( - contributor.contributions, - ) existingContributor[0].contributions = [ - ...new Set(existingContributor[0].contributions), + ...new Set( + existingContributor[0].contributions.concat( + contributor.contributions, + ), + ), ] } else contributorsToAdd.push(contributor) }) + + repoContributors.commitAuthors.forEach(usr => { + // const contributor = { + // login: usr.login, + // contributions: [], + // } + // console.log('commit auth:', usr) + const existingContributor = contributorsToAdd.filter( + ctrb => ctrb.login === usr.login, + ) + if (existingContributor.length) { + //there's no label or commit message info so use only code for now + if (!existingContributor[0].contributions.includes('code')) { + existingContributor[0].contributions.push('code') + } + } else + contributorsToAdd.push({login: usr.login, contributions: ['code']}) + }) + // console.log('contributorsToAdd=', contributorsToAdd) contributorsToAdd.forEach(contributor => { console.log( @@ -284,8 +279,8 @@ function fetchContributors(argv) { )}`, ) args._ = ['', contributor.login, contributor.contributions.join(',')] - if (contributor.contributions.length) addContribution(args) - else console.log('Skipping', contributor.login) + // if (contributor.contributions.length) addContribution(args) + // else console.log('Skipping', contributor.login) }) }, err => console.error('fetch error:', err), From 5717fae1007549e611865271b25f38dffb2d3d0a Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 22 May 2019 17:49:06 +0100 Subject: [PATCH 27/28] ci(circleci): changed node version to 10.15.3 ... to make it work with `name-your-contributors` which requires `node >= 10.0` --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 58dae44b..a3f4efa9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 docker_defaults: &docker_defaults docker: - - image: circleci/node:8.14.0 + - image: circleci/node:10.15.3 commands: prep_env: From e3c733111887cbc13dac40d04e20de8d8b14ea93 Mon Sep 17 00:00:00 2001 From: Berkmann18 Date: Wed, 22 May 2019 18:16:08 +0100 Subject: [PATCH 28/28] chore(discover): file removal + step update Removed the files that are used for the `nyc` branch (which were in fact useless) and updated the fetching steps in `cli` --- src/cli.js | 6 +- src/discover/__tests__/findCategory.js | 52 - src/discover/__tests__/labels.js | 61 - src/discover/__tests__/token.js | 35 - src/discover/categories.json | 29 - src/discover/check.js | 39 - src/discover/findCategory.js | 145 --- src/discover/labels.js | 25 - src/discover/labels.json | 1582 ------------------------ src/discover/sets/noCategory.js | 65 - src/discover/sets/simExceptions.js | 115 -- src/discover/token.js | 33 - src/discover/valid.js | 57 - 13 files changed, 3 insertions(+), 2241 deletions(-) delete mode 100644 src/discover/__tests__/findCategory.js delete mode 100644 src/discover/__tests__/labels.js delete mode 100644 src/discover/__tests__/token.js delete mode 100644 src/discover/categories.json delete mode 100644 src/discover/check.js delete mode 100644 src/discover/findCategory.js delete mode 100644 src/discover/labels.js delete mode 100644 src/discover/labels.json delete mode 100644 src/discover/sets/noCategory.js delete mode 100644 src/discover/sets/simExceptions.js delete mode 100644 src/discover/token.js delete mode 100644 src/discover/valid.js diff --git a/src/cli.js b/src/cli.js index db060eb2..151292b5 100755 --- a/src/cli.js +++ b/src/cli.js @@ -205,9 +205,9 @@ function fetchContributors(argv) { // console.log('ctbs=', contributors); //~1. Auto-add reviewers for review~ - //2. Auto-add issue creators for bug/security - //3. Find a way to distinguish bug from security contributions (_erm_ labels _erm_) - //4. Roll onto other contribution categories foll owing https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa + //~2. Auto-add issue creators for any categories found~ + //~3. Auto-add commit authors~ + //4. Roll onto other contribution categories following https://www.draw.io/#G1uL9saIuZl3rj8sOo9xsLOPByAe28qhwa const args = {...argv, _: []} const contributorsToAdd = [] diff --git a/src/discover/__tests__/findCategory.js b/src/discover/__tests__/findCategory.js deleted file mode 100644 index 060c6db1..00000000 --- a/src/discover/__tests__/findCategory.js +++ /dev/null @@ -1,52 +0,0 @@ -import findBestCategory from '../findCategory' -import {getAll} from '../labels' - -test('exact labels', () => { - expect(findBestCategory('bug')).toStrictEqual('bug') - expect(findBestCategory('code')).toStrictEqual('code') - expect(findBestCategory('test')).toStrictEqual('test') -}) - -test('GH labels', () => { - expect(findBestCategory('duplicate')).toStrictEqual(null) - expect(findBestCategory('enhancement')).toStrictEqual('maintenance') //or code? - expect(findBestCategory('good first issue')).toStrictEqual(null) - expect(findBestCategory('help wanted')).toStrictEqual(null) //maintenance? - expect(findBestCategory('invalid')).toStrictEqual(null) - expect(findBestCategory('wontfix')).toStrictEqual(null) -}) - -test('almost the same', () => { - expect(findBestCategory('testing')).toStrictEqual('test') - expect(findBestCategory('sec')).toStrictEqual('security') -}) - -test('exceptions', () => { - expect(findBestCategory('build')).toStrictEqual('infra') - expect(findBestCategory('back-end')).toStrictEqual('code') -}) - -test('nothing found', () => { - /* expect(() => findBestCategory('doing')).toThrowError( - 'Match threshold of 0.4 not met for "doing"', - ) */ - expect(findBestCategory('archive')).toStrictEqual(null) -}) - -test('namespaced labels', () => { - expect(findBestCategory('type: bug')).toStrictEqual('bug') - expect(findBestCategory('Type: Bug')).toStrictEqual('bug') - expect(findBestCategory('type-bug')).toStrictEqual('bug') - expect(findBestCategory('cat:bug')).toStrictEqual('bug') - expect(findBestCategory('cat-bug')).toStrictEqual('bug') - expect(findBestCategory('Bug 🐛')).toStrictEqual('bug') -}) - -describe('accurate guessing', () => { - const labels = getAll() - .filter(data => data.category !== 'null') //skip the unclassifiable ones (for now) - .map(data => [data.label, data.category, findBestCategory(data.label)]) - test.each(labels)('guess "%s" in %s', (label, actual, expected) => { - expect(expected).toStrictEqual(actual) - }) -}) diff --git a/src/discover/__tests__/labels.js b/src/discover/__tests__/labels.js deleted file mode 100644 index 73b7fb6d..00000000 --- a/src/discover/__tests__/labels.js +++ /dev/null @@ -1,61 +0,0 @@ -import labels from '../labels' -import categories from '../categories' - -const LEN = 395 - -test('All data', () => { - const data = labels.getAll() - expect(data.length).toStrictEqual(LEN) - expect(Array.isArray(data)).toBeTruthy() - expect(data[9]).toEqual({label: ':bug: bug', category: 'bug'}) -}) - -test('get', () => { - expect(labels.getAt(0)).toEqual({label: '0 - backlog', category: 'null'}) - expect(labels.getAt(9)).toEqual({label: ':bug: bug', category: 'bug'}) -}) - -test('Labels', () => { - const lbls = labels.getLabels() - expect(lbls.length).toStrictEqual(LEN) - expect(Array.isArray(lbls)).toBeTruthy() - expect(lbls[9]).toEqual(':bug: bug') -}) - -test('Categories', () => { - const cats = labels.getCategories() - expect(cats.length).toStrictEqual(LEN) - expect(Array.isArray(cats)).toBeTruthy() - expect(cats[9]).toEqual('bug') -}) - -test('Distinct cats', () => { - const dc = labels.getDistinctCategories() - expect(dc.includes('null')).toBeTruthy() -}) - -test('Size', () => { - expect(labels.size()).toStrictEqual(LEN) -}) - -test('Labels with categories', () => { - const cl = labels.getCategorisedLabels() - expect(cl.length > categories.length).toBeTruthy() - expect(cl[9]).toEqual({label: ':bug: bug', category: 'bug'}) -}) - -test('Labels with a `null` category', () => { - const nl = labels.getNullCatLabels() - expect(nl.length < LEN - categories.length).toBeTruthy() - expect(nl[0]).toEqual({label: '0 - backlog', category: 'null'}) -}) - -test('Labels with a valid category', () => { - const vl = labels.getValidCatLabels() - expect(vl.length > categories.length).toBeTruthy() - expect(vl[0]).toEqual({label: '0 - backlog', category: 'null'}) -}) - -test('Bad data', () => { - expect(labels.getBadData()).toEqual([]) -}) diff --git a/src/discover/__tests__/token.js b/src/discover/__tests__/token.js deleted file mode 100644 index e2a911ac..00000000 --- a/src/discover/__tests__/token.js +++ /dev/null @@ -1,35 +0,0 @@ -import tokenize from '../token' - -test('split spaced words', () => { - expect(tokenize('hello world')).toEqual(['hello', 'world']) -}) - -test('split barrelled words', () => { - expect(tokenize('hello-world')).toEqual(['hello', 'world']) -}) - -test('split namespaced words', () => { - expect(tokenize('hello:world')).toEqual(['hello', 'world']) -}) - -test('no uneeded tokens', () => { - expect(tokenize('')).toEqual([]) - expect(tokenize('-')).toEqual([]) - expect(tokenize(' ')).toEqual([]) - expect(tokenize(':')).toEqual([]) - expect(tokenize('=')).toEqual([]) -}) - -test('no conjunctions', () => { - expect(tokenize('a or b')).toEqual(['a', 'b']) - expect(tokenize('a and b')).toEqual(['a', 'b']) - expect(tokenize('a nor b')).toEqual(['a', 'b']) -}) - -test('no (ad)verb modifying adverbs', () => { - expect(tokenize('too good')).toEqual(['good']) - expect(tokenize('enough code')).toEqual(['code']) - expect(tokenize('very hard')).toEqual(['hard']) - expect(tokenize('just done')).toEqual(['done']) - expect(tokenize('almost ready')).toEqual(['ready']) -}) diff --git a/src/discover/categories.json b/src/discover/categories.json deleted file mode 100644 index 88c2b2f6..00000000 --- a/src/discover/categories.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - "blog", - "bug", - "business", - "code", - "content", - "design", - "doc", - "eventOrganizing", - "example", - "financial", - "fundingFinding", - "ideas", - "infra", - "maintenance", - "platform", - "plugin", - "projectManagement", - "question", - "review", - "security", - "talk", - "test", - "tool", - "translation", - "tutorial", - "userTesting", - "video" -] diff --git a/src/discover/check.js b/src/discover/check.js deleted file mode 100644 index 9855a2e8..00000000 --- a/src/discover/check.js +++ /dev/null @@ -1,39 +0,0 @@ -const ck = require('chalk') -const valid = require('./valid') -const labels = require('./labels') - -if (labels.getBadData().length) throw new Error('Bad data!') - -const portion = labels.size() ** -1 * 100 - -const nulLabels = labels.getNullCatLabels() -const allLabels = labels.getAll() -/* eslint-disable no-console */ -console.log(ck.blueBright('\tNull labels'), '*', nulLabels.length) -const nulScore = { - yes: 0, - no: 0, -} -const score = { - yes: 0, - no: 0, -} - -nulLabels.forEach(data => { - return valid(data, process.env.LOGN) ? nulScore.yes++ : nulScore.no++ -}) - -const perc = s => Math.round(s.yes * portion * 1000) / 1000 - -nulScore.total = nulScore.yes - nulScore.no -console.log(`Null scores= ${ck.yellow(nulScore.total)} (${perc(nulScore)}%) -yes = ${ck.green(nulScore.yes)}\tno = ${ck.red(nulScore.no)}`) - -allLabels.forEach(data => { - return valid(data, process.env.LOG || false) ? score.yes++ : score.no++ -}) - -score.total = score.yes - score.no -console.log(`\nAll scores= ${ck.yellow(score.total)} (${perc(score)}%) -yes = ${ck.green(score.yes)}\tno = ${ck.red(score.no)}`) -/* eslint-enable no-console */ diff --git a/src/discover/findCategory.js b/src/discover/findCategory.js deleted file mode 100644 index 7af51724..00000000 --- a/src/discover/findCategory.js +++ /dev/null @@ -1,145 +0,0 @@ -const strSim = require('string-similarity') -const tokenize = require('./token') -const CATEGORIES = require('./categories.json') //Object.keys(ctrbType('github')); -const SIM_EXCEPTIONS = require('./sets/simExceptions') -const NON_CATEGORY_LABELS = require('./sets/noCategory') - -const MATCH_THRESHOLD = 0.4 //40% to allow for shorter/longer versions of categories -// const COMPLEX_THRESHOLD = 0.7 //70% to make sure really similar composed labels are matchable - -const COMPOSED_LABELS = { - 'awaiting-review': 'null', - 'back-end': 'code', - 'code-clean': 'maintenance', - 'code-review-request': 'null', - 'current-mod': 'null', - 'difficulty-easy': 'null', - 'do-not-merge': 'null', - 'first-time': 'null', - 'front-end': 'code', - 'in-review': 'null', - 'internal-issue-created': 'bug', - 'internal-cleanup': 'maintenance', - 'non-library': 'null', - 'non-library-issue': 'bug', - 'other-feature': 'ideas', - 'ready-review': 'null', - 'review-changes': 'null', - 'review-needed-passport_control': 'null', - 'review-request': 'null', - 'to-do': 'maintenance', -} - -const FORBIDDEN_PREFIXES = [ - 'has', - 'in progress', - 'in review', - 'need', - 'not', - 'on hold', - 'pending', - 'planned', - 'review-needed', -] -const FORBIDDEN_SUFFIXES = [ - 'accepted', - 'approved', - 'hold', - 'progress', - 'missing', - 'needed', - 'rejected', - 'required', -] - -const NAMESPACE_RE = /^(\w+):\s*(.*?)/ - -const badStartEnd = label => { - const lbl = label.replace(NAMESPACE_RE, '$2') //Removes the namespace - for (const prefix of FORBIDDEN_PREFIXES) { - if (label.startsWith(prefix) || lbl.startsWith(prefix)) return true - } - for (const suffix of FORBIDDEN_SUFFIXES) { - if (label.endsWith(suffix) || lbl.endsWith(suffix)) return true - } - return false -} - -const SE = Object.keys(SIM_EXCEPTIONS) -const CL = Object.keys(COMPOSED_LABELS) - -function bestCat(label, showRating = false, log = false) { - const lbl = label.toLowerCase() - if (lbl in SIM_EXCEPTIONS) { - const target = SIM_EXCEPTIONS[lbl] - return showRating ? {target, rating: 1} : target - } - const match = {...strSim.findBestMatch(lbl, CATEGORIES).bestMatch, ref: 'M'} - const seMatch = {...strSim.findBestMatch(lbl, SE).bestMatch, ref: 'SE'} - const nclMatch = { - ...strSim.findBestMatch(lbl, NON_CATEGORY_LABELS).bestMatch, - ref: 'NC', - } - const clMatch = {...strSim.findBestMatch(lbl, CL).bestMatch, ref: 'CL'} - - const scores = [match, seMatch, clMatch, nclMatch].sort( - (a, b) => b.rating - a.rating, - ) - if (log) { - //eslint-disable-next-line no-console - console.log('scores=', scores) - } - let idx = 0 - while (scores[idx++].rating < MATCH_THRESHOLD && idx < scores.length) { - /* */ - } - - if (idx === scores.length) return null - --idx - let target = scores[idx].target - if (scores[idx].ref === 'SE') target = SIM_EXCEPTIONS[scores[idx].target] - else if (scores[idx].ref === 'CL') - target = COMPOSED_LABELS[scores[idx].target] - if (scores[idx].ref === 'NC' || target === 'null') return null //target = null - - if (showRating) { - return { - ...scores[idx], - target, - } - } - return target -} - -function findBestCategory(label, showRating = false, log = false) { - const lbl = label.toLowerCase() - const lblSubset = lbl.replace(NAMESPACE_RE, '$2') //Removes the namespace - if (badStartEnd(lbl) || NON_CATEGORY_LABELS.includes(lbl)) return null - if (CL.includes(lbl)) return bestCat(lbl, showRating, log) - if (CL.includes(lblSubset)) return bestCat(lblSubset, showRating, log) - // if (bestCat(lbl.replace(NAMESPACE_RE, '$2')) === null) return null - const tokens = tokenize(lbl) - const composition = tokens.join('-') - const tokenSubset = tokenize(lblSubset) - const compositionSubset = tokenSubset.join('-') - if (CL.includes(composition)) return bestCat(composition, showRating, log) - if (CL.includes(compositionSubset)) - return bestCat(compositionSubset, showRating, log) - - if (tokens.length > 1) { - //If `lbl` can be split into *several* tokens - const cats = tokens - .map(tk => bestCat(tk, true, log)) - .filter(cat => cat !== null) - if (!cats.length) return null - cats.sort((a, b) => b.rating - a.rating) - return showRating ? cats[0] : cats[0].target - } else if (tokens.length === 1) return bestCat(tokens[0], showRating, log) - - process.stdout.write( - `Match threshold of ${MATCH_THRESHOLD} not met for "${label}"\n`, - ) - return null -} - -module.exports = findBestCategory diff --git a/src/discover/labels.js b/src/discover/labels.js deleted file mode 100644 index 80425ac5..00000000 --- a/src/discover/labels.js +++ /dev/null @@ -1,25 +0,0 @@ -const labels = require('./labels.json') - -const getDistinctCategories = () => { - const cats = new Set() - labels.forEach(d => cats.add(d.category)) - return Array.from(cats) -} - -const CATEGORIES = getDistinctCategories().filter(Boolean) - -module.exports = { - getAll: () => [...labels], - getAt: idx => labels[idx], - getLabels: () => labels.map(d => d.label), - getCategories: () => labels.map(d => d.category), - getDistinctCategories: () => CATEGORIES, - size: () => labels.length, - getCategorisedLabels: () => labels.filter(l => !!l.category), - getNullCatLabels: () => labels.filter(l => l.category == 'null'), - getValidCatLabels: () => labels.filter(l => CATEGORIES.includes(l.category)), - getBadData: () => - labels.filter( - l => (!!l.category && !CATEGORIES.includes(l.category)) || !l.category, - ), -} diff --git a/src/discover/labels.json b/src/discover/labels.json deleted file mode 100644 index 7563ae17..00000000 --- a/src/discover/labels.json +++ /dev/null @@ -1,1582 +0,0 @@ -[ - { - "label": "0 - backlog", - "category": "null" - }, - { - "label": "1 - ready", - "category": "null" - }, - { - "label": "2 - working", - "category": "null" - }, - { - "label": "2.x", - "category": "null" - }, - { - "label": "3 - done", - "category": "null" - }, - { - "label": "6.x: backport", - "category": "null" - }, - { - "label": "7.x: regression", - "category": "bug" - }, - { - "label": ":arrow_heading_down: pull", - "category": "maintenance" - }, - { - "label": ":boom: regression", - "category": "bug" - }, - { - "label": ":bug: bug", - "category": "bug" - }, - { - "label": ":rocket: enhancement", - "category": "maintenance" - }, - { - "label": ":rocket: feature request", - "category": "ideas" - }, - { - "label": ":speech_balloon: question", - "category": "question" - }, - { - "label": "@font-face", - "category": "design" - }, - { - "label": "abandoned", - "category": "null" - }, - { - "label": "accepted", - "category": "null" - }, - { - "label": "accessibility", - "category": "null" - }, - { - "label": "hacked", - "category": "security" - }, - { - "label": "adapter", - "category": "plugin" - }, - { - "label": "advance developer workflow", - "category": "infra" - }, - { - "label": "android", - "category": "platform" - }, - { - "label": "angular", - "category": "code" - }, - { - "label": "animals (category)", - "category": "null" - }, - { - "label": "answered", - "category": "null" - }, - { - "label": "approved", - "category": "null" - }, - { - "label": "area: concurrent", - "category": "null" - }, - { - "label": "area: crash", - "category": "bug" - }, - { - "label": "arrows (category)", - "category": "null" - }, - { - "label": "automotive (category)", - "category": "null" - }, - { - "label": "available in fa pro", - "category": "null" - }, - { - "label": "awaiting-review", - "category": "null" - }, - { - "label": "beginner-friendly", - "category": "null" - }, - { - "label": "beverage (category)", - "category": "null" - }, - { - "label": "blocked", - "category": "null" - }, - { - "label": "blocker", - "category": "null" - }, - { - "label": "bootstrap", - "category": "tool" - }, - { - "label": "brand icon", - "category": "design" - }, - { - "label": "breaking change", - "category": "code" - }, - { - "label": "browser bug", - "category": "bug" - }, - { - "label": "browser: ie", - "category": "null" - }, - { - "label": "browser: safari", - "category": "null" - }, - { - "label": "bug", - "category": "bug" - }, - { - "label": "bug report", - "category": "bug" - }, - { - "label": "business (category)", - "category": "business" - }, - { - "label": "c/c++", - "category": "null" - }, - { - "label": "cannot reproduce", - "category": "null" - }, - { - "label": "cantfix", - "category": "null" - }, - { - "label": "cdn", - "category": "platform" - }, - { - "label": "chat (category)", - "category": "ideas" - }, - { - "label": "chore", - "category": "maintenance" - }, - { - "label": "cla signed", - "category": "null" - }, - { - "label": "cla signed :heavy_check_mark:", - "category": "null" - }, - { - "label": "cla: no", - "category": "null" - }, - { - "label": "cla: yes", - "category": "null" - }, - { - "label": "cli", - "category": "code" - }, - { - "label": "closed due to inactivity", - "category": "null" - }, - { - "label": "cmty:bug-report", - "category": "bug" - }, - { - "label": "cmty:feature-request", - "category": "ideas" - }, - { - "label": "cmty:question", - "category": "question" - }, - { - "label": "cmty:status:cancelled", - "category": "null" - }, - { - "label": "cmty:status:fixed", - "category": "null" - }, - { - "label": "cmty:status:implemented", - "category": "null" - }, - { - "label": "cmty:status:resolved", - "category": "null" - }, - { - "label": "community", - "category": "null" - }, - { - "label": "component: build infrastructure", - "category": "infra" - }, - { - "label": "component: component api", - "category": "code" - }, - { - "label": "component: concurrent mode", - "category": "null" - }, - { - "label": "component: core utilities", - "category": "maintenance" - }, - { - "label": "component: developer tools", - "category": "tool" - }, - { - "label": "component: dom", - "category": "code" - }, - { - "label": "component: eslint rules", - "category": "maintenance" - }, - { - "label": "component: hooks", - "category": "code" - }, - { - "label": "component: optimizing compiler", - "category": "code" - }, - { - "label": "component: reactis", - "category": "code" - }, - { - "label": "component: reconciler", - "category": "null" - }, - { - "label": "component: scheduler", - "category": "null" - }, - { - "label": "component: server rendering", - "category": "code" - }, - { - "label": "component: shallow renderer", - "category": "code" - }, - { - "label": "component: suspense", - "category": "null" - }, - { - "label": "component: test renderer", - "category": "test" - }, - { - "label": "component: test utils", - "category": "test" - }, - { - "label": "configuration", - "category": "code" - }, - { - "label": "confirmed", - "category": "null" - }, - { - "label": "conflicts", - "category": "null" - }, - { - "label": "contribution welcome", - "category": "null" - }, - { - "label": "core", - "category": "maintenance" - }, - { - "label": "critical", - "category": "null" - }, - { - "label": "csharp", - "category": "code" - }, - { - "label": "css", - "category": "code" - }, - { - "label": "css-select", - "category": "code" - }, - { - "label": "currency (category)", - "category": "financial" - }, - { - "label": "defect", - "category": "bug" - }, - { - "label": "dependencies", - "category": "maintenance" - }, - { - "label": "dependency related", - "category": "maintenance" - }, - { - "label": "design", - "category": "design" - }, - { - "label": "design (category)", - "category": "design" - }, - { - "label": "difficulty: challenging", - "category": "null" - }, - { - "label": "difficulty: easy", - "category": "null" - }, - { - "label": "difficulty: hard", - "category": "null" - }, - { - "label": "difficulty: medium", - "category": "null" - }, - { - "label": "difficulty: starter", - "category": "null" - }, - { - "label": "difficulty: unknown or n/a", - "category": "null" - }, - { - "label": "difficulty: very hard", - "category": "null" - }, - { - "label": "discussion", - "category": "ideas" - }, - { - "label": "do not merge", - "category": "null" - }, - { - "label": "doc", - "category": "doc" - }, - { - "label": "docs", - "category": "doc" - }, - { - "label": "documentation", - "category": "doc" - }, - { - "label": "documentation :book:", - "category": "doc" - }, - { - "label": "duplicate", - "category": "null" - }, - { - "label": "electron", - "category": "tool" - }, - { - "label": "enhancement", - "category": "maintenance" - }, - { - "label": "enterprise", - "category": "null" - }, - { - "label": "enterprise-2.0-backport", - "category": "null" - }, - { - "label": "enterprise-2.1-backport", - "category": "null" - }, - { - "label": "enterprise-2.2-backport", - "category": "null" - }, - { - "label": "es6", - "category": "code" - }, - { - "label": "es7", - "category": "code" - }, - { - "label": "external", - "category": "plugin" - }, - { - "label": "externs", - "category": "plugin" - }, - { - "label": "feat/cli", - "category": "code" - }, - { - "label": "feat: babel", - "category": "tool" - }, - { - "label": "feat: cli", - "category": "code" - }, - { - "label": "feat: cli-service build", - "category": "code" - }, - { - "label": "feat: cli-service serve", - "category": "code" - }, - { - "label": "feat: e2e-cypress", - "category": "test" - }, - { - "label": "feat: e2e-nightwatch", - "category": "test" - }, - { - "label": "feat: eslint", - "category": "maintenance" - }, - { - "label": "feat: plugin api", - "category": "plugin" - }, - { - "label": "feat: pwa", - "category": "code" - }, - { - "label": "feat: typescript", - "category": "code" - }, - { - "label": "feat: ui", - "category": "design" - }, - { - "label": "feat: unit-jest", - "category": "test" - }, - { - "label": "feat: unit-mocha", - "category": "test" - }, - { - "label": "feature", - "category": "ideas" - }, - { - "label": "feature request", - "category": "ideas" - }, - { - "label": "feedback requested", - "category": "null" - }, - { - "label": "files (category)", - "category": "null" - }, - { - "label": "first-timers-only", - "category": "null" - }, - { - "label": "flags (category)", - "category": "null" - }, - { - "label": "flashsocket", - "category": "tool" - }, - { - "label": "fontawesome.com", - "category": "null" - }, - { - "label": "food (category)", - "category": "null" - }, - { - "label": "freemasonry icons", - "category": "design" - }, - { - "label": "frontend", - "category": "code" - }, - { - "label": "future architecture enhancements", - "category": "ideas" - }, - { - "label": "future crypto enhancements", - "category": "ideas" - }, - { - "label": "genders (category)", - "category": "null" - }, - { - "label": "general js", - "category": "code" - }, - { - "label": "gh review: accepted", - "category": "null" - }, - { - "label": "go client internal release", - "category": "null" - }, - { - "label": "good first issue", - "category": "null" - }, - { - "label": "good first issue :+1:", - "category": "null" - }, - { - "label": "great insight", - "category": "ideas" - }, - { - "label": "greenkeeper", - "category": "infra" - }, - { - "label": "hack", - "category": "code" - }, - { - "label": "hacktoberfest", - "category": "code" - }, - { - "label": "handshakes", - "category": "business" - }, - { - "label": "has bounty", - "category": "null" - }, - { - "label": "has pr", - "category": "null" - }, - { - "label": "help", - "category": "null" - }, - { - "label": "help / pr wanted", - "category": "null" - }, - { - "label": "help wanted", - "category": "null" - }, - { - "label": "help wanted :sos:", - "category": "null" - }, - { - "label": "hi-pri", - "category": "null" - }, - { - "label": "high-priority", - "category": "null" - }, - { - "label": "hodor", - "category": "null" - }, - { - "label": "hot discussion", - "category": "ideas" - }, - { - "label": "html", - "category": "code" - }, - { - "label": "htmlfile", - "category": "code" - }, - { - "label": "https", - "category": "null" - }, - { - "label": "icebox", - "category": "platform" - }, - { - "label": "ie8", - "category": "null" - }, - { - "label": "import in progress", - "category": "null" - }, - { - "label": "import started", - "category": "null" - }, - { - "label": "in progress", - "category": "null" - }, - { - "label": "in review", - "category": "null" - }, - { - "label": "infrastructure :hammer_and_wrench:", - "category": "infra" - }, - { - "label": "installer", - "category": "tool" - }, - { - "label": "internal cleanup", - "category": "maintenance" - }, - { - "label": "internal-issue-created", - "category": "bug" - }, - { - "label": "invalid", - "category": "null" - }, - { - "label": "ios", - "category": "platform" - }, - { - "label": "jquery differences", - "category": "null" - }, - { - "label": "jsonp-polling", - "category": "null" - }, - { - "label": "kbfs", - "category": "null" - }, - { - "label": "lang-crystal", - "category": "code" - }, - { - "label": "lang-dart", - "category": "code" - }, - { - "label": "lang-elixir", - "category": "code" - }, - { - "label": "lang-go", - "category": "code" - }, - { - "label": "lang-julia", - "category": "code" - }, - { - "label": "lang-objc", - "category": "code" - }, - { - "label": "lang-r", - "category": "code" - }, - { - "label": "lang-scala", - "category": "code" - }, - { - "label": "legal", - "category": "security" - }, - { - "label": "library", - "category": "tool" - }, - { - "label": "lint", - "category": "maintenance" - }, - { - "label": "linux", - "category": "platform" - }, - { - "label": "lks", - "category": "null" - }, - { - "label": "m1.s0", - "category": "null" - }, - { - "label": "m1.s1", - "category": "null" - }, - { - "label": "m1.s2", - "category": "null" - }, - { - "label": "macos", - "category": "platform" - }, - { - "label": "maintenance", - "category": "maintenance" - }, - { - "label": "major", - "category": "null" - }, - { - "label": "mass purge 2015.10.26", - "category": "null" - }, - { - "label": "minor", - "category": "null" - }, - { - "label": "mobile device support", - "category": "platform" - }, - { - "label": "mode: proxy", - "category": "null" - }, - { - "label": "modules", - "category": "code" - }, - { - "label": "must-triage", - "category": "null" - }, - { - "label": "namespaces", - "category": "null" - }, - { - "label": "need-info", - "category": "null" - }, - { - "label": "needs a example app.", - "category": "null" - }, - { - "label": "needs a failing test", - "category": "null" - }, - { - "label": "needs browser testing", - "category": "null" - }, - { - "label": "needs changelog", - "category": "null" - }, - { - "label": "needs docs", - "category": "null" - }, - { - "label": "needs documentation", - "category": "null" - }, - { - "label": "needs info", - "category": "null" - }, - { - "label": "needs more info :man_shrugging:", - "category": "null" - }, - { - "label": "needs repro", - "category": "null" - }, - { - "label": "needs review", - "category": "null" - }, - { - "label": "needs triage", - "category": "null" - }, - { - "label": "needs-more-info", - "category": "null" - }, - { - "label": "needs-research", - "category": "null" - }, - { - "label": "new api proposal", - "category": "ideas" - }, - { - "label": "new best practice", - "category": "ideas" - }, - { - "label": "node", - "category": "platform" - }, - { - "label": "node next", - "category": "platform" - }, - { - "label": "not a bug", - "category": "null" - }, - { - "label": "on hold", - "category": "null" - }, - { - "label": "open", - "category": "null" - }, - { - "label": "operations", - "category": "maintenance" - }, - { - "label": "opinions needed", - "category": "null" - }, - { - "label": "optimisation", - "category": "code" - }, - { - "label": "other language integration feature", - "category": "ideas" - }, - { - "label": "p0", - "category": "null" - }, - { - "label": "p1", - "category": "null" - }, - { - "label": "p2", - "category": "null" - }, - { - "label": "p3", - "category": "null" - }, - { - "label": "packaging", - "category": "platform" - }, - { - "label": "parser", - "category": "tool" - }, - { - "label": "parser-specific", - "category": "tool" - }, - { - "label": "pending release", - "category": "null" - }, - { - "label": "performance", - "category": "maintenance" - }, - { - "label": "planned feature", - "category": "null" - }, - { - "label": "planned for next release", - "category": "null" - }, - { - "label": "pr welcome", - "category": "null" - }, - { - "label": "pr-existing", - "category": "null" - }, - { - "label": "pr: breaking change", - "category": "code" - }, - { - "label": "pr: breaking change :boom:", - "category": "code" - }, - { - "label": "pr: bug fix", - "category": "bug" - }, - { - "label": "pr: bug fix :bug:", - "category": "bug" - }, - { - "label": "pr: dependency ⬆️", - "category": "maintenance" - }, - { - "label": "pr: deprecation", - "category": "null" - }, - { - "label": "pr: docs :memo:", - "category": "doc" - }, - { - "label": "pr: documentation", - "category": "doc" - }, - { - "label": "pr: good example", - "category": "example" - }, - { - "label": "pr: internal", - "category": "code" - }, - { - "label": "pr: internal :house:", - "category": "code" - }, - { - "label": "pr: merged", - "category": "null" - }, - { - "label": "pr: needs review", - "category": "null" - }, - { - "label": "pr: new dependency", - "category": "ideas" - }, - { - "label": "pr: new feature", - "category": "ideas" - }, - { - "label": "pr: new feature :rocket:", - "category": "ideas" - }, - { - "label": "pr: polish :nail_care:", - "category": "maintenance" - }, - { - "label": "pr: ready for review", - "category": "null" - }, - { - "label": "pr: ready to be merged", - "category": "null" - }, - { - "label": "pr: reviewed-approved", - "category": "null" - }, - { - "label": "pr: reviewed-changes-requested", - "category": "null" - }, - { - "label": "pr: spec compliance :eyeglasses:", - "category": "doc" - }, - { - "label": "pr: underlying tools", - "category": "tool" - }, - { - "label": "pr: unreviewed", - "category": "null" - }, - { - "label": "pr: wip", - "category": "null" - }, - { - "label": "priority: critical", - "category": "null" - }, - { - "label": "priority: high", - "category": "null" - }, - { - "label": "priority: low", - "category": "null" - }, - { - "label": "priority: medium", - "category": "null" - }, - { - "label": "production", - "category": "null" - }, - { - "label": "project management", - "category": "projectManagement" - }, - { - "label": "question", - "category": "question" - }, - { - "label": "react flare", - "category": "code" - }, - { - "label": "react native", - "category": "code" - }, - { - "label": "ready", - "category": "null" - }, - { - "label": "refactor", - "category": "code" - }, - { - "label": "regression", - "category": "bug" - }, - { - "label": "release: alpha", - "category": "null" - }, - { - "label": "released", - "category": "null" - }, - { - "label": "reminder", - "category": "null" - }, - { - "label": "resolution: duplicate", - "category": "null" - }, - { - "label": "resolution: invalid", - "category": "null" - }, - { - "label": "resolution: needs more information", - "category": "null" - }, - { - "label": "resolution: support redirect", - "category": "null" - }, - { - "label": "review", - "category": "review" - }, - { - "label": "review in progress", - "category": "null" - }, - { - "label": "revisitinfuture", - "category": "ideas" - }, - { - "label": "rfc", - "category": "ideas" - }, - { - "label": "ruby", - "category": "code" - }, - { - "label": "security", - "category": "security" - }, - { - "label": "shell", - "category": "tool" - }, - { - "label": "socket.io client", - "category": "tool" - }, - { - "label": "spam", - "category": "null" - }, - { - "label": "spammy", - "category": "null" - }, - { - "label": "spec: async functions", - "category": "doc" - }, - { - "label": "spec: async generators", - "category": "doc" - }, - { - "label": "spec: bigint", - "category": "doc" - }, - { - "label": "spec: class fields", - "category": "doc" - }, - { - "label": "spec: classes", - "category": "doc" - }, - { - "label": "spec: decorators", - "category": "doc" - }, - { - "label": "spec: decorators (legacy)", - "category": "doc" - }, - { - "label": "spec: do expressions", - "category": "doc" - }, - { - "label": "stale", - "category": "null" - }, - { - "label": "status: accepted", - "category": "null" - }, - { - "label": "status: accepted :heavy_check_mark:", - "category": "null" - }, - { - "label": "status: available", - "category": "null" - }, - { - "label": "status: available :free:", - "category": "null" - }, - { - "label": "status: cla not signed", - "category": "null" - }, - { - "label": "status: code review request", - "category": "null" - }, - { - "label": "status: duplicate", - "category": "null" - }, - { - "label": "status: hacktoberfest approved", - "category": "null" - }, - { - "label": "status: help wanted", - "category": "null" - }, - { - "label": "status: in progress", - "category": "null" - }, - { - "label": "status: in progress :construction_worker:", - "category": "null" - }, - { - "label": "status: in review", - "category": "null" - }, - { - "label": "status: in review :detective:", - "category": "null" - }, - { - "label": "status: invalid", - "category": "null" - }, - { - "label": "status: left out", - "category": "null" - }, - { - "label": "status: left out :left_luggage:", - "category": "null" - }, - { - "label": "status: on hold", - "category": "null" - }, - { - "label": "status: on hold :stop_sign:", - "category": "null" - }, - { - "label": "status: ready for deploy", - "category": "null" - }, - { - "label": "status: review needed", - "category": "null" - }, - { - "label": "status: review needed :passport_control:", - "category": "null" - }, - { - "label": "status: waiting for feedback", - "category": "null" - }, - { - "label": "status: wontfix", - "category": "null" - }, - { - "label": "status: work in progress", - "category": "null" - }, - { - "label": "suggestion", - "category": "ideas" - }, - { - "label": "support", - "category": "null" - }, - { - "label": "syntax feature request", - "category": "ideas" - }, - { - "label": "technical debt", - "category": "maintenance" - }, - { - "label": "technical-debt", - "category": "maintenance" - }, - { - "label": "test", - "category": "test" - }, - { - "label": "test needed", - "category": "null" - }, - { - "label": "tests", - "category": "test" - }, - { - "label": "tips", - "category": "ideas" - }, - { - "label": "to do", - "category": "maintenance" - }, - { - "label": "to merge", - "category": "null" - }, - { - "label": "todo :spiral_notepad:", - "category": "maintenance" - }, - { - "label": "translation", - "category": "translation" - }, - { - "label": "travis-yml", - "category": "infra" - }, - { - "label": "triage", - "category": "null" - }, - { - "label": "triage-done", - "category": "null" - }, - { - "label": "trivial", - "category": "null" - }, - { - "label": "type: archive", - "category": "null" - }, - { - "label": "type: bug", - "category": "bug" - }, - { - "label": "type: bug :bug:", - "category": "bug" - }, - { - "label": "type: community enhancement", - "category": "maintenance" - }, - { - "label": "type: discuss :speech_balloon:", - "category": "ideas" - }, - { - "label": "type: doc update", - "category": "doc" - }, - { - "label": "type: documentation :book:", - "category": "doc" - }, - { - "label": "type: duplicate :repeat:", - "category": "null" - }, - { - "label": "type: enhancement", - "category": "maintenance" - }, - { - "label": "type: enhancement :bulb:", - "category": "ideas" - }, - { - "label": "type: getting started", - "category": "null" - }, - { - "label": "type: invalid :x:", - "category": "null" - }, - { - "label": "type: maintenance :construction:", - "category": "maintenance" - }, - { - "label": "type: non-library issue", - "category": "bug" - }, - { - "label": "type: question", - "category": "question" - }, - { - "label": "type: question :grey_question:", - "category": "question" - }, - { - "label": "type: regression :boom:", - "category": "bug" - }, - { - "label": "type: security", - "category": "security" - }, - { - "label": "type: sendgrid enhancement", - "category": "maintenance" - }, - { - "label": "type: support", - "category": "null" - }, - { - "label": "type: vulnerability :warning:", - "category": "security" - }, - { - "label": "types", - "category": "null" - }, - { - "label": "ui", - "category": "design" - }, - { - "label": "unable to reproduce", - "category": "null" - }, - { - "label": "unconfirmed", - "category": "null" - }, - { - "label": "update", - "category": "maintenance" - }, - { - "label": "upstream", - "category": "null" - }, - { - "label": "upstream bug", - "category": "bug" - }, - { - "label": "ux", - "category": "design" - }, - { - "label": "v3", - "category": "null" - }, - { - "label": "vulnerability", - "category": "security" - }, - { - "label": "website", - "category": "code" - }, - { - "label": "websocket", - "category": "tool" - }, - { - "label": "weekly-digest", - "category": "blog" - }, - { - "label": "windows", - "category": "platform" - }, - { - "label": "wip", - "category": "null" - }, - { - "label": "wontfix", - "category": "null" - }, - { - "label": "work in progress", - "category": "null" - }, - { - "label": "writer-needed", - "category": "null" - }, - { - "label": "wrong repo", - "category": "null" - }, - { - "label": "xhr-polling", - "category": "null" - } -] diff --git a/src/discover/sets/noCategory.js b/src/discover/sets/noCategory.js deleted file mode 100644 index 4c53ccaa..00000000 --- a/src/discover/sets/noCategory.js +++ /dev/null @@ -1,65 +0,0 @@ -module.exports = [ - 'area', - 'available', - 'awaiting', - 'backlog', //or could be a projectManagement one - 'beginner-friendly', - 'block', - 'bounty', - 'cla', - 'closed', - 'component', - 'concurrent', - 'confirm', - 'conflict', - 'contribution welcome', - 'deploy', - 'deprecate', - 'difficulty', - 'done', - 'duplicate', - 'easy', - 'enterprise', - 'exist', - 'gender', - 'feedback', - 'good first issue', - 'good first issue :+1:', - 'hard', - 'help', - 'help wanted', - 'high', - 'hold', - 'in progress', - 'inactive', - 'info', - 'invalid', - 'low', - 'medium', - 'merge', - 'mode', - 'n/a', - 'needs', - 'no', - 'priority', - 'proxy', - 'purge', - 'reminder', - 'repo', - 'reproduce', - 'requested', - 'resolution', - 'reviewed', - 'signed', - 'spam', - 'stale', - 'start', - 'to', - 'trivial', - 'unknown', - 'yes', - 'wip', - 'wontfix', - 'working', - 'wrong', -] diff --git a/src/discover/sets/simExceptions.js b/src/discover/sets/simExceptions.js deleted file mode 100644 index 3e1cf248..00000000 --- a/src/discover/sets/simExceptions.js +++ /dev/null @@ -1,115 +0,0 @@ -module.exports = { - //Those are matched wrongly by string-similarity - adapter: 'plugin', - android: 'platform', - angular: 'code', - api: 'code', - babel: 'tool', - 'back-end': 'code', - // block: null, - bootstrap: 'tool', - breaking: 'code', //or null - build: 'infra', - cd: 'infra', - cdn: 'platform', - ci: 'infra', - cleanup: 'maintenance', - cli: 'code', //or tool - chat: 'ideas', - configuration: 'code', - core: 'maintenance', - chore: 'maintenance', - crash: 'bug', //or null - csharp: 'code', - css: 'code', - currency: 'financial', - update: 'maintenance', - defect: 'bug', - dep: 'maintenance', - dependency: 'maintenance', - device: 'platform', - digest: 'blog', - discuss: 'ideas', - document: 'doc', - dom: 'code', - e2e: 'test', - electron: 'tool', - es6: 'code', - external: 'plugin', - font: 'design', - frontend: 'code', - future: 'ideas', - graphic: 'design', - greenkeeper: 'infra', - hack: 'code', - hacked: 'security', - handshake: 'business', - hook: 'code', - html: 'code', - legal: 'security', - lib: 'tool', //or code - library: 'tool', //or code - lint: 'maintenance', - linux: 'platform', - logo: 'design', - icon: 'design', - insight: 'ideas', - install: 'tool', - internal: 'code', - issue: 'bug', - ios: 'platform', - javascript: 'code', - js: 'code', - mac: 'platform', - meet: 'eventOrganizing', - mocha: 'test', - module: 'code', - new: 'ideas', - node: 'platform', - opinion: 'ideas', - operation: 'maintenance', - optim: 'code', - osx: 'platform', - package: 'platform', - parser: 'tool', - php: 'code', - pull: 'maintenance', - pwa: 'code', - react: 'code', - regression: 'bug', - rendering: 'code', - request: 'ideas', - rfc: 'ideas', - ruby: 'code', - shell: 'tool', - socket: 'tool', - site: 'code', //website - spa: 'code', - spec: 'doc', - suggestion: 'ideas', - tip: 'ideas', - todo: 'maintenance', - travis: 'infra', - ui: 'design', //or code - ux: 'design', - vue: 'code', - vuln: 'security', - windows: 'platform', - workflow: 'infra', //or projectManagement? - // EMOJIS - ':arrow_heading_down:': 'maintenance', - ':book:': 'doc', - ':boom:': 'bug', //or null (for breaking change) - ':bug:': 'bug', //not really needed - ':bulb:': 'ideas', - ':construction:': 'maintenance', //or null (for WIP) - ':detective:': 'null', - ':grey_question:': 'null', - ':heavy_check_mark:': 'null', - ':nail_care:': 'maintenance', - ':rocket:': 'maintenance', //or code or ideas - ':sos:': 'null', - ':speech_balloon:': 'null', - ':stop_sign:': 'null', - ':warning:': 'security', -} diff --git a/src/discover/token.js b/src/discover/token.js deleted file mode 100644 index 9b801786..00000000 --- a/src/discover/token.js +++ /dev/null @@ -1,33 +0,0 @@ -const jst = require('js-tokens').default - -const BAD_TOKENS = [ - //Separators - '', - ' ', - '-', - ':', - '=', - //conjunctions - 'and', - 'but', - 'for', - 'nor', - 'or', - 'so', - 'yet', - //some adverbs - 'almost', - 'enough', - 'just', - 'too', - 'very', - //other - 'due', - 'be', -] - -const tokenize = data => { - return data.match(jst).filter(chr => !BAD_TOKENS.includes(chr)) -} - -module.exports = tokenize diff --git a/src/discover/valid.js b/src/discover/valid.js deleted file mode 100644 index b0185e21..00000000 --- a/src/discover/valid.js +++ /dev/null @@ -1,57 +0,0 @@ -const ck = require('chalk') -const findCat = require('./findCategory') - -const str = res => - `{target: ${ck.green(res.target)}, rating: ${ck.green( - res.rating, - )}, ref: ${ck.green(res.ref)}}` - -/* eslint-disable no-console */ -module.exports = (data, log = true) => { - const actual = findCat(data.label, true) - if (actual === null) { - const equal = `${actual}` === data.category - if (log) { - /* eslint-disable babel/no-unused-expressions */ - equal - ? console.log( - ck.green('OK'), - ck.magenta(data.label), - 'in', - ck.cyan(data.category), - ) - : console.log( - ck.red('NO'), - ck.magenta(data.label), - ': actual/expected', - ck.yellow(actual), - ck.cyan(data.category), - ) - /* eslint-enable babel/no-unused-expressions */ - } - return equal - } - const equal = actual.target === data.category - if (log) { - /* eslint-disable babel/no-unused-expressions */ - equal - ? console.log( - ck.green('OK'), - ck.magenta(data.label), - 'in', - ck.cyan(data.category), - ) - : console.log( - ck.red('NO'), - ck.magenta(data.label), - ': actual/expected', - ck.yellow(actual.target), - ck.cyan(data.category), - '\n\tactual (full)=', - str(actual), - ) - /* eslint-disable babel/no-unused-expressions */ - } - return equal -} -/* eslint-enable no-console */