From d8c217d19f5f68cf03cec9f82e46a9a9722a4e94 Mon Sep 17 00:00:00 2001 From: Sivakumar Kailasam Date: Thu, 16 Mar 2017 00:58:40 +0530 Subject: [PATCH] Remove couch usage & generate archives instead (#21) * Drop couch usage & generate archives instead * Some fixes & upgrades * Rearranged folder heirarchy * Update docs * fix travis script * Output msgs to stop timeout in travis * Keep versioned doc ids for ember data * Incremental processing - Ability to pass project name and/or version to index - Reorganized the logic so that we process one version of a doc at a time, ensuring that we don't need lot of memory * Add engines section * Add more info in package.json * Update dependency * Sync to local before start * Skip previously indexed docs * Sync to s3 at the end if requested * Fix formatting & update travis token's with siva's * Use the AWS env variable conventions * Update existing docs * Fix indentation --- .travis.yml | 21 +- README.md | 55 +- index.js | 131 +- lib/add-inherited-items.js | 1 - lib/batch-update.js | 60 - ...{classes-in-couch.js => create-classes.js} | 10 +- lib/create-project-versions.js | 7 +- lib/create-version-index.js | 41 - lib/fetch-yui-docs.js | 82 + lib/fetch.js | 93 -- lib/filter-jsonapi-doc.js | 6 +- lib/get-version-index.js | 23 + lib/identify-docs-to-index.js | 52 - lib/markup.js | 2 +- lib/normalize-ember-dependencies.js | 135 +- lib/normalize-ids.js | 42 +- lib/read-docs.js | 75 +- lib/s3-sync.js | 80 + lib/save-document.js | 26 +- lib/transform-yui-object.js | 20 + package.json | 51 +- test/filter-jsonapi-doc-test.js | 2 +- yarn.lock | 1402 +++++------------ 23 files changed, 862 insertions(+), 1555 deletions(-) delete mode 100644 lib/batch-update.js rename lib/{classes-in-couch.js => create-classes.js} (62%) delete mode 100644 lib/create-version-index.js create mode 100644 lib/fetch-yui-docs.js delete mode 100644 lib/fetch.js create mode 100644 lib/get-version-index.js delete mode 100644 lib/identify-docs-to-index.js create mode 100644 lib/s3-sync.js create mode 100644 lib/transform-yui-object.js diff --git a/.travis.yml b/.travis.yml index 3f67db6..395143d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,28 +1,17 @@ language: node_js node_js: '6' - -env: - global: - - COUCH_URL="https://emberjs.cloudant.com/ember-api-docs" - # export COUCH_USERNAME=xxxxx - - secure: e80GjZi18denINfipJnduwS0C/7fYf3lf9XMmlYRsSObhXbja/wYmqZfZsXUC5mDZFfutTY0sJDmnF3ibc8ZkvY1LSJ/22K48KSOGYQZ95RJBAK+nHa5m29ZOocx9UJwuo/n4UFTqS0+u5gvg5ArPAUftPA6BUaMszxGURDroTtQPjCzUUkclbul4Nb8OD2/S9Kb959VUsZnC9VezQzNMrym7Fw8b7c5UiriwBAc58wrrgdIBfQII38SuMSgz0OERScFBUVRs+6ETmuVgG/YMLYzISzg5rzCmrDqfHDEElCRfasKJ0ukc+g/tM/onBSMJSNX7r4NjNUvIyZjG8djbm4mrTfiSSxikXXa6/EDsgHrWbl+50wRb12c9iEkQDb+qNOxemvzsXJyKFPSeC0r9Ta1C3YSe2bOWNUAxH3a3GKoSEuIbNfgzX2K6GiiKHzgLYCK+acMQJrtz4Qs/D2u/EI5ST1FWKyIIu2qWJ84LPWJKLGByTjOjEDQ+arpQWYn6ACTDl4Tv1luzagQ7txbJxqPLcFG6yOBPXH1R1sXJEJwB2wkSCvAC6bwN37Yx/lUewTkzqI17W9HtboabQ9Hk4pqPSlFGI6bZZM4ASeopWMLQqGMLd3kUbneRr8BWCuPhgiX/rj9GqDOQoAZMoejuBirWU+tn2SXX0JJbt9i1lw= - # export COUCH_PASSWORD=xxxxx - - secure: bpaoN/CqbrtWQXKqUznMPmqsHr4H7+6nT2SnRCc56hBWsh9dnM6KcpaJnVvnpXKF2Rj5Teiv5t/V0ycoLb7yrj327A5yLsHEI30sO5CrVu2b/7DS/wvF2FPc7bd1eoLlvrP5WbgQikP2hempRACs0dOwTLE1lhBVQjJr0xRb7LPl7+ZE2EaNnU8je+WWeGNWqAT1VHD6pBKDwYhtyfke7tRV2QvvDAijELLGjvAzEv4FhZnCL7CMK8wAgL6QDeMCndyXxJMudel33AL/Lb8hWxBPEnZRWyGAjfYzLSXnsELnUEEtM83uFeKexVkxmQWGQ8BOK8GOK0e/GRctCKVTqKgDnX1LATergOv3mjCsROHiLzqkqIUUYlJNGMYtl1IEJZ+SgmExFirPio8ORVbw/I/bwsaNpq+d7HzEa/WbsblikWdNKecjnWGeVKH2boZIrReb3CF5cGhJo7ZjH15C9M3jXLxc4LkY9vHPY90/8cKqJ4sWpu58qIQIn210+WiiZ6L6gOSuMAEQYtg1PxtnpoyLG3s68PhyX2LxSEU+Gt97IiPszGwo4saqIC7y+jUj+kG+C9I5DoarUXENGveH/kZja2Pllm2YUndIoWxKoIGy3K4NqsiPfxGyqnIVq0bW4aGul/XTjCBitkD+hrpcg8EcV7QUgr50BnmyY1cFNV8= - # export AWS_ACCESS_KEY_ID=xxxxxx - - secure: QXKfIbHOdsLhhSq2KY4trFXc+eWUoYQAbMfAjA9nQuVN0RjVksQUyK4s5TI3dMcXjh7N95Jb7F2P3AC17SgVaz/ydUkrYwPUaglSAOuOECGVxqtNV/y3TnZjquz8XnuPLW2ZLxIqoN2lbNisomVxegLSMGgeo+IX/2mgSWZCKlUNdlCCJ8DUv7Vex+L43DPfOsbmrUkXFiimYtg4NjsxKWjerHM3iWxQlZ1m8pzhKhOfMJs9JlAEKZmRXt4Mw2IbTyc+g5tVfUb5l7yQdtMkoFZ3tqYCm59P8erocMn2m0PYPy/IHd+YM9xaCtZFcMwyEywMvZtVtP1ByscIDKoNTNSgy1IUgR/lJHeHN4/v/CEkSAUIvMKoGGDIFbfHPKJZ2HepupFYVJwFfSZbbiaipIMVMerKPsyJKyTkqx/Xke7ZfgW2RQvVjOjEyvD9zbfLte1iNbdWqVrI3cPAInNRNgdHuYZgjcvX3aKbqk4Xpn81+4B6O1keS8iU30vfnd1Xw7Wye5BxraVq2ajdq/jHkkK9ULlZZKmyebW/f3I5JsLRCbSJy+sb/zUAawEXLr0qaYKOfQxg1iuOwswMmgSVFYVZUKfRIlLo3A/e1e8/YR9oTMYaXdiDVW813cK5ZnNbr5qoK9PSAf38hDRZtpmldC3m4c0R9OyQhtrFW8KaLF0= - # export AWS_SECRET_ACCESS_KEY=xxxxx - - secure: jXcVmvHqS9BD2tX9/5ZYE3YY4VrVSHimOWLDI2xY+j071Ngcsr/70bjoEqD+ja2YI/fDsZrblelUV8a+ettlqC2PlM7s869zxt1cDcqRwQiopyz3b7ihp4JsbxHF4C1AYg+3POSuC5Knvh9sIimebrwMRgrMEED5t37kfSSD3JBprhodBARIOw7jo2JgXmqxWv/4YpqA5IBGTTwmGB2DsuZnqLutZeT9Fhcstkm4aaBwN5sjC18lugcEh6vrvmCZS6gbiG2v2MIsvaGzWXLZgl66pk4JLzhzA68YtNNRgye9hn5BVJXhkZK14Q1BWhol4v8B+mSBaB5R4yikBIvODzeTpXbacFc84EHZQlw/9ZNTm3MvdpBLd4guPPJk6oKFUTXwdPaWccVFli+NdPz16e4Y4/xUYS1fKfjHLF2gejZ27gHxosD6M+ss3HIrmMLzatHC9iHk7juICP67M5bRcPuwCzm7K6pBmC5QWULd01Ppn3h4V+xUilCA8OmfkrGBLJcl8d2t7H0Q7ebei4SSdrbtkuRRdo8OV1CU7VVJdU5MvYCtDZs16qUozILvXn9Oj05GZ4Uu7wy4TmwF5+6Ye+Fherc2UXQ8CWdjKqYoKY6usVCK0E251vlwk3cjkaZhc+xpLLIPEuVLnGC8CzxMJqaxa6zOrSjLXpZGXnRH3Lw= - cache: directories: - "$HOME/.yarn-cache" - node_modules - tmp - script: - yarn run test -- 'if [ "$TRAVIS_PULL_REQUEST" = false ]; then yarn start; else echo "We dont publish docs via PRs"; fi' - +- if [ "$TRAVIS_PULL_REQUEST" = false ]; then AWS_SHOULD_PUBLISH=yes yarn start; else echo "We dont publish docs via PRs"; fi branches: only: - master +env: + global: + - secure: NqKxv7m1J21O2z1QfNIKce85KW70IeID8SshF/Ekzn4F0eg3PGQHHVLwgYmiOTznRu0kb+m2lbD5C3KuXJcdXHQXaG8ByAOYytMd6+n/1IJdM8Ao1nhWPlzN0xcU9TqPtlbKlJeUw9+G7zFsBK6nGAc866/CO4zJblqdOh8pztJlP4iI8QqzenK/YWJg2AacLjxQHNqjPQtK48ItgV1pdrXgVFGj7si8VmOz9uGytcqB+aQCWx+sP/08hkdJoGaxixjMhe1oAJpEccCGTuJ8EXdCZpssz0aZeyVUQBG+19eDUraYMBIXm6nZhX9OK1aHGTT5A6/pcDbLpmz8gs8DG3j9semKp0DwRWg2iIvunKEk5IKogCkbaebDw1U6l4V6lP9BZPZ+ab8NnJHEUL9vrkKPaZ1qPUvmXVoDErciUzmNWP26aTMRfFIe4a2Ax6sSyzbl06STEyVaBTonfpNgcbpDZiR6C7ngsKYFVyUdf0kSHdAlchF+CEX99pyGJPgmrjromcbzSA9x3Uye5puT/2KQXFfKXRmMIflTePqi7PlLQ9t/Z1roWocfORaIsgobv1RfKwsHv5dw+7j8OVsk6//dZu5GFbNcqqCMqoRz0mQ1yG3t9oa2zfpDLyIGvxAvi8Owdcc3TgQQJ5xcZ63ziqgB4KtE/5COiccoEjNWT4k= + - secure: QCpb0SMkTCAGUIEiv2Bhv4QRz6GOtUmRBq2Kjvorr0PP1pFUND3j2qI5QvBlzgZo6G23KGUQ08E0l0BwInoqYGSHBIAX1PhiTwnqnNOy0n2RJUaKqsED6vfqUbcFtyE9HtvMT3xwz38L2aHIHAdYEkfI2fNX5/SAhTz0+Ovtbd7kKbZvX4V21FOmqdUnZyoA66m5YTs8dPv+/52iHA7oTF06HvejQKbsiu2wbZ8pP/cKVLOxcPkb2mI9Y03cNlHWsEwKgYTIFYuz3UXa/v24TSFmDOj2YcYKYml2Pk3e0VZnw36+N/1yx6trkpceeodLGGe9EM8kIqstcYdGnMfA7S6ADu8Fh8F88lBBItVqqE984b9LVlXE+ujr88DQVOMu8YkzFN/RGF6fonvgPNZ5M9Q/n59+ycCJOqOW+LFzEs+liH2Z9Hbgft+LlYaT3QiJXNXqqgd/j4fNMGdCalFk0s7pVmMtN6gJzrbGbeLd3R7gJ8HFey9oycWsZO5eXKKQ/thfXfk2bdfuusyluPyqqU2O6W4fbpB80hIC5T4VClrT08ikuLHtuj7vFJVmxn4cVIecxHX+DmR9NXvZgS8M/r5uxp57purLt/RGQGBk/uJFLflOgoFBy/K9QQD280MvF5VrgzifyUvNR4wcCzE1XEVQmKZFeuGGDbB74eW1V4c= diff --git a/README.md b/README.md index 9941e03..1006af2 100644 --- a/README.md +++ b/README.md @@ -2,63 +2,26 @@ This app is for turning ember API doc build output into [json api](http://jsonapi.org/) compliant data for use in various applications seeking to use the Ember API. -The script pulls yuidoc build output from all Ember versions from Amazon S3, converts it to json api format and pushes it to CouchDB. -You can setup a CouchDB instance either [locally](#setting-up-a-local-couchdb-instance) or [on cloundant](#setting-up-a-couchdb-on-cloudant) for testing out changes to this app. - - -## Setting up a local CouchDB instance - -1. Install the latest release of [CouchDB](http://couchdb.apache.org/). -1. Once installed, visit the [CouchDB UI](http://localhost:5984/_utils). From the top navigation section, Click "_Create Database_" and type in "*ember-api-docs*". -1. Create a CouchDB admin user. Got to the section in the left nav called "_Admin Party!_", and supply a username and password. -1. Set up CORS for CouchDB - An easy way to do this is to use the script at https://github.com/pouchdb/add-cors-to-couchdb - - ```shell - npm install -g add-cors-to-couchdb - add-cors-to-couchdb -u -p - ``` - - -## Setting up a CouchDB on cloudant - -1. A [cloudant](https://cloudant.com/) account is neccessary before proceeding with the following steps. -1. Create a new Database and give it the name "*ember-api-docs*". -1. Goto the "_Permissions_" tab in the nav. -1. Click on "_Generate API Key_", save the credentials showed on the UI as we'll be using this in the next section as the CouchDB credentials. -1. Click on the _"_writer"_ checkbox for the API user so that it can push docs to cloudant. -1. Navigate to your account settings & in the "_CORS_" tab ensure that its enabled for all domains. - +The script pulls yuidoc build output from all Ember versions from Amazon S3, converts it to json api format and creates an archive. ## Running the app 1. Fork/Clone [ember-jsonapi-docs](https://github.com/ember-learn/ember-jsonapi-docs) -1. Run `npm install` or `yarn` -1. Set the following environment variables: - - ```shell - export COUCH_URL=http://localhost:5984/ember-api-docs # or COUCH_URL=https://user-name.cloudant.com/ember-api-docs - export COUCH_USERNAME= - export COUCH_PASSWORD= - ``` +1. Run `yarn` or `npm install` (Needs node 6+) 1. Set up AWS access ```shell - export AWS_ACCESS_KEY_ID=xxxxxx - export AWS_SECRET_ACCESS_KEY=xxxxx + export AWS_ACCESS_KEY=xxxxxx + export AWS_SECRET_KEY=xxxxx ``` The app accesses builds.emberjs.com (an Amazon S3 bucket) in read-only mode, which is public. This requires any valid AWS credentials. You can get your credentials by logging into your [AWS console](https://console.aws.amazon.com) and navigating to "_My Security Credentials_" under your profile name. You can generate a new pair under the "_Access Keys (Access Key ID and Secret Access Key)_" section. 1. To test your changes in the app run, - ```node index.js 2.11``` - This will run the app only for the specified version of the docs. Once complete, if no errors you should see your doc database - populated with data from your CouchDB admin ui. When no version is passed, the app will try to process all - ember versions since 1.0 which takes high memory & time to complete. If you intend it, then run `node --max_old_space_size=8192 index.js`. + ```node index.js``` + Once complete, if no errors you should see a docs.tar file inside the `tmp` folder. The app tries to process all + ember & ember-data versions since 1.0 which takes high memory & time to complete. If you intend it, then run `node --max_old_space_size=8192 index.js`. You are setting your node max heap space to 8GB, so make sure you have that much space available on your machine. -## Setting up a new production instance - -1. Follow the steps from [setting up a CouchDB on cloudant section](#setting-up-a-couchdb-on-cloudant) -1. Run `npm start` or `yarn start` from your local. This is required since travis kills a build if [a task crosses 50mins](https://docs.travis-ci.com/user/customizing-the-build#Build-Timeouts), & the first run will take 50+ mins to complete. -1. On Travis UI [enable cron jobs](https://docs.travis-ci.com/user/cron-jobs/) for daily/hourly basis so that newer docs get indexed incrementally. +## To Generate docs for a specific project and/or version for development +You can do this by passing `--project ember/ember-data --version 2.11.1` as an argument to the index script. e.g., `yarn start -- --project ember --version 2.11.0` diff --git a/index.js b/index.js index df5055d..f4ff23b 100644 --- a/index.js +++ b/index.js @@ -1,84 +1,67 @@ -'use strict' +const RSVP = require('rsvp') +const fs = require('graceful-fs') +const argv = require('minimist')(process.argv.slice(2)) -let RSVP = require('rsvp') -let _ = require('lodash') -let rm = require('rimraf') -let PouchDB = require('pouchdb') -let fs = require('fs') -let glob = require('glob') +const markup = require('./lib/markup') +const readDocs = require('./lib/read-docs') +const fetchYuiDocs = require('./lib/fetch-yui-docs') +const createClassesOnDisk = require('./lib/create-classes') +const transformYuiObject = require('./lib/transform-yui-object') +const normalizeEmberDependencies = require('./lib/normalize-ember-dependencies') +const getVersionIndex = require('./lib/get-version-index') +const saveDoc = require('./lib/save-document') +const { syncToLocal, syncToS3 } = require('./lib/s3-sync') -let fetch = require('./lib/fetch') -let readDocs = require('./lib/read-docs') -let addSinceTags = require('./lib/add-since-tags') -let addInheritedItems = require('./lib/add-inherited-items') -let transformModules = require('./lib/modules-transform') -let putClassesInCouch = require('./lib/classes-in-couch') -let createVersionIndex = require('./lib/create-version-index') -let normalizeEmberDependencies = require('./lib/normalize-ember-dependencies') -let normalizeIDs = require('./lib/normalize-ids') -let markup = require('./lib/markup') -let batchUpdate = require('./lib/batch-update') - -require('marked') - -let db = new PouchDB(process.env.COUCH_URL, { - auth: { - username: process.env.COUCH_USERNAME, - password: process.env.COUCH_PASSWORD - } +RSVP.on('error', function (reason) { + console.log(reason) + process.exit(1) }) -if (fs.existsSync('tmp/docs')) { - rm.sync('tmp/docs') -} - -function transformProjectFiles (projectName) { - console.log('reading docs for ' + projectName) - let promise = RSVP.resolve(readDocs(projectName)) - .then((stuff) => { - console.log('transforming modules for ' + projectName) - return transformModules(stuff) - }).then((stuff) => { - console.log('adding since tags for ' + projectName) - return addSinceTags(stuff) - }).then((stuff) => { - console.log('adding inherited items for ' + projectName) - return addInheritedItems(stuff) - }).then(yuidocs => { - console.log('normalizing yuidocs for ' + projectName) - return normalizeIDs(yuidocs, projectName) - }).then(doc => { - console.log('creating version index for ' + projectName) - return createVersionIndex(db, projectName, doc).then(() => doc) - }).then(doc => { - console.log('converting markdown to html for ' + projectName) - return markup(doc) - }) +let possibleProjects = ['ember', 'ember-data'] +let projects = argv.project && possibleProjects.includes(argv.project) ? [argv.project] : possibleProjects +let specificDocsVersion = argv.version ? argv.version : '' - return promise -} +let docsVersionMsg = specificDocsVersion !== '' ? '. For version ' + specificDocsVersion : '' +console.log(`Downloading docs for ${projects.join(' & ')}${docsVersionMsg}`) -let projects = ['ember', 'ember-data'] -let releaseToGenDocFor = process.argv[2] ? process.argv[2] : '' +syncToLocal() + .then(() => fetchYuiDocs(projects, specificDocsVersion)) + .then(() => readDocs(projects, specificDocsVersion)) + .then(docs => { + return RSVP.map(projects, projectName => { + return RSVP.map(docs[projectName], doc => { + let docVersion = doc.version + console.log(`Starting to process ${projectName}-${docVersion}`) + return transformYuiObject([doc], projectName).then(markup).then(doc => { + let giantDocument = { + data: doc.data + } + console.log('normalizing dependencies') + return normalizeEmberDependencies(giantDocument) + }).then(doc => { + return createClassesOnDisk(doc, projectName, docVersion) + }).then(doc => { + console.log(`Finished processing ${projectName}-${docVersion}`) + return getVersionIndex(doc, projectName) + }) + }).then((docs) => { + let [docToSave, ...remainingDocs] = docs.filter(doc => doc.data.id === projectName) -console.log('downloading docs for ' + projects.join(' & ')) + if (!docToSave) { + return Promise.resolve() + } -fetch(db, releaseToGenDocFor).then(downloadedFiles => { - RSVP.map(projects, transformProjectFiles).then(docs => { - let giantDocument = { - data: _.flatten(docs.map(doc => doc.data)) - } - console.log('normalizing dependencies') - normalizeEmberDependencies(giantDocument) + let existingDoc = `tmp/json-docs/${projectName}/projects/${projectName}.json` + if (fs.existsSync(existingDoc)) { + existingDoc = JSON.parse(fs.readFileSync(existingDoc)) + docToSave.data.relationships['project-versions'].data = docToSave.data.relationships['project-versions'].data.concat(existingDoc.data.relationships['project-versions'].data) + } - return putClassesInCouch(giantDocument, db) - }).then(function () { - let docs = glob.sync('tmp/docs/**/*.json') - - console.log('putting document in CouchDB') - return batchUpdate(db, docs) - }).catch(function (err) { - console.warn('err!', err, err.stack) - process.exit(1) + remainingDocs.forEach(d => { + docToSave.data.relationships['project-versions'].data = docToSave.data.relationships['project-versions'].data.concat(d.data.relationships['project-versions'].data) + }) + return saveDoc(docToSave, projectName).then(() => projectName) + }) + }) }) -}) + .then(syncToS3) diff --git a/lib/add-inherited-items.js b/lib/add-inherited-items.js index 3688441..789d447 100644 --- a/lib/add-inherited-items.js +++ b/lib/add-inherited-items.js @@ -12,7 +12,6 @@ module.exports = function addInheritedItems (docSets) { classes.forEach(function (klass) { let parents = getParents(klass, classes) - // let thisClassItems = classItems.filter(item => item.class === klass.name) for (let i = 0; i < parents.length; ++i) { parents = parents.concat(getParents(parents[i], classes)) diff --git a/lib/batch-update.js b/lib/batch-update.js deleted file mode 100644 index 2f92467..0000000 --- a/lib/batch-update.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict' - -let chunk = require('lodash/array').chunk -let RSVP = require('rsvp') -let path = require('path') -let Queue = require('promise-queue') -let promiseRetry = require('promise-retry') - -module.exports = function (db, docs) { - let queue = new Queue(10) - let chunks = chunk(docs, 20) - - return RSVP.map(chunks, chunk => { - return promiseRetry((retry, number) => { - let docs = chunk.map(doc => { - let document = require(path.join(__dirname, '..', doc)) - document._id = `${document.data.type}-${document.data.id}` - - return document - }) - - let keys = docs.map(doc => doc._id) - - if (number > 0) { - let timesLeft = 10 - number - if (number !== 1) { - if (number !== 0) { - console.log('syncing for chunk failed, retrying ' + timesLeft + ' more times.', keys) - } else { - console.log('syncing for chunk failed, retrying for the last time', keys) - } - } - } - - return db.allDocs({keys: keys}).catch(retry).then(results => { - docs.forEach(document => { - let fromServer = results.rows.find(r => !r.error && r.id === document._id) - if (fromServer) { - document._rev = fromServer.value.rev - } - }) - - return queue.add(() => { - return db.bulkDocs(docs).catch(() => { - return new RSVP.Promise((resolve, reject) => { - setTimeout(() => { - return db.bulkDocs(docs).then(resolve, reject) - }, 3000) - }) - }).then(() => { - }).catch(err => { - console.log('keys failed', keys) - console.log('keys failed error', err) - process.exit(1) - }) - }) - }) - }) - }) -} diff --git a/lib/classes-in-couch.js b/lib/create-classes.js similarity index 62% rename from lib/classes-in-couch.js rename to lib/create-classes.js index 0717a69..aa9caea 100644 --- a/lib/classes-in-couch.js +++ b/lib/create-classes.js @@ -1,12 +1,10 @@ 'use strict' let RSVP = require('rsvp') -let Queue = require('promise-queue') let saveDoc = require('./save-document') -module.exports = function (document, db) { +module.exports = function (document, projectName, projectVersion) { let things = document.data - let queue = new Queue(10) return RSVP.map(things, klass => { if (!klass.id) { @@ -15,12 +13,10 @@ module.exports = function (document, db) { process.exit(1) } let document = { - _id: klass.id, data: klass } - return queue.add(() => { - return saveDoc(document, db) - }) + console.log(`Creating ${klass.id} in ${projectName}-${projectVersion}`) + return saveDoc(document, projectName, projectVersion) }).then(() => document) } diff --git a/lib/create-project-versions.js b/lib/create-project-versions.js index 547f141..d09560f 100644 --- a/lib/create-project-versions.js +++ b/lib/create-project-versions.js @@ -1,14 +1,11 @@ 'use strict' let tojsonapi = require('yuidoc-to-jsonapi/lib/converter') -let Queue = require('promise-queue') let RSVP = require('rsvp') let saveDoc = require('./save-document') let updateIDs = require('./update-with-versions-and-project') module.exports = function createProjectVersions (versions, projectName, db) { - let queue = new Queue(10) - return RSVP.map(versions, version => { let jsonapidoc = updateIDs(tojsonapi(version.data), version.version) @@ -21,9 +18,7 @@ module.exports = function createProjectVersions (versions, projectName, db) { } } - let id = `project-version-${projectName}-${version.version}` let versionDocument = { - _id: id, data: { id: `${projectName}-${version.version}`, type: 'project-version', @@ -51,6 +46,6 @@ module.exports = function createProjectVersions (versions, projectName, db) { included: [projectData] } - return queue.add(() => saveDoc(versionDocument, projectName, version.version, db)) + return saveDoc(versionDocument, projectName, version.version) }) } diff --git a/lib/create-version-index.js b/lib/create-version-index.js deleted file mode 100644 index 0414d05..0000000 --- a/lib/create-version-index.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -let saveDoc = require('./save-document') -let byType = require('./filter-jsonapi-doc').byType -let fs = require('fs') -let path = require('path') -let _ = require('lodash') - -// creates a version index at /projects/:project -// that contains a list of versions in the relationships -// object. -module.exports = function createVersionIndex (db, projectName, versions) { - let document = { - data: { - id: projectName, - type: 'project', - attributes: { - 'github-url': 'https://github.com/emberjs/ember.js' - }, - relationships: { - 'project-versions': { - data: byType(versions, 'project-version').map(item => { - return { - id: item.id, - type: item.type - } - }) - } - } - } - } - - let cachedProjectFile = path.join('tmp', 'cached-docs', `project-${projectName}.json`) - if (fs.existsSync(cachedProjectFile)) { - let cachedDocument = JSON.parse(fs.readFileSync(cachedProjectFile)) - - document.data.relationships['project-versions'].data = _.uniq(document.data.relationships['project-versions'].data.concat(cachedDocument.data.relationships['project-versions'].data)) - } - - return saveDoc(document, db).then(() => versions) -} diff --git a/lib/fetch-yui-docs.js b/lib/fetch-yui-docs.js new file mode 100644 index 0000000..86b1211 --- /dev/null +++ b/lib/fetch-yui-docs.js @@ -0,0 +1,82 @@ +const S3 = require('s3') +const RSVP = require('rsvp') +const path = require('path') +const fs = require('fs-extra') +const mkdirp = require('mkdir-promise') + +// These are read-only credentials to the builds.emberjs.com bucket only. +const { AWS_ACCESS_KEY, AWS_SECRET_KEY } = process.env + +const client = S3.createClient({ + s3Options: { + accessKeyId: AWS_ACCESS_KEY, + secretAccessKey: AWS_SECRET_KEY + } +}) + +const options = { + s3Params: { + Bucket: 'builds.emberjs.com', + Prefix: 'tags' + } +} + +function getObjects () { + return new RSVP.Promise((resolve, reject) => { + let data = [] + + client.listObjects(options).on('data', (d) => { + data = data.concat(d.Contents) + }).on('end', () => resolve(data)).on('error', reject) + }) +} + +function downloadFile (document) { + let name = path.basename(document.Key) + let dir = path.basename(path.dirname(document.Key)) + + let finalFile = path.join('tmp', 's3-docs', dir, name) + + return mkdirp(path.dirname(finalFile)).then(() => { + return new RSVP.Promise((resolve, reject) => { + if (fs.existsSync(finalFile)) { + return resolve(finalFile) + } else { + client.downloadFile({ + localFile: finalFile, + s3Params: { + Bucket: 'builds.emberjs.com', + Key: document.Key + } + }) + .on('end', () => { + console.log(`Downloaded ${finalFile}`) + resolve(finalFile) + }) + .on('error', (err) => { + console.warn('err! ' + err) + reject(err) + }) + } + }) + }) +} + +function filterReleaseDocs (document) { + let key = document.Key.split('/') + let tag = key[key.length - 2] + let versionRegex = /v\d+\.\d+\.\d+$/ + return versionRegex.test(tag) && /-docs\.json/.test(key) +} + +module.exports = function fetchYuiDocs (projects, specificDocsVersion) { + return getObjects().then(docs => { + let projectFiles = projects.map(p => `${p}-docs.json`) + + let filteredDocs = docs.filter(filterReleaseDocs).filter(doc => { + return projectFiles.includes(doc.Key.split('/').pop()) && doc.Key.indexOf(specificDocsVersion) !== -1 + }) + + return RSVP.map(filteredDocs, downloadFile) + }) +} diff --git a/lib/fetch.js b/lib/fetch.js deleted file mode 100644 index a899b26..0000000 --- a/lib/fetch.js +++ /dev/null @@ -1,93 +0,0 @@ -let S3 = require('s3') -let RSVP = require('rsvp') -let path = require('path') -let fs = require('fs') -let getNewDocsToIndex = require('./identify-docs-to-index') - -function mkdirp (dir) { - return new RSVP.Promise(function (resolve, reject) { - return require('mkdirp')(dir, {}, function (err, made) { - if (err) return reject(err) - resolve(made) - }) - }) -} - -// These are read-only credentials to the builds.emberjs.com bucket only. -var AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID -var AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY - -var options = { - s3Params: { - Bucket: 'builds.emberjs.com', - Prefix: 'tags' - } -} - -var client = S3.createClient({ - s3Options: { - accessKeyId: AWS_ACCESS_KEY_ID, - secretAccessKey: AWS_SECRET_ACCESS_KEY - } -}) - -function getObjects () { - return new RSVP.Promise(function (resolve, reject) { - var data = [] - - client.listObjects(options).on('data', function (d) { - data = data.concat(d.Contents) - }).on('end', function () { - resolve(data) - }).on('error', reject) - }) -} - -function downloadReleaseDocs (data) { - var objects = data.filter(filterReleaseDocs) - return RSVP.map(objects, downloadFile) -} - -function downloadFile (document) { - var name = path.basename(document.Key) - var dir = path.basename(path.dirname(document.Key)) - - var finalFile = path.join('tmp', dir, name) - - return mkdirp(path.dirname(finalFile)).then(function () { - return new RSVP.Promise(function (resolve, reject) { - if (fs.existsSync(finalFile)) { - return resolve(finalFile) - } else { - client.downloadFile({ - localFile: finalFile, - s3Params: { - Bucket: 'builds.emberjs.com', - Key: document.Key - } - }) - .on('end', function () { - resolve(finalFile) - }) - .on('error', function (err) { - console.warn('err! ' + err) - reject(err) - }) - } - }) - }) -} - -function filterReleaseDocs (document) { - var key = document.Key.split('/') - var tag = key[key.length - 2] - var versionRegex = /v\d+\.\d+\.\d+$/ - return versionRegex.test(tag) && /-docs\.json/.test(key) -} - -module.exports = function fetch (db, releaseToGenDocFor) { - return getObjects().then(docs => { - let filteredDocs = docs.filter(doc => doc.Key.indexOf(releaseToGenDocFor) !== -1) - return getNewDocsToIndex(db, filteredDocs) - }).then(downloadReleaseDocs) -} diff --git a/lib/filter-jsonapi-doc.js b/lib/filter-jsonapi-doc.js index 779134d..08d76c5 100644 --- a/lib/filter-jsonapi-doc.js +++ b/lib/filter-jsonapi-doc.js @@ -3,7 +3,7 @@ let _ = require('lodash') function byType (document, type) { - return _.filter(totalData(document), 'type', type) + return _.filter(totalData(document), ['type', type]) } function totalData (document) { @@ -11,11 +11,11 @@ function totalData (document) { } function hasBelongsTo (document, relationshipName, relationshipValue) { - return _.filter(totalData(document), `relationships.${relationshipName}.data.id`, relationshipValue) + return _.filter(totalData(document), [`relationships.${relationshipName}.data.id`, relationshipValue]) } function classWithIncluded (document, klass) { - let classDocument = _.filter(byType(document, 'class'), 'id', klass)[0] + let classDocument = _.filter(byType(document, 'class'), ['id', klass])[0] let related = hasBelongsTo(document, 'class', klass) diff --git a/lib/get-version-index.js b/lib/get-version-index.js new file mode 100644 index 0000000..e1abf61 --- /dev/null +++ b/lib/get-version-index.js @@ -0,0 +1,23 @@ +const byType = require('./filter-jsonapi-doc').byType + +module.exports = function getVersionIndex (doc, projectName) { + return { + data: { + id: projectName, + type: 'project', + attributes: { + 'github-url': 'https://github.com/emberjs/ember.js' + }, + relationships: { + 'project-versions': { + data: byType(doc, 'project-version').map(item => { + return { + id: item.id, + type: item.type + } + }) + } + } + } + } +} diff --git a/lib/identify-docs-to-index.js b/lib/identify-docs-to-index.js deleted file mode 100644 index 6b87826..0000000 --- a/lib/identify-docs-to-index.js +++ /dev/null @@ -1,52 +0,0 @@ -let path = require('path') -let fs = require('fs') -let RSVP = require('rsvp') - -module.exports = function getNewDocsToIndex (db, docs) { - return db.allDocs({ - keys: ['project-ember', 'project-ember-data'], - include_docs: true - }).then(projectVersions => { - let docsToDownload = docs - - if (projectVersions.total_rows > 0) { - let [ {doc: emberProjectDoc}, {doc: emberDataProjectDoc} ] = projectVersions.rows - - // Save now for merging later - let cachedDocsFolder = path.join('tmp', 'cached-docs') - require('mkdirp').sync(cachedDocsFolder) - fs.writeFileSync(path.join(cachedDocsFolder, 'project-ember.json'), JSON.stringify(emberProjectDoc)) - fs.writeFileSync(path.join(cachedDocsFolder, 'project-ember-data.json'), JSON.stringify(emberDataProjectDoc)) - - let indexedEmberVersions = [] - let indexedEmberDataVersions = [] - - emberProjectDoc.data.relationships['project-versions'].data.forEach(doc => { - indexedEmberVersions.push(doc.id.replace('ember-', '')) - }) - - emberDataProjectDoc.data.relationships['project-versions'].data.forEach(doc => { - indexedEmberDataVersions.push(doc.id.replace('ember-data-', '')) - }) - - docsToDownload = docsToDownload.filter(doc => { - let docString = doc.Key.split('/') - let projectName = docString[2].replace('-docs.json', '') - let projectVersion = docString[1].replace('v', '') - - if (projectName === 'ember') { - return indexedEmberVersions.indexOf(projectVersion) === -1 - } else if (projectName === 'ember-data') { - return indexedEmberDataVersions.indexOf(projectVersion) === -1 - } - }) - - if (docsToDownload.length === 0) { - console.log('No more docs to index') - process.exit(0) - } - } - - return RSVP.resolve(docsToDownload) - }) -} diff --git a/lib/markup.js b/lib/markup.js index cff2175..670ccdf 100644 --- a/lib/markup.js +++ b/lib/markup.js @@ -18,7 +18,7 @@ marked.setOptions({ module.exports = (doc) => { doc.data.forEach(document => { - console.log('Generating markup for ', document.id) + console.log(`Generating markup for ${document.id}`) let description = document.attributes.description diff --git a/lib/normalize-ember-dependencies.js b/lib/normalize-ember-dependencies.js index aa2c44b..5a6f711 100644 --- a/lib/normalize-ember-dependencies.js +++ b/lib/normalize-ember-dependencies.js @@ -1,88 +1,91 @@ 'use strict' -let _ = require('lodash') -let byType = require('./filter-jsonapi-doc').byType +const _ = require('lodash') +const Promise = require('rsvp').Promise +const byType = require('./filter-jsonapi-doc').byType -module.exports = (giantDocument) => { - let nonEmberDocs = giantDocument.data.filter((doc) => { - if (!doc.relationships) { - return false - } - - return true - }) - - nonEmberDocs.forEach(document => { - _.forIn(document.relationships, (relationship, relationshipName) => { - if (Array.isArray(relationship.data)) { - document.relationships[relationshipName].data = _.map(relationship.data, fixEmberRelationship) - } else if (relationship.data) { - document.relationships[relationshipName].data = fixEmberRelationship(relationship.data) - } - }) - }) - - function missingDoc (relationship) { - return { - id: relationship.id, - type: 'missing', - attributes: { - name: relationship.id - } +const missingDoc = (relationship) => { + return { + id: relationship.id, + type: 'missing', + attributes: { + name: relationship.id, + version: relationship.version } } +} - let missing = nonEmberDocs.map(document => { - let missing = [] +module.exports = (giantDocument) => { + return new Promise((resolve, reject) => { + let nonEmberDocs = giantDocument.data.filter(doc => doc.relationships) - _.forIn(document.relationships, (relationship, relationshipName) => { - if (Array.isArray(relationship.data)) { - missing = missing - .concat(relationship.data.filter(rel => rel.type === 'missing')) - .map(m => missingDoc(m)) - } else if (relationship.data) { - if (relationship.data.type === 'missing') { - missing.push(missingDoc(relationship.data)) + nonEmberDocs.forEach(document => { + _.forIn(document.relationships, (relationship, relationshipName) => { + if (Array.isArray(relationship.data)) { + document.relationships[relationshipName].data = _.map(relationship.data, (d) => { + return fixEmberRelationship(d, document.attributes.version) + }) + } else if (relationship.data) { + document.relationships[relationshipName].data = fixEmberRelationship(relationship.data, document.attributes.version) } - } + }) }) - return missing - }) + let missing = nonEmberDocs.map(document => { + let missing = [] - missing = _.flatten(missing) + _.forIn(document.relationships, (relationship, relationshipName) => { + if (Array.isArray(relationship.data)) { + missing = missing + .concat(relationship.data.filter(rel => rel.type === 'missing')) + .map(m => missingDoc(m)) + } else if (relationship.data) { + if (relationship.data.type === 'missing') { + missing.push(missingDoc(relationship.data)) + } + } + }) - giantDocument.data = giantDocument.data.concat(missing) + return missing + }) - function fixEmberRelationship (relationship) { - let type = relationship.type - let id = relationship.id + missing = _.flatten(missing) - let doc = giantDocument.data.find(model => model.id === id) + giantDocument.data = giantDocument.data.concat(missing) - if (doc || type === 'project-version' || type === 'project') { - return relationship - } else { - let nonVersionedID = id.split('-').pop() - let matchingDocuments = byType(giantDocument, type) + function fixEmberRelationship (relationship, version) { + let type = relationship.type + let id = relationship.id - let latest = _(matchingDocuments) - .filter(d => d.name === nonVersionedID) - .sortBy(d => d.relationships['project-version'].data.id) - .reverse() - .value()[0] + let doc = giantDocument.data.find(model => model.id === id) - if (latest) { - return { - id: latest.id, - type: latest.type - } + if (doc || type === 'project-version' || type === 'project') { + return relationship } else { - return { - id: id.split('-').pop(), - type: 'missing' + let nonVersionedID = id.split('-').pop() + let matchingDocuments = byType(giantDocument, type) + + let latest = _(matchingDocuments) + .filter(d => d.name === nonVersionedID) + .sortBy(d => d.relationships['project-version'].data.id) + .reverse() + .value()[0] + + if (latest) { + return { + id: latest.id, + type: latest.type, + version: version + } + } else { + return { + id: id.split('-').pop(), + type: 'missing', + version: version + } } } } - } + resolve(giantDocument) + }) } diff --git a/lib/normalize-ids.js b/lib/normalize-ids.js index d30cc73..39d625d 100644 --- a/lib/normalize-ids.js +++ b/lib/normalize-ids.js @@ -1,8 +1,11 @@ 'use strict' -let Queue = require('promise-queue') let _ = require('lodash') let RSVP = require('rsvp') +let saveDoc = require('./save-document') +let tojsonapi = require('yuidoc-to-jsonapi/lib/converter') +let updateIDs = require('./update-with-versions-and-project') +let findType = require('./filter-jsonapi-doc').byType function removeLongDocsBecauseEmber1HasWeirdDocs (document) { let str = 'A Suite can' @@ -31,14 +34,15 @@ function isPublic (doc) { return doc.attributes.access !== 'private' && doc.attributes.deprecated !== true } -function normalizeIDs (versions, projectName) { - let tojsonapi = require('yuidoc-to-jsonapi/lib/converter') - let updateIDs = require('./update-with-versions-and-project') - let findType = require('./filter-jsonapi-doc').byType - - let jsonapidocs = versions.map(version => { - let jsonapidoc = tojsonapi(version.data) - return updateIDs(jsonapidoc, projectName, version.version) +function normalizeIDs (pVersions, projectName) { + let jsonapidocs = pVersions.map(pV => { + Object.keys(pV.data.modules).forEach(k => { + let modWithVer = pV.data.modules[k] + modWithVer.version = pV.version + pV.data.modules[k] = modWithVer + }) + let doc = tojsonapi(pV.data) + return updateIDs(doc, projectName, pV.version) }) let jsonapidoc = { @@ -47,12 +51,10 @@ function normalizeIDs (versions, projectName) { jsonapidoc.data = jsonapidoc.data.filter(removeLongDocsBecauseEmber1HasWeirdDocs) - let projectVersions = versions.map(version => { + let projectVersions = pVersions.map(version => { let classes = findType(jsonapidoc, 'class') .filter(filterForVersion(version)) - .filter(doc => { - return removeLongDocsBecauseEmber1HasWeirdDocs(doc) - }) + .filter(removeLongDocsBecauseEmber1HasWeirdDocs) let namespaces = classes.filter(doc => doc.attributes.static === 1) classes = classes.filter(doc => doc.attributes.static !== 1) @@ -120,21 +122,19 @@ function normalizeIDs (versions, projectName) { } }) - let doc = { - data: jsonapidoc.data.concat(projectVersions) - } - - let saveDoc = require('./save-document') - - let queue = new Queue(10) let versionDocs = RSVP.map(projectVersions, (projectVersion) => { let doc = { data: projectVersion } - return queue.add(() => saveDoc(doc)) + let version = projectVersion.attributes.version + + return saveDoc(doc, projectName, version) }) + let doc = { + data: jsonapidoc.data.concat(projectVersions) + } return versionDocs.then(() => doc) } diff --git a/lib/read-docs.js b/lib/read-docs.js index 9a7697d..1d7849d 100644 --- a/lib/read-docs.js +++ b/lib/read-docs.js @@ -1,29 +1,58 @@ 'use strict' -var fs = require('fs') -var glob = require('glob') -var path = require('path') -let Inflected = require('inflected') - -module.exports = function readDocs (docName) { - let fileName = Inflected.dasherize(docName) + '-docs.json' - var folders = glob.sync(`tmp/*/${fileName}`) - - return folders.map(function (docs) { - var version = path.basename(path.dirname(docs)).replace('v', '') - var data - - try { - data = JSON.parse(fs.readFileSync(docs, { encoding: 'utf8' })) - } catch (e) { - console.error(docs) - console.error(e.stack) - process.exit(1) - } +const fs = require('fs-extra') +const glob = require('glob') +const path = require('path') +const RSVP = require('rsvp') +const Inflected = require('inflected') + +module.exports = function readDocs (projects, specificVersion = '') { + console.log(`Reading project files`) + + let docs = {} - return { - version: version, - data: data + projects.forEach(projectName => { + let fileName = Inflected.dasherize(projectName) + '-docs.json' + let folders = glob.sync(`tmp/s3-docs/v${specificVersion}*/${fileName}`) + + let projectFile = `tmp/json-docs/${projectName}/projects/${projectName}.json` + let prevIndexedVersions = [] + if (fs.existsSync(projectFile)) { + projectFile = JSON.parse(fs.readFileSync(projectFile)) + projectFile.data.relationships['project-versions'].data.forEach(pV => { + let version = pV.id.replace(`${projectName}-`, '') + prevIndexedVersions.push(`tmp/s3-docs/v${version}/${projectName}-docs.json`) + }) } + + folders = folders.filter(f => { + if (!prevIndexedVersions.includes(f)) { + return f + } else { + let version = f.replace('tmp/s3-docs/v', '').replace(`/${projectName}-docs.json`, '') + console.log(`${projectName}-${version} has already been indexed in json-docs`) + } + }) + + docs[projectName] = folders.map(docs => { + let version = path.basename(path.dirname(docs)).replace('v', '') + let data + + try { + data = JSON.parse(fs.readFileSync(docs, { encoding: 'utf8' })) + } catch (e) { + console.error(docs) + console.error(e.stack) + process.exit(1) + } + + return { + project: projectName, + version: version, + data: data + } + }) }) + + return RSVP.resolve(docs) } diff --git a/lib/s3-sync.js b/lib/s3-sync.js new file mode 100644 index 0000000..5459415 --- /dev/null +++ b/lib/s3-sync.js @@ -0,0 +1,80 @@ +const { Promise } = require('rsvp') +const S3 = require('s3') +const ora = require('ora') +const http = require('http') +const https = require('https') +const humanSize = require('human-size') +const assign = require('lodash.assign') + +// To increase s3's download & upload dir perf +http.globalAgent.maxSockets = https.globalAgent.maxSockets = 30 + +const { + AWS_ACCESS_KEY, + AWS_SECRET_KEY, + AWS_SHOULD_PUBLISH +} = process.env + +const client = S3.createClient({ + s3Options: { + accessKeyId: AWS_ACCESS_KEY, + secretAccessKey: AWS_SECRET_KEY + } +}) + +const bucketToUse = 'sk-ed' // TODO: Siva - make core team create one + +const s3DocsDirOptions = { + localDir: 'tmp/s3-docs', + s3Params: { + Bucket: bucketToUse, + Prefix: 's3-docs' + } +} + +const jsonDocsDirOptions = { + localDir: 'tmp/json-docs', + s3Params: { + Bucket: bucketToUse, + Prefix: 'json-docs' + } +} + +const syncDir = (operation, options, docName) => { + return new Promise((resolve, reject) => { + let isDownload = operation === 'download' + + let sync = isDownload ? client.downloadDir(options) : client.uploadDir(assign({ deleteRemoved: true }, options)) + let progressIndicator = ora(`${operation}ing ${docName} docs`).start() + + sync.on('progress', () => { + const { progressAmount, progressTotal } = sync + progressIndicator.text = `${operation}ing ${docName} docs (${humanSize(progressAmount)} of ${humanSize(progressTotal)})` + }) + + sync.on('end', () => { + progressIndicator.succeed(`${operation}ed ${docName} docs`) + resolve() + }) + + sync.on('error', (err) => { + progressIndicator.fail() + reject(err) + }) + }) +} + +const downloadDir = (options, docName) => syncDir('download', options, docName) +const uploadDir = (options, docName) => syncDir('upload', options, docName) + +module.exports.syncToLocal = function syncToLocal () { + return downloadDir(s3DocsDirOptions, 's3') + .then(() => downloadDir(jsonDocsDirOptions, 'json')) +} + +module.exports.syncToS3 = function syncToS3 () { + if (AWS_SHOULD_PUBLISH === 'yes') { + return uploadDir(s3DocsDirOptions, 's3') + .then(() => uploadDir(jsonDocsDirOptions, 'json')) + } +} diff --git a/lib/save-document.js b/lib/save-document.js index 61157d1..d781689 100644 --- a/lib/save-document.js +++ b/lib/save-document.js @@ -1,15 +1,23 @@ 'use strict' -let fs = require('graceful-fs') -let RSVP = require('rsvp') -let path = require('path') -let mkdirp = require('mkdirp') -let Inflected = require('inflected') -let pluralize = Inflected.pluralize.bind(Inflected) +const fs = require('graceful-fs') +const RSVP = require('rsvp') +const path = require('path') +const mkdirp = require('mkdirp') +const Inflected = require('inflected') +const pluralize = Inflected.pluralize.bind(Inflected) // updateOrCreate -module.exports = function saveDoc (document) { - let documentPath = path.join('tmp', 'docs', pluralize(document.data.type), document.data.id + '.json') +module.exports = function saveDoc (document, projectName, version = '') { + let documentPath = path.join( + 'tmp', + 'json-docs', + projectName, + version, + pluralize(document.data.type), + `${document.data.id}.json` + ) + let json = JSON.stringify(document, null, 2) return new RSVP.Promise((resolve, reject) => { @@ -19,7 +27,7 @@ module.exports = function saveDoc (document) { } mkdirp.sync(path.dirname(documentPath)) - + // console.log(`Saving ${documentPath}`) // good for debuggin return fs.writeFile(documentPath, json, (err, ok) => { if (err) { return reject(err) diff --git a/lib/transform-yui-object.js b/lib/transform-yui-object.js new file mode 100644 index 0000000..73003cd --- /dev/null +++ b/lib/transform-yui-object.js @@ -0,0 +1,20 @@ +let transformModules = require('./modules-transform') +let addSinceTags = require('./add-since-tags') +let addInheritedItems = require('./add-inherited-items') +let normalizeIDs = require('./normalize-ids') + +module.exports = function transformYuiObject (docs, projName) { + return transformModules(docs) + .then(d => { + console.log('Adding since tags') + return addSinceTags(d) + }) + .then(d => { + console.log('Adding inherited items') + return addInheritedItems(d) + }) + .then(d => { + console.log('Normalizing dependencies') + return normalizeIDs(d, projName) + }) +} diff --git a/package.json b/package.json index 6eb08dc..bf83da6 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,41 @@ { - "name": "ember-api-since", + "name": "ember-jsonapi-docs-generator", "version": "0.1.0", - "description": "audits ember docs and generates since tags", + "description": "Generates json api docs from ember's yuidocs", "main": "index.js", + "engines": { + "node": ">= 6" + }, "scripts": { "autoformat": "standard --fix index.js lib/*.js", - "start": "node --max-old-space-size=3072 index.js", + "start": "node --use-strict index.js", "test": "standard && mocha test" }, "author": "Stanley Stuart ", "license": "MIT", "devDependencies": { - "chai": "^3.4.1", + "chai": "^3.5.0", "mocha": "^3.2.0", - "standard": "^8.6.0", - "standard-format": "^2.1.0" + "standard": "^9.0.1", + "standard-format": "^2.2.4" }, "dependencies": { "cheerio": "^0.22.0", + "fs-extra": "^2.1.0", "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "highlight.js": "^9.1.0", - "inflected": "^1.1.6", - "lodash": "^3.10.1", - "marked": "^0.3.5", + "graceful-fs": "^4.1.11", + "highlight.js": "^9.10.0", + "human-size": "^1.1.0", + "inflected": "^1.1.7", + "lodash": "^4.17.4", + "marked": "^0.3.6", + "minimist": "^1.2.0", + "mkdir-promise": "^1.0.0", "mkdirp": "^0.5.1", - "pouchdb": "^6.0.7", - "promise-queue": "^2.2.0", - "promise-retry": "^1.0.2", - "rimraf": "^2.5.0", - "rsvp": "^3.1.0", + "ora": "^1.1.0", + "rsvp": "^3.4.0", "s3": "^4.4.0", - "yuidoc-to-jsonapi": "^0.4.0" + "yuidoc-to-jsonapi": "^0.4.1" }, "standard": { "globals": [ @@ -42,5 +46,16 @@ "after", "it" ] - } + }, + "directories": { + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ember-learn/ember-jsonapi-docs.git" + }, + "bugs": { + "url": "https://github.com/ember-learn/ember-jsonapi-docs/issues" + }, + "homepage": "https://github.com/ember-learn/ember-jsonapi-docs#readme" } diff --git a/test/filter-jsonapi-doc-test.js b/test/filter-jsonapi-doc-test.js index 634d1a8..5096756 100644 --- a/test/filter-jsonapi-doc-test.js +++ b/test/filter-jsonapi-doc-test.js @@ -67,7 +67,7 @@ describe('filter json api docs', function () { }) it('does not return unassociated models', function () { - let unassociated = _.filter(this.response.included, 'type', 'yoloswag') + let unassociated = _.filter(this.response.included, ['type', 'yoloswag']) assert.equal(unassociated.length, 0) }) }) diff --git a/yarn.lock b/yarn.lock index ee65c16..9d19208 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,22 +3,10 @@ abbrev@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -abstract-leveldown@~2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz#b3bfedb884eb693a12775f0c55e9f0a420ccee64" - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.1.tgz#f9014a5669b746418e145168dea49a044ae15900" - dependencies: - xtend "~4.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -acorn-jsx@^3.0.0, acorn-jsx@^3.0.1: +acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" dependencies: @@ -28,25 +16,21 @@ acorn-to-esprima@^2.0.6, acorn-to-esprima@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/acorn-to-esprima/-/acorn-to-esprima-2.0.8.tgz#003f0c642eb92132f417d3708f14ada82adf2eb1" +acorn@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" + acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.3.tgz#1a3e850b428e73ba6b09d1cc527f5aaad4d03ef1" - -after@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - ajv-keywords@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.2.0.tgz#676c4f087bfe1e8b12dca6fda2f3c74f417b099c" + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" ajv@^4.7.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.9.1.tgz#08e1b0a5fddc8b844d28ca7b03510e78812ee3a0" + version "4.11.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -56,41 +40,19 @@ ansi-escapes@^1.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" ansi-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" ansi-styles@^2.0.1, ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi@^0.3.0, ansi@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - -are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" dependencies: sprintf-js "~1.0.2" -argsarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" - -array-index@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" - dependencies: - debug "^2.2.0" - es6-symbol "^3.0.2" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -101,36 +63,21 @@ array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +array.prototype.find@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.3.tgz#08c3ec33e32ec4bab362a2958e686ae92f59271d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - assertion-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.0.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" - dependencies: - lodash "^4.14.0" - aws-sdk@~2.0.31: version "2.0.31" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.0.31.tgz#e72cf1fdc69015bd9fd2bdf3d3b88c16507d268e" @@ -138,108 +85,70 @@ aws-sdk@~2.0.31: xml2js "0.2.6" xmlbuilder "0.4.2" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" - -babel-code-frame@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" +babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: chalk "^1.1.0" esutils "^2.0.2" - js-tokens "^2.0.0" + js-tokens "^3.0.0" -babel-messages@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-runtime@^6.0.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" +babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: core-js "^2.4.0" - regenerator-runtime "^0.9.5" + regenerator-runtime "^0.10.0" babel-traverse@^6.4.5, babel-traverse@^6.9.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" - dependencies: - babel-code-frame "^6.16.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.19.0" - babylon "^6.11.0" + version "6.23.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.23.0" + babylon "^6.15.0" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.19.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" +babel-types@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" dependencies: - babel-runtime "^6.9.1" + babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@6.14.1, babylon@^6.11.0, babylon@^6.8.0: +babylon@6.14.1: version "6.14.1" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" +babylon@^6.15.0, babylon@^6.8.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" + balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -bcrypt-pbkdf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" - dependencies: - tweetnacl "^0.14.3" - -bindings@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - -bl@^1.0.0, bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - dependencies: - readable-stream "~2.0.5" - -bl@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.0.3.tgz#fc5421a28fd4226036c3b3891a66a25bc64d226e" - dependencies: - readable-stream "~2.0.5" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - bluebird@^3.0.5: - version "3.4.6" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - brace-expansion@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" @@ -265,11 +174,7 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -chai@^3.4.1: +chai@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" dependencies: @@ -308,7 +213,7 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -circular-json@^0.3.0: +circular-json@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" @@ -318,6 +223,16 @@ cli-cursor@^1.0.1: dependencies: restore-cursor "^1.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" + cli-width@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" @@ -330,12 +245,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - commander@2.9.0, commander@^2.2.0, commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -347,12 +256,12 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" concat-stream@^1.4.6, concat-stream@^1.4.7: - version "1.5.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" config-chain@~1.1.5: version "1.1.11" @@ -369,12 +278,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" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -388,18 +291,18 @@ css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" -d@^0.1.1, d@~0.1.1: +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +d@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" dependencies: es5-ext "~0.10.2" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - debug-log@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" @@ -420,19 +323,16 @@ deep-eql@^0.1.3: dependencies: type-detect "0.1.1" -deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -deferred-leveldown@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz#5d25c3310f5fe909946f6240dc9f90dd109a71ef" +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" dependencies: - abstract-leveldown "~2.4.0" + foreach "^2.0.5" + object-keys "^1.0.8" deglob@^1.0.0: version "1.1.2" @@ -446,7 +346,7 @@ deglob@^1.0.0: uniq "^1.0.1" xtend "^4.0.0" -deglob@^2.0.0: +deglob@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a" dependencies: @@ -469,14 +369,6 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - diff@1.4.0, diff@^1.3.2: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" @@ -523,22 +415,6 @@ domutils@1.5.1, domutils@^1.5.1: dom-serializer "0" domelementtype "1" -double-ended-queue@2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - -duplexer2@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - editorconfig@^0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.2.tgz#8e57926d9ee69ab6cb999f027c2171467acceb35" @@ -548,46 +424,47 @@ editorconfig@^0.13.2: lru-cache "^3.2.0" sigmund "^1.0.1" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" - dependencies: - once "~1.3.0" - -end-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/end-stream/-/end-stream-0.1.0.tgz#32003f3f438a2b0143168137f8fa6e9866c81ed5" - dependencies: - write-stream "~0.4.3" - entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -err-code@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.1.tgz#739d71b6851f24d050ea18c79a5b722420771d59" +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" -errno@~0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" +es-abstract@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" dependencies: - prr "~0.0.0" + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" -es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7: - version "0.10.12" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.11, es5-ext@~0.10.14, es5-ext@~0.10.2: + version "0.10.14" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.14.tgz#625bc9ab9cac0f6fb9dc271525823d1800b3d360" dependencies: es6-iterator "2" es6-symbol "~3.1" -es6-iterator@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" +es6-iterator@2, es6-iterator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" dependencies: - d "^0.1.1" - es5-ext "^0.10.7" - es6-symbol "3" + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" es6-map@^0.1.3: version "0.1.4" @@ -600,10 +477,6 @@ es6-map@^0.1.3: es6-symbol "~3.1.0" event-emitter "~0.3.4" -es6-promise-pool@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/es6-promise-pool/-/es6-promise-pool-2.4.4.tgz#2e3c4859d52add51852a14d13584a047f03f3dba" - es6-set@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8" @@ -614,21 +487,21 @@ es6-set@~0.1.3: es6-symbol "3" event-emitter "~0.3.4" -es6-symbol@3, es6-symbol@^3.0.2, es6-symbol@~3.1, es6-symbol@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" +es6-symbol@3, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: - d "~0.1.1" - es5-ext "~0.10.11" + d "1" + es5-ext "~0.10.14" es6-weak-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: - d "^0.1.1" - es5-ext "^0.10.8" - es6-iterator "2" - es6-symbol "3" + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" @@ -654,8 +527,8 @@ esformatter-ignore@^0.1.3: resolved "https://registry.yarnpkg.com/esformatter-ignore/-/esformatter-ignore-0.1.3.tgz#04d3b875bfa49dde004cc58df6f6bbc3c0567f1e" esformatter-jsx@^7.0.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/esformatter-jsx/-/esformatter-jsx-7.4.0.tgz#374e44d3e13775294719aa2d057500e88645eb12" + version "7.4.1" + resolved "https://registry.yarnpkg.com/esformatter-jsx/-/esformatter-jsx-7.4.1.tgz#b2209ae0908f413a747b1205727cbf4ba4249602" dependencies: babylon "6.14.1" esformatter-ignore "^0.1.3" @@ -726,32 +599,33 @@ esformatter@^0.9.0: supports-color "^1.3.1" user-home "^2.0.0" -eslint-config-standard-jsx@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz#c240e26ed919a11a42aa4de8059472b38268d620" +eslint-config-standard-jsx@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.3.0.tgz#cab0801a15a360bf63facb97ab22fbdd88d8a5e0" -eslint-config-standard@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" +eslint-config-standard@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-7.0.1.tgz#6cec96084de9ac862c33ccb953d13a7c59872342" eslint-plugin-promise@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.4.0.tgz#6ba9048c2df57be77d036e0c68918bc9b4fc4195" + version "3.4.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz#1be2793eafe2d18b5b123b8136c269f804fe7122" -eslint-plugin-react@~6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.7.1.tgz#1af96aea545856825157d97c1b50d5a8fb64a5a7" +eslint-plugin-react@~6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.9.0.tgz#54c2e9906b76f9d10142030bdc34e9d6840a0bb2" dependencies: + array.prototype.find "^2.0.1" doctrine "^1.2.2" - jsx-ast-utils "^1.3.3" + jsx-ast-utils "^1.3.4" eslint-plugin-standard@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3" -eslint@~3.10.2: - version "3.10.2" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.10.2.tgz#c9a10e8bf6e9d65651204778c503341f1eac3ce7" +eslint@~3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.15.0.tgz#bdcc6a6c5ffe08160e7b93c066695362a91e30f2" dependencies: babel-code-frame "^6.16.0" chalk "^1.1.3" @@ -759,12 +633,12 @@ eslint@~3.10.2: debug "^2.1.1" doctrine "^1.2.2" escope "^3.6.0" - espree "^3.3.1" + espree "^3.4.0" estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" glob "^7.0.3" - globals "^9.2.0" + globals "^9.14.0" ignore "^3.2.0" imurmurhash "^0.1.4" inquirer "^0.12.0" @@ -783,22 +657,26 @@ eslint@~3.10.2: require-uncached "^1.0.2" shelljs "^0.7.5" strip-bom "^3.0.0" - strip-json-comments "~1.0.1" + strip-json-comments "~2.0.1" table "^3.7.8" text-table "~0.2.0" user-home "^2.0.0" -espree@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.3.2.tgz#dbf3fadeb4ecb4d4778303e50103b3d36c88b89c" +espree@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" dependencies: - acorn "^4.0.1" + acorn "4.0.4" acorn-jsx "^3.0.0" -esprima@^2.1, esprima@^2.6.0: +esprima@^2.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@~1.0: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" @@ -823,41 +701,23 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" event-emitter@~0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: - d "~0.1.1" - es5-ext "~0.10.7" - -execspawn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/execspawn/-/execspawn-1.0.1.tgz#8286f9dde7cecde7905fbdc04e24f368f23f8da6" - dependencies: - util-extend "^1.0.1" + d "1" + es5-ext "~0.10.14" exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" -expand-template@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.0.3.tgz#6c303323177a62b1b22c070279f7861287b69b1a" - -extend@3.0.0, extend@~3.0.0: +extend@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fast-future@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fast-future/-/fast-future-1.0.1.tgz#6cbd22d999ab39cd10fc79392486e7a678716818" - fast-levenshtein@~2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" fd-slicer@~1.0.0: version "1.0.1" @@ -883,53 +743,43 @@ find-root@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + findit2@~2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/findit2/-/findit2-2.2.3.tgz#58a466697df8a6205cdfdbf395536b8bd777a5f6" flat-cache@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.1.tgz#6c837d6225a7de5659323740b36d5361f71691ff" + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" dependencies: - circular-json "^0.3.0" + circular-json "^0.3.1" del "^2.0.2" graceful-fs "^4.1.2" write "^0.2.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" -form-data@~1.0.0-rc3, form-data@~1.0.0-rc4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" +fs-extra@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.0.tgz#122ac03cf15a84dd89c7a5b4edb42b1b46265dbe" dependencies: - async "^2.0.1" - combined-stream "^1.0.5" - mime-types "^2.1.11" + graceful-fs "^4.1.2" + jsonfile "^2.1.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -gauge@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" generate-function@^2.0.0: version "2.0.0" @@ -945,51 +795,6 @@ get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" -getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" - dependencies: - assert-plus "^1.0.0" - -ghreleases@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ghreleases/-/ghreleases-1.0.5.tgz#a20f8194074311e19d84ccba7a6e08c4b434fd80" - dependencies: - after "~0.8.1" - ghrepos "~2.0.0" - ghutils "~3.2.0" - simple-mime "~0.1.0" - url-template "~2.0.6" - xtend "~4.0.0" - -ghrepos@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ghrepos/-/ghrepos-2.0.0.tgz#d66eae9d98a3b5398e460d6db7e10a742692e81b" - dependencies: - ghutils "~3.2.0" - -ghutils@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ghutils/-/ghutils-3.2.1.tgz#4fcedffac935fcace06e12a17c6174e2c29ffe4f" - dependencies: - jsonist "~1.3.0" - xtend "~4.0.1" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - -"glob@3 || 4 || 5 || 6 || 7", glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" @@ -1011,9 +816,20 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0, globals@^9.2.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0, globals@^9.14.0: + version "9.16.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80" globby@^5.0.0: version "5.0.0" @@ -1026,7 +842,7 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1044,15 +860,6 @@ growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -1063,26 +870,15 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -highlight.js@^9.1.0: - version "9.8.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.8.0.tgz#38eeef40cd45eaddbec8c9e5238fb7a783a3b685" + function-bind "^1.0.2" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +highlight.js@^9.10.0: + version "9.10.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.10.0.tgz#f9f0b14c0be00f0e4fb1e577b749fed9e6f52f55" home-or-tmp@^2.0.0: version "2.0.0" @@ -1102,34 +898,19 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^2.0.2" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -hyperquest@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-1.2.0.tgz#39e1fef66888dc7ce0dec6c0dd814f6fc8944ad5" - dependencies: - duplexer2 "~0.0.2" - through2 "~0.6.3" +human-size@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/human-size/-/human-size-1.1.0.tgz#052562be999841c037022c20259990c56ea996f9" ignore@^3.0.9, ignore@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + version "3.2.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.5.tgz#6437903354653e32ebbf562c45e68e4922a95df6" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -inflected@^1.1.6: +inflected@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/inflected/-/inflected-1.1.7.tgz#c393df6e28472d0d77b3082ec3aa2091f4bc96f9" @@ -1140,11 +921,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" @@ -1176,6 +957,18 @@ invariant@^2.2.0: dependencies: loose-envify "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -1186,9 +979,9 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" +is-my-json-valid@^2.10.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" @@ -1215,19 +1008,21 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" dependencies: tryit "^1.0.1" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" @@ -1237,16 +1032,6 @@ isexe@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - js-beautify@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.6.4.tgz#a9af79699742ac9a1b6fddc1fdbc78bc4d515fc3" @@ -1256,24 +1041,16 @@ js-beautify@1.6.4: mkdirp "~0.5.0" nopt "~3.0.1" -js-tokens@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" +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.5.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + version "3.8.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721" dependencies: argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + esprima "^3.1.1" json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" @@ -1281,97 +1058,30 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonist@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsonist/-/jsonist-1.3.0.tgz#c0c74b95ef1c952038619b29efa520b1cc987556" - dependencies: - bl "~1.0.0" - hyperquest "~1.2.0" - json-stringify-safe "~5.0.0" - xtend "~4.0.0" - jsonpointer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" - -jsprim@^1.2.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" - dependencies: - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" -jsx-ast-utils@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.3.4.tgz#0257ed1cc4b1e65b39d7d9940f9fb4f20f7ba0a9" +jsx-ast-utils@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz#5afe38868f56bc8cc7aeaef0100ba8c75bd12591" dependencies: - acorn-jsx "^3.0.1" object-assign "^4.1.0" -level-codec@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-6.2.0.tgz#a4b5244bb6a4c2f723d68a1d64e980c53627d9d4" - -level-codec@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-6.1.0.tgz#f5df0a99582f76dac43855151ab6f4e4d0d60045" - -level-errors@^1.0.3, level-errors@~1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.4.tgz#3585e623974c737a93755492a43c0267cda4425f" - dependencies: - errno "~0.1.1" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-write-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-write-stream/-/level-write-stream-1.0.0.tgz#3f7fbb679a55137c0feb303dee766e12ee13c1dc" - dependencies: - end-stream "~0.1.0" - -leveldown@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-1.5.0.tgz#6b8d3cbea7a4a89aa47444607d7358213e6fcb81" - dependencies: - abstract-leveldown "~2.6.1" - bindings "~1.2.1" - fast-future "~1.0.0" - nan "~2.4.0" - prebuild "^4.1.1" - -levelup@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.3.tgz#bf9db62bdb6188d08eaaa2efcf6cc311916f41fd" - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~6.1.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.1.0" - xtend "~4.0.0" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -1379,11 +1089,21 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lie@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.0.tgz#65e0139eaef9ae791a1f5c8c53692c8d3b4718f4" +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" dependencies: - immediate "~3.0.5" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" lodash._baseassign@^3.0.0: version "3.2.0" @@ -1534,18 +1254,6 @@ lodash.merge@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - lodash.pick@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-3.1.0.tgz#f252a855b2046b61bcd3904b26f76bd2efc65550" @@ -1587,15 +1295,21 @@ lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.3.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" +lodash@^4.0.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" loose-envify@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: - js-tokens "^2.0.0" + js-tokens "^3.0.0" lru-cache@^3.2.0: version "3.2.0" @@ -1603,29 +1317,19 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" -ltgt@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.2.tgz#e7472324fee690afc0d5ecf900403ce5788a311d" - -marked@^0.3.5: +marked@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" -mime-db@~1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" - -mime-types@^2.1.11, mime-types@~2.1.7: - version "2.1.13" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" - dependencies: - mime-db "~1.25.0" - mime@~1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" -"minimatch@2 || 3", minimatch@3, minimatch@^3.0.2: +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +"minimatch@2 || 3", minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -1635,11 +1339,15 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.2, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdir-promise@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mkdir-promise/-/mkdir-promise-1.0.0.tgz#81ad385e69e493ce385316b9c18a2f14289e333e" + +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1677,10 +1385,6 @@ mute-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" -nan@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" - natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" @@ -1689,53 +1393,7 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -node-gyp@^3.0.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.4.0.tgz#dda558393b3ecbbe24c9e6b8703c71194c63fa36" - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - minimatch "^3.0.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3" - osenv "0" - path-array "^1.0.0" - request "2" - rimraf "2" - semver "2.x || 3.x || 4 || 5" - tar "^2.0.0" - which "1" - -node-ninja@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/node-ninja/-/node-ninja-1.0.2.tgz#20a09e57b92e2df591993d4bf098ac3e727062b6" - dependencies: - fstream "^1.0.0" - glob "3 || 4 || 5 || 6 || 7" - graceful-fs "^4.1.2" - minimatch "3" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2" - osenv "0" - path-array "^1.0.0" - request "2" - rimraf "2" - semver "2.x || 3.x || 4 || 5" - tar "^2.0.0" - which "1" - -node-uuid@~1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" - -noop-logger@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - -"nopt@2 || 3", nopt@~3.0.1: +nopt@~3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -1766,14 +1424,6 @@ npm-which@^2.0.0: npm-path "^1.0.0" which "^1.0.5" -"npmlog@0 || 1 || 2", "npmlog@0 || 1 || 2 || 3", npmlog@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -1784,30 +1434,30 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -once@^1.3.0, once@^1.3.1: +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +onetime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6" + dependencies: + mimic-fn "^1.0.0" + optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -1819,7 +1469,16 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -os-homedir@^1.0.0, os-homedir@^1.0.1: +ora@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.1.0.tgz#69aaa4a209630e43b142c5f7ff41820da87e2faf" + dependencies: + chalk "^1.1.1" + cli-cursor "^2.1.0" + cli-spinners "^1.0.0" + log-symbols "^1.0.2" + +os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1827,22 +1486,29 @@ os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" + p-limit "^1.1.0" -path-array@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-array/-/path-array-1.0.1.tgz#7e2f0f35f07a2015122b868b7eac0eb2c4fec271" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: - array-index "^1.0.0" + error-ex "^1.2.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" path-is-absolute@^1.0.0: version "1.0.1" @@ -1852,6 +1518,10 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -1870,7 +1540,14 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pkg-config@^1.0.1, pkg-config@^1.1.0: +pkg-conf@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" + dependencies: + find-up "^2.0.0" + load-json-file "^2.0.0" + +pkg-config@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" dependencies: @@ -1882,51 +1559,6 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -pouchdb@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-6.0.7.tgz#cc46c2821492f600a9f1f840c244aad3274840cd" - dependencies: - argsarray "0.0.1" - debug "2.2.0" - double-ended-queue "2.1.0-0" - es6-promise-pool "2.4.4" - inherits "2.0.3" - level-codec "6.2.0" - level-write-stream "1.0.0" - leveldown "1.5.0" - levelup "1.3.3" - lie "3.1.0" - ltgt "2.1.2" - readable-stream "1.0.33" - request "2.74.0" - scope-eval "0.0.3" - spark-md5 "2.0.2" - through2 "2.0.1" - vuvuzela "1.0.3" - -prebuild@^4.1.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/prebuild/-/prebuild-4.5.0.tgz#2aaa0df2063bff814a803bd4dc94ff9b64e5df00" - dependencies: - async "^1.4.0" - execspawn "^1.0.1" - expand-template "^1.0.0" - ghreleases "^1.0.2" - github-from-package "0.0.0" - minimist "^1.1.2" - mkdirp "^0.5.1" - node-gyp "^3.0.3" - node-ninja "^1.0.1" - noop-logger "^0.1.0" - npmlog "^2.0.0" - os-homedir "^1.0.1" - pump "^1.0.0" - rc "^1.0.3" - simple-get "^1.4.2" - tar-fs "^1.7.0" - tar-stream "^1.2.1" - xtend "^4.0.1" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -1939,17 +1571,6 @@ progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" -promise-queue@^2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.3.tgz#8534d76bf4673c3baa3a82bba01bd295cc30f14f" - -promise-retry@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -1958,58 +1579,13 @@ protochain@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/protochain/-/protochain-1.0.5.tgz#991c407e99de264aadf8f81504b5e7faf7bfa260" -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -pump@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.1.tgz#f1f1409fb9bd1085bbdb576b43b84ec4b5eadc1a" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.1.0.tgz#ec1d1626b24278d99f0fdf4549e524e24eceeb26" - -qs@~6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" - -rc@^1.0.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~1.0.4" - -readable-stream@1.0.33, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@^1.0.33: - version "1.0.33" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.33.tgz#3a360dd66c1b1d7fd4705389860eda1d0f61126c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" +readable-stream@^2.0.2, readable-stream@^2.2.2: + version "2.2.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.5.tgz#a0b187304e05bab01a4ce2b4cc9c607d5aa1d606" dependencies: buffer-shims "^1.0.0" core-util-is "~1.0.0" @@ -2019,30 +1595,6 @@ readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2. string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@~0.0.2: - version "0.0.4" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" - -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.0.0, readable-stream@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readline2@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" @@ -2057,66 +1609,14 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" +regenerator-runtime@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" repeat-string@^1.5.0: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -request@2: - version "2.72.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.72.0.tgz#0ce3a179512620b10441f14c82e21c12c0ddb4e1" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~1.0.0-rc3" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.1.0" - stringstream "~0.0.4" - tough-cookie "~2.2.0" - tunnel-agent "~0.4.1" - -request@2.74.0: - version "2.74.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~1.0.0-rc4" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - require-uncached@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -2129,8 +1629,10 @@ resolve-from@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" resolve@^1.1.5, resolve@^1.1.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + version "1.3.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + dependencies: + path-parse "^1.0.5" restore-cursor@^1.0.1: version "1.0.1" @@ -2139,17 +1641,14 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" -retry@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.0.tgz#649e15ca408422d98318161935e7f7d652d435dd" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.0: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" dependencies: - glob "^7.0.5" + onetime "^2.0.0" + signal-exit "^3.0.2" -rimraf@~2.2.8: +rimraf@^2.2.8, rimraf@~2.2.8: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" @@ -2197,9 +1696,9 @@ rocambole@^0.3.6: dependencies: esprima "~1.0" -rsvp@^3.1.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813" +rsvp@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.4.0.tgz#96f397d9c7e294351b3c1456a74b3d0e7542988d" run-async@^0.1.0: version "0.1.0" @@ -2233,14 +1732,6 @@ sax@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/sax/-/sax-0.4.2.tgz#39f3b601733d6bec97105b242a2a40fd6978ac3c" -scope-eval@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/scope-eval/-/scope-eval-0.0.3.tgz#166f2ccd1f3754429dec511805501f9d6923b5ec" - -"semver@2.x || 3.x || 4 || 5", semver@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" - semver@^4.3.1: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -2252,8 +1743,8 @@ serializerr@^1.0.1: protochain "^1.0.5" shelljs@^0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.5.tgz#2eef7a50a21e1ccf37da00df767ec69e30ad0675" + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -2263,32 +1754,14 @@ sigmund@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" -simple-get@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" - dependencies: - once "^1.3.1" - unzip-response "^1.0.0" - xtend "^4.0.0" - -simple-mime@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-mime/-/simple-mime-0.1.0.tgz#95f517c4f466d7cff561a71fc9dab2596ea9ef2e" +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -spark-md5@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-2.0.2.tgz#37b763847763ae7e7acef2ca5233d01e649a78b7" - spawn-sync@^1.0.5: version "1.0.15" resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" @@ -2300,33 +1773,17 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -sshpk@^1.7.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" +standard-engine@~5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-5.4.0.tgz#e0e86959ea0786425d3383e40c1bf70d2f985579" dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -standard-engine@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-5.2.0.tgz#400660ae5acce8afd4db60ff2214a9190ad790a3" - dependencies: - deglob "^2.0.0" - find-root "^1.0.0" + deglob "^2.1.0" get-stdin "^5.0.1" home-or-tmp "^2.0.0" minimist "^1.1.0" - pkg-config "^1.0.1" + pkg-conf "^2.0.0" -standard-format@^2.1.0: +standard-format@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/standard-format/-/standard-format-2.2.4.tgz#b90fb39a635f749cd4fd117fe4730d31179aaeef" dependencies: @@ -2342,17 +1799,17 @@ standard-format@^2.1.0: minimist "^1.1.0" stdin "0.0.1" -standard@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/standard/-/standard-8.6.0.tgz#635132be7bfb567c2921005f30f9e350e4752aad" +standard@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/standard/-/standard-9.0.1.tgz#c053e9009bb1a8b4c6b03bf12df4784185bb5899" dependencies: - eslint "~3.10.2" - eslint-config-standard "6.2.1" - eslint-config-standard-jsx "3.2.0" + eslint "~3.15.0" + eslint-config-standard "7.0.1" + eslint-config-standard-jsx "3.3.0" eslint-plugin-promise "~3.4.0" - eslint-plugin-react "~6.7.1" + eslint-plugin-react "~6.9.0" eslint-plugin-standard "~2.0.1" - standard-engine "~5.2.0" + standard-engine "~5.4.0" stdin@*, stdin@0.0.1: version "0.0.1" @@ -2385,10 +1842,6 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -2403,9 +1856,9 @@ strip-json-comments@~0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-0.1.3.tgz#164c64e370a8a3cc00c9e01b539e569823f0ee54" -strip-json-comments@~1.0.1, strip-json-comments@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" supports-color@3.1.2: version "3.1.2" @@ -2436,49 +1889,10 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tar-fs@^1.7.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.14.0.tgz#f99cc074bf33bed21cd921a21720797bb18e6c96" - dependencies: - mkdirp "^0.5.0" - pump "^1.0.0" - tar-stream "^1.1.2" - -tar-stream@^1.1.2, tar-stream@^1.2.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - -tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -through2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" - dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" - -through2@~0.6.3: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -2487,28 +1901,10 @@ to-fast-properties@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" -tough-cookie@~2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.2.2.tgz#c83a1830f4e5ef0b93ef2a3488e724f8de016ac7" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.4" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.4.tgz#8c9dbfb52795686f166cd2023794bcf103d13c2b" - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -2523,7 +1919,7 @@ type-detect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" -typedarray@~0.0.5: +typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -2531,14 +1927,6 @@ uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" -unzip-response@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - -url-template@~2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -2549,21 +1937,7 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -vuvuzela@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" - -which@1, which@^1.0.5, which@^1.2.4: +which@^1.0.5, which@^1.2.4: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: @@ -2577,12 +1951,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-stream@~0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/write-stream/-/write-stream-0.4.3.tgz#83cc8c0347d0af6057a93862b4e3ae01de5c81c1" - dependencies: - readable-stream "~0.0.2" - write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -2599,11 +1967,11 @@ xmlbuilder@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-0.4.2.tgz#1776d65f3fdbad470a08d8604cdeb1c4e540ff83" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -yuidoc-to-jsonapi@^0.4.0: +yuidoc-to-jsonapi@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/yuidoc-to-jsonapi/-/yuidoc-to-jsonapi-0.4.1.tgz#9048bf740f43acb0759fc5d6d6e5fa0c1dfd0893" dependencies: