[kbn-plugin-generator] add plugin generator to the repo (#16655)

* [kbn-plugin-generator] add plugin generator to the repo

* [plugin-generator] use snake_case plugin name for directory name

* [plugin-generator] fix typo

* [plugin-generator] remove translation support until we resume i18n efforts

* [yarn] update lockfile

* [mocha] remove plugin-generator selector from mocha tests

* [plugin-generator] update generated readme to recommend yarn

* [plugin-generator] add readme to generator pacakge

* [plugin-generator] link from plugin-resource docs

* [plugin-generator] mention very important `kbn bootstrap` script

* [plugin-generator] rework some parts of the README

* [plugin-generator] log actual directory name with system separators

* [plugin-generator] include bootstrap/yarn preinstall check script
This commit is contained in:
Spencer 2018-02-12 12:23:23 -07:00 committed by GitHub
parent 2484982a2e
commit 2c7a1f34cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 2852 additions and 18 deletions

View file

@ -16,4 +16,5 @@
/packages/kbn-build/dist
/packages/kbn-build/vendor
/packages/kbn-build/**/fixtures
/packages/kbn-plugin-generator/sao_template/template
!/.eslintrc.js

View file

@ -16,7 +16,11 @@ module.exports = {
overrides: [
// Enable Prettier
{
files: ['.eslintrc.js', 'packages/kbn-build/**/*.js'],
files: [
'.eslintrc.js',
'packages/kbn-build/**/*',
'packages/kbn-plugin-generator/**/*',
],
plugins: ['prettier'],
rules: Object.assign(
{ 'prettier/prettier': 'error' },
@ -27,7 +31,11 @@ module.exports = {
// files not transpiled by babel can't using things like object-spread
{
files: ['.eslintrc.js', 'packages/kbn-plugin-helpers/**/*.js'],
files: [
'.eslintrc.js',
'packages/kbn-plugin-helpers/**/*',
'packages/kbn-plugin-generator/**/*',
],
rules: {
'prefer-object-spread/prefer-object-spread': 'off',
},

View file

@ -20,7 +20,13 @@ Many Kibana developers hang out on `irc.freenode.net` in the `#kibana` channel.
[float]
==== Plugin Generator
Check out the https://github.com/elastic/template-kibana-plugin/[plugin generator] to kick-start your plugin.
It is recommended that you kick-start your plugin by generating it with the {repo}tree/{branch}/packages/kbn-plugin-generator[Kibana Plugin Generator]. Run the following within the Kibana repo and you will be asked a couple questions, see some progress bars, and have a freshly generated plugin ready for you to play within Kibana's sibling `kibana-extra` folder.
["source","shell"]
-----------
node scripts/generate_plugin my_plugin_name # replace "my_plugin_name" with your desired plugin name
-----------
[float]
==== Directory structure for plugins

View file

@ -221,6 +221,7 @@
"@elastic/eslint-config-kibana": "link:packages/eslint-config-kibana",
"@elastic/eslint-import-resolver-kibana": "1.0.0",
"@elastic/eslint-plugin-kibana-custom": "link:packages/eslint-plugin-kibana-custom",
"@kbn/plugin-generator": "link:packages/kbn-plugin-generator",
"angular-mocks": "1.4.7",
"babel-eslint": "8.1.2",
"backport": "2.2.0",

View file

@ -0,0 +1,82 @@
# Kibana Plugin Generator
This package can be used to generate a Kibana plugin from the Kibana repo.
## Setup
Before you can use this plugin generator you must setup your [Kibana development environment](../../CONTRIBUTING.md#development-environment-setup). If you can successfully run `yarn kbn bootstrap` then you are ready to generate plugins!
## Compatibility
The plugin generator became a part of the Kibana project as of Kibana 6.3. If you are targeting versions **before Kibana 6.3** then use the [Kibana plugin sao template](https://github.com/elastic/template-kibana-plugin).
If you are targeting **Kibana 6.3 or greater** then checkout the corresponding Kibana branch and run the plugin generator.
## Quick Start
To target the current development version of Kibana just use the default `master` branch.
```sh
node scripts/generate_plugin my_plugin_name
# generates a plugin in `../kibana-extra/my_plugin_name`
```
To target 6.3, use the `6.x` branch (until the `6.3` branch is created).
```sh
git checkout 6.x
yarn kbn bootstrap # always bootstrap when switching branches
node scripts/generate_plugin
# generates a plugin for Kibana 6.3 in `../kibana-extra/my_plugin_name`
```
The generate script supports a few flags; run it with the `--help` flag to learn more.
```sh
node scripts/generate_plugin --help
```
## Updating
Since the Plugin Generator is now a part of the Kibana repo, when you update your local checkout of the Kibana repository and `bootstrap` everything should be up to date!
> ***NOTE:*** These commands should be run from the Kibana repo, and `upstream` is our convention for the git remote that references https://github.com/elastic/kibana.git, unless you added this remote you might need to use `origin`.
```sh
git pull upstream master
yarn kbn bootstrap
```
## Plugin Development Scripts
Generated plugins receive a handful of scripts that can be used during development. Those scripts are detailed in the [README.md](sao_template/template/README.md) file in each newly generated plugin, and expose the scripts provided by the [Kibana plugin helpers](../kbn-plugin-helpers), but here is a quick reference in case you need it:
> ***NOTE:*** All of these scripts should be run from the generated plugin.
- `yarn kbn bootstrap`
Install dependencies and crosslink Kibana and all projects/plugins.
> ***IMPORTANT:*** Use this script instead of `yarn` to install dependencies when switching branches, and re-run it whenever your dependencies change.
- `yarn start`
Start kibana and have it include this plugin. You can pass any arguments that you would normally send to `bin/kibana`
```
yarn start --elasticsearch.url http://localhost:9220
```
- `yarn build`
Build a distributable archive of your plugin.
- `yarn test:browser`
Run the browser tests in a real web browser.
- `yarn test:server`
Run the server tests using mocha.
For more information about any of these commands run `yarn ${task} --help`. For a full list of tasks run `yarn run` or take a look in the `package.json` file.

View file

@ -0,0 +1,48 @@
const { resolve } = require('path');
const dedent = require('dedent');
const sao = require('sao');
const chalk = require('chalk');
const getopts = require('getopts');
const snakeCase = require('lodash.snakecase');
exports.run = function run(argv) {
const options = getopts(argv, {
alias: {
h: 'help',
},
});
if (!options.help && options._.length !== 1) {
console.log(chalk`{red {bold [name]} is a required argument}\n`);
options.help = true;
}
if (options.help) {
console.log(
dedent(chalk`
{dim usage:} node scripts/generate-plugin {bold [name]}
generate a fresh Kibana plugin in the ../kibana-extra/ directory
`) + '\n'
);
process.exit(1);
}
const name = options._[0];
const template = resolve(__dirname, './sao_template');
const kibanaExtra = resolve(__dirname, '../../../kibana-extra');
const targetPath = resolve(kibanaExtra, snakeCase(name));
sao({
template: template,
targetPath: targetPath,
configOptions: {
name,
},
}).catch(error => {
console.error(chalk`{red fatal error}!`);
console.error(error.stack);
process.exit(1);
});
};

View file

@ -0,0 +1,15 @@
{
"name": "@kbn/plugin-generator",
"private": true,
"version": "1.0.0",
"dependencies": {
"chalk": "^2.3.0",
"dedent": "^0.7.0",
"execa": "^0.9.0",
"getopts": "^2.0.0",
"lodash.camelcase": "^4.3.0",
"lodash.kebabcase": "^4.1.1",
"lodash.startcase": "^4.4.0",
"sao": "^0.22.12"
}
}

View file

@ -0,0 +1,92 @@
const { resolve, relative, dirname } = require('path');
const kebabCase = require('lodash.kebabcase');
const startCase = require('lodash.startcase');
const camelCase = require('lodash.camelcase');
const snakeCase = require('lodash.snakecase');
const execa = require('execa');
const chalk = require('chalk');
const pkg = require('../package.json');
const kibanaPkgPath = require.resolve('../../../package.json');
const kibanaPkg = require(kibanaPkgPath);
const KBN_DIR = dirname(kibanaPkgPath);
module.exports = function({ name }) {
return {
prompts: {
description: {
message: 'Provide a short description',
default: 'An awesome Kibana plugin',
},
kbnVersion: {
message: 'What Kibana version are you targeting?',
default: kibanaPkg.branch,
},
generateApp: {
type: 'confirm',
message: 'Should an app component be generated?',
default: true,
},
generateTranslations: {
type: 'confirm',
message: 'Should translation files be generated?',
default: true,
},
generateHack: {
type: 'confirm',
message: 'Should a hack component be generated?',
default: true,
},
generateApi: {
type: 'confirm',
message: 'Should a server API be generated?',
default: true,
},
},
filters: {
'public/**/*': 'generateApp',
'translations/**/*': 'generateTranslations',
'public/hack.js': 'generateHack',
'server/**/*': 'generateApi',
},
move: {
gitignore: '.gitignore',
eslintrc: '.eslintrc',
},
data: answers =>
Object.assign(
{
templateVersion: pkg.version,
kebabCase,
startCase,
camelCase,
name,
},
answers
),
enforceNewFolder: true,
installDependencies: false,
gitInit: true,
post({ log }) {
return execa('yarn', ['kbn', 'bootstrap'], {
cwd: KBN_DIR,
stdio: 'inherit',
}).then(() => {
const dir = relative(
process.cwd(),
resolve(KBN_DIR, `../kibana-extra`, snakeCase(name))
);
log.success(chalk`🎉
Your plugin has been created in {bold ${dir}}. Move into that directory to run it:
{bold cd "${dir}"}
{bold yarn start}
`);
});
},
};
};

View file

@ -0,0 +1,182 @@
const sao = require('sao');
const templatePkg = require('../package.json');
const template = {
fromPath: __dirname,
configOptions: {
name: 'Some fancy plugin',
},
};
function getFileContents(file) {
return file.contents.toString();
}
function getConfig(file) {
const contents = getFileContents(file).replace(/\r?\n/gm, '');
return contents.split('kibana.Plugin(')[1];
}
describe('plugin generator sao integration', () => {
test('skips files when answering no', async () => {
const res = await sao.mockPrompt(template, {
generateApp: false,
generateHack: false,
generateApi: false,
});
expect(res.fileList).not.toContain('public/app.js');
expect(res.fileList).not.toContain('public/__tests__/index.js');
expect(res.fileList).not.toContain('public/hack.js');
expect(res.fileList).not.toContain('server/routes/example.js');
expect(res.fileList).not.toContain('server/__tests__/index.js');
const uiExports = getConfig(res.files['index.js']);
expect(uiExports).not.toContain('app:');
expect(uiExports).not.toContain('hacks:');
expect(uiExports).not.toContain('init(server, options)');
});
it('includes app when answering yes', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: false,
generateApi: false,
});
// check output files
expect(res.fileList).toContain('public/app.js');
expect(res.fileList).toContain('public/__tests__/index.js');
expect(res.fileList).not.toContain('public/hack.js');
expect(res.fileList).not.toContain('server/routes/example.js');
expect(res.fileList).not.toContain('server/__tests__/index.js');
const uiExports = getConfig(res.files['index.js']);
expect(uiExports).toContain('app:');
expect(uiExports).not.toContain('hacks:');
expect(uiExports).not.toContain('init(server, options)');
});
it('includes hack when answering yes', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: true,
generateApi: false,
});
// check output files
expect(res.fileList).toContain('public/app.js');
expect(res.fileList).toContain('public/__tests__/index.js');
expect(res.fileList).toContain('public/hack.js');
expect(res.fileList).not.toContain('server/routes/example.js');
expect(res.fileList).not.toContain('server/__tests__/index.js');
const uiExports = getConfig(res.files['index.js']);
expect(uiExports).toContain('app:');
expect(uiExports).toContain('hacks:');
expect(uiExports).not.toContain('init(server, options)');
});
it('includes server api when answering yes', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: true,
generateApi: true,
});
// check output files
expect(res.fileList).toContain('public/app.js');
expect(res.fileList).toContain('public/__tests__/index.js');
expect(res.fileList).toContain('public/hack.js');
expect(res.fileList).toContain('server/routes/example.js');
expect(res.fileList).toContain('server/__tests__/index.js');
const uiExports = getConfig(res.files['index.js']);
expect(uiExports).toContain('app:');
expect(uiExports).toContain('hacks:');
expect(uiExports).toContain('init(server, options)');
});
it('plugin config has correct name and main path', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: true,
generateApi: true,
});
const indexContents = getFileContents(res.files['index.js']);
const nameLine = indexContents.match('name: (.*)')[1];
const mainLine = indexContents.match('main: (.*)')[1];
expect(nameLine).toContain('some-fancy-plugin');
expect(mainLine).toContain('plugins/some-fancy-plugin/app');
});
it('plugin package has correct name', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: true,
generateApi: true,
});
const packageContents = getFileContents(res.files['package.json']);
const pkg = JSON.parse(packageContents);
expect(pkg.name).toBe('some-fancy-plugin');
});
it('package has version "kibana" with master', async () => {
const res = await sao.mockPrompt(template, {
kbnVersion: 'master',
});
const packageContents = getFileContents(res.files['package.json']);
const pkg = JSON.parse(packageContents);
expect(pkg.kibana.version).toBe('kibana');
});
it('package has correct version', async () => {
const res = await sao.mockPrompt(template, {
kbnVersion: 'v6.0.0',
});
const packageContents = getFileContents(res.files['package.json']);
const pkg = JSON.parse(packageContents);
expect(pkg.kibana.version).toBe('v6.0.0');
});
it('package has correct templateVersion', async () => {
const res = await sao.mockPrompt(template, {
kbnVersion: 'master',
});
const packageContents = getFileContents(res.files['package.json']);
const pkg = JSON.parse(packageContents);
expect(pkg.kibana.templateVersion).toBe(templatePkg.version);
});
it('sample app has correct values', async () => {
const res = await sao.mockPrompt(template, {
generateApp: true,
generateHack: true,
generateApi: true,
});
const contents = getFileContents(res.files['public/app.js']);
const controllerLine = contents.match('.controller(.*)')[1];
const titleLine = contents.match('\\$scope.title(.*)')[1];
expect(controllerLine).toContain('someFancyPluginHelloWorld');
expect(titleLine).toContain('Some Fancy Plugin');
});
it('includes dotfiles', async () => {
const res = await sao.mockPrompt(template);
expect(res.files['.gitignore']).toBeTruthy();
expect(res.files['.eslintrc']).toBeTruthy();
});
});

View file

@ -0,0 +1,39 @@
# <%= name %>
<%- (description || '').split('\n').map(function (line) {
return '> ' + line
}).join('\n') %>
---
## development
See the [kibana contributing guide](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md) for instructions setting up your development environment. Once you have completed that, use the following yarn scripts.
- `yarn kbn bootstrap`
Install dependencies and crosslink Kibana and all projects/plugins.
> ***IMPORTANT:*** Use this script instead of `yarn` to install dependencies when switching branches, and re-run it whenever your dependencies change.
- `yarn start`
Start kibana and have it include this plugin. You can pass any arguments that you would normally send to `bin/kibana`
```
yarn start --elasticsearch.url http://localhost:9220
```
- `yarn build`
Build a distributable archive of your plugin.
- `yarn test:browser`
Run the browser tests in a real web browser.
- `yarn test:server`
Run the server tests using mocha.
For more information about any of these commands run `yarn ${task} --help`. For a full list of tasks checkout the `package.json` file, or run `yarn run`.

View file

@ -0,0 +1,7 @@
---
extends: "@elastic/kibana"
settings:
import/resolver:
'@elastic/eslint-import-resolver-kibana':
rootPackageName: '<%= kebabCase(name) %>'

View file

@ -0,0 +1,3 @@
npm-debug.log*
node_modules
/build/

View file

@ -0,0 +1,36 @@
<% if (generateApi) { %>import exampleRoute from './server/routes/example';<% } %>
export default function (kibana) {
return new kibana.Plugin({
require: ['elasticsearch'],
name: '<%= kebabCase(name) %>',
uiExports: {
<% if (generateApp) { %>
app: {
title: '<%= startCase(name) %>',
description: '<%= description %>',
main: 'plugins/<%= kebabCase(name) %>/app'
},
<% } %>
<% if (generateHack) { %>
hacks: [
'plugins/<%= name %>/hack'
]
<% } %>
},
config(Joi) {
return Joi.object({
enabled: Joi.boolean().default(true),
}).default();
},
<% if (generateApi) { %>
init(server, options) {
// Add server routes and initialize the plugin here
exampleRoute(server);
}
<% } %>
});
};

View file

@ -0,0 +1,33 @@
{
"name": "<%= kebabCase(name) %>",
"version": "0.0.0",
"description": "<%= description %>",
"main": "index.js",
"kibana": {
"version": "<%= (kbnVersion === 'master') ? 'kibana' : kbnVersion %>",
"templateVersion": "<%= templateVersion %>"
},
"scripts": {
"preinstall": "node ../../kibana/preinstall_check",
"kbn": "node ../../kibana/scripts/kbn",
"lint": "eslint **/*.js",
"start": "plugin-helpers start",
"test:server": "plugin-helpers test:server",
"test:browser": "plugin-helpers test:browser",
"build": "plugin-helpers build"
},
"devDependencies": {
"@elastic/eslint-config-kibana": "link:../../kibana/packages/eslint-config-kibana",
"@elastic/eslint-import-resolver-kibana": "^0.9.0",
"@kbn/plugin-helpers": "link:../../kibana/packages/kbn-plugin-helpers",
"babel-eslint": "^8.0.2",
"eslint": "^4.11.0",
"eslint-plugin-babel": "^4.1.1",
"eslint-plugin-import": "^2.3.0",
"eslint-plugin-jest": "^21.3.2",
"eslint-plugin-mocha": "^4.9.0",
"eslint-plugin-prefer-object-spread": "^1.2.1",
"eslint-plugin-react": "^7.0.1",
"expect.js": "^0.3.1"
}
}

View file

@ -0,0 +1,7 @@
import expect from 'expect.js';
describe('suite', () => {
it('is a test', () => {
expect(true).to.equal(true);
});
});

View file

@ -0,0 +1,34 @@
import moment from 'moment';
import { uiModules } from 'ui/modules';
import uiRoutes from 'ui/routes';
import 'ui/autoload/styles';
import './less/main.less';
import template from './templates/index.html';
uiRoutes.enable();
uiRoutes
.when('/', {
template,
resolve: {
currentTime($http) {
return $http.get('../api/<%= name %>/example').then(function (resp) {
return resp.data.time;
});
}
}
});
uiModules
.get('app/<%= name %>', [])
.controller('<%= camelCase(name) %>HelloWorld', function ($scope, $route, $interval) {
$scope.title = '<%= startCase(name) %>';
$scope.description = '<%= description %>';
const currentTime = moment($route.current.locals.currentTime);
$scope.currentTime = currentTime.format('HH:mm:ss');
const unsubscribe = $interval(function () {
$scope.currentTime = currentTime.add(1, 'second').format('HH:mm:ss');
}, 1000);
$scope.$watch('$destroy', unsubscribe);
});

View file

@ -0,0 +1,7 @@
import $ from 'jquery';
$(document.body).on('keypress', function (event) {
if (event.which === 58) {
alert('boo!');
}
});

View file

@ -0,0 +1,4 @@
.container {
margin-top: 30px;
}

View file

@ -0,0 +1,13 @@
<div class="container" ng-controller="<%= camelCase(name) %>HelloWorld">
<div class="row">
<div class="col-12-sm">
<div class="well">
<h2>Congratulations</h2>
<p class="lead">You've successfully created your first Kibana Plugin!</p>
</div>
<h1>{{ title }}</h1>
<p class="lead">{{ description }}</p>
<p>The current time is {{ currentTime }}</p>
</div>
</div>
</div>

View file

@ -0,0 +1,7 @@
import expect from 'expect.js';
describe('suite', () => {
it('is a test', () => {
expect(true).to.equal(true);
});
});

View file

@ -0,0 +1,11 @@
export default function (server) {
server.route({
path: '/api/<%= name %>/example',
method: 'GET',
handler(req, reply) {
reply({ time: (new Date()).toISOString() });
}
});
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
require('@kbn/plugin-generator').run(process.argv.slice(2));

View file

@ -11,5 +11,6 @@ export const DEFAULT_ESLINT_PATHS = [
'ui_framework/doc_site/src',
'ui_framework/generator_kui',
'utilities',
'webpackShims'
'webpackShims',
'.eslintrc.js'
];

534
yarn.lock
View file

@ -132,6 +132,10 @@
version "0.0.0"
uid ""
"@kbn/plugin-generator@link:packages/kbn-plugin-generator":
version "0.0.0"
uid ""
"@types/json-stable-stringify@^1.0.32":
version "1.0.32"
resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e"
@ -1372,6 +1376,10 @@ base64-arraybuffer@0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
base64-js@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
base64-js@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
@ -1441,6 +1449,12 @@ binary-extensions@^1.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.0.0.tgz#e597d1a7a6a3558a2d1c7241a16c99965e6aa40f"
bl@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
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"
@ -1549,7 +1563,7 @@ boom@5.2.0, boom@5.x.x:
dependencies:
hoek "4.x.x"
boxen@1.3.0, boxen@^1.2.1:
boxen@1.3.0, boxen@^1.2.1, boxen@^1.2.2:
version "1.3.0"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
dependencies:
@ -1697,6 +1711,14 @@ buffer-xor@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
buffer@^3.0.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb"
dependencies:
base64-js "0.0.8"
ieee754 "^1.1.4"
isarray "^1.0.0"
buffer@^4.3.0:
version "4.9.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
@ -1742,6 +1764,29 @@ bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
cac@^3.0.3:
version "3.0.4"
resolved "https://registry.yarnpkg.com/cac/-/cac-3.0.4.tgz#6d24ceec372efe5c9b798808bc7f49b47242a4ef"
dependencies:
camelcase-keys "^3.0.0"
chalk "^1.1.3"
indent-string "^3.0.0"
minimist "^1.2.0"
read-pkg-up "^1.0.1"
suffix "^0.1.0"
text-table "^0.2.0"
cac@^4.3.4:
version "4.4.1"
resolved "https://registry.yarnpkg.com/cac/-/cac-4.4.1.tgz#c6867f731c4be7b0c270689d1689400b914c7788"
dependencies:
chalk "^2.0.1"
minimost "^1.0.0"
read-pkg-up "^2.0.0"
redent "^2.0.0"
string-width "^2.1.1"
text-table "^0.2.0"
cache-loader@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.0.3.tgz#7717963ec082db068b17a1412deaaa72d21c4e30"
@ -1789,6 +1834,21 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
camelcase-keys@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-3.0.0.tgz#fc0c6c360363f7377e3793b9a16bccf1070c1ca4"
dependencies:
camelcase "^3.0.0"
map-obj "^1.0.0"
camelcase-keys@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
dependencies:
camelcase "^4.1.0"
map-obj "^2.0.0"
quick-lru "^1.0.0"
camelcase@4.1.0, camelcase@^4.0.0, camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@ -1844,6 +1904,15 @@ catbox@7.x.x:
hoek "4.x.x"
joi "10.x.x"
caw@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95"
dependencies:
get-proxy "^2.0.0"
isurl "^1.0.0-alpha5"
tunnel-agent "^0.6.0"
url-to-options "^1.0.1"
center-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@ -2165,6 +2234,10 @@ cloneable-readable@^1.0.0:
process-nextick-args "^1.0.6"
through2 "^2.0.1"
co@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@ -2269,7 +2342,7 @@ commander@2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
commander@2.8.1, commander@2.8.x:
commander@2.8.1, commander@2.8.x, commander@~2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
dependencies:
@ -2339,6 +2412,23 @@ concat-stream@1.6.0, concat-stream@^1.4.7, concat-stream@^1.5.2, concat-stream@^
readable-stream "^2.2.2"
typedarray "^0.0.6"
conf@^1.1.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/conf/-/conf-1.4.0.tgz#1ea66c9d7a9b601674a5bb9d2b8dc3c726625e67"
dependencies:
dot-prop "^4.1.0"
env-paths "^1.0.0"
make-dir "^1.0.0"
pkg-up "^2.0.0"
write-file-atomic "^2.3.0"
config-chain@^1.1.11:
version "1.1.11"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
dependencies:
ini "^1.3.4"
proto-list "~1.2.1"
configstore@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021"
@ -2527,6 +2617,13 @@ cross-spawn@^3.0.0:
lru-cache "^4.0.1"
which "^1.2.9"
cross-spawn@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
dependencies:
lru-cache "^4.0.1"
which "^1.2.9"
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@ -2958,6 +3055,58 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
dependencies:
file-type "^5.2.0"
is-stream "^1.1.0"
tar-stream "^1.5.2"
decompress-tarbz2@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
dependencies:
decompress-tar "^4.1.0"
file-type "^6.1.0"
is-stream "^1.1.0"
seek-bzip "^1.0.5"
unbzip2-stream "^1.0.9"
decompress-targz@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
dependencies:
decompress-tar "^4.1.1"
file-type "^5.2.0"
is-stream "^1.1.0"
decompress-unzip@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
dependencies:
file-type "^3.8.0"
get-stream "^2.2.0"
pify "^2.3.0"
yauzl "^2.4.2"
decompress@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d"
dependencies:
decompress-tar "^4.0.0"
decompress-tarbz2 "^4.0.0"
decompress-targz "^4.0.0"
decompress-unzip "^4.0.1"
graceful-fs "^4.1.10"
make-dir "^1.0.0"
pify "^2.3.0"
strip-dirs "^2.0.0"
dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
deep-eql@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
@ -3218,6 +3367,26 @@ downgrade-root@^1.0.0:
default-uid "^1.0.0"
is-root "^1.0.0"
download-git-repo@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/download-git-repo/-/download-git-repo-1.0.2.tgz#0b93a62057e41e2f21b1a06c95e7b26362b108ff"
dependencies:
download "^5.0.3"
git-clone "^0.1.0"
rimraf "^2.6.1"
download@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/download/-/download-5.0.3.tgz#63537f977f99266a30eb8a2a2fbd1f20b8000f7a"
dependencies:
caw "^2.0.0"
decompress "^4.0.0"
filenamify "^2.0.0"
get-stream "^3.0.0"
got "^6.3.0"
mkdirp "^0.5.1"
pify "^2.3.0"
dragula@3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/dragula/-/dragula-3.7.0.tgz#c010ae79be164e4a9cc765b0a8035e44c4896332"
@ -3290,7 +3459,7 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
ejs@^2.3.1:
ejs@^2.2.4, ejs@^2.3.1:
version "2.5.7"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
@ -3436,6 +3605,10 @@ entities@^1.1.1, entities@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
env-paths@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0"
enzyme-adapter-react-16@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4"
@ -3998,6 +4171,18 @@ execa@^0.8.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
execa@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01"
dependencies:
cross-spawn "^5.0.1"
get-stream "^3.0.0"
is-stream "^1.1.0"
npm-run-path "^2.0.0"
p-finally "^1.0.0"
signal-exit "^3.0.0"
strip-eof "^1.0.0"
execall@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73"
@ -4108,6 +4293,12 @@ express@^4.13.3:
utils-merge "1.0.1"
vary "~1.1.2"
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
dependencies:
is-extendable "^0.1.0"
extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@ -4259,14 +4450,34 @@ file-sync-cmp@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"
file-type@^3.1.0:
file-type@^3.1.0, file-type@^3.8.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
file-type@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
file-type@^6.1.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
filename-regex@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
filename-reserved-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
filenamify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.0.0.tgz#bd162262c0b6e94bfbcdcf19a3bbb3764f785695"
dependencies:
filename-reserved-regex "^2.0.0"
strip-outer "^1.0.0"
trim-repeated "^1.0.0"
fileset@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
@ -4501,6 +4712,10 @@ fs-access@^1.0.0:
dependencies:
null-check "^1.0.0"
fs-exists-sync@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
fs-extra@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
@ -4518,6 +4733,22 @@ fs-extra@^0.24.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
fs-extra@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^3.0.0"
universalify "^0.1.0"
fs-extra@^4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.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"
@ -4617,6 +4848,12 @@ get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
get-proxy@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93"
dependencies:
npm-conf "^1.1.0"
get-stdin@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
@ -4625,6 +4862,13 @@ get-stdin@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
get-stream@^2.2.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@ -4633,7 +4877,7 @@ getobject@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c"
getopts@2.0.0:
getopts@2.0.0, getopts@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.0.0.tgz#e9119f3e79d22d0685b77fbe78d5cd6e19ca1af0"
@ -4650,6 +4894,18 @@ gh-got@^5.0.0:
got "^6.2.0"
is-plain-obj "^1.1.0"
git-clone@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/git-clone/-/git-clone-0.1.0.tgz#0d76163778093aef7f1c30238f2a9ef3f07a2eb9"
git-config-path@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664"
dependencies:
extend-shallow "^2.0.1"
fs-exists-sync "^0.1.0"
homedir-polyfill "^1.0.0"
github-username@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1"
@ -4876,7 +5132,7 @@ got@^5.0.0:
unzip-response "^1.0.2"
url-parse-lax "^1.0.0"
got@^6.2.0, got@^6.7.1:
got@^6.2.0, got@^6.3.0, got@^6.7.1:
version "6.7.1"
resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
dependencies:
@ -4892,7 +5148,7 @@ got@^6.2.0, got@^6.7.1:
unzip-response "^2.0.1"
url-parse-lax "^1.0.0"
graceful-fs@4.X, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
graceful-fs@4.X, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@ -5183,10 +5439,20 @@ has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
has-symbol-support-x@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
has-to-string-tag-x@^1.2.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
dependencies:
has-symbol-support-x "^1.4.1"
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@ -5332,6 +5598,12 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
homedir-polyfill@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
dependencies:
parse-passwd "^1.0.0"
hooker@~0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
@ -5676,7 +5948,7 @@ inquirer@^1.0.2:
strip-ansi "^3.0.0"
through "^2.3.6"
inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.3.0:
inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.3, inquirer@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
@ -5812,6 +6084,12 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
is-binary-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.0.0.tgz#0e61cea6974b24dda8bcc8366ce58a69265d1a36"
dependencies:
binary-extensions "^1.0.0"
is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@ -5858,7 +6136,7 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
is-extendable@^0.1.1:
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@ -5926,6 +6204,10 @@ is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.0:
jsonpointer "^4.0.0"
xtend "^4.0.0"
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
is-npm@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@ -5950,7 +6232,7 @@ is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
is-object@~1.0.1:
is-object@^1.0.1, is-object@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
@ -6240,6 +6522,13 @@ istextorbinary@^2.1.0:
editions "^1.1.1"
textextensions "1 || 2"
isurl@^1.0.0-alpha5:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
dependencies:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
items@1.x.x:
version "1.1.1"
resolved "https://registry.yarnpkg.com/items/-/items-1.1.1.tgz#435b5dd21bca28b3cfd25bb5c6b278b715010fd9"
@ -6768,6 +7057,12 @@ jsonfile@^2.1.0:
optionalDependencies:
graceful-fs "^4.1.6"
jsonfile@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
optionalDependencies:
graceful-fs "^4.1.6"
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@ -6799,6 +7094,18 @@ jstimezonedetect@1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/jstimezonedetect/-/jstimezonedetect-1.0.5.tgz#93d035cd20e8c7d64eb1375cf5aa7a10a024466a"
jstransformer-ejs@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/jstransformer-ejs/-/jstransformer-ejs-0.0.3.tgz#04d9201469274fcf260f1e7efd732d487fa234b6"
dependencies:
ejs "^2.2.4"
jstransformer-handlebars@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/jstransformer-handlebars/-/jstransformer-handlebars-1.1.0.tgz#91ba56e0a28aee31bb56d4adbcbce508d8230468"
dependencies:
handlebars "^4.0.1"
jstransformer@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-0.0.2.tgz#7aae29a903d196cfa0973d885d3e47947ecd76ab"
@ -6806,6 +7113,13 @@ jstransformer@0.0.2:
is-promise "^2.0.0"
promise "^6.0.1"
jstransformer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
dependencies:
is-promise "^2.0.0"
promise "^7.0.1"
jsx-ast-utils@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
@ -6926,6 +7240,19 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
kopy@^8.2.0:
version "8.2.5"
resolved "https://registry.yarnpkg.com/kopy/-/kopy-8.2.5.tgz#6c95f312e981ab917680d7e5de3cdf29a1bf221f"
dependencies:
inquirer "^3.2.3"
is-binary-path "^2.0.0"
jstransformer "^1.0.0"
jstransformer-ejs "^0.0.3"
majo "^0.4.1"
minimatch "^3.0.4"
multimatch "^2.1.0"
path-exists "^3.0.0"
latest-version@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb"
@ -7326,6 +7653,10 @@ lodash.istypedarray@^3.0.0:
version "3.0.6"
resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62"
lodash.kebabcase@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
lodash.keys@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
@ -7408,6 +7739,10 @@ lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
lodash.startcase@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
@ -7532,6 +7867,14 @@ macaddress@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
majo@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/majo/-/majo-0.4.1.tgz#5e6eeb9b63bda77e59d396b9c9ce4189ce6100bc"
dependencies:
fs-extra "^3.0.1"
globby "^6.1.0"
ware "^1.3.0"
make-dir@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
@ -7563,6 +7906,10 @@ map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
map-obj@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
@ -7829,6 +8176,13 @@ minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
minimost@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/minimost/-/minimost-1.0.0.tgz#1d07954aa0268873408b95552fbffc5977dfc78b"
dependencies:
camelcase-keys "^4.0.0"
minimist "^1.2.0"
mixin-object@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
@ -7936,7 +8290,7 @@ multicast-dns@^6.0.1:
dns-packet "^1.0.1"
thunky "^0.1.0"
multimatch@^2.0.0:
multimatch@^2.0.0, multimatch@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
dependencies:
@ -8238,6 +8592,13 @@ normalize-url@^1.4.0:
query-string "^4.1.0"
sort-keys "^1.0.0"
npm-conf@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
dependencies:
config-chain "^1.1.11"
pify "^3.0.0"
npm-keyword@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/npm-keyword/-/npm-keyword-4.2.0.tgz#98ffebfdbb1336f27ef5fe1baca0dcacd0acf6c0"
@ -8640,6 +9001,15 @@ parse-entities@^1.0.2:
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
parse-git-config@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-1.1.1.tgz#d3a9984317132f57398712bba438e129590ddf8c"
dependencies:
extend-shallow "^2.0.1"
fs-exists-sync "^0.1.0"
git-config-path "^1.0.1"
ini "^1.3.4"
parse-glob@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
@ -8668,6 +9038,10 @@ parse-json@^2.1.0, parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
parse-passwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
parse5@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
@ -8880,6 +9254,12 @@ pkg-up@^1.0.0:
dependencies:
find-up "^1.0.0"
pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
dependencies:
find-up "^2.1.0"
pkginfo@0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff"
@ -9247,7 +9627,7 @@ promise@^6.0.1:
dependencies:
asap "~1.0.0"
promise@^7.1.1:
promise@^7.0.1, promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
dependencies:
@ -9281,6 +9661,10 @@ properties-parser@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/properties-parser/-/properties-parser-0.2.3.tgz#f7591255f707abbff227c7b56b637dbb0373a10f"
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
proxy-addr@~2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
@ -9407,6 +9791,10 @@ querystringify@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
quick-lru@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
raf@^3.0.0, raf@^3.1.0, raf@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575"
@ -9845,6 +10233,13 @@ redent@^1.0.0:
indent-string "^2.1.0"
strip-indent "^1.0.1"
redent@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
dependencies:
indent-string "^3.0.0"
strip-indent "^2.0.0"
reduce-css-calc@^1.2.6:
version "1.3.0"
resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
@ -10313,6 +10708,32 @@ sane@^2.0.0:
optionalDependencies:
fsevents "^1.1.1"
sao@^0.22.12:
version "0.22.12"
resolved "https://registry.yarnpkg.com/sao/-/sao-0.22.12.tgz#fe13bb32bb0d32892c188024f77c5ac26c19eaf9"
dependencies:
boxen "^1.2.2"
cac "^4.3.4"
chalk "^2.0.1"
co "^4.6.0"
conf "^1.1.2"
cross-spawn "^5.1.0"
download-git-repo "^1.0.1"
filenamify "^2.0.0"
fs-extra "^4.0.1"
git-config-path "^1.0.1"
globby "^6.1.0"
jstransformer-handlebars "^1.0.0"
kopy "^8.2.0"
ora "^1.3.0"
parse-git-config "^1.1.1"
semver "^5.4.1"
text-table "^0.2.0"
tildify "^1.2.0"
update-notifier "^2.2.0"
user-home "^2.0.0"
yarn-install "^0.5.1"
sass-graph@^2.1.1:
version "2.2.4"
resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
@ -10367,6 +10788,12 @@ scss-tokenizer@^0.2.3:
js-base64 "^2.1.8"
source-map "^0.4.2"
seek-bzip@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
dependencies:
commander "~2.8.1"
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
@ -11030,6 +11457,12 @@ strip-bom@3.0.0, strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
strip-dirs@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5"
dependencies:
is-natural-number "^4.0.1"
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@ -11040,10 +11473,20 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
strip-indent@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
strip-json-comments@^2.0.1, 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"
strip-outer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8"
dependencies:
escape-string-regexp "^1.0.2"
style-loader@0.19.0:
version "0.19.0"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759"
@ -11069,6 +11512,10 @@ sudo-block@^1.1.0:
is-docker "^1.0.0"
is-root "^1.0.0"
suffix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/suffix/-/suffix-0.1.0.tgz#3e46966de56af17600385e58db8ec659dd797907"
superagent@^3.0.0:
version "3.8.2"
resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.2.tgz#e4a11b9d047f7d3efeb3bbe536d9ec0021d16403"
@ -11225,6 +11672,15 @@ tar-pack@^3.4.0:
tar "^2.2.1"
uid-number "^0.0.6"
tar-stream@^1.5.2:
version "1.5.5"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55"
dependencies:
bl "^1.0.0"
end-of-stream "^1.0.0"
readable-stream "^2.0.0"
xtend "^4.0.0"
tar@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.0.tgz#527c595940b9673f386c7237759982ab2f274d08"
@ -11306,6 +11762,12 @@ ticky@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ticky/-/ticky-1.0.0.tgz#e87f38ee0491ea32f62e8f0567ba9638b29f049c"
tildify@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
dependencies:
os-homedir "^1.0.0"
time-stamp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
@ -11459,6 +11921,12 @@ trim-newlines@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
trim-repeated@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
dependencies:
escape-string-regexp "^1.0.2"
trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
@ -11606,6 +12074,13 @@ ultron@1.0.x:
version "1.0.2"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
unbzip2-stream@^1.0.9:
version "1.2.5"
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"
dependencies:
buffer "^3.0.1"
through "^2.3.6"
unc-path-regex@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
@ -11715,7 +12190,7 @@ update-notifier@^0.5.0:
semver-diff "^2.0.0"
string-length "^1.0.0"
update-notifier@^2.1.0, update-notifier@^2.3.0:
update-notifier@^2.1.0, update-notifier@^2.2.0, update-notifier@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
dependencies:
@ -11770,6 +12245,10 @@ url-regex@^3.0.0:
dependencies:
ip-regex "^1.0.1"
url-to-options@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@ -12174,6 +12653,12 @@ walker@~1.0.5:
dependencies:
makeerror "1.0.x"
ware@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4"
dependencies:
wrap-fn "^0.1.0"
warning@^2.0.0, warning@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/warning/-/warning-2.1.0.tgz#21220d9c63afc77a8c92111e011af705ce0c6901"
@ -12402,6 +12887,12 @@ wrap-ansi@^2.0.0:
string-width "^1.0.1"
strip-ansi "^3.0.1"
wrap-fn@^0.1.0:
version "0.1.5"
resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845"
dependencies:
co "3.1.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@ -12449,7 +12940,7 @@ write-file-atomic@^1.1.2:
imurmurhash "^0.1.4"
slide "^1.1.5"
write-file-atomic@^2.0.0, write-file-atomic@^2.1.0:
write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
dependencies:
@ -12691,6 +13182,14 @@ yargs@~3.10.0:
decamelize "^1.0.0"
window-size "0.1.0"
yarn-install@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/yarn-install/-/yarn-install-0.5.1.tgz#f3c55e8646b6ac8da360b2f8e31afe5c4a067340"
dependencies:
cac "^3.0.3"
chalk "^1.1.3"
cross-spawn "^4.0.2"
yauzl@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
@ -12704,6 +13203,13 @@ yauzl@2.7.0:
buffer-crc32 "~0.2.3"
fd-slicer "~1.0.1"
yauzl@^2.4.2:
version "2.9.1"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f"
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.0.1"
yeast@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"