- Put your slack token here
echo '{ "TOKEN": "SLACK_TOKEN" }' > token.json
- Update the
config.json
npm start
- Post the
config.json
START_MESSAGE
to a channel - Post
whose turn
to the thread to announce the first pick - Everything gets written to
db.json
Last active
September 7, 2018 00:31
-
-
Save lukekarrys/f897d2c8db4059c412ea29b524257bf7 to your computer and use it in GitHub Desktop.
Slack Draft
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
node_modules | |
token.json | |
db.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Move to package.json someday https://github.com/prettier/prettier/issues/3460 | |
package.json | |
package-lock.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"START_MESSAGE": "Here is the thread for the 2018-2019 NFL Pretend Gambling Grand National Champion of the World!", | |
"USERS": ["gar", "kate", "luke", "adam", "eric", "elliott"], | |
"ADMIN": "luke", | |
"ORDER": [ | |
[1, 12, 13, 24], | |
[2, 11, 14, 23], | |
[3, 10, 15, 22], | |
[4, 9, 16, 21], | |
[5, 8, 17, 20], | |
[6, 7, 18, 19] | |
], | |
"TEAMS": { | |
"ARI": { "vegas": 5.5, "previous": 8, "display": "Arizona Cardinals" }, | |
"ATL": { "vegas": 9, "previous": 10, "display": "Atlanta Falcons" }, | |
"BAL": { "vegas": 8, "previous": 9, "display": "Baltimore Ravens" }, | |
"BUF": { "vegas": 6, "previous": 9, "display": "Buffalo Bills" }, | |
"CAR": { "vegas": 9, "previous": 11, "display": "Carolina Panthers" }, | |
"CHI": { "vegas": 7, "previous": 5, "display": "Chicago Bears" }, | |
"CIN": { "vegas": 6.5, "previous": 7, "display": "Cincinnati Bengals" }, | |
"CLE": { "vegas": 5.5, "previous": 0, "display": "Cleveland Browns" }, | |
"DAL": { "vegas": 8.5, "previous": 9, "display": "Dallas Cowboys" }, | |
"DEN": { "vegas": 7, "previous": 5, "display": "Denver Broncos" }, | |
"DET": { "vegas": 7.5, "previous": 9, "display": "Detroit Lions" }, | |
"GB": { "vegas": 10, "previous": 7, "display": "Green Bay Packers" }, | |
"HOU": { "vegas": 8.5, "previous": 4, "display": "Houston Texans" }, | |
"IND": { "vegas": 6.5, "previous": 4, "display": "Indianapolis Colts" }, | |
"JAC": { "vegas": 9, "previous": 10, "display": "Jacksonville Jaguars" }, | |
"KC": { "vegas": 8.5, "previous": 10, "display": "Kansas City Chiefs" }, | |
"LAC": { "vegas": 9.5, "previous": 9, "display": "Los Angeles Chargers" }, | |
"LAR": { "vegas": 10, "previous": 11, "display": "Los Angeles Rams" }, | |
"MIA": { "vegas": 6.5, "previous": 6, "display": "Miami Dolphins" }, | |
"MIN": { "vegas": 10, "previous": 13, "display": "Minnesota Vikings" }, | |
"NEP": { "vegas": 11, "previous": 13, "display": "New England Patriots" }, | |
"NO": { "vegas": 9.5, "previous": 11, "display": "New Orleans Saints" }, | |
"NYG": { "vegas": 7, "previous": 3, "display": "New York Giants" }, | |
"NYJ": { "vegas": 6, "previous": 5, "display": "New York Jets" }, | |
"OAK": { "vegas": 7.5, "previous": 6, "display": "Oakland Raiders" }, | |
"PHI": { "vegas": 10, "previous": 13, "display": "Philadelphia Eagles" }, | |
"PIT": { "vegas": 10.5, "previous": 13, "display": "Pittsburgh Steelers" }, | |
"SEA": { "vegas": 8, "previous": 9, "display": "Seattle Seahawks" }, | |
"SF": { "vegas": 8.5, "previous": 6, "display": "San Francisco 49ers" }, | |
"TB": { "vegas": 6.5, "previous": 5, "display": "Tampa Bay Buccaneers" }, | |
"TEN": { "vegas": 8, "previous": 9, "display": "Tennessee Titans" }, | |
"WAS": { "vegas": 7, "previous": 7, "display": "Washington Redskins" } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const slack = require('slack') | |
const _ = require('lodash') | |
const jsonfile = require('jsonfile') | |
const { TOKEN, USERS, ADMIN, ORDER, START_MESSAGE, TEAMS } = Object.assign( | |
require('./config.json'), | |
require('./token.json') | |
) | |
if (ORDER.length !== USERS.length) { | |
throw new Error('ORDER and USERS must have the same number of items') | |
} | |
if (!TOKEN) { | |
throw new Error('TOKEN is required') | |
} | |
let DB = null | |
const DB_PATH = './db.json' | |
const readDb = () => jsonfile.readFileSync(DB_PATH) | |
const writeToDb = (newValues = {}) => { | |
let values = null | |
try { | |
values = readDb() | |
} catch (e) { | |
values = {} | |
} | |
jsonfile.writeFileSync(DB_PATH, _.merge(values, newValues), { spaces: 2 }) | |
DB = readDb() | |
} | |
const findUserByName = (name) => DB.USERS.find((u) => u.name === name) | |
const getUsers = () => | |
new Promise((resolve, reject) => { | |
if (DB.USERS) return resolve(DB.USERS) | |
slack.users.list({ token: TOKEN }, (err, data) => { | |
if (err) return reject(err) | |
const { members } = data | |
const picked = members | |
.filter(({ name }) => USERS.includes(name.toLowerCase())) | |
.map((u) => _.pick(u, ['id', 'name'])) | |
resolve(_.shuffle(picked)) | |
}) | |
}) | |
const postToThread = (text) => | |
new Promise((resolve, reject) => { | |
if (!DB.PARENT_MESSAGE) return reject(new Error('No thread')) | |
slack.chat.postMessage( | |
{ | |
token: TOKEN, | |
channel: DB.PARENT_MESSAGE.channel, | |
thread_ts: DB.PARENT_MESSAGE.ts, | |
text | |
}, | |
(err, data) => { | |
if (err) return reject(err) | |
resolve(data) | |
} | |
) | |
}) | |
const teamsPicked = () => Object.keys(DB.PICKS).reduce((acc, key) => [...acc, ...Object.keys(DB.PICKS[key])], []) | |
const teamsLeft = () => _.without(Object.keys(TEAMS), ...teamsPicked()) | |
const getUserByPick = () => { | |
const index = teamsPicked().length + 1 | |
const userIndex = ORDER.findIndex((pickIndices) => pickIndices.includes(index)) | |
return userIndex === -1 ? null : DB.USERS[userIndex] | |
} | |
const announcePick = async (prepend = '') => { | |
const user = getUserByPick() | |
if (user) { | |
await postToThread([prepend, `@${user.name} it is your turn`].filter(Boolean).join('\n')) | |
} else { | |
await postToThread([prepend, `Yay! We're all done!`].filter(Boolean).join('\n')) | |
} | |
} | |
const makePick = async (team) => { | |
if (Object.keys(TEAMS).includes(team)) { | |
if (teamsLeft().includes(team)) { | |
const user = getUserByPick() | |
writeToDb({ | |
PICKS: { | |
[user.id]: { [team]: true } | |
} | |
}) | |
await announcePick(`${user.name} has picked ${team}`) | |
} else { | |
await postToThread(`${team} has already been picked`) | |
} | |
} | |
} | |
const teamsLeftWithInfo = () => | |
_.orderBy(teamsLeft().map((id) => Object.assign({ id }, TEAMS[id])), ['vegas'], ['desc']) | |
.map((t) => `${t.display} (${t.id}) - Over/Under ${t.vegas} - 2017 - ${t.previous}`) | |
.join('\n') | |
const picksWithInfo = () => DB.USERS.map((u) => `${u.name} - ${Object.keys(DB.PICKS[u.id]).join(', ')}`).join('\n') | |
const onMessage = async (message) => { | |
const { type, text, thread_ts, user: user_id } = message | |
const user = DB.USERS.find(({ id }) => id === user_id) | |
const isAdmin = findUserByName(ADMIN).id === user_id | |
// Ignore any non-message or not from one of the participants | |
if (!user || !text || type !== 'message') return | |
// No parent message yet so listen for all messages to find one | |
if (!DB.PARENT_MESSAGE && text === START_MESSAGE && isAdmin) { | |
writeToDb({ | |
PARENT_MESSAGE: _.pick(message, ['ts', 'channel']) | |
}) | |
return | |
} | |
// Now only listen for replies to this thread | |
if (DB.PARENT_MESSAGE && thread_ts === DB.PARENT_MESSAGE.ts) { | |
if (text === 'whose turn') { | |
await announcePick() | |
} else if (text === 'teams left') { | |
await postToThread(teamsLeftWithInfo()) | |
} else if (text === 'current picks') { | |
await postToThread(picksWithInfo()) | |
} else if (getUserByPick().id === user_id || isAdmin) { | |
// If the current user or the admin is messaging then see if the text | |
// matches a team | |
await makePick(text) | |
} | |
} | |
} | |
const main = async () => { | |
// Init the db | |
writeToDb() | |
const users = await getUsers() | |
writeToDb({ | |
USERS: users, | |
PICKS: users.reduce((acc, user) => { | |
acc[user.id] = {} | |
return acc | |
}, {}) | |
}) | |
const bot = slack.rtm.client() | |
bot.message(onMessage) | |
bot.listen({ token: TOKEN }) | |
} | |
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "slack-draft", | |
"version": "1.0.0", | |
"lockfileVersion": 1, | |
"requires": true, | |
"dependencies": { | |
"@babel/code-frame": { | |
"version": "7.0.0", | |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", | |
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", | |
"dev": true, | |
"requires": { | |
"@babel/highlight": "^7.0.0" | |
} | |
}, | |
"@babel/highlight": { | |
"version": "7.0.0", | |
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", | |
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", | |
"dev": true, | |
"requires": { | |
"chalk": "^2.0.0", | |
"esutils": "^2.0.2", | |
"js-tokens": "^4.0.0" | |
} | |
}, | |
"acorn": { | |
"version": "5.7.2", | |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", | |
"integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", | |
"dev": true | |
}, | |
"acorn-jsx": { | |
"version": "4.1.1", | |
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", | |
"integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", | |
"dev": true, | |
"requires": { | |
"acorn": "^5.0.3" | |
} | |
}, | |
"ajv": { | |
"version": "6.5.3", | |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", | |
"integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", | |
"dev": true, | |
"requires": { | |
"fast-deep-equal": "^2.0.1", | |
"fast-json-stable-stringify": "^2.0.0", | |
"json-schema-traverse": "^0.4.1", | |
"uri-js": "^4.2.2" | |
} | |
}, | |
"ajv-keywords": { | |
"version": "3.2.0", | |
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", | |
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", | |
"dev": true | |
}, | |
"ansi-escapes": { | |
"version": "3.1.0", | |
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", | |
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", | |
"dev": true | |
}, | |
"ansi-regex": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", | |
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", | |
"dev": true | |
}, | |
"ansi-styles": { | |
"version": "3.2.1", | |
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | |
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | |
"dev": true, | |
"requires": { | |
"color-convert": "^1.9.0" | |
} | |
}, | |
"argparse": { | |
"version": "1.0.10", | |
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", | |
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", | |
"dev": true, | |
"requires": { | |
"sprintf-js": "~1.0.2" | |
} | |
}, | |
"array-union": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", | |
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", | |
"dev": true, | |
"requires": { | |
"array-uniq": "^1.0.1" | |
} | |
}, | |
"array-uniq": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", | |
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", | |
"dev": true | |
}, | |
"arrify": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", | |
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", | |
"dev": true | |
}, | |
"async-limiter": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", | |
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" | |
}, | |
"balanced-match": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | |
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", | |
"dev": true | |
}, | |
"brace-expansion": { | |
"version": "1.1.11", | |
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | |
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | |
"dev": true, | |
"requires": { | |
"balanced-match": "^1.0.0", | |
"concat-map": "0.0.1" | |
} | |
}, | |
"caller-path": { | |
"version": "0.1.0", | |
"resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", | |
"integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", | |
"dev": true, | |
"requires": { | |
"callsites": "^0.2.0" | |
} | |
}, | |
"callsites": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", | |
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", | |
"dev": true | |
}, | |
"chalk": { | |
"version": "2.4.1", | |
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", | |
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", | |
"dev": true, | |
"requires": { | |
"ansi-styles": "^3.2.1", | |
"escape-string-regexp": "^1.0.5", | |
"supports-color": "^5.3.0" | |
} | |
}, | |
"chardet": { | |
"version": "0.7.0", | |
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", | |
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", | |
"dev": true | |
}, | |
"circular-json": { | |
"version": "0.3.3", | |
"resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", | |
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", | |
"dev": true | |
}, | |
"cli-cursor": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", | |
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", | |
"dev": true, | |
"requires": { | |
"restore-cursor": "^2.0.0" | |
} | |
}, | |
"cli-width": { | |
"version": "2.2.0", | |
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", | |
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", | |
"dev": true | |
}, | |
"color-convert": { | |
"version": "1.9.3", | |
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | |
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | |
"dev": true, | |
"requires": { | |
"color-name": "1.1.3" | |
} | |
}, | |
"color-name": { | |
"version": "1.1.3", | |
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | |
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", | |
"dev": true | |
}, | |
"concat-map": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | |
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", | |
"dev": true | |
}, | |
"cross-spawn": { | |
"version": "6.0.5", | |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", | |
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", | |
"dev": true, | |
"requires": { | |
"nice-try": "^1.0.4", | |
"path-key": "^2.0.1", | |
"semver": "^5.5.0", | |
"shebang-command": "^1.2.0", | |
"which": "^1.2.9" | |
} | |
}, | |
"debug": { | |
"version": "3.1.0", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | |
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | |
"dev": true, | |
"requires": { | |
"ms": "2.0.0" | |
} | |
}, | |
"deep-is": { | |
"version": "0.1.3", | |
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", | |
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", | |
"dev": true | |
}, | |
"del": { | |
"version": "2.2.2", | |
"resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", | |
"integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", | |
"dev": true, | |
"requires": { | |
"globby": "^5.0.0", | |
"is-path-cwd": "^1.0.0", | |
"is-path-in-cwd": "^1.0.0", | |
"object-assign": "^4.0.1", | |
"pify": "^2.0.0", | |
"pinkie-promise": "^2.0.0", | |
"rimraf": "^2.2.8" | |
} | |
}, | |
"doctrine": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", | |
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", | |
"dev": true, | |
"requires": { | |
"esutils": "^2.0.2" | |
} | |
}, | |
"escape-string-regexp": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | |
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", | |
"dev": true | |
}, | |
"eslint": { | |
"version": "5.5.0", | |
"resolved": "https://registry.npmjs.org/eslint/-/eslint-5.5.0.tgz", | |
"integrity": "sha512-m+az4vYehIJgl1Z0gb25KnFXeqQRdNreYsei1jdvkd9bB+UNQD3fsuiC2AWSQ56P+/t++kFSINZXFbfai+krOw==", | |
"dev": true, | |
"requires": { | |
"@babel/code-frame": "^7.0.0", | |
"ajv": "^6.5.3", | |
"chalk": "^2.1.0", | |
"cross-spawn": "^6.0.5", | |
"debug": "^3.1.0", | |
"doctrine": "^2.1.0", | |
"eslint-scope": "^4.0.0", | |
"eslint-utils": "^1.3.1", | |
"eslint-visitor-keys": "^1.0.0", | |
"espree": "^4.0.0", | |
"esquery": "^1.0.1", | |
"esutils": "^2.0.2", | |
"file-entry-cache": "^2.0.0", | |
"functional-red-black-tree": "^1.0.1", | |
"glob": "^7.1.2", | |
"globals": "^11.7.0", | |
"ignore": "^4.0.6", | |
"imurmurhash": "^0.1.4", | |
"inquirer": "^6.1.0", | |
"is-resolvable": "^1.1.0", | |
"js-yaml": "^3.12.0", | |
"json-stable-stringify-without-jsonify": "^1.0.1", | |
"levn": "^0.3.0", | |
"lodash": "^4.17.5", | |
"minimatch": "^3.0.4", | |
"mkdirp": "^0.5.1", | |
"natural-compare": "^1.4.0", | |
"optionator": "^0.8.2", | |
"path-is-inside": "^1.0.2", | |
"pluralize": "^7.0.0", | |
"progress": "^2.0.0", | |
"regexpp": "^2.0.0", | |
"require-uncached": "^1.0.3", | |
"semver": "^5.5.1", | |
"strip-ansi": "^4.0.0", | |
"strip-json-comments": "^2.0.1", | |
"table": "^4.0.3", | |
"text-table": "^0.2.0" | |
} | |
}, | |
"eslint-config-prettier": { | |
"version": "3.0.1", | |
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-3.0.1.tgz", | |
"integrity": "sha512-vA0TB8HCx/idHXfKHYcg9J98p0Q8nkfNwNAoP7e+ywUidn6ScaFS5iqncZAHPz+/a0A/tp657ulFHFx/2JDP4Q==", | |
"dev": true, | |
"requires": { | |
"get-stdin": "^6.0.0" | |
} | |
}, | |
"eslint-plugin-prettier": { | |
"version": "2.6.2", | |
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz", | |
"integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==", | |
"dev": true, | |
"requires": { | |
"fast-diff": "^1.1.1", | |
"jest-docblock": "^21.0.0" | |
} | |
}, | |
"eslint-scope": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", | |
"integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", | |
"dev": true, | |
"requires": { | |
"esrecurse": "^4.1.0", | |
"estraverse": "^4.1.1" | |
} | |
}, | |
"eslint-utils": { | |
"version": "1.3.1", | |
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", | |
"integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", | |
"dev": true | |
}, | |
"eslint-visitor-keys": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", | |
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", | |
"dev": true | |
}, | |
"espree": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", | |
"integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", | |
"dev": true, | |
"requires": { | |
"acorn": "^5.6.0", | |
"acorn-jsx": "^4.1.1" | |
} | |
}, | |
"esprima": { | |
"version": "4.0.1", | |
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | |
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | |
"dev": true | |
}, | |
"esquery": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", | |
"integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", | |
"dev": true, | |
"requires": { | |
"estraverse": "^4.0.0" | |
} | |
}, | |
"esrecurse": { | |
"version": "4.2.1", | |
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", | |
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", | |
"dev": true, | |
"requires": { | |
"estraverse": "^4.1.0" | |
} | |
}, | |
"estraverse": { | |
"version": "4.2.0", | |
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", | |
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", | |
"dev": true | |
}, | |
"esutils": { | |
"version": "2.0.2", | |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", | |
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", | |
"dev": true | |
}, | |
"external-editor": { | |
"version": "3.0.3", | |
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", | |
"integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", | |
"dev": true, | |
"requires": { | |
"chardet": "^0.7.0", | |
"iconv-lite": "^0.4.24", | |
"tmp": "^0.0.33" | |
} | |
}, | |
"fast-deep-equal": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", | |
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", | |
"dev": true | |
}, | |
"fast-diff": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", | |
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", | |
"dev": true | |
}, | |
"fast-json-stable-stringify": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", | |
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", | |
"dev": true | |
}, | |
"fast-levenshtein": { | |
"version": "2.0.6", | |
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", | |
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", | |
"dev": true | |
}, | |
"figures": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", | |
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", | |
"dev": true, | |
"requires": { | |
"escape-string-regexp": "^1.0.5" | |
} | |
}, | |
"file-entry-cache": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", | |
"integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", | |
"dev": true, | |
"requires": { | |
"flat-cache": "^1.2.1", | |
"object-assign": "^4.0.1" | |
} | |
}, | |
"flat-cache": { | |
"version": "1.3.0", | |
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", | |
"integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", | |
"dev": true, | |
"requires": { | |
"circular-json": "^0.3.1", | |
"del": "^2.0.2", | |
"graceful-fs": "^4.1.2", | |
"write": "^0.2.1" | |
} | |
}, | |
"fs.realpath": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | |
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", | |
"dev": true | |
}, | |
"functional-red-black-tree": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", | |
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", | |
"dev": true | |
}, | |
"get-stdin": { | |
"version": "6.0.0", | |
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", | |
"integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", | |
"dev": true | |
}, | |
"glob": { | |
"version": "7.1.3", | |
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", | |
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", | |
"dev": true, | |
"requires": { | |
"fs.realpath": "^1.0.0", | |
"inflight": "^1.0.4", | |
"inherits": "2", | |
"minimatch": "^3.0.4", | |
"once": "^1.3.0", | |
"path-is-absolute": "^1.0.0" | |
} | |
}, | |
"globals": { | |
"version": "11.7.0", | |
"resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", | |
"integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", | |
"dev": true | |
}, | |
"globby": { | |
"version": "5.0.0", | |
"resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", | |
"integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", | |
"dev": true, | |
"requires": { | |
"array-union": "^1.0.1", | |
"arrify": "^1.0.0", | |
"glob": "^7.0.3", | |
"object-assign": "^4.0.1", | |
"pify": "^2.0.0", | |
"pinkie-promise": "^2.0.0" | |
} | |
}, | |
"graceful-fs": { | |
"version": "4.1.11", | |
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", | |
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" | |
}, | |
"has-flag": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | |
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | |
"dev": true | |
}, | |
"iconv-lite": { | |
"version": "0.4.24", | |
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | |
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | |
"dev": true, | |
"requires": { | |
"safer-buffer": ">= 2.1.2 < 3" | |
} | |
}, | |
"ignore": { | |
"version": "4.0.6", | |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", | |
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", | |
"dev": true | |
}, | |
"imurmurhash": { | |
"version": "0.1.4", | |
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | |
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", | |
"dev": true | |
}, | |
"inflight": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | |
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | |
"dev": true, | |
"requires": { | |
"once": "^1.3.0", | |
"wrappy": "1" | |
} | |
}, | |
"inherits": { | |
"version": "2.0.3", | |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | |
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", | |
"dev": true | |
}, | |
"inquirer": { | |
"version": "6.2.0", | |
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", | |
"integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", | |
"dev": true, | |
"requires": { | |
"ansi-escapes": "^3.0.0", | |
"chalk": "^2.0.0", | |
"cli-cursor": "^2.1.0", | |
"cli-width": "^2.0.0", | |
"external-editor": "^3.0.0", | |
"figures": "^2.0.0", | |
"lodash": "^4.17.10", | |
"mute-stream": "0.0.7", | |
"run-async": "^2.2.0", | |
"rxjs": "^6.1.0", | |
"string-width": "^2.1.0", | |
"strip-ansi": "^4.0.0", | |
"through": "^2.3.6" | |
} | |
}, | |
"is-fullwidth-code-point": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", | |
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", | |
"dev": true | |
}, | |
"is-path-cwd": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", | |
"integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", | |
"dev": true | |
}, | |
"is-path-in-cwd": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", | |
"integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", | |
"dev": true, | |
"requires": { | |
"is-path-inside": "^1.0.0" | |
} | |
}, | |
"is-path-inside": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", | |
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", | |
"dev": true, | |
"requires": { | |
"path-is-inside": "^1.0.1" | |
} | |
}, | |
"is-promise": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", | |
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", | |
"dev": true | |
}, | |
"is-resolvable": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", | |
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", | |
"dev": true | |
}, | |
"isexe": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", | |
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", | |
"dev": true | |
}, | |
"jest-docblock": { | |
"version": "21.2.0", | |
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", | |
"integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", | |
"dev": true | |
}, | |
"js-tokens": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", | |
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", | |
"dev": true | |
}, | |
"js-yaml": { | |
"version": "3.12.0", | |
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", | |
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", | |
"dev": true, | |
"requires": { | |
"argparse": "^1.0.7", | |
"esprima": "^4.0.0" | |
} | |
}, | |
"json-schema-traverse": { | |
"version": "0.4.1", | |
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | |
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", | |
"dev": true | |
}, | |
"json-stable-stringify-without-jsonify": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", | |
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", | |
"dev": true | |
}, | |
"jsonfile": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", | |
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", | |
"requires": { | |
"graceful-fs": "^4.1.6" | |
} | |
}, | |
"levn": { | |
"version": "0.3.0", | |
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", | |
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", | |
"dev": true, | |
"requires": { | |
"prelude-ls": "~1.1.2", | |
"type-check": "~0.3.2" | |
} | |
}, | |
"lodash": { | |
"version": "4.17.10", | |
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", | |
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" | |
}, | |
"mimic-fn": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", | |
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", | |
"dev": true | |
}, | |
"minimatch": { | |
"version": "3.0.4", | |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | |
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | |
"dev": true, | |
"requires": { | |
"brace-expansion": "^1.1.7" | |
} | |
}, | |
"minimist": { | |
"version": "0.0.8", | |
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | |
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", | |
"dev": true | |
}, | |
"mkdirp": { | |
"version": "0.5.1", | |
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", | |
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", | |
"dev": true, | |
"requires": { | |
"minimist": "0.0.8" | |
} | |
}, | |
"ms": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", | |
"dev": true | |
}, | |
"mute-stream": { | |
"version": "0.0.7", | |
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", | |
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", | |
"dev": true | |
}, | |
"natural-compare": { | |
"version": "1.4.0", | |
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", | |
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", | |
"dev": true | |
}, | |
"nice-try": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", | |
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", | |
"dev": true | |
}, | |
"object-assign": { | |
"version": "4.1.1", | |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | |
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", | |
"dev": true | |
}, | |
"once": { | |
"version": "1.4.0", | |
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | |
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | |
"dev": true, | |
"requires": { | |
"wrappy": "1" | |
} | |
}, | |
"onetime": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", | |
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", | |
"dev": true, | |
"requires": { | |
"mimic-fn": "^1.0.0" | |
} | |
}, | |
"optionator": { | |
"version": "0.8.2", | |
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", | |
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", | |
"dev": true, | |
"requires": { | |
"deep-is": "~0.1.3", | |
"fast-levenshtein": "~2.0.4", | |
"levn": "~0.3.0", | |
"prelude-ls": "~1.1.2", | |
"type-check": "~0.3.2", | |
"wordwrap": "~1.0.0" | |
} | |
}, | |
"os-tmpdir": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", | |
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", | |
"dev": true | |
}, | |
"path-is-absolute": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | |
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", | |
"dev": true | |
}, | |
"path-is-inside": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", | |
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", | |
"dev": true | |
}, | |
"path-key": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", | |
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", | |
"dev": true | |
}, | |
"pify": { | |
"version": "2.3.0", | |
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", | |
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", | |
"dev": true | |
}, | |
"pinkie": { | |
"version": "2.0.4", | |
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", | |
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", | |
"dev": true | |
}, | |
"pinkie-promise": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", | |
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", | |
"dev": true, | |
"requires": { | |
"pinkie": "^2.0.0" | |
} | |
}, | |
"pluralize": { | |
"version": "7.0.0", | |
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", | |
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", | |
"dev": true | |
}, | |
"prelude-ls": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", | |
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", | |
"dev": true | |
}, | |
"prettier": { | |
"version": "1.14.2", | |
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.2.tgz", | |
"integrity": "sha512-McHPg0n1pIke+A/4VcaS2en+pTNjy4xF+Uuq86u/5dyDO59/TtFZtQ708QIRkEZ3qwKz3GVkVa6mpxK/CpB8Rg==", | |
"dev": true | |
}, | |
"progress": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", | |
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", | |
"dev": true | |
}, | |
"punycode": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | |
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", | |
"dev": true | |
}, | |
"regexpp": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", | |
"integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", | |
"dev": true | |
}, | |
"require-uncached": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", | |
"integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", | |
"dev": true, | |
"requires": { | |
"caller-path": "^0.1.0", | |
"resolve-from": "^1.0.0" | |
} | |
}, | |
"resolve-from": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", | |
"integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", | |
"dev": true | |
}, | |
"restore-cursor": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", | |
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", | |
"dev": true, | |
"requires": { | |
"onetime": "^2.0.0", | |
"signal-exit": "^3.0.2" | |
} | |
}, | |
"rimraf": { | |
"version": "2.6.2", | |
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", | |
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", | |
"dev": true, | |
"requires": { | |
"glob": "^7.0.5" | |
} | |
}, | |
"run-async": { | |
"version": "2.3.0", | |
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", | |
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", | |
"dev": true, | |
"requires": { | |
"is-promise": "^2.1.0" | |
} | |
}, | |
"rxjs": { | |
"version": "6.3.2", | |
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", | |
"integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", | |
"dev": true, | |
"requires": { | |
"tslib": "^1.9.0" | |
} | |
}, | |
"safe-buffer": { | |
"version": "5.1.2", | |
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | |
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | |
}, | |
"safer-buffer": { | |
"version": "2.1.2", | |
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | |
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", | |
"dev": true | |
}, | |
"semver": { | |
"version": "5.5.1", | |
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", | |
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", | |
"dev": true | |
}, | |
"shebang-command": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", | |
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", | |
"dev": true, | |
"requires": { | |
"shebang-regex": "^1.0.0" | |
} | |
}, | |
"shebang-regex": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", | |
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", | |
"dev": true | |
}, | |
"signal-exit": { | |
"version": "3.0.2", | |
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", | |
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", | |
"dev": true | |
}, | |
"slack": { | |
"version": "8.4.2", | |
"resolved": "https://registry.npmjs.org/slack/-/slack-8.4.2.tgz", | |
"integrity": "sha1-2du8+/DKS7z4Ecut1JJyZoheMAc=", | |
"requires": { | |
"tiny-json-http": "^5.1.0", | |
"ws": "^3.1.0" | |
}, | |
"dependencies": { | |
"ws": { | |
"version": "3.3.3", | |
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", | |
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", | |
"requires": { | |
"async-limiter": "~1.0.0", | |
"safe-buffer": "~5.1.0", | |
"ultron": "~1.1.0" | |
} | |
} | |
} | |
}, | |
"slice-ansi": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", | |
"integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", | |
"dev": true, | |
"requires": { | |
"is-fullwidth-code-point": "^2.0.0" | |
} | |
}, | |
"sprintf-js": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | |
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", | |
"dev": true | |
}, | |
"string-width": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", | |
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", | |
"dev": true, | |
"requires": { | |
"is-fullwidth-code-point": "^2.0.0", | |
"strip-ansi": "^4.0.0" | |
} | |
}, | |
"strip-ansi": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", | |
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", | |
"dev": true, | |
"requires": { | |
"ansi-regex": "^3.0.0" | |
} | |
}, | |
"strip-json-comments": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", | |
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", | |
"dev": true | |
}, | |
"supports-color": { | |
"version": "5.5.0", | |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | |
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | |
"dev": true, | |
"requires": { | |
"has-flag": "^3.0.0" | |
} | |
}, | |
"table": { | |
"version": "4.0.3", | |
"resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", | |
"integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", | |
"dev": true, | |
"requires": { | |
"ajv": "^6.0.1", | |
"ajv-keywords": "^3.0.0", | |
"chalk": "^2.1.0", | |
"lodash": "^4.17.4", | |
"slice-ansi": "1.0.0", | |
"string-width": "^2.1.1" | |
} | |
}, | |
"text-table": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", | |
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", | |
"dev": true | |
}, | |
"through": { | |
"version": "2.3.8", | |
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | |
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", | |
"dev": true | |
}, | |
"tiny-json-http": { | |
"version": "5.3.2", | |
"resolved": "https://registry.npmjs.org/tiny-json-http/-/tiny-json-http-5.3.2.tgz", | |
"integrity": "sha512-aACNqxtULveH36S0RKiQ/tvB9tiihvSyWac0JgbRihfYaSJAz42/5z++pdY0KWMsti7rq0Uagc7YDa2+EmrZPw==" | |
}, | |
"tmp": { | |
"version": "0.0.33", | |
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", | |
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", | |
"dev": true, | |
"requires": { | |
"os-tmpdir": "~1.0.2" | |
} | |
}, | |
"tslib": { | |
"version": "1.9.3", | |
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", | |
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", | |
"dev": true | |
}, | |
"type-check": { | |
"version": "0.3.2", | |
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", | |
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", | |
"dev": true, | |
"requires": { | |
"prelude-ls": "~1.1.2" | |
} | |
}, | |
"ultron": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", | |
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" | |
}, | |
"uri-js": { | |
"version": "4.2.2", | |
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", | |
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", | |
"dev": true, | |
"requires": { | |
"punycode": "^2.1.0" | |
} | |
}, | |
"which": { | |
"version": "1.3.1", | |
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", | |
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", | |
"dev": true, | |
"requires": { | |
"isexe": "^2.0.0" | |
} | |
}, | |
"wordwrap": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | |
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", | |
"dev": true | |
}, | |
"wrappy": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | |
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", | |
"dev": true | |
}, | |
"write": { | |
"version": "0.2.1", | |
"resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", | |
"integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", | |
"dev": true, | |
"requires": { | |
"mkdirp": "^0.5.1" | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "slack-draft", | |
"description": "Draft an NFL wins pool inside a Slack thread.", | |
"version": "1.0.0", | |
"author": "Luke Karrys", | |
"dependencies": { | |
"jsonfile": "^4.0.0", | |
"lodash": "^4.17.10", | |
"slack": "^8.4.2" | |
}, | |
"devDependencies": { | |
"eslint": "^5.5.0", | |
"eslint-config-prettier": "^3.0.1", | |
"eslint-plugin-prettier": "^2.6.2", | |
"prettier": "^1.14.2" | |
}, | |
"eslintConfig": { | |
"parserOptions": { | |
"ecmaVersion": 8 | |
}, | |
"env": { | |
"node": true, | |
"es6": true | |
}, | |
"extends": [ | |
"eslint:recommended", | |
"plugin:prettier/recommended" | |
] | |
}, | |
"keywords": [], | |
"license": "ISC", | |
"main": "index.js", | |
"prettier": { | |
"semi": false, | |
"singleQuote": true, | |
"arrowParens": "always", | |
"printWidth": 120 | |
}, | |
"private": true, | |
"scripts": { | |
"eslint": "eslint --fix .", | |
"lint": "npm run prettier && npm run eslint", | |
"prettier": "prettier --write '**/*.{js,md,css,json}'", | |
"start": "node index.js" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment