chore: format, lint, and test scripts based on staged files

For lint and test, it detects the packages that the staged files affect and only
runs the corresponding `lint` and `test` scripts.

For format, it will run prettier through the Added/Modified js files.
This commit is contained in:
Sérgio Ramos 2017-05-25 23:43:00 +01:00
parent 8887fa3384
commit 9b3874ea56
7 changed files with 201 additions and 217 deletions

View File

@ -5,24 +5,26 @@
"license": "MPL-2.0",
"repository": "github:yldio/joyent-portal",
"scripts": {
"fmt": "node ./scripts/format",
"format": "./scripts/format",
"test-staged": "./scripts/run-staged-pkg --test",
"lint-staged": "./scripts/run-staged-pkg --lint",
"format-staged": "run-s \"format -- --staged\"",
"test": "lerna run test",
"lint-license": "node ./scripts/license-to-fail",
"lint-docs": "node ./scripts/quality-docs",
"lint-staged": "lint-staged",
"lint-license": "./scripts/license-to-fail",
"lint-docs": "./scripts/quality-docs",
"lint:packages": "lerna run lint",
"lint:root": "eslint scripts/*.js --fix --format=tap",
"lint": "run-s lint:*",
"updt:root": "ncu -au",
"updt:packages": "lerna exec ncu -au",
"updt:teardown": "run-s postinstall",
"updt:teardown": "run-s clean bootstrap",
"updt": "run-s updt:*",
"publish": "lerna publish --conventional-commits",
"publish": "lerna publish --conventional-commits --independent -m 'chore: publish'",
"clean": "lerna clean --yes",
"bootstrap": "lerna bootstrap",
"prepare": "run-s clean bootstrap",
"commitmsg": "conventional-changelog-lint -e",
"precommit": "run-s lint-staged",
"precommit": "run-s lint-staged format-staged test-staged",
"dev:ui-toolkit": "lerna run watch --scope joyent-ui-toolkit",
"dev:cp-frontend": "lerna run start --scope joyent-cp-frontend",
"dev:gql-mock-server": "lerna run dev --scope joyent-cp-gql-mock-server",
@ -30,8 +32,11 @@
"wizard": "lerna-wizard"
},
"devDependencies": {
"apr-awaitify": "^1.0.4",
"apr-filter": "^1.0.5",
"apr-for-each": "^1.0.6",
"apr-main": "^1.0.7",
"apr-map": "^1.0.5",
"babel-eslint": "^7.2.3",
"conventional-changelog-angular": "^1.3.3",
"conventional-changelog-cli": "^1.3.1",
@ -54,19 +59,14 @@
"lerna": "^2.0.0-rc.5",
"lerna-wizard": "ramitos/lerna-wizard#7bcdc11",
"license-to-fail": "^2.2.0",
"lint-staged": "3.4.2",
"lodash.uniq": "^4.5.0",
"npm-check-updates": "^2.11.2",
"npm-run-all": "^4.0.2",
"prettier": "1.3.1",
"quality-docs": "^3.3.0",
"staged-git-files": "0.0.4",
"yargs": "^8.0.1"
},
"lint-staged": {
"*.js": [
"npm run fmt",
"git add"
]
},
"config": {
"fmt-opt-out": [
"portal-data",

68
scripts/format Executable file
View File

@ -0,0 +1,68 @@
#!/usr/bin/env node
const { config } = require('../package.json');
const { exists } = require('mz/fs');
const sgf = require('staged-git-files');
const forceArray = require('force-array');
const awaitify = require('apr-awaitify');
const asyncfilter = require('apr-filter');
const execa = require('execa');
const globby = require('globby');
const main = require('apr-main');
const argv = require('yargs').argv;
const path = require('path');
const fs = require('fs');
const getStaged = awaitify(sgf);
const ROOT = path.join(__dirname, '../');
const optOut = forceArray(config['fmt-opt-out']).map(pkg =>
path.join(ROOT, `packages/${pkg}`)
);
const statuses = ['Added', 'Modified'];
const filter = (files = []) =>
files
.filter(file => !/node_modules/.test(file))
.map(file => path.resolve(ROOT, file))
.filter(file => !optOut.some(pkg => file.indexOf(pkg) === 0));
const run = async (files = []) => {
// console.log(`prettier --write --single-quote ${filter(files).map((f) => `"${f}"`).join(' ')}`)
const cp = execa(
'prettier',
['--write', '--single-quote'].concat(filter(files))
);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
return cp;
};
const all = async () => {
const files = await globby('{scripts,packages}/**/*.js', {
cwd: path.join(__dirname, '..')
});
return run(files);
};
const staged = async () => {
const files = (await getStaged())
.filter(({ status }) => statuses.indexOf(status) >= 0)
.map(({ filename }) => filename)
.map(filename => path.resolve(ROOT, filename))
.filter(filename => /\.js$/.test(filename));
const existing = await asyncfilter(files, exists);
if (!existing.length) {
return;
}
return run(existing);
};
main(argv._.length ? run(argv._) : argv.staged ? staged() : all());

View File

@ -1,43 +0,0 @@
#!/usr/bin/env node
const { config } = require('../package.json');
const forceArray = require('force-array');
const execa = require('execa');
const globby = require('globby');
const main = require('apr-main');
const argv = require('yargs').argv;
const path = require('path');
const fs = require('fs');
const root = path.join(__dirname, '../');
const optOut = forceArray(config['fmt-opt-out']).map(pkg =>
path.join(root, `packages/${pkg}`)
);
const filter = (files = []) =>
files
.filter(file => !/node_modules/.test(file))
.map(file => path.resolve(root, file))
.filter(file => !optOut.some(pkg => file.indexOf(pkg) === 0));
const run = async (files = []) => {
const cp = execa(
'prettier',
['--write', '--single-quote'].concat(filter(files))
);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
return cp;
};
const all = async () => {
const files = await globby('{scripts,packages}/**/*.js', {
cwd: path.join(__dirname, '..')
});
return run(files);
};
main(argv._.length ? run(argv._) : all());

71
scripts/run-staged-pkg Executable file
View File

@ -0,0 +1,71 @@
#!/usr/bin/env node
const { packages } = require('../lerna.json');
const { readFile } = require('mz/fs');
const sgf = require('staged-git-files');
const execa = require('execa');
const awaitify = require('apr-awaitify');
const main = require('apr-main');
const map = require('apr-map');
const globby = require('globby');
const path = require('path');
const uniq = require('lodash.uniq');
const argv = require('yargs').argv;
const ROOT = path.join(__dirname, '..');
const getStaged = awaitify(sgf);
const statuses = [
'Added',
'Copied',
'Deleted',
'Modified',
'Renamed',
'Unmerged'
];
const exec = (args = []) => {
const cp = execa('lerna', args);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
return cp;
};
const lint = (scope) => exec(['run', 'lint', '--scope', scope]);
const test = (scope) => exec(['run', 'test', '--scope', scope]);
const run = async (scope) => {
if (argv.lint) {
await lint(scope);
}
if (argv.test) {
await test(scope);
}
};
const gather = async () => {
const locations = await globby(packages, {
cwd: ROOT
});
const staged = (await getStaged())
.filter(({ status }) => statuses.indexOf(status) >= 0)
.map(({ filename }) => path.resolve(ROOT, filename));
const folders = uniq(
locations
.map(folder => path.resolve(ROOT, folder))
.filter(folder => staged.some(i => i.indexOf(folder) >= 0))
);
const pkgs = await map(folders, async folder =>
JSON.parse(await readFile(path.join(folder, 'package.json'), 'utf-8'))
)
return await map(pkgs.map(({ name }) => name), run)
};
main(gather());

208
yarn.lock
View File

@ -60,7 +60,7 @@ ansi-align@^1.1.0:
dependencies:
string-width "^1.0.1"
ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.3.0:
ansi-escapes@^1.1.0, ansi-escapes@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
@ -98,9 +98,18 @@ any-promise@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
app-root-path@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
apr-awaitify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/apr-awaitify/-/apr-awaitify-1.0.4.tgz#a72074a0d333e090bb120be9f710fd106b48a90a"
apr-engine-back@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/apr-engine-back/-/apr-engine-back-1.0.3.tgz#1086a5d022d6f290a3293b57151c5d6f886ea1ea"
dependencies:
apr-engine-iterator "^1.0.3"
apr-engine-sum "^1.0.3"
lodash.find "^4.6.0"
lodash.isarraylike "^4.2.0"
apr-engine-each@^1.0.3:
version "1.0.3"
@ -125,10 +134,24 @@ apr-engine-run@^1.0.3:
dependencies:
apr-engine-iterator "^1.0.3"
apr-engine-sum@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/apr-engine-sum/-/apr-engine-sum-1.0.3.tgz#60c38b615ed549c2e636aaf232ee7bd292ca5b57"
dependencies:
lodash.isarraylike "^4.2.0"
apr-engine-until@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/apr-engine-until/-/apr-engine-until-1.0.3.tgz#f3f73a2f4e24729b4b272337db60c7d05fcce876"
apr-filter@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/apr-filter/-/apr-filter-1.0.5.tgz#92329fc915af30ae02cd22edd252eb63fe6cc550"
dependencies:
apr-engine-back "^1.0.3"
apr-engine-sum "^1.0.3"
apr-map "^1.0.5"
apr-for-each@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/apr-for-each/-/apr-for-each-1.0.6.tgz#3947bb25fdb7b79a7f02bfa925fdb79576098903"
@ -142,6 +165,14 @@ apr-main@^1.0.7:
dependencies:
lodash.isfunction "^3.0.8"
apr-map@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/apr-map/-/apr-map-1.0.5.tgz#f6c484beeb8e8378ac445f5e172047c4896392c4"
dependencies:
apr-engine-each "^1.0.3"
apr-engine-sum "^1.0.3"
lodash.defaults "^4.2.0"
aproba@^1.0.3, aproba@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
@ -618,7 +649,7 @@ cli-boxes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
cli-cursor@^1.0.1, cli-cursor@^1.0.2:
cli-cursor@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
dependencies:
@ -630,23 +661,12 @@ cli-cursor@^2.1.0:
dependencies:
restore-cursor "^2.0.0"
cli-spinners@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
cli-table@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
dependencies:
colors "1.0.3"
cli-truncate@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
dependencies:
slice-ansi "0.0.4"
string-width "^1.0.1"
cli-width@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
@ -999,19 +1019,6 @@ core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
cosmiconfig@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37"
dependencies:
graceful-fs "^4.1.2"
js-yaml "^3.4.3"
minimist "^1.2.0"
object-assign "^4.0.1"
os-homedir "^1.0.1"
parse-json "^2.2.0"
pinkie-promise "^2.0.0"
require-from-string "^1.1.0"
create-error-class@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
@ -1075,10 +1082,6 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
date-fns@^1.27.2:
version "1.28.5"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf"
dateformat@^1.0.11, dateformat@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
@ -1211,10 +1214,6 @@ editor@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742"
elegant-spinner@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
emoji-regex@^6.1.0:
version "6.4.2"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.4.2.tgz#a30b6fee353d406d96cfb9fa765bdc82897eff6e"
@ -1515,7 +1514,7 @@ execa@^0.5.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
execa@^0.6.0, execa@^0.6.3:
execa@^0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/execa/-/execa-0.6.3.tgz#57b69a594f081759c69e5370f0d17b9cb11658fe"
dependencies:
@ -1573,7 +1572,7 @@ fast-levenshtein@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
figures@^1.3.5, figures@^1.7.0:
figures@^1.3.5:
version "1.7.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
dependencies:
@ -2062,11 +2061,7 @@ hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
hosted-git-info@^2.1.4, hosted-git-info@^2.1.5:
version "2.4.2"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
hosted-git-info@~2.1.5:
hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@~2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
@ -2109,7 +2104,7 @@ indent-string@^2.1.0:
dependencies:
repeating "^2.0.0"
indent-string@^3.0.0, indent-string@^3.1.0:
indent-string@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d"
@ -2485,7 +2480,7 @@ js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.5.3, js-yaml@^3.8.4:
js-yaml@^3.5.1, js-yaml@^3.5.3, js-yaml@^3.8.4:
version "3.8.4"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
dependencies:
@ -2663,65 +2658,6 @@ license-to-fail@^2.2.0:
dependencies:
license-checker "^7.1.0"
lint-staged@3.4.2:
version "3.4.2"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.4.2.tgz#9cd1c0e4e477326c2696802a8377c22f92d65e79"
dependencies:
app-root-path "^2.0.0"
cosmiconfig "^1.1.0"
execa "^0.6.0"
listr "^0.12.0"
minimatch "^3.0.0"
npm-which "^3.0.1"
staged-git-files "0.0.4"
listr-silent-renderer@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
listr-update-renderer@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
dependencies:
chalk "^1.1.3"
cli-truncate "^0.2.1"
elegant-spinner "^1.0.1"
figures "^1.7.0"
indent-string "^3.0.0"
log-symbols "^1.0.2"
log-update "^1.0.2"
strip-ansi "^3.0.1"
listr-verbose-renderer@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz#44dc01bb0c34a03c572154d4d08cde9b1dc5620f"
dependencies:
chalk "^1.1.3"
cli-cursor "^1.0.2"
date-fns "^1.27.2"
figures "^1.7.0"
listr@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
dependencies:
chalk "^1.1.3"
cli-truncate "^0.2.1"
figures "^1.7.0"
indent-string "^2.1.0"
is-promise "^2.1.0"
is-stream "^1.1.0"
listr-silent-renderer "^1.1.1"
listr-update-renderer "^0.2.0"
listr-verbose-renderer "^0.4.0"
log-symbols "^1.0.2"
log-update "^1.0.2"
ora "^0.2.3"
p-map "^1.1.1"
rxjs "^5.0.0-beta.11"
stream-to-observable "^0.1.0"
strip-ansi "^3.0.1"
load-json-file@2.0.0, load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@ -2795,6 +2731,10 @@ lodash.difference@^4.4.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
lodash.find@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1"
lodash.includes@^4.2.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
@ -2836,7 +2776,7 @@ lodash.union@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
lodash.uniq@~4.5.0:
lodash.uniq@^4.5.0, lodash.uniq@~4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@ -2854,13 +2794,6 @@ log-symbols@^1.0.2:
dependencies:
chalk "^1.0.0"
log-update@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
dependencies:
ansi-escapes "^1.0.0"
cli-cursor "^1.0.2"
longest-streak@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.1.tgz#42d291b5411e40365c00e63193497e2247316e35"
@ -3231,12 +3164,6 @@ npm-install-checks@~3.0.0:
hosted-git-info "^2.1.5"
semver "^5.1.0"
npm-path@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.3.tgz#15cff4e1c89a38da77f56f6055b24f975dfb2bbe"
dependencies:
which "^1.2.10"
npm-registry-client@~7.2.1:
version "7.2.1"
resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.2.1.tgz#c792266b088cc313f8525e7e35248626c723db75"
@ -3275,14 +3202,6 @@ npm-user-validate@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b"
npm-which@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
dependencies:
commander "^2.9.0"
npm-path "^2.0.2"
which "^1.2.10"
npm@^3, npm@^3.10.6:
version "3.10.10"
resolved "https://registry.yarnpkg.com/npm/-/npm-3.10.10.tgz#5b1d577e4c8869d6c8603bc89e9cd1637303e46e"
@ -3477,16 +3396,7 @@ optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
ora@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
dependencies:
chalk "^1.1.1"
cli-cursor "^1.0.2"
cli-spinners "^0.1.2"
object-assign "^4.0.1"
os-homedir@^1.0.0, os-homedir@^1.0.1:
os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@ -3542,10 +3452,6 @@ p-locate@^2.0.0:
dependencies:
p-limit "^1.1.0"
p-map@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a"
package-json@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0"
@ -4132,10 +4038,6 @@ require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
require-from-string@^1.1.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
require-main-filename@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
@ -4302,12 +4204,6 @@ rx@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
rxjs@^5.0.0-beta.11:
version "5.4.0"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.0.tgz#a7db14ab157f9d7aac6a56e655e7a3860d39bf26"
dependencies:
symbol-observable "^1.0.1"
safe-buffer@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
@ -4599,10 +4495,6 @@ stream-shift@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
stream-to-observable@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
string-length@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac"
@ -4719,10 +4611,6 @@ syllable@^2.0.0:
pluralize "^3.0.0"
trim "0.0.1"
symbol-observable@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@ -5129,7 +5017,7 @@ which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
which@1, which@^1.2.10, which@^1.2.9, which@~1.2.11:
which@1, which@^1.2.9, which@~1.2.11:
version "1.2.14"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
dependencies: