From 758fe1a91f3fbda7e59e9e9470768fd655556a60 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 21:21:35 +0900 Subject: [PATCH 01/51] setup japanese translation --- docs/ja/README.md | 5 + docs/ja/SUMMARY.md | 40 +++ docs/ja/api/README.md | 3 + docs/ja/api/createLocalVue.md | 28 +++ docs/ja/api/mount.md | 136 +++++++++++ docs/ja/api/options.md | 210 ++++++++++++++++ docs/ja/api/selectors.md | 43 ++++ docs/ja/api/shallow.md | 124 ++++++++++ docs/ja/api/wrapper-array/README.md | 11 + docs/ja/api/wrapper-array/at.md | 21 ++ docs/ja/api/wrapper-array/contains.md | 24 ++ docs/ja/api/wrapper-array/hasAttribute.md | 21 ++ docs/ja/api/wrapper-array/hasClass.md | 20 ++ docs/ja/api/wrapper-array/hasProp.md | 30 +++ docs/ja/api/wrapper-array/hasStyle.md | 25 ++ docs/ja/api/wrapper-array/is.md | 20 ++ docs/ja/api/wrapper-array/isEmpty.md | 17 ++ docs/ja/api/wrapper-array/isVueInstance.md | 18 ++ docs/ja/api/wrapper-array/setData.md | 22 ++ docs/ja/api/wrapper-array/setMethods.md | 27 +++ docs/ja/api/wrapper-array/setProps.md | 22 ++ docs/ja/api/wrapper-array/trigger.md | 26 ++ docs/ja/api/wrapper-array/update.md | 22 ++ docs/ja/api/wrapper/README.md | 16 ++ docs/ja/api/wrapper/contains.md | 23 ++ docs/ja/api/wrapper/exists.md | 21 ++ docs/ja/api/wrapper/find.md | 27 +++ docs/ja/api/wrapper/findAll.md | 27 +++ docs/ja/api/wrapper/hasAttribute.md | 37 +++ docs/ja/api/wrapper/hasClass.md | 21 ++ docs/ja/api/wrapper/hasProp.md | 24 ++ docs/ja/api/wrapper/hasStyle.md | 24 ++ docs/ja/api/wrapper/html.md | 16 ++ docs/ja/api/wrapper/is.md | 19 ++ docs/ja/api/wrapper/isEmpty.md | 16 ++ docs/ja/api/wrapper/isVueInstance.md | 16 ++ docs/ja/api/wrapper/name.md | 18 ++ docs/ja/api/wrapper/setData.md | 20 ++ docs/ja/api/wrapper/setMethods.md | 24 ++ docs/ja/api/wrapper/setProps.md | 20 ++ docs/ja/api/wrapper/text.md | 16 ++ docs/ja/api/wrapper/trigger.md | 38 +++ docs/ja/api/wrapper/update.md | 19 ++ docs/ja/common-gotchas.md | 37 +++ docs/ja/getting-started.md | 150 ++++++++++++ docs/ja/guides/using-with-jest.md | 81 +++++++ docs/ja/guides/using-with-vuex.md | 270 +++++++++++++++++++++ 47 files changed, 1895 insertions(+) create mode 100644 docs/ja/README.md create mode 100644 docs/ja/SUMMARY.md create mode 100644 docs/ja/api/README.md create mode 100644 docs/ja/api/createLocalVue.md create mode 100644 docs/ja/api/mount.md create mode 100644 docs/ja/api/options.md create mode 100644 docs/ja/api/selectors.md create mode 100644 docs/ja/api/shallow.md create mode 100644 docs/ja/api/wrapper-array/README.md create mode 100644 docs/ja/api/wrapper-array/at.md create mode 100644 docs/ja/api/wrapper-array/contains.md create mode 100644 docs/ja/api/wrapper-array/hasAttribute.md create mode 100644 docs/ja/api/wrapper-array/hasClass.md create mode 100644 docs/ja/api/wrapper-array/hasProp.md create mode 100644 docs/ja/api/wrapper-array/hasStyle.md create mode 100644 docs/ja/api/wrapper-array/is.md create mode 100644 docs/ja/api/wrapper-array/isEmpty.md create mode 100644 docs/ja/api/wrapper-array/isVueInstance.md create mode 100644 docs/ja/api/wrapper-array/setData.md create mode 100644 docs/ja/api/wrapper-array/setMethods.md create mode 100644 docs/ja/api/wrapper-array/setProps.md create mode 100644 docs/ja/api/wrapper-array/trigger.md create mode 100644 docs/ja/api/wrapper-array/update.md create mode 100644 docs/ja/api/wrapper/README.md create mode 100644 docs/ja/api/wrapper/contains.md create mode 100644 docs/ja/api/wrapper/exists.md create mode 100644 docs/ja/api/wrapper/find.md create mode 100644 docs/ja/api/wrapper/findAll.md create mode 100644 docs/ja/api/wrapper/hasAttribute.md create mode 100644 docs/ja/api/wrapper/hasClass.md create mode 100644 docs/ja/api/wrapper/hasProp.md create mode 100644 docs/ja/api/wrapper/hasStyle.md create mode 100644 docs/ja/api/wrapper/html.md create mode 100644 docs/ja/api/wrapper/is.md create mode 100644 docs/ja/api/wrapper/isEmpty.md create mode 100644 docs/ja/api/wrapper/isVueInstance.md create mode 100644 docs/ja/api/wrapper/name.md create mode 100644 docs/ja/api/wrapper/setData.md create mode 100644 docs/ja/api/wrapper/setMethods.md create mode 100644 docs/ja/api/wrapper/setProps.md create mode 100644 docs/ja/api/wrapper/text.md create mode 100644 docs/ja/api/wrapper/trigger.md create mode 100644 docs/ja/api/wrapper/update.md create mode 100644 docs/ja/common-gotchas.md create mode 100644 docs/ja/getting-started.md create mode 100644 docs/ja/guides/using-with-jest.md create mode 100644 docs/ja/guides/using-with-vuex.md diff --git a/docs/ja/README.md b/docs/ja/README.md new file mode 100644 index 000000000..b41433f22 --- /dev/null +++ b/docs/ja/README.md @@ -0,0 +1,5 @@ +# vue-test-utils + +vue-test-utils is the official test library for Vue.js. It provides methods for unit testing Vue components. + +[Documentation Summary](SUMMARY.md) diff --git a/docs/ja/SUMMARY.md b/docs/ja/SUMMARY.md new file mode 100644 index 000000000..230ae6094 --- /dev/null +++ b/docs/ja/SUMMARY.md @@ -0,0 +1,40 @@ +## Table of Contents + +* [API](api/README.md) + * [createLocalVue](api/createLocalVue.md) + * [mount](api/mount.md) + * [shallow](api/shallow.md) + * [options](api/options.md) + * [Wrapper](api/wrapper/README.md) + * [contains](api/wrapper/contains.md) + * [find](api/wrapper/find.md) + * [hasAttribute](api/wrapper/hasAttribute.md) + * [hasClass](api/wrapper/hasClass.md) + * [hasProp](api/wrapper/hasProp.md) + * [hasStyle](api/wrapper/hasStyle.md) + * [html](api/wrapper/html.md) + * [is](api/wrapper/is.md) + * [isEmpty](api/wrapper/isEmpty.md) + * [isVueInstance](api/wrapper/isVueInstance.md) + * [name](api/wrapper/name.md) + * [update](api/wrapper/update.md) + * [setData](api/wrapper/setData.md) + * [setProps](api/wrapper/setProps.md) + * [text](api/wrapper/text.md) + * [trigger](api/wrapper/trigger.md) + * [WrapperArray](api/wrapper-array/README.md) + * [at](api/wrapper-array/at.md) + * [contains](api/wrapper-array/contains.md) + * [hasAttribute](api/wrapper-array/hasAttribute.md) + * [hasClass](api/wrapper-array/hasClass.md) + * [hasProp](api/wrapper-array/hasProp.md) + * [hasStyle](api/wrapper-array/hasStyle.md) + * [is](api/wrapper-array/is.md) + * [isEmpty](api/wrapper-array/isEmpty.md) + * [isVueInstance](api/wrapper-array/isVueInstance.md) + * [update](api/wrapper-array/update.md) + * [setData](api/wrapper-array/setData.md) + * [setProps](api/wrapper-array/setProps.md) + * [trigger](api/wrapper-array/trigger.md) + * [selectors](api/selectors.md) + * [common gotchas](common-gotchas.md) diff --git a/docs/ja/api/README.md b/docs/ja/api/README.md new file mode 100644 index 000000000..c18d724e6 --- /dev/null +++ b/docs/ja/api/README.md @@ -0,0 +1,3 @@ +## [mount](/docs/en/api/mount.md) +## [shallow](/docs/en/api/shallow.md) +## [selectors](/docs/en/api/selectors.md) diff --git a/docs/ja/api/createLocalVue.md b/docs/ja/api/createLocalVue.md new file mode 100644 index 000000000..0e8523298 --- /dev/null +++ b/docs/ja/api/createLocalVue.md @@ -0,0 +1,28 @@ +# createLocalVue() + +- **Returns:** + - `{Component}` + +- **Usage:** + +createLocalVue returns a Vue class for you to add components, mixins and install plugins without polluting the global Vue class. + +Use it with `options.localVue` + +```js +import { createLocalVue, shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const localVue = createLocalVue() +const wrapper = shallow(Foo, { + localVue, + intercept: { foo: true } +}) +expect(wrapper.vm.foo).to.equal(true) + +const freshWrapper = shallow(Foo) +expect(freshWrapper.vm.foo).to.equal(false) +``` + +- **See also:** [Common Gotchas](/en/common-gotchas.md) \ No newline at end of file diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md new file mode 100644 index 000000000..b088a2068 --- /dev/null +++ b/docs/ja/api/mount.md @@ -0,0 +1,136 @@ +# mount(component,{,options}]) + +- **Arguments:** + + - `{Component} component` + - `{Object} options` + +- **Returns:** `{Wrapper}` + +- **Options:** + +See [options](/docs/en/api/options.md) + +- **Usage:** + +Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. + +Use any valid [selector](/docs/en/api/selectors.md). + +**Without options:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = mount(Foo) + expect(wrapper.contains('div')).to.equal(true) + }) +}) +``` +**With Vue options:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = mount(Foo, { + propsData: { + color: 'red' + } + }) + expect(wrapper.hasProp('color', 'red')).to.equal(true) + }) +}) +``` + +**Attach to DOM:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = mount(Foo, { + attachToDocument: true + }) + expect(wrapper.contains('div')).to.equal(true) + }) +}) +``` +**Default and named slots:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' +import FooBar from './FooBar.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = mount(Foo, { + slots: { + default: [Bar, FooBar], + fooBar: FooBar, // Will match , + foo: '
' + } + }) + expect(wrapper.contains('div')).to.equal(true) + }) +}) +``` + +**Stubbing global properties:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const $route = { path: 'http://www.example-path.com' } + const wrapper = mount(Foo, { + intercept: { + $route + } + }) + expect(wrapper.vm.$route.path).to.equal($route.path) + }) +}) +``` + +**Stubbing components:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' +import Faz from './Faz.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = mount(Foo, { + stub: { + Bar: '
, can be a Vue component or array of Vue components + +`options.stubs` (`Object|Array`): Stubs components matching the name. Takes object or array of strings + +`options.provide` (`Object`): Provides value to component + +- **Usage:** + +**With Vue options:** + +```js +import { expect } from 'chai' + +const wrapper = shallow(Component, { + propsData: { + color: 'red' + } +}) +expect(wrapper.hasProp('color', 'red')).to.equal(true) +``` + +**Do not clone component** + +```js +import { expect } from 'chai' + +const wrapper = mount(Component, { + clone: false +}) + +expect(wrapper.hasProp('color', 'red')).to.equal(true) +``` + +**Attach to DOM:** + +```js +import { expect } from 'chai' + +const wrapper = shallow(Component, { + attachToDocument: true +}) +expect(wrapper.contains('div')).to.equal(true) +``` + +**Pass attrs:** + +```js +shallow(Component, { + attrs: { + attribute: 'value' + } +}) +``` + +**Mount a functional component:** + +```js +import { expect } from 'chai' + +const wrapper = mount(Component, { + context: { + props: { show: true } + } +}) + +expect(wrapper.is(Component)).to.equal(true) +``` + +**Stub global properties:** + +```js +import { expect } from 'chai' + +const $route = { path: 'http://www.example-path.com' } +const wrapper = shallow(Component, { + intercept: { + $route + } +}) +expect(wrapper.vm.$route.path).to.equal($route.path) +``` + +**Install Vue Router with a local Vue:** + +```js +import { createLocalVue, mount } from 'vue-test-utils' +import VueRouter from 'vue-router' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const localVue = createLocalVue() +localVue.use(VueRouter) + +const routes = [ + { path: '/foo', component: Foo } +] + +const router = new VueRouter({ + routes +}) + +const wrapper = mount(Component, { + localVue, + router +}) +expect(wrapper.vm.$route).to.be.an('object') +``` + +**Default and named slots:** + +```js +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = shallow(Component, { + slots: { + default: [Foo, Bar], + fooBar: Foo, // Will match , + foo: '
' + } +}) +expect(wrapper.find('div')).to.equal(true) +``` + +**Stub components:** + +```js +import Foo from './Foo.vue' + +mount(Component, { + stubs: ['registered-component'] +}) + +shallow(Component, { + stubs: { + 'registered-component': Foo, + 'another-component': true + } +}) +``` + +**Provide data to components:** + +```js +import { expect } from 'chai' + +const wrapper = mount(Component, { + provide: { fromMount: 'functionValue' } +}) +expect(wrapper.text()).to.contain('functionValue') +``` + +**Provide data to components:** + +```js +const wrapper = shallow(Component, { + provide () { + return { + fromMount: 'functionValue' + } + } +}) + +expect(wrapper.text()).to.contain('functionValue') +``` diff --git a/docs/ja/api/selectors.md b/docs/ja/api/selectors.md new file mode 100644 index 000000000..9cf6d7c22 --- /dev/null +++ b/docs/ja/api/selectors.md @@ -0,0 +1,43 @@ +# Selectors + +A lot of methods take a selector as an argument. A selector can either be a CSS selector, or a Vue component. + +## CSS Selectors + +mount handles any valid CSS selector: + +- tag selectors (div, foo, bar) +- class selectors (.foo, .bar) +- attribute selectors ([foo], [foo="bar"]) +- id selectors (#foo, #bar) +- pseudo selectors (div:first-of-type) + +You can also use combinators: + +- direct descendant combinator (div > #bar > .foo) +- general descendant combinator (div #bar .foo) +- adjacent sibling selector (div + .foo) +- general sibling selector (div ~ .foo) + +## Vue Components + +Vue components are also valid selectors. + +vue-test-utils uses the `name` property to search the instance tree for matching Vue components. + +```js +// Foo.vue + +export default{ + name: 'FooComponent' +} +``` + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = shallow(Foo) +expect(wrapper.is(Foo)).to.equal(true) +``` diff --git a/docs/ja/api/shallow.md b/docs/ja/api/shallow.md new file mode 100644 index 000000000..389c06c9c --- /dev/null +++ b/docs/ja/api/shallow.md @@ -0,0 +1,124 @@ +# shallow(component,{,options}]) + +- **Arguments:** + + - `{Component} component` + - `{Object} options` + - `{boolean} attachToDocument` + - `{Object} context` + - `{Object} slots` + - `{Array|Component|String} default` + - `{Array|Component|String} named` + - `{Object} intercept` + - `{Object|Array} stubs` + - `{boolean} clone` + - `{Object} children` + - `{Vue} localVue` + +- **Returns:** `{Wrapper}` + +- **Options:** + +See [options](/docs/en/api/options.md) + +- **Usage:** + +Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. + +Stubs all child components. + +Use any valid [selector](/docs/en/api/selectors.md). + +**Without options:** + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = shallow(Foo) + expect(wrapper.contains('div')).to.equal(true) + }) +}) +``` + +**With Vue options:** + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = shallow(Foo, { + propsData: { + color: 'red' + } + }) + expect(wrapper.hasProp('color', 'red')).to.equal(true) + }) +}) +``` + +**Attach to DOM:** + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = shallow(Foo, { + attachToDocument: true + }) + expect(wrapper.contains('div')).to.equal(true) + }) +}) +``` + +**Default and named slots:** + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' +import FooBar from './FooBar.vue' + +describe('Foo', () => { + it('renders a div', () => { + const wrapper = shallow(Foo, { + slots: { + default: [Bar, FooBar], + fooBar: FooBar, // Will match , + foo: '
' + } + }) + expect(wrapper.find('div')).to.equal(true) + }) +}) +``` + +**Stubbing global properties:** + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +describe('Foo', () => { + it('renders a div', () => { + const $route = { path: 'http://www.example-path.com' } + const wrapper = shallow(Foo, { + intercept: { + $route + } + }) + expect(wrapper.vm.$route.path).to.equal($route.path) + }) +}) +``` diff --git a/docs/ja/api/wrapper-array/README.md b/docs/ja/api/wrapper-array/README.md new file mode 100644 index 000000000..fa2a44831 --- /dev/null +++ b/docs/ja/api/wrapper-array/README.md @@ -0,0 +1,11 @@ +# WrapperArray + +A `WrapperArray` is an object that contains an array of [Wrappers](/docs/en/api/wrapper/README.md), and methods to test the `Wrappers`. + +- **Properties:** + +`length` `number`: the number of `Wrappers` contained in the `WrapperArray` + + - **Methods:** + +There is a detailed list of methods in the WrapperArray section of the docs. diff --git a/docs/ja/api/wrapper-array/at.md b/docs/ja/api/wrapper-array/at.md new file mode 100644 index 000000000..19273f990 --- /dev/null +++ b/docs/ja/api/wrapper-array/at.md @@ -0,0 +1,21 @@ +# at(index) + +- **Arguments:** + - `{number} index` + +- **Returns:** `{Wrapper}` + +- **Usage:** + +Returns `Wrapper` at `index` passed. Uses zero based numbering (i.e. first item is at index 0). + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = shallow(Foo) +const divArray = wrapper.findAll('div') +const secondDiv = divArray.at(1) +expect(secondDiv.is('p')).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/contains.md b/docs/ja/api/wrapper-array/contains.md new file mode 100644 index 000000000..d4c8790fb --- /dev/null +++ b/docs/ja/api/wrapper-array/contains.md @@ -0,0 +1,24 @@ +# contains(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every wrapper in `WrapperArray` contains selector. + +Use any valid [selector](/docs/en/api/selectors.md). + +```js +import { shallow } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = shallow(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.contains('p')).to.equal(true) +expect(divArray.contains(Bar)).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/hasAttribute.md b/docs/ja/api/wrapper-array/hasAttribute.md new file mode 100644 index 000000000..7bb511665 --- /dev/null +++ b/docs/ja/api/wrapper-array/hasAttribute.md @@ -0,0 +1,21 @@ +# hasAttribute(attribute, value) + +- **Arguments:** + - `{string} attribute` + - `{string} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` DOM node has `attribute` matching `value`. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.hasAttribute('id', 'foo')).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/hasClass.md b/docs/ja/api/wrapper-array/hasClass.md new file mode 100644 index 000000000..47559f904 --- /dev/null +++ b/docs/ja/api/wrapper-array/hasClass.md @@ -0,0 +1,20 @@ +# hasClass(className) + +- **Arguments:** + - `{string} className` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` DOM node has class containing `className`. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.hasClass('bar')).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/hasProp.md b/docs/ja/api/wrapper-array/hasProp.md new file mode 100644 index 000000000..2d03b5784 --- /dev/null +++ b/docs/ja/api/wrapper-array/hasProp.md @@ -0,0 +1,30 @@ +# hasProp(prop, value) + +Check if every wrapper vm in wrapper array has prop matching value + +Can only be called on a Vue instance. + +# hasProp(prop, value) + +- **Arguments:** + - `{string} prop` + - `{any} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` `vm` has `prop` matching `value`. + +**Note the Wrapper must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const barArray = wrapper.findAll(Bar) +expect(barArray.hasProp('bar', 10)).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/hasStyle.md b/docs/ja/api/wrapper-array/hasStyle.md new file mode 100644 index 000000000..201180476 --- /dev/null +++ b/docs/ja/api/wrapper-array/hasStyle.md @@ -0,0 +1,25 @@ +# hasStyle(style, value) + +- **Arguments:** + - `{string} style` + - `{string} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` DOM node has style matching value. + +Returns `true` if `Wrapper` DOM node has `style` matching `string`. + +**Note will only detect inline styles when running in `jsdom`.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.hasStyle('color', 'red')).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/is.md b/docs/ja/api/wrapper-array/is.md new file mode 100644 index 000000000..e43a5e9be --- /dev/null +++ b/docs/ja/api/wrapper-array/is.md @@ -0,0 +1,20 @@ +# is(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` DOM node or `vm` matches [selector](/docs/en/api/selectors.md). + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.find('div') +expect(divArray.is('div')).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/isEmpty.md b/docs/ja/api/wrapper-array/isEmpty.md new file mode 100644 index 000000000..fc85f0c8c --- /dev/null +++ b/docs/ja/api/wrapper-array/isEmpty.md @@ -0,0 +1,17 @@ +# isEmpty() + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` does not contain child node. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.isEmpty()).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/isVueInstance.md b/docs/ja/api/wrapper-array/isVueInstance.md new file mode 100644 index 000000000..3a39513fe --- /dev/null +++ b/docs/ja/api/wrapper-array/isVueInstance.md @@ -0,0 +1,18 @@ +# isVueInstance() + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert every `Wrapper` in `WrapperArray` is Vue instance. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const barArray = wrapper.findAll(Bar) +expect(barArray.isVueInstance()).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/setData.md b/docs/ja/api/wrapper-array/setData.md new file mode 100644 index 000000000..bd621394f --- /dev/null +++ b/docs/ja/api/wrapper-array/setData.md @@ -0,0 +1,22 @@ +# setData(data) + +- **Arguments:** + - `{Object} data` + +- **Usage:** + +Sets `Wrapper` `vm` data and forces update on each `Wrapper` in `WrapperArray`. + +**Note every `Wrapper` must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const barArray = wrapper.findAll(Bar) +barArray.setData({ foo: 'bar' }) +expect(barArray.at(0).vm.foo).to.equal('bar') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/setMethods.md b/docs/ja/api/wrapper-array/setMethods.md new file mode 100644 index 000000000..d8f66a6b5 --- /dev/null +++ b/docs/ja/api/wrapper-array/setMethods.md @@ -0,0 +1,27 @@ + +# setMethods(methods) + +- **Arguments:** + - `{Object} methods` + +- **Usage:** + +Sets `Wrapper` `vm` methods and forces update on each `Wrapper` in `WrapperArray`. + +**Note every `Wrapper` must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import sinon from 'sinon' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const barArray = wrapper.findAll(Bar) +const clickMethodStub = sinon.stub() + +barArray.setMethods({ clickMethod: clickMethodStub }) +barArray.at(0).trigger('click') +expect(clickMethodStub.called).to.equal(true) +``` diff --git a/docs/ja/api/wrapper-array/setProps.md b/docs/ja/api/wrapper-array/setProps.md new file mode 100644 index 000000000..56317ff09 --- /dev/null +++ b/docs/ja/api/wrapper-array/setProps.md @@ -0,0 +1,22 @@ +# setProps(props) + +- **Arguments:** + - `{Object} props` + +- **Usage:** + +Sets `Wrapper` `vm` props and forces update on each `Wrapper` in `WrapperArray`. + +**Note every `Wrapper` must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const barArray = wrapper.findAll(Bar) +barArray.setProps({ foo: 'bar' }) +expect(barArray.at(0).vm.foo).to.equal('bar') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/trigger.md b/docs/ja/api/wrapper-array/trigger.md new file mode 100644 index 000000000..b21284293 --- /dev/null +++ b/docs/ja/api/wrapper-array/trigger.md @@ -0,0 +1,26 @@ +# trigger(eventName) + +- **Arguments:** + - `{string} eventName + +- **Usage:** + +Triggers an event on every `Wrapper` in the `WrapperArray` DOM node. + +**Note every `Wrapper` must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import sinon from 'sinon' +import Foo from './Foo.vue' + +const clickHandler = sinon.stub() +const wrapper = mount(Foo, { + propsData: { clickHandler } +}) + +const divArray = wrapper.findAll('div') +divArray.trigger('click') +expect(clickHandler.called).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/update.md b/docs/ja/api/wrapper-array/update.md new file mode 100644 index 000000000..7efc88960 --- /dev/null +++ b/docs/ja/api/wrapper-array/update.md @@ -0,0 +1,22 @@ +# update() + +- **Usage:** + +Force root Vue component of each `Wrapper` in `WrapperArray` to re-render. + +If called on a Vue component wrapper array, it will force each Vue component to re-render. + +### Example + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const divArray = wrapper.findAll('div') +expect(divArray.at(0).vm.bar).to.equal('bar') +divArray.at(0).vm.bar = 'new value' +divArray.update() +expect(divArray.at(0).vm.bar).to.equal('new value') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md new file mode 100644 index 000000000..6469b8745 --- /dev/null +++ b/docs/ja/api/wrapper/README.md @@ -0,0 +1,16 @@ +# Wrapper + +vue-test-utils is a wrapper based API. + +A `Wrapper` is an object that contains a mounted component or vnode and methods to test the component or vnode. + +- **Properties:** + +`vm` `Component`: this is the vue instance. You can access all the [instance methods and properties of a vm](https://vuejs.org/v2/api/#Instance-Properties) with `wrapper.vm`. This only exists on Vue component wrappers +`element` `HTMLElement`: the root DOM node of the wrapper +`options` `Object`: Object containing vue-test-utils options passed to `mount` or `shallow` +`options.attachedToDom` `Boolean`: True if attachToDom was passed to `mount` or `shallow` + +- **Methods:** + +There is a detailed list of methods in the wrapper section of the docs. diff --git a/docs/ja/api/wrapper/contains.md b/docs/ja/api/wrapper/contains.md new file mode 100644 index 000000000..665206202 --- /dev/null +++ b/docs/ja/api/wrapper/contains.md @@ -0,0 +1,23 @@ +# contains(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` contains an element or component matching [selector](/docs/en/api/selectors.md). + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +expect(wrapper.contains('p')).to.equal(true) +expect(wrapper.contains(Bar)).to.equal(true) +``` + +- **See also:** [selectors](/docs/en/api/selectors.md) diff --git a/docs/ja/api/wrapper/exists.md b/docs/ja/api/wrapper/exists.md new file mode 100644 index 000000000..b5ce5655b --- /dev/null +++ b/docs/ja/api/wrapper/exists.md @@ -0,0 +1,21 @@ +# exists() + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` or `WrapperArray` exists. + +Returns false if called on an empty `Wrapper` or `WrapperArray`. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.exists()).to.equal(true) +expect(wrapper.find('does-not-exist').exists()).to.equal(false) +expect(wrapper.findAll('div').exists()).to.equal(true) +expect(wrapper.findAll('does-not-exist').exists()).to.equal(false) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/find.md b/docs/ja/api/wrapper/find.md new file mode 100644 index 000000000..2f4a94930 --- /dev/null +++ b/docs/ja/api/wrapper/find.md @@ -0,0 +1,27 @@ +# find(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{Wrapper}` + +- **Usage:** + +Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. + +Use any valid [selector](/docs/en/api/selectors.md). + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const div = wrapper.find('div') +expect(div.is('div')).to.equal(true) +const bar = wrapper.find(Bar) +expect(bar.is(Bar)).to.equal(true) +``` + +- **See also:** [Wrapper](/docs/en/api/wrapper/README.md) \ No newline at end of file diff --git a/docs/ja/api/wrapper/findAll.md b/docs/ja/api/wrapper/findAll.md new file mode 100644 index 000000000..aa2d356d3 --- /dev/null +++ b/docs/ja/api/wrapper/findAll.md @@ -0,0 +1,27 @@ +# findAll(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{WrapperArray}` + +- **Usage:** + +Returns a [`WrapperArray`](/docs/en/api/wrapper-array/README.md) of [Wrappers](/docs/en/api/wrapper/README.md). + +Use any valid [selector](/docs/en/api/selectors.md). + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' + +const wrapper = mount(Foo) +const div = wrapper.findAll('div').at(0) +expect(div.is('div')).to.equal(true) +const bar = wrapper.findAll(Bar).at(0) +expect(bar.is(Bar)).to.equal(true) +``` + +- **See also:** [Wrapper](/docs/en/api/wrapper/README.md) \ No newline at end of file diff --git a/docs/ja/api/wrapper/hasAttribute.md b/docs/ja/api/wrapper/hasAttribute.md new file mode 100644 index 000000000..489fc645f --- /dev/null +++ b/docs/ja/api/wrapper/hasAttribute.md @@ -0,0 +1,37 @@ +# hasAttribute(attribute, value) + +- **Arguments:** + - `{string} attribute` + - `{string} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` DOM node has attribute matching value. + +Returns `true` if `Wrapper` DOM node contains attribute with matching value. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.hasAttribute('id', 'foo')).to.equal(true) +``` + +- **Alternative:** + +You could get the attribute from the `Wrapper.element` to have a value based assertion: + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.element.getAttribute('id')).to.equal('foo') +``` + +This makes for a more informative assertion error. diff --git a/docs/ja/api/wrapper/hasClass.md b/docs/ja/api/wrapper/hasClass.md new file mode 100644 index 000000000..a84615c7b --- /dev/null +++ b/docs/ja/api/wrapper/hasClass.md @@ -0,0 +1,21 @@ +# hasClass(className) + +- **Arguments:** + - `{string} className` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` DOM node has class contains `className`. + +Returns `true` if `Wrapper` DOM node contains class. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.hasClass('bar')).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/hasProp.md b/docs/ja/api/wrapper/hasProp.md new file mode 100644 index 000000000..f7359d366 --- /dev/null +++ b/docs/ja/api/wrapper/hasProp.md @@ -0,0 +1,24 @@ +# hasProp(prop, value) + +- **Arguments:** + - `{string} prop` + - `{any} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` `vm` has `prop` matching `value`. + +Returns `true` if `Wrapper` `vm` has `prop` matching `value`. + +**Note the Wrapper must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.hasProp('bar', 10)).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/hasStyle.md b/docs/ja/api/wrapper/hasStyle.md new file mode 100644 index 000000000..ac8756d1f --- /dev/null +++ b/docs/ja/api/wrapper/hasStyle.md @@ -0,0 +1,24 @@ +# hasStyle(style, value) + +- **Arguments:** + - `{string} style` + - `{string} value` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` DOM node has style matching value + +Returns `true` if `Wrapper` DOM node has `style` matching `string`. + +**Note will only detect inline styles when running in `jsdom`.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.hasStyle('color', 'red')).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/html.md b/docs/ja/api/wrapper/html.md new file mode 100644 index 000000000..d169dc78c --- /dev/null +++ b/docs/ja/api/wrapper/html.md @@ -0,0 +1,16 @@ +# html() + +- **Returns:** `{string}` + +- **Usage:** + +Returns HTML of `Wrapper` DOM node as a string. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.html()).to.equal('

Foo

') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/is.md b/docs/ja/api/wrapper/is.md new file mode 100644 index 000000000..e128da0ca --- /dev/null +++ b/docs/ja/api/wrapper/is.md @@ -0,0 +1,19 @@ +# is(selector) + +- **Arguments:** + - `{string|Component} selector` + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` DOM node or `vm` matches [selector](/docs/en/api/selectors.md). + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.is('div')).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/isEmpty.md b/docs/ja/api/wrapper/isEmpty.md new file mode 100644 index 000000000..70297d591 --- /dev/null +++ b/docs/ja/api/wrapper/isEmpty.md @@ -0,0 +1,16 @@ +# isEmpty() + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` does not contain child node. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.isEmpty()).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/isVueInstance.md b/docs/ja/api/wrapper/isVueInstance.md new file mode 100644 index 000000000..5132abb71 --- /dev/null +++ b/docs/ja/api/wrapper/isVueInstance.md @@ -0,0 +1,16 @@ +# isVueInstance() + +- **Returns:** `{boolean}` + +- **Usage:** + +Assert `Wrapper` is Vue instance. + + ```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.isVueInstance()).to.equal(true) + ``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/name.md b/docs/ja/api/wrapper/name.md new file mode 100644 index 000000000..b587730db --- /dev/null +++ b/docs/ja/api/wrapper/name.md @@ -0,0 +1,18 @@ +# name() + +- **Returns:** `{string}` + +- **Usage:** + +Returns component name if `Wrapper` contains a Vue instance, or the tag name of `Wrapper` DOM node if `Wrapper` does not contain a Vue instance. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.name()).to.equal('Foo') +const p = wrapper.find('p') +expect(p.name()).to.equal('p') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/setData.md b/docs/ja/api/wrapper/setData.md new file mode 100644 index 000000000..b62b12c22 --- /dev/null +++ b/docs/ja/api/wrapper/setData.md @@ -0,0 +1,20 @@ +# setData(data) + +- **Arguments:** + - `{Object} data` + +- **Usage:** + +Sets `Wrapper` `vm` data and forces update. + +**Note the Wrapper must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +wrapper.setData({ foo: 'bar' }) +expect(wrapper.vm.foo).to.equal('bar') +``` diff --git a/docs/ja/api/wrapper/setMethods.md b/docs/ja/api/wrapper/setMethods.md new file mode 100644 index 000000000..2910cb564 --- /dev/null +++ b/docs/ja/api/wrapper/setMethods.md @@ -0,0 +1,24 @@ +# setMethods(methods) + +- **Arguments:** + - `{Object} methods` + +- **Usage:** + +Sets `Wrapper` `vm` methods and forces update. + +**Note the Wrapper must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import sinon from 'sinon' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +const clickMethodStub = sinon.stub() + +wrapper.setMethods({ clickMethod: clickMethodStub }) +wrapper.find('button').trigger('click') +expect(clickMethodStub.called).to.equal(true) +``` diff --git a/docs/ja/api/wrapper/setProps.md b/docs/ja/api/wrapper/setProps.md new file mode 100644 index 000000000..52f507930 --- /dev/null +++ b/docs/ja/api/wrapper/setProps.md @@ -0,0 +1,20 @@ +# setProps(props) + +- **Arguments:** + - `{Object} props` + +- **Usage:** + +Sets `Wrapper` `vm` props and forces update. + +**Note the Wrapper must contain a Vue instance.** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +wrapper.setProps({ foo: 'bar' }) +expect(wrapper.props().foo).to.equal('bar') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/text.md b/docs/ja/api/wrapper/text.md new file mode 100644 index 000000000..92a95d00c --- /dev/null +++ b/docs/ja/api/wrapper/text.md @@ -0,0 +1,16 @@ +# text() + +- **Returns:** `{string}` + +- **Usage:** + +Returns text content of `Wrapper`. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.text()).to.equal('bar') +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/trigger.md b/docs/ja/api/wrapper/trigger.md new file mode 100644 index 000000000..88f95aa63 --- /dev/null +++ b/docs/ja/api/wrapper/trigger.md @@ -0,0 +1,38 @@ +# trigger(eventName) + +- **Arguments:** + - `{string} eventName` + - `{Object} options` + - `{boolean} preventDefault` + +- **Usage:** + +Triggers an event on the `Wrapper` DOM node. + +Trigger takes an optional `options` object. The properties in the `options` object are added to the Event. + +You can run preventDefault on the event by passing `preventDefault: true` in `options`. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import sinon from 'sinon' +import Foo from './Foo' + +const clickHandler = sinon.stub() +const wrapper = mount(Foo, { + propsData: { clickHandler } +}) + +wrapper.trigger('click') + +wrapper.trigger('click', { + button: 0 +}) + +wrapper.trigger('click', { + preventDefault: true +}) + +expect(clickHandler.called).to.equal(true) +``` \ No newline at end of file diff --git a/docs/ja/api/wrapper/update.md b/docs/ja/api/wrapper/update.md new file mode 100644 index 000000000..9335fb199 --- /dev/null +++ b/docs/ja/api/wrapper/update.md @@ -0,0 +1,19 @@ +# update() + +- **Usage:** + +Force root Vue component to re-render. + +If called on a `Wrapper` containing a `vm`, it will force the `Wrapper` `vm` to re-render. + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Foo from './Foo.vue' + +const wrapper = mount(Foo) +expect(wrapper.vm.bar).to.equal('bar') +wrapper.vm.bar = 'new value' +wrapper.update() +expect(wrapper.vm.bar).to.equal('new value') +``` \ No newline at end of file diff --git a/docs/ja/common-gotchas.md b/docs/ja/common-gotchas.md new file mode 100644 index 000000000..04bf2dfce --- /dev/null +++ b/docs/ja/common-gotchas.md @@ -0,0 +1,37 @@ +# Common gotchas + +## createLocalVue + +`createLocalVue` returns an extended Vue class so you can add mixins, directives, components and plugins without affecting the global Vue class. + +Unfortunately, many plugins have internal checks that stop them from being installed more than once. + +Currently, **Vuex cannot be installed on more than once instance**. However, you can change the store. So one install should be fine. See the guide on [using with Vuex](guides/using-with-vuex.md) + +Also, **Vue Router needs two options set to false to be installed more than once**: + +```js +import createLocalVue from 'vue-test-utils' +import VueRouter from 'vue-router' + +const localVue = createLocalVue() +VueRouter.installed = false +VueRouter.install.installed = false +localVue.use(VueRouter) +``` + +The alternative is to stub the properties you want to test, instead of installing the plugin. + +For example, if your test relies on `this.$route.params.id`, stub `$route` using [intercept](mount.md): + +```js +mount(Component, { + intercept: { + $route: { + params: { + id: true + } + } + } +}) +``` \ No newline at end of file diff --git a/docs/ja/getting-started.md b/docs/ja/getting-started.md new file mode 100644 index 000000000..4f0e9dbc8 --- /dev/null +++ b/docs/ja/getting-started.md @@ -0,0 +1,150 @@ +# Getting Started + +Getting up and running with the official `vue-test-utils` package is straight forward. +Use either `npm` or `yarn` to install the package: + +```shell +# npm +$ npm install --save vue-test-utils + +# yarn +$ yarn add vue-test-utils +``` + +**Notice:** To test Vue components and to make use of the `vue-test-utils` run the specs in a browser with a testrunner like [Karma](https://karma-runner.github.io/1.0/index.html) or node based runners that support virtual DOMs like `jsDOM` (e.g.: [jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava)) + +Let's test a simple Vue component like a counter to get a feeling for how to use these utils. + + +```js +// counter.js + +export default { + template: ` +
+ {{ count }} + +
+ `, + + data () { + return { + count: 0 + } + }, + + methods: { + increment () { + this.count++ + } + } +} + +``` + +This component is very basic in it's capabilities and scope, +but never the less it allows for things we could test here. The general concept of interacting with a Vue component through the `vue-test-utils` is using a wrapper. This wrapper comes with a lot of useful helpers under its belt that should make writing even complex specs a breeze. But let's start simple: + +### How to wrap a component + +As mentioned above, the wrapper is the core element that allows for efficient interaction with a component. The flow goes as following: + +```js +// Import the mount() method from the test utils +// and the component you want to test + +import { mount } from 'vue-test-utils' +import Counter from './counter' + +// Now mount the component and you have the wrapper +const wrapper = mount(Counter) + +// To inspect the wrapper deeper just log it to the console +// and your adventure with the vue-test-utils begins +console.log(wrapper) +``` + +We already took the first hurdle, and luckily it was an easy one. So, let's put the wrapper to good use. + + +### Test rendered HTML output of the component + +As a first spec it would be nice to verify that the rendered HTML output of the component looks like expected. + +```js +// For getting the html output, the wrapper provides +// a html() method for you. + +describe('Counter', () => { + it('renders the correct markup', () => { + expect(wrapper.html()).to.equal('
0
') + }) + + // it's also easy to check for the existence of elements + it('has a button', () => { + expect(wrapper.contains('button')).to.equal(true) + }) +}) +``` + +That was easy as well, so let's step up the game. + +### Component data + +Changing the data of the component can be quite useful for efficient testing. The method `setData({...})` is meant for changing the data on the instance. You can interact with the instance directly using the `vm` key. As Vue automatically sets all data values and computed properties as getters on the root instance, we can access those values straight away. +It may be useful to change the data accordingly for a whole group of specs, so `beforeEach()` could be a good place for that: + +```js + +describe('Data interactions', () => { + beforeEach(() => { + wrapper.setData({ count: 10 }) + }) + + it('should be set to 10', () => { + expect(wrapper.vm.count).to.equal(10) + }) +}) + +``` + +### Interactions + +This section will introduce two important methods of the wrapper object. +`find()` to find an HTML element inside your component's HTML output and `trigger()` will allow for firing general events. + +```js + +describe('Trigger an event', () => { + it('button should increment the count', () => { + expect(wrapper.vm.count).to.equal(0) + const button = wrapper.find('button') + button.trigger('click') + expect(wrapper.vm.count).to.equal(1) + }) +}) + +``` + +### Handle async DOM updates + +Vue updates the DOM based on an internal `tick` to prevent unnecessary rerenders if a bunch of data gets changed. That's why `Vue.nextTick(...)` allows you to verify that DOM changes have been applied correctly and to pass in a callback to run right after that. Luckily `vue-test-utils` got you covered here as well. The `update()` method will enforce a rerender. Using `html()` afterwards will return the updated DOM. + +```js + +describe('DOM updates', () => { + it('html() should account for async DOM updates', () => { + expect(wrapper.html()).to.equal('
0
') + wrapper.setData({ count: 23 }) + wrapper.update() + expect(wrapper.html()).to.equal('
23
') + }) +}) + +``` + +## What Next + +Of course there is a lot more to discover for you in `vue-test-utils` and it's recommended to go through the list of the [provided API](SUMMARY.md) to get a good oversight. + +The `vue-test-utils` aim to play nice with various testrunners, should you run into any issues though, the official repository can be found here: [vue-test-utils](https://github.com/vuejs/vue-test-utils) diff --git a/docs/ja/guides/using-with-jest.md b/docs/ja/guides/using-with-jest.md new file mode 100644 index 000000000..302cf20b3 --- /dev/null +++ b/docs/ja/guides/using-with-jest.md @@ -0,0 +1,81 @@ +# Using with Jest + +## Setup Jest + +Jest is a test runner developed by Facebook, aiming to come with everything included to get started. [Learn more about Jest](https://facebook.github.io/jest/) So let's get started: + +```bash +$ yarn add jest +``` + +will install jest and makes it available to be executed through yarn or a package script. + +```json +// package.json +{ + "scripts": { + "test": "jest" + } +} +``` + +or + +```bash +$ yarn jest +``` + +As you probably want to use latest javascript capabilities inside your specs though, it's recommendable to enable `babel` for the project. + + +```bash +$ yarn add babel babel-jest babel-preset-env +``` + +If you’ve not heard of babel-preset-env, it basically allows compiling the JS based on the browsers you plan to support. Get more info here: [babel-preset-env](https://github.com/babel/babel-preset-env) + +Be sure to update your `.babelrc` file accordingly + +```json +{ + "presets": [ + ["env", { + "targets": { + "browsers": ["last 2 versions", "safari >= 7"] + } + }] + ] +} +``` + +That's pretty much everything necessary to do before writing the first specs. + +### Where should my tests live + +By default, jest will pick up all files that have a `.spec.js` or `.test.js` extension. If this does not fit your needs, it's possible [to chang the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. + +Jest recommends to create a `__spec__` folder, but feel free to do as you like. Just know ahead of time, that when using the [snapshot](https://facebook.github.io/jest/docs/en/snapshot-testing.html#content) feature, snapshots will get stored in a `__snapshot__` folder. + +### Example Spec + +If you are familiar with Jasmine, or similar test libraries you should feel at home in Jest right away. Many useful assertions are in place, so +enjoy writing specs. + +```js +import { mount } from 'vue-test-utils' +import Component from './component' + +describe('Component', () => { + test('is a Vue instance', () => { + const wrapper = mount(Component) + expect(wrapper.isVueInstance()).toBeTruthy() + }) +}) +``` + +### Resources + +- Examples and slides from Vue Conf 2017 - https://github.com/codebryo/vue-testing-with-jest-conf17 +- Jest - https://facebook.github.io/jest/ +- Babel preset env - https://github.com/babel/babel-preset-env + diff --git a/docs/ja/guides/using-with-vuex.md b/docs/ja/guides/using-with-vuex.md new file mode 100644 index 000000000..645663eb7 --- /dev/null +++ b/docs/ja/guides/using-with-vuex.md @@ -0,0 +1,270 @@ +# Using with Vuex + +## Mocking Actions + +Let’s look at some code. + +This is the component we want to test. It calls Vuex actions. + +```vue + + + +``` + +For the purposes of this test, we don’t care what the actions do, or what the store looks like. We just need to know that these actions are being fired when they should, and that they are fired with the expected value. + +To test this, we need to pass a mock store to Vue when we mount our component. + +Let’s see what this looks like: + +```js +import Vue from 'vue' +import { mount } from 'vue-test-utils' +import sinon from 'sinon' +import { expect } from 'chai' +import Vuex from 'vuex' +import 'babel-polyfill' +import Actions from '../../../src/components/Actions' + +Vue.use(Vuex) + +describe('Actions.vue', () => { + let actions + let store + + beforeEach(() => { + actions = { + actionClick: sinon.stub(), + actionInput: sinon.stub() + } + store = new Vuex.Store({ + state: {}, + actions + }) + }) + + it('calls store action actionInput when input value is input and an input even is fired', () => { + const wrapper = mount(Actions, { store }) + const input = wrapper.find('input')[0] + input.element.value = 'input' + input.trigger('input') + expect(actions.actionInput.calledOnce).to.equal(true) + }) + + it('does not call store action actionInput when input value is not input and an input even is fired', () => { + const wrapper = mount(Actions, { store }) + const input = wrapper.find('input')[0] + input.element.value = 'not input' + input.trigger('input') + expect(actions.actionInput.calledOnce).to.equal(false) + }) + + it('calls store action actionClick when button is clicked', () => { + const wrapper = mount(Actions, { store }) + wrapper.find('button')[0].trigger('click') + expect(actions.actionClick.calledOnce).to.equal(true) + }) +}) +``` +What’s happening here? First we tell Vue to use Vuex with the Vue.use method. This is just a wrapper around Vue.use. + +We then make a mock store by calling new Vuex.store with our mock values. We only pass it the actions, since that’s all we care about. + +The actions are [sinon stubs](http://sinonjs.org/). The stubs give us methods to assert whether the actions were called or not. + +We can then assert in our tests that the action stub was called when expected. + +Now the way we define the store might look a bit foreign to you. + +We’re using beforeEach to ensure we have a clean store before each test. beforeEach is a mocha hook that’s called before each test. In our test, we are reassigning the store variables value. If we didn’t do this, the sinon stubs would need to be automatically reset. It also lets us change the state in our tests, without it affecting later tests. + +The most important thing to note in this test is that **we create a mock Vuex store and then pass it to vue-test-utils**. + +Great, so now we can mock actions, let’s look at mocking getters. + +## Mocking Getters + + +```vue + + + +``` + +This is a fairly simple component. It renders the result of the getters clicks and inputValue. Again, we don’t really care about what those getters returns – just that the result of them is being rendered correctly. + +Let’s see the test: + +```javascript +import 'babel-polyfill' +import Vue from 'vue' +import { mount } from 'vue-test-utils' +import { expect } from 'chai' +import Vuex from 'vuex' +import Actions from '../../../src/components/Getters' + +Vue.use(Vuex) + +describe('Getters.vue', () => { + let getters + let store + + beforeEach(() => { + getters = { + clicks: () => 2, + inputValue: () => 'input' + } + + store = new Vuex.Store({ + getters + }) + }) + + it('Renders state.inputValue in first p tag', () => { + const wrapper = mount(Actions, { store }) + const p = wrapper.find('p')[0] + expect(p.text()).to.equal(getters.inputValue()) + }) + + it('Renders state.clicks in second p tag', () => { + const wrapper = mount(Actions, { store }) + const p = wrapper.find('p')[1] + expect(p.text()).to.equal(getters.clicks().toString()) + }) +}) +``` +This test is similar to our actions test. We create a mock store before each test, pass it as an option when we call mount, and assert that the value returned by our mock getters is being rendered. + +This is great, but what if we want to check our getters are returning the correct part of our state? + +## Mocking with Modules + +[Modules](https://vuex.vuejs.org/en/modules.html) are useful for separating out our store into manageable chunks. They also export getters. We can use these in our tests. + +Let’s look at our component: + +```vue + + + +``` +Simple component that includes one action and one getter. + +And the test: + +```javascript +import Vue from 'vue' +import { mount } from 'vue-test-utils' +import sinon from 'sinon' +import { expect } from 'chai' +import Vuex from 'vuex' +import 'babel-polyfill' +import Modules from '../../../src/components/Modules' +import module from '../../../src/store/module' + +Vue.use(Vuex) + +describe('Modules.vue', () => { + let actions + let state + let store + + beforeEach(() => { + state = { + module: { + clicks: 2 + } + } + + actions = { + moduleActionClick: sinon.stub() + } + + store = new Vuex.Store({ + state, + actions, + getters: module.getters + }) + }) + + it('calls store action moduleActionClick when button is clicked', () => { + const wrapper = mount(Modules, { store }) + const button = wrapper.find('button')[0] + button.trigger('click') + expect(actions.moduleActionClick.calledOnce).to.equal(true) + }) + + it('Renders state.inputValue in first p tag', () => { + const wrapper = mount(Modules, { store }) + const p = wrapper.find('p')[0] + expect(p.text()).to.equal(state.module.clicks.toString()) + }) +}) +``` +To have a look at what the module file looks like, [check out the repo](https://github.com/eddyerburgh/mock-vuex-in-vue-unit-tests-tutorial). + +So now we’re importing getters from out Vuex store module. This means we need to mock the state. + +Is this a good thing? Well, it means we’re testing that the state we expect will be returned by the getter. But this is a unit test, so maybe we should test that in a store test. + +I’ll leave it up to you whether you want to test the state or not. + +Hopefully this tutorial has helped you understand how to mock Vuex in Vue unit tests. + +If you have any questions, leave a comment. + From 2f80a9d48985c247ae477bb5a0a0486411e6aaf1 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 22:07:25 +0900 Subject: [PATCH 02/51] translate README.md --- docs/ja/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ja/README.md b/docs/ja/README.md index b41433f22..8a2a37661 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -1,5 +1,5 @@ # vue-test-utils -vue-test-utils is the official test library for Vue.js. It provides methods for unit testing Vue components. +vue-test-utilsはVue.jsの公式テストライブラリです。 Vueコンポーネントの単体テスト方法を提供します。 -[Documentation Summary](SUMMARY.md) +[概要](SUMMARY.md) From 1f967475d5fb29a218a7d03c1fd1d81fbea2e375 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 22:09:37 +0900 Subject: [PATCH 03/51] translate SUMMARY.md --- docs/ja/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ja/SUMMARY.md b/docs/ja/SUMMARY.md index 230ae6094..3f70ce9de 100644 --- a/docs/ja/SUMMARY.md +++ b/docs/ja/SUMMARY.md @@ -1,4 +1,4 @@ -## Table of Contents +## 目次 * [API](api/README.md) * [createLocalVue](api/createLocalVue.md) From 8ac951c890b49d9137a00c6b91bcbca4066cb2ce Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 22:24:55 +0900 Subject: [PATCH 04/51] translate getting-started.md --- docs/ja/getting-started.md | 44 ++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/docs/ja/getting-started.md b/docs/ja/getting-started.md index 4f0e9dbc8..95b01ee42 100644 --- a/docs/ja/getting-started.md +++ b/docs/ja/getting-started.md @@ -1,7 +1,7 @@ # Getting Started -Getting up and running with the official `vue-test-utils` package is straight forward. -Use either `npm` or `yarn` to install the package: +公式の`vue-test-utils`の取得と実行は簡単です。 +`npm` または `yarn` を使ってパッケージをインストールします。 ```shell # npm @@ -11,9 +11,9 @@ $ npm install --save vue-test-utils $ yarn add vue-test-utils ``` -**Notice:** To test Vue components and to make use of the `vue-test-utils` run the specs in a browser with a testrunner like [Karma](https://karma-runner.github.io/1.0/index.html) or node based runners that support virtual DOMs like `jsDOM` (e.g.: [jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava)) +**Notice:** `vue-test-utils`を利用してVueコンポーネントをテストするには [Karma](https://karma-runner.github.io/1.0/index.html) のようなテストランナー、`jsDOM`(例:[jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava))などの仮想DOMをサポートするnodeの実行環境を使用してください -Let's test a simple Vue component like a counter to get a feeling for how to use these utils. +counterのようなシンプルなVueコンポーネントをテストしてこれらのutilsの使い方を感じてみましょう。 ```js @@ -42,12 +42,11 @@ export default { ``` -This component is very basic in it's capabilities and scope, -but never the less it allows for things we could test here. The general concept of interacting with a Vue component through the `vue-test-utils` is using a wrapper. This wrapper comes with a lot of useful helpers under its belt that should make writing even complex specs a breeze. But let's start simple: +このコンポーネントはとても基本的な機能のコンポーネントです、とは言ってもここでテストはできません。`vue-test-utils`というラッパーを使うことでVueコンポーネントとやり取りをします。このラッパーには便利なヘルパーがたくさんあり、複雑な仕様も簡単に書くことができるはずです。さっそく始めましょう。 -### How to wrap a component +### コンポーネントをラップする方法 -As mentioned above, the wrapper is the core element that allows for efficient interaction with a component. The flow goes as following: +上に書いたように、ラッパーはコンポーネントと効率よくやり取りをする核となる要素です。手順は以下のようになります。 ```js // Import the mount() method from the test utils @@ -64,12 +63,11 @@ const wrapper = mount(Counter) console.log(wrapper) ``` -We already took the first hurdle, and luckily it was an easy one. So, let's put the wrapper to good use. +既に最初のハードルを越えました。とても簡単にできましたね。このように、ラッパーを上手に使いましょう。 +### コンポーネントのレンダリングされたHTML出力をテストする -### Test rendered HTML output of the component - -As a first spec it would be nice to verify that the rendered HTML output of the component looks like expected. +はじめに、レンダリングされたHTML出力が期待通りに見えることを確認するとよいでしょう。 ```js // For getting the html output, the wrapper provides @@ -87,12 +85,12 @@ describe('Counter', () => { }) ``` -That was easy as well, so let's step up the game. +簡単だったので、次に行きましょう。 ### Component data -Changing the data of the component can be quite useful for efficient testing. The method `setData({...})` is meant for changing the data on the instance. You can interact with the instance directly using the `vm` key. As Vue automatically sets all data values and computed properties as getters on the root instance, we can access those values straight away. -It may be useful to change the data accordingly for a whole group of specs, so `beforeEach()` could be a good place for that: +効率のいいテストをするにはコンポーネントのデータを変更することがとても便利です。`setData({...})`メソッドはインスタンス上のデータを変更するためのものです。`vm`を使うことでやり取りすることができます。全てのvalueとcomputed propertyを自動的にgetterとしてルートインスタンスに設定をするため、直接アクセスすることができます。 +仕様に応じてデータを変更することが良い場合もある際は、`beforeEach()`を使うと良いでしょう。 ```js @@ -108,10 +106,10 @@ describe('Data interactions', () => { ``` -### Interactions +### インタラクション -This section will introduce two important methods of the wrapper object. -`find()` to find an HTML element inside your component's HTML output and `trigger()` will allow for firing general events. +このセクションではラッパーオブジェクトの2つの重要なメソッドを紹介します。 +コンポーネントのHTML要素の中でHTML要素を見つけるために`find()`を呼び出し、`trigger()`でイベントを発生させます。 ```js @@ -126,9 +124,9 @@ describe('Trigger an event', () => { ``` -### Handle async DOM updates +### 非同期DOMの更新処理 -Vue updates the DOM based on an internal `tick` to prevent unnecessary rerenders if a bunch of data gets changed. That's why `Vue.nextTick(...)` allows you to verify that DOM changes have been applied correctly and to pass in a callback to run right after that. Luckily `vue-test-utils` got you covered here as well. The `update()` method will enforce a rerender. Using `html()` afterwards will return the updated DOM. +Vueは、内部の `tick` 'に基づいてDOMを更新し、たくさんのデータが変更された場合に不要な再レンダリングを防止します。そのため、`Vue.nextTick(...)`はDOMの変更が正しく適用されたことを確認し、その直後にコールバックを渡すことができます。幸いにも、`vue-test-utils`はここでもカバーされています。`update()`メソッドは強制的に再レンダリングし、その後で `html()`を使うと更新されたDOMがreturnされます。 ```js @@ -143,8 +141,8 @@ describe('DOM updates', () => { ``` -## What Next +## 驚き -Of course there is a lot more to discover for you in `vue-test-utils` and it's recommended to go through the list of the [provided API](SUMMARY.md) to get a good oversight. +もちろん`vue-test-utils`はこれだけではありません。[提供されているAPI](SUMMARY.md)の一覧で探すことをおすすめします。 -The `vue-test-utils` aim to play nice with various testrunners, should you run into any issues though, the official repository can be found here: [vue-test-utils](https://github.com/vuejs/vue-test-utils) +`vue-test-utils`と様々なテストランナーにて問題が起こった場合、公式のリポジトリを見てください。[vue-test-utils](https://github.com/vuejs/vue-test-utils) From da44ca6b36a031198dd3736f24b91b4862acc46d Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 23:08:50 +0900 Subject: [PATCH 05/51] translate common-gotchas.md --- docs/ja/common-gotchas.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/ja/common-gotchas.md b/docs/ja/common-gotchas.md index 04bf2dfce..807e01c1c 100644 --- a/docs/ja/common-gotchas.md +++ b/docs/ja/common-gotchas.md @@ -1,14 +1,14 @@ -# Common gotchas +# よくある問題 ## createLocalVue -`createLocalVue` returns an extended Vue class so you can add mixins, directives, components and plugins without affecting the global Vue class. +`createLocalVue`は拡張Vueクラスを返すため、グローバルVueクラスに影響を与えることなく、ミックスイン、ディレクティブ、コンポーネント、プラグインを追加することができます。 -Unfortunately, many plugins have internal checks that stop them from being installed more than once. +残念ながら、多くのプラグインは内部チェックがあるため複数のプラグインをインストールすることができません。 -Currently, **Vuex cannot be installed on more than once instance**. However, you can change the store. So one install should be fine. See the guide on [using with Vuex](guides/using-with-vuex.md) +現在、 **Vuexは複数回インスタンスにインストールができません。** しかし、 ストアを変更することができます。そのため、1回インストールすれば大丈夫です。[Vuexとの使い方](guides/using-with-vuex.md)を参照してください。 -Also, **Vue Router needs two options set to false to be installed more than once**: +また、**Vue Routerは2回以上インストールする際は2つのオプションをfalseに設定する必要があります。** ```js import createLocalVue from 'vue-test-utils' @@ -20,9 +20,9 @@ VueRouter.install.installed = false localVue.use(VueRouter) ``` -The alternative is to stub the properties you want to test, instead of installing the plugin. +プラグインをインストールする代わりにテストするプロパティをスタブする方法もあります。 -For example, if your test relies on `this.$route.params.id`, stub `$route` using [intercept](mount.md): +たとえば、テストが`this.$route.params.id`に依存している場合、[intercept](mount.md)を使って`$route`をスタブします。 ```js mount(Component, { From 91cbc3bd2ad12454904c81d3c42ecd43971753b4 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 23:09:23 +0900 Subject: [PATCH 06/51] update getting-started.md --- docs/ja/getting-started.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/ja/getting-started.md b/docs/ja/getting-started.md index 95b01ee42..c8e2d0a17 100644 --- a/docs/ja/getting-started.md +++ b/docs/ja/getting-started.md @@ -1,4 +1,4 @@ -# Getting Started +# 入門 公式の`vue-test-utils`の取得と実行は簡単です。 `npm` または `yarn` を使ってパッケージをインストールします。 @@ -11,7 +11,7 @@ $ npm install --save vue-test-utils $ yarn add vue-test-utils ``` -**Notice:** `vue-test-utils`を利用してVueコンポーネントをテストするには [Karma](https://karma-runner.github.io/1.0/index.html) のようなテストランナー、`jsDOM`(例:[jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava))などの仮想DOMをサポートするnodeの実行環境を使用してください +**注意:** `vue-test-utils`を利用してVueコンポーネントをテストするには [Karma](https://karma-runner.github.io/1.0/index.html) のようなテストランナー、`jsDOM`(例:[jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava))などの仮想DOMをサポートするnodeの実行環境を使用してください counterのようなシンプルなVueコンポーネントをテストしてこれらのutilsの使い方を感じてみましょう。 @@ -49,17 +49,17 @@ export default { 上に書いたように、ラッパーはコンポーネントと効率よくやり取りをする核となる要素です。手順は以下のようになります。 ```js -// Import the mount() method from the test utils -// and the component you want to test +// test utilsからmount()メソッドをインポートします +// コンポーネントをテストします import { mount } from 'vue-test-utils' import Counter from './counter' -// Now mount the component and you have the wrapper +// コンポーネントをマウントすることでラッパーを取得します const wrapper = mount(Counter) -// To inspect the wrapper deeper just log it to the console -// and your adventure with the vue-test-utils begins +// ラッパーをより深く調べるためにconsole.logを実行してみましょう +// あなたのvue-test-utilsはここから始まります console.log(wrapper) ``` @@ -70,15 +70,13 @@ console.log(wrapper) はじめに、レンダリングされたHTML出力が期待通りに見えることを確認するとよいでしょう。 ```js -// For getting the html output, the wrapper provides -// a html() method for you. - +// html出力を取得するために、ラッパーはhtml()メソッドを提供します。 describe('Counter', () => { it('renders the correct markup', () => { expect(wrapper.html()).to.equal('
0
') }) - // it's also easy to check for the existence of elements + // 要素の存在を調べるのも簡単です。 it('has a button', () => { expect(wrapper.contains('button')).to.equal(true) }) From 7add2ad124e02f13161efd68acb20acdb4e853bf Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 23:09:50 +0900 Subject: [PATCH 07/51] translate /api/wrapper/README.md --- docs/ja/api/wrapper/README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md index 6469b8745..e2d9374eb 100644 --- a/docs/ja/api/wrapper/README.md +++ b/docs/ja/api/wrapper/README.md @@ -1,16 +1,16 @@ -# Wrapper +# ラッパー -vue-test-utils is a wrapper based API. +vue-test-utilsはラッパーベースのAPIです。 + +`Wrapper`は、マウントされたコンポーネントまたは仮想DOMと、コンポーネントまたは仮想DOMをテストするメソッドを含むオブジェクトです。 -A `Wrapper` is an object that contains a mounted component or vnode and methods to test the component or vnode. +- **プロパティ:** -- **Properties:** +`vm`` Component`:これはvueのインスタンスです。`wrapper.vm`を使って[vmのプロパティとインスタンスメソッド](https://vuejs.org/v2/api/#Instance-Properties)にアクセスできます。これは、Vueコンポーネントラッパーにのみ存在します。 +`element` `HTMLElement`: ラッパーのルートDOM +`options` `Object`: `mount`または` shallow`に渡されたvue-test-utilsオプションを含むオブジェクト +`options.attachedToDom` `Boolean`: `mount` か `shallow`に渡された場合はTrueです。 -`vm` `Component`: this is the vue instance. You can access all the [instance methods and properties of a vm](https://vuejs.org/v2/api/#Instance-Properties) with `wrapper.vm`. This only exists on Vue component wrappers -`element` `HTMLElement`: the root DOM node of the wrapper -`options` `Object`: Object containing vue-test-utils options passed to `mount` or `shallow` -`options.attachedToDom` `Boolean`: True if attachToDom was passed to `mount` or `shallow` +- **メソッド:** -- **Methods:** - -There is a detailed list of methods in the wrapper section of the docs. +docsにはメソッドの詳細が一覧になっています。 From 22158e69f9ba25559c4167a784aba3593fc21a83 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sat, 30 Sep 2017 23:15:15 +0900 Subject: [PATCH 08/51] update /api/wrapper/README.md --- docs/ja/api/wrapper/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md index e2d9374eb..598524528 100644 --- a/docs/ja/api/wrapper/README.md +++ b/docs/ja/api/wrapper/README.md @@ -2,13 +2,13 @@ vue-test-utilsはラッパーベースのAPIです。 -`Wrapper`は、マウントされたコンポーネントまたは仮想DOMと、コンポーネントまたは仮想DOMをテストするメソッドを含むオブジェクトです。 +`Wrapper`は、マウントされたコンポーネントと仮想DOM、またはコンポーネントと仮想DOMをテストするメソッドを含むオブジェクトです。 - **プロパティ:** -`vm`` Component`:これはvueのインスタンスです。`wrapper.vm`を使って[vmのプロパティとインスタンスメソッド](https://vuejs.org/v2/api/#Instance-Properties)にアクセスできます。これは、Vueコンポーネントラッパーにのみ存在します。 +`vm` `Component`:これはvueのインスタンスです。`wrapper.vm`を使って[vmのプロパティとインスタンスメソッド](https://vuejs.org/v2/api/#Instance-Properties)にアクセスできます。これは、Vueコンポーネントラッパーにのみ存在します。 `element` `HTMLElement`: ラッパーのルートDOM -`options` `Object`: `mount`または` shallow`に渡されたvue-test-utilsオプションを含むオブジェクト +`options` `Object`: `mount`または`shallow`に渡されたvue-test-utilsオプションを含むオブジェクト `options.attachedToDom` `Boolean`: `mount` か `shallow`に渡された場合はTrueです。 - **メソッド:** From 0580829b8be23db90560f0cbf0b5c90fdeca9f7b Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:26:49 +0900 Subject: [PATCH 09/51] translate /api/README.md --- docs/ja/api/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/README.md b/docs/ja/api/README.md index c18d724e6..a0115dd4e 100644 --- a/docs/ja/api/README.md +++ b/docs/ja/api/README.md @@ -1,3 +1,3 @@ -## [mount](/docs/en/api/mount.md) -## [shallow](/docs/en/api/shallow.md) -## [selectors](/docs/en/api/selectors.md) +## [mount](/docs/ja/api/mount.md) +## [shallow](/docs/ja/api/shallow.md) +## [selectors](/docs/ja/api/selectors.md) From 5f7731a90bb01a1c5cb7e0dadd4081f440cc763c Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:27:13 +0900 Subject: [PATCH 10/51] translate /api/wrapper/contains.md --- docs/ja/api/wrapper/contains.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/wrapper/contains.md b/docs/ja/api/wrapper/contains.md index 665206202..5b766e5d9 100644 --- a/docs/ja/api/wrapper/contains.md +++ b/docs/ja/api/wrapper/contains.md @@ -1,13 +1,13 @@ # contains(selector) -- **Arguments:** - - `{string|Component} selector` +- **引数:** + - `{string|Component} セレクタ(selector)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` contains an element or component matching [selector](/docs/en/api/selectors.md). +`Wrapper`に要素、もしくは[セレクタ](/docs/ja/api/selectors.md)で指定したコンポーネントを含んでいるかアサートします。 ```js import { mount } from 'vue-test-utils' @@ -20,4 +20,4 @@ expect(wrapper.contains('p')).to.equal(true) expect(wrapper.contains(Bar)).to.equal(true) ``` -- **See also:** [selectors](/docs/en/api/selectors.md) +- **参照:** [セレクタ](/docs/ja/api/selectors.md) From de844234875545ef9602aeb13b8a2fe84c740e96 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:27:55 +0900 Subject: [PATCH 11/51] translate /api/wrapper/exist.md --- docs/ja/api/wrapper/exists.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ja/api/wrapper/exists.md b/docs/ja/api/wrapper/exists.md index b5ce5655b..79ed80112 100644 --- a/docs/ja/api/wrapper/exists.md +++ b/docs/ja/api/wrapper/exists.md @@ -1,12 +1,12 @@ # exists() -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` or `WrapperArray` exists. +`Wrapper`か`WrapperArray`が存在したときにアサートします。 -Returns false if called on an empty `Wrapper` or `WrapperArray`. +`Wrapper`か`WrapperArray`が空だった場合はfalseを返します。 ```js import { mount } from 'vue-test-utils' From b58fa2230d8792178ec8061cf78f6ac46185e79c Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:28:18 +0900 Subject: [PATCH 12/51] translate /api/wrapper/find.md --- docs/ja/api/wrapper/find.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/wrapper/find.md b/docs/ja/api/wrapper/find.md index 2f4a94930..455a9c8c9 100644 --- a/docs/ja/api/wrapper/find.md +++ b/docs/ja/api/wrapper/find.md @@ -1,15 +1,15 @@ # find(selector) -- **Arguments:** +- **引数:** - `{string|Component} selector` -- **Returns:** `{Wrapper}` +- **戻り値:** `{Wrapper}` -- **Usage:** +- **使い方:** -Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. +selectorで指定し最初のDOMノードかコンポーネントと一致した[ラッパー](/docs/ja/api/wrapper/README.md)を返します。 -Use any valid [selector](/docs/en/api/selectors.md). +有効な[selector](/docs/ja/api/selectors.md)を使用してください。 ```js import { mount } from 'vue-test-utils' @@ -24,4 +24,4 @@ const bar = wrapper.find(Bar) expect(bar.is(Bar)).to.equal(true) ``` -- **See also:** [Wrapper](/docs/en/api/wrapper/README.md) \ No newline at end of file +- **参照:** [Wrapper](/docs/ja/api/wrapper/README.md) \ No newline at end of file From f97f1645be9b581634345c1dfc8d0cf5594e5221 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:28:35 +0900 Subject: [PATCH 13/51] translate /api/wrapper/findAll.md --- docs/ja/api/wrapper/findAll.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/wrapper/findAll.md b/docs/ja/api/wrapper/findAll.md index aa2d356d3..ab70d122a 100644 --- a/docs/ja/api/wrapper/findAll.md +++ b/docs/ja/api/wrapper/findAll.md @@ -1,15 +1,15 @@ # findAll(selector) -- **Arguments:** +- **引数:** - `{string|Component} selector` -- **Returns:** `{WrapperArray}` +- **戻り値:** `{WrapperArray}` -- **Usage:** +- **使い方:** -Returns a [`WrapperArray`](/docs/en/api/wrapper-array/README.md) of [Wrappers](/docs/en/api/wrapper/README.md). +[Wrappers](/docs/en/api/wrapper/README.md)の[`WrapperArray`](/docs/en/api/wrapper-array/README.md)を返します。 -Use any valid [selector](/docs/en/api/selectors.md). +有効な[selector](/docs/ja/api/selectors.md)を使用してください。 ```js import { mount } from 'vue-test-utils' @@ -24,4 +24,4 @@ const bar = wrapper.findAll(Bar).at(0) expect(bar.is(Bar)).to.equal(true) ``` -- **See also:** [Wrapper](/docs/en/api/wrapper/README.md) \ No newline at end of file +- **参照:** [Wrapper](/docs/ja/api/wrapper/README.md) \ No newline at end of file From aa44330120c8e6a647e4d55bd6417a3d9c5a90ca Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:28:58 +0900 Subject: [PATCH 14/51] translate /api/wrapper/hasAttribute.md --- docs/ja/api/wrapper/hasAttribute.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/ja/api/wrapper/hasAttribute.md b/docs/ja/api/wrapper/hasAttribute.md index 489fc645f..4319c863f 100644 --- a/docs/ja/api/wrapper/hasAttribute.md +++ b/docs/ja/api/wrapper/hasAttribute.md @@ -1,16 +1,16 @@ # hasAttribute(attribute, value) -- **Arguments:** - - `{string} attribute` - - `{string} value` +- **引数:** + - `{string} 属性(attribute)` + - `{string} 値(value)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` DOM node has attribute matching value. +`Wrapper`DOMノードに属性とその値が一致したかアサートします。 -Returns `true` if `Wrapper` DOM node contains attribute with matching value. +`Wrapper`DOMノードに値が一致する属性が含まれている場合は` true`を返します。 ```js import { mount } from 'vue-test-utils' @@ -21,9 +21,9 @@ const wrapper = mount(Foo) expect(wrapper.hasAttribute('id', 'foo')).to.equal(true) ``` -- **Alternative:** +- **その他:** -You could get the attribute from the `Wrapper.element` to have a value based assertion: +`Wrapper.element`から属性を取得して、値に基づくアサーションを得ることができます。 ```js import { mount } from 'vue-test-utils' @@ -34,4 +34,4 @@ const wrapper = mount(Foo) expect(wrapper.element.getAttribute('id')).to.equal('foo') ``` -This makes for a more informative assertion error. +これにより、更に有益なアサーションエラーを生み出せます。 \ No newline at end of file From b49efd232f4d4a52587658ace110f67bb304fc43 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:29:30 +0900 Subject: [PATCH 15/51] translate /api/wrapper/hasClass.md --- docs/ja/api/wrapper/hasClass.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/wrapper/hasClass.md b/docs/ja/api/wrapper/hasClass.md index a84615c7b..68f784770 100644 --- a/docs/ja/api/wrapper/hasClass.md +++ b/docs/ja/api/wrapper/hasClass.md @@ -1,15 +1,16 @@ # hasClass(className) -- **Arguments:** - - `{string} className` +- **引数:** + - `{string} クラス名(className)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` DOM node has class contains `className`. -Returns `true` if `Wrapper` DOM node contains class. +DOMノードに`className`が含まれているかアサートします。 + +`Wrapper`DOMノードにクラスが含まれている場合は` true`を返します。 ```js import { mount } from 'vue-test-utils' From f53c65d592f95709d275ce5677a6424f26d04a5b Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:29:50 +0900 Subject: [PATCH 16/51] translate /api/wrapper/hasProp.md --- docs/ja/api/wrapper/hasProp.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/ja/api/wrapper/hasProp.md b/docs/ja/api/wrapper/hasProp.md index f7359d366..aec7cf44b 100644 --- a/docs/ja/api/wrapper/hasProp.md +++ b/docs/ja/api/wrapper/hasProp.md @@ -1,18 +1,18 @@ # hasProp(prop, value) -- **Arguments:** - - `{string} prop` - - `{any} value` +- **引数:** + - `{string} プロパティ(prop)` + - `{any} 値(value)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` `vm` has `prop` matching `value`. +`Wrapper`,`vm`は`value`と一致する`prop`を持っているかアサートします。 -Returns `true` if `Wrapper` `vm` has `prop` matching `value`. +`Wrapper`,`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 -**Note the Wrapper must contain a Vue instance.** +**ラッパーにはVueインスタンスが含まれている必要があることに注意してください。** ```js import { mount } from 'vue-test-utils' From c3ea516443d8954dfaa747c746fa9b97e5519195 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 01:30:50 +0900 Subject: [PATCH 17/51] translate /api/wrapper/hasStyle.md --- docs/ja/api/wrapper/hasStyle.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/ja/api/wrapper/hasStyle.md b/docs/ja/api/wrapper/hasStyle.md index ac8756d1f..b9af7a0e7 100644 --- a/docs/ja/api/wrapper/hasStyle.md +++ b/docs/ja/api/wrapper/hasStyle.md @@ -1,18 +1,17 @@ # hasStyle(style, value) -- **Arguments:** - - `{string} style` - - `{string} value` +- **引数:** + - `{string} style属性(style)` + - `{string} 値(value)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` DOM node has style matching value +`ラッパー`DOMノードにstyle属性と値があることをアサートします。 -Returns `true` if `Wrapper` DOM node has `style` matching `string`. - -**Note will only detect inline styles when running in `jsdom`.** +`ラッパー`DOMノードにstyle属性と一致した文字列があればtrueを返します。 +**`jsdom`で実行しているときのみ、インラインスタイルを検出します。** ```js import { mount } from 'vue-test-utils' From 4fcdf864a6d4e3eb39f625582c2eb0222c4c5c82 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 02:58:45 +0900 Subject: [PATCH 18/51] update /api/wrapper/hasProp.md --- docs/ja/api/wrapper/hasProp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ja/api/wrapper/hasProp.md b/docs/ja/api/wrapper/hasProp.md index aec7cf44b..b76ae325d 100644 --- a/docs/ja/api/wrapper/hasProp.md +++ b/docs/ja/api/wrapper/hasProp.md @@ -8,9 +8,9 @@ - **使い方:** -`Wrapper`,`vm`は`value`と一致する`prop`を持っているかアサートします。 +`Wrapper`、`vm`が`value`と一致する`prop`を持っているかアサートします。 -`Wrapper`,`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 +`Wrapper`、`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 **ラッパーにはVueインスタンスが含まれている必要があることに注意してください。** From 4df04f021db31ec4f3a75a1f6dbbf3c7fe5d850f Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 02:59:54 +0900 Subject: [PATCH 19/51] translate /api/wrapper/html.md --- docs/ja/api/wrapper/html.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/html.md b/docs/ja/api/wrapper/html.md index d169dc78c..23d41c794 100644 --- a/docs/ja/api/wrapper/html.md +++ b/docs/ja/api/wrapper/html.md @@ -1,10 +1,10 @@ # html() -- **Returns:** `{string}` +- **戻り値:** `{string}` -- **Usage:** +- **使い方:** -Returns HTML of `Wrapper` DOM node as a string. +`Wrapper`のDOMノードのHTMLを文字列として返します。 ```js import { mount } from 'vue-test-utils' From 94c32c336ba29537e4e3003a40771f42cde7951a Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:00:10 +0900 Subject: [PATCH 20/51] translate /api/wrapper/is.md: --- docs/ja/api/wrapper/is.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/wrapper/is.md b/docs/ja/api/wrapper/is.md index e128da0ca..69a9d2a94 100644 --- a/docs/ja/api/wrapper/is.md +++ b/docs/ja/api/wrapper/is.md @@ -1,13 +1,13 @@ # is(selector) -- **Arguments:** - - `{string|Component} selector` +- **引数:** + - `{string|Component} セレクタ(selector)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` DOM node or `vm` matches [selector](/docs/en/api/selectors.md). +`Wrapper`のDOMノードか`vm`がセレクタと一致しているかアサートします。 ```js import { mount } from 'vue-test-utils' From bf5899639a7ab303461b08faa56509514166969f Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:00:26 +0900 Subject: [PATCH 21/51] translate api/wrapper/isEmpty.md --- docs/ja/api/wrapper/isEmpty.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/isEmpty.md b/docs/ja/api/wrapper/isEmpty.md index 70297d591..2ab0e86a4 100644 --- a/docs/ja/api/wrapper/isEmpty.md +++ b/docs/ja/api/wrapper/isEmpty.md @@ -1,10 +1,10 @@ # isEmpty() -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` does not contain child node. +`Wrapper`に子ノードを含んでいないかアサートします。 ```js import { mount } from 'vue-test-utils' From d85003fa3b374aff22dec670c74e946b872ed6a5 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:00:52 +0900 Subject: [PATCH 22/51] translate /api/wrapper/isVueInstance.md --- docs/ja/api/wrapper/isVueInstance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/isVueInstance.md b/docs/ja/api/wrapper/isVueInstance.md index 5132abb71..bad5ac81f 100644 --- a/docs/ja/api/wrapper/isVueInstance.md +++ b/docs/ja/api/wrapper/isVueInstance.md @@ -1,10 +1,10 @@ # isVueInstance() -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert `Wrapper` is Vue instance. +`Wrapper`がVueのinstanceかアサートします ```js import { mount } from 'vue-test-utils' From e89dcbe8f50af8d24ff5a2e9068fb2bd50b9ad2e Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:01:18 +0900 Subject: [PATCH 23/51] translate /api/wrapper/setData.md --- docs/ja/api/wrapper/name.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/name.md b/docs/ja/api/wrapper/name.md index b587730db..69c86291c 100644 --- a/docs/ja/api/wrapper/name.md +++ b/docs/ja/api/wrapper/name.md @@ -1,10 +1,10 @@ # name() -- **Returns:** `{string}` +- **戻り値:** `{string}` -- **Usage:** +- **使い方:** -Returns component name if `Wrapper` contains a Vue instance, or the tag name of `Wrapper` DOM node if `Wrapper` does not contain a Vue instance. +`Wrapper`にVueインスタンスが含まれている場合はコンポーネント名を返し、そうでない場合は`Wrapper`のDOMノードのタグ名を返します。 ```js import { mount } from 'vue-test-utils' From 8abe209273a6067c04a7722ddea29aa04d2dc34d Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:01:45 +0900 Subject: [PATCH 24/51] translate /api/wrapper/setData.md --- docs/ja/api/wrapper/setData.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/wrapper/setData.md b/docs/ja/api/wrapper/setData.md index b62b12c22..cd3909b01 100644 --- a/docs/ja/api/wrapper/setData.md +++ b/docs/ja/api/wrapper/setData.md @@ -1,13 +1,13 @@ # setData(data) -- **Arguments:** - - `{Object} data` +- **引数:** + - `{Object} データ(data)` -- **Usage:** +- **使い方:** -Sets `Wrapper` `vm` data and forces update. +`Wrapper` `vm` データを設定し、更新を強制します。 -**Note the Wrapper must contain a Vue instance.** +**WrapperにはVueインスタンスを含む必要があることに注意してください** ```js import { mount } from 'vue-test-utils' From 3255e9d29cde5cd482c0dd8921fc8e1eb00b3018 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:02:09 +0900 Subject: [PATCH 25/51] translate /api/wrapper/setMethods.md --- docs/ja/api/wrapper/setMethods.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ja/api/wrapper/setMethods.md b/docs/ja/api/wrapper/setMethods.md index 2910cb564..9c1e9fc5a 100644 --- a/docs/ja/api/wrapper/setMethods.md +++ b/docs/ja/api/wrapper/setMethods.md @@ -1,13 +1,13 @@ # setMethods(methods) -- **Arguments:** +- **引数:** - `{Object} methods` -- **Usage:** +- **使い方:** -Sets `Wrapper` `vm` methods and forces update. +`Wrapper``vm`メソッドを設定し、更新を強制します。 -**Note the Wrapper must contain a Vue instance.** +**WrapperにはVueインスタンスを含む必要があることに注意してください** ```js import { mount } from 'vue-test-utils' From 44b99c028872dda92c50743bd408f742e55fa963 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:02:44 +0900 Subject: [PATCH 26/51] translate /api/wrapper/setProps.md --- docs/ja/api/wrapper/setProps.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/wrapper/setProps.md b/docs/ja/api/wrapper/setProps.md index 52f507930..98094ce6c 100644 --- a/docs/ja/api/wrapper/setProps.md +++ b/docs/ja/api/wrapper/setProps.md @@ -1,13 +1,13 @@ # setProps(props) -- **Arguments:** - - `{Object} props` +- **引数:** + - `{Object} プロパティ(props)` -- **Usage:** +- **使い方:** -Sets `Wrapper` `vm` props and forces update. +`Wrapper` `vm`のプロパティを設定し更新を強制します。 -**Note the Wrapper must contain a Vue instance.** +**WrapperにはVueインスタンスを含む必要があることに注意してください** ```js import { mount } from 'vue-test-utils' From 86142ca98f50e0a37032f94beed555f7be64951c Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:03:01 +0900 Subject: [PATCH 27/51] translate /api/wrapper/text.md --- docs/ja/api/wrapper/text.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/text.md b/docs/ja/api/wrapper/text.md index 92a95d00c..def1fa4ce 100644 --- a/docs/ja/api/wrapper/text.md +++ b/docs/ja/api/wrapper/text.md @@ -1,10 +1,10 @@ # text() -- **Returns:** `{string}` +- **戻り値:** `{string}` -- **Usage:** +- **使い方:** -Returns text content of `Wrapper`. +`Wrapper`のテキスト内容を返します。 ```js import { mount } from 'vue-test-utils' From 6b52578e679e81536d6dee215299441139ad8cc3 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:03:18 +0900 Subject: [PATCH 28/51] translate /api/wrapper/trigger.md --- docs/ja/api/wrapper/trigger.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/wrapper/trigger.md b/docs/ja/api/wrapper/trigger.md index 88f95aa63..c0d8b61d0 100644 --- a/docs/ja/api/wrapper/trigger.md +++ b/docs/ja/api/wrapper/trigger.md @@ -1,17 +1,17 @@ # trigger(eventName) -- **Arguments:** - - `{string} eventName` - - `{Object} options` +- **引数:** + - `{string} イベント名(eventName)` + - `{Object} オプション(options)` - `{boolean} preventDefault` - **Usage:** -Triggers an event on the `Wrapper` DOM node. +`Wrapper`のDOMノードのイベントを発火します。 -Trigger takes an optional `options` object. The properties in the `options` object are added to the Event. +Triggerは`options`オブジェクト形式で行います。`options`オブジェクトのプロパティがイベントに追加されます。 -You can run preventDefault on the event by passing `preventDefault: true` in `options`. +オプションで` preventDefault:true`とすることで、イベントに対してpreventDefaultを実行することができます。 ```js import { mount } from 'vue-test-utils' From c08e849979ae1d4877c84956c6831b8c13408d24 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 03:03:49 +0900 Subject: [PATCH 29/51] translate /api/wrapper/update.md --- docs/ja/api/wrapper/update.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ja/api/wrapper/update.md b/docs/ja/api/wrapper/update.md index 9335fb199..9a26de8b7 100644 --- a/docs/ja/api/wrapper/update.md +++ b/docs/ja/api/wrapper/update.md @@ -1,10 +1,10 @@ # update() -- **Usage:** +- **使い方:** -Force root Vue component to re-render. +Vueコンポーネントを強制的に再レン​​ダリングします。 -If called on a `Wrapper` containing a `vm`, it will force the `Wrapper` `vm` to re-render. +`vm`を含む`Wrapper`で呼び出された場合、`Wrapper`、`vm`を強制的に再レン​​ダリングします。 ```js import { mount } from 'vue-test-utils' From ab6a2762453013cce579ceef2489e64e42ce3ffe Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 22:59:52 +0900 Subject: [PATCH 30/51] update common-gotchas.md --- docs/ja/common-gotchas.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ja/common-gotchas.md b/docs/ja/common-gotchas.md index 807e01c1c..892f5e1ca 100644 --- a/docs/ja/common-gotchas.md +++ b/docs/ja/common-gotchas.md @@ -1,4 +1,4 @@ -# よくある問題 +# よくある落とし穴 ## createLocalVue @@ -8,7 +8,7 @@ 現在、 **Vuexは複数回インスタンスにインストールができません。** しかし、 ストアを変更することができます。そのため、1回インストールすれば大丈夫です。[Vuexとの使い方](guides/using-with-vuex.md)を参照してください。 -また、**Vue Routerは2回以上インストールする際は2つのオプションをfalseに設定する必要があります。** +また、**Vue Routerを複数回インストールする際は2つのオプションをfalseに設定する必要があります。** ```js import createLocalVue from 'vue-test-utils' From eabdd66d34d23817ead4eb471dca3429fd4ca1e6 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 23:00:13 +0900 Subject: [PATCH 31/51] translate /api/createLocalVue.md --- docs/ja/api/createLocalVue.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/createLocalVue.md b/docs/ja/api/createLocalVue.md index 0e8523298..8a4718eb0 100644 --- a/docs/ja/api/createLocalVue.md +++ b/docs/ja/api/createLocalVue.md @@ -1,13 +1,13 @@ # createLocalVue() -- **Returns:** +- **戻り値:** - `{Component}` -- **Usage:** +- **使い方:** -createLocalVue returns a Vue class for you to add components, mixins and install plugins without polluting the global Vue class. +createLocalVueは、グローバルVueクラスを汚染することなくコンポーネント、ミックスイン、プラグインを追加するためのVueクラスを返します。 -Use it with `options.localVue` +`options.localVue`と一緒に使用してください ```js import { createLocalVue, shallow } from 'vue-test-utils' @@ -25,4 +25,4 @@ const freshWrapper = shallow(Foo) expect(freshWrapper.vm.foo).to.equal(false) ``` -- **See also:** [Common Gotchas](/en/common-gotchas.md) \ No newline at end of file +- **参照:** [よくある落とし穴](/ja/common-gotchas.md) \ No newline at end of file From 629b2b74ee6e97326fd09da665fd5ae0ae9b0eae Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 1 Oct 2017 23:01:54 +0900 Subject: [PATCH 32/51] translate /api/mount.md --- docs/ja/api/mount.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md index b088a2068..d1247ba0f 100644 --- a/docs/ja/api/mount.md +++ b/docs/ja/api/mount.md @@ -1,23 +1,24 @@ # mount(component,{,options}]) -- **Arguments:** +- **引数:** - - `{Component} component` - - `{Object} options` + - `{Component} コンポーネント(component)` + - `{Object} オプション(options)` -- **Returns:** `{Wrapper}` +- **戻り値:** `{Wrapper}` -- **Options:** +- **オプション:** -See [options](/docs/en/api/options.md) +[オプション](/docs/ja/api/options.md)を見る -- **Usage:** +- **使い方:** -Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. -Use any valid [selector](/docs/en/api/selectors.md). +最初のDOMノードまたはVueコンポーネント一致セレクタの[`ラッパー`](/docs/ja/api/wrapper/README.md)を返します。 -**Without options:** +有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 + +**オプションなし:** ```js import { mount } from 'vue-test-utils' @@ -31,7 +32,7 @@ describe('Foo', () => { }) }) ``` -**With Vue options:** +**Vueオプションを使用:** ```js import { mount } from 'vue-test-utils' @@ -50,7 +51,7 @@ describe('Foo', () => { }) ``` -**Attach to DOM:** +**DOMへのアタッチ:** ```js import { mount } from 'vue-test-utils' @@ -66,7 +67,7 @@ describe('Foo', () => { }) }) ``` -**Default and named slots:** +**デフォルトおよび名前付きスロット:** ```js import { mount } from 'vue-test-utils' @@ -89,7 +90,7 @@ describe('Foo', () => { }) ``` -**Stubbing global properties:** +**グローバルプロパティのスタブ:** ```js import { mount } from 'vue-test-utils' @@ -109,7 +110,7 @@ describe('Foo', () => { }) ``` -**Stubbing components:** +**コンポーネントのスタブ:** ```js import { mount } from 'vue-test-utils' @@ -133,4 +134,4 @@ describe('Foo', () => { }) ``` -- **See also:** [Wrapper](/docs/en/api/wrapper/README.md) +- **参照:** [`ラッパー`](/docs/ja/api/wrapper/README.md) From 74beb4687f03c1fde8b824295a1b983b42481ae3 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:07:15 +0900 Subject: [PATCH 33/51] improve japanese --- docs/ja/api/createLocalVue.md | 2 +- docs/ja/api/mount.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ja/api/createLocalVue.md b/docs/ja/api/createLocalVue.md index 8a4718eb0..c0a63be96 100644 --- a/docs/ja/api/createLocalVue.md +++ b/docs/ja/api/createLocalVue.md @@ -7,7 +7,7 @@ createLocalVueは、グローバルVueクラスを汚染することなくコンポーネント、ミックスイン、プラグインを追加するためのVueクラスを返します。 -`options.localVue`と一緒に使用してください +`options.localVue`と一緒に使用してください。 ```js import { createLocalVue, shallow } from 'vue-test-utils' diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md index d1247ba0f..55131e151 100644 --- a/docs/ja/api/mount.md +++ b/docs/ja/api/mount.md @@ -81,7 +81,7 @@ describe('Foo', () => { const wrapper = mount(Foo, { slots: { default: [Bar, FooBar], - fooBar: FooBar, // Will match , + fooBar: FooBar, // と一致する, foo: '
' } }) From 8d30c66e8858be6e4499325c134723d6ab55e02e Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:07:30 +0900 Subject: [PATCH 34/51] translate /api/selectors.md --- docs/ja/api/selectors.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/ja/api/selectors.md b/docs/ja/api/selectors.md index 9cf6d7c22..ffdd9cd84 100644 --- a/docs/ja/api/selectors.md +++ b/docs/ja/api/selectors.md @@ -1,29 +1,29 @@ -# Selectors +# セレクタ -A lot of methods take a selector as an argument. A selector can either be a CSS selector, or a Vue component. +多くのメソッドがセレクタを引数とします。セレクタは、CSSセレクタまたはVueコンポーネントのいずれかです。 -## CSS Selectors +## CSSセレクタ -mount handles any valid CSS selector: +マウントは有効なCSSセレクタを処理します。 -- tag selectors (div, foo, bar) -- class selectors (.foo, .bar) -- attribute selectors ([foo], [foo="bar"]) -- id selectors (#foo, #bar) -- pseudo selectors (div:first-of-type) +- タグセレクタ (div, foo, bar) +- クラスセレクタ (.foo, .bar) +- 属性セレクタ ([foo], [foo="bar"]) +- idセレクタ (#foo, #bar) +- 疑似セレクタ (div:first-of-type) -You can also use combinators: +これらを組み合わせることも可能です: -- direct descendant combinator (div > #bar > .foo) -- general descendant combinator (div #bar .foo) -- adjacent sibling selector (div + .foo) -- general sibling selector (div ~ .foo) +- 直接子孫を組み合わせる (div > #bar > .foo) +- 一般子孫セレクタを組み合わせる (div #bar .foo) +- 隣接する兄弟のセレクタ (div + .foo) +- 一般兄弟セレクタ (div ~ .foo) -## Vue Components +## Vueコンポーネント -Vue components are also valid selectors. +Vueコンポーネントもセレクターとして有効です。 -vue-test-utils uses the `name` property to search the instance tree for matching Vue components. +vue-test-utilsは `name`プロパティを使用して、一致するVueコンポーネントのインスタンスツリーを検索します。 ```js // Foo.vue From e2545d92fa2a6aa1e6016d48ad450fc31337baaf Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:56:35 +0900 Subject: [PATCH 35/51] improve japanese --- docs/ja/api/mount.md | 4 ++-- docs/ja/api/wrapper/find.md | 2 +- docs/ja/api/wrapper/findAll.md | 2 +- docs/ja/api/wrapper/hasProp.md | 2 +- docs/ja/api/wrapper/hasStyle.md | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md index 55131e151..486b59b4b 100644 --- a/docs/ja/api/mount.md +++ b/docs/ja/api/mount.md @@ -14,7 +14,7 @@ - **使い方:** -最初のDOMノードまたはVueコンポーネント一致セレクタの[`ラッパー`](/docs/ja/api/wrapper/README.md)を返します。 +最初のDOMノードまたはVueコンポーネント一致セレクタの[`Wrapper`](/docs/ja/api/wrapper/README.md)を返します。 有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 @@ -134,4 +134,4 @@ describe('Foo', () => { }) ``` -- **参照:** [`ラッパー`](/docs/ja/api/wrapper/README.md) +- **参照:** [`Wrapper`](/docs/ja/api/wrapper/README.md) diff --git a/docs/ja/api/wrapper/find.md b/docs/ja/api/wrapper/find.md index 455a9c8c9..23e9fd367 100644 --- a/docs/ja/api/wrapper/find.md +++ b/docs/ja/api/wrapper/find.md @@ -7,7 +7,7 @@ - **使い方:** -selectorで指定し最初のDOMノードかコンポーネントと一致した[ラッパー](/docs/ja/api/wrapper/README.md)を返します。 +selectorで指定し最初のDOMノードかコンポーネントと一致した[Wrapper](/docs/ja/api/wrapper/README.md)を返します。 有効な[selector](/docs/ja/api/selectors.md)を使用してください。 diff --git a/docs/ja/api/wrapper/findAll.md b/docs/ja/api/wrapper/findAll.md index ab70d122a..8e154602e 100644 --- a/docs/ja/api/wrapper/findAll.md +++ b/docs/ja/api/wrapper/findAll.md @@ -7,7 +7,7 @@ - **使い方:** -[Wrappers](/docs/en/api/wrapper/README.md)の[`WrapperArray`](/docs/en/api/wrapper-array/README.md)を返します。 +[Wrappers](/docs/ja/api/wrapper/README.md)の[`WrapperArray`](/docs/ja/api/wrapper-array/README.md)を返します。 有効な[selector](/docs/ja/api/selectors.md)を使用してください。 diff --git a/docs/ja/api/wrapper/hasProp.md b/docs/ja/api/wrapper/hasProp.md index b76ae325d..3bfe87a5b 100644 --- a/docs/ja/api/wrapper/hasProp.md +++ b/docs/ja/api/wrapper/hasProp.md @@ -12,7 +12,7 @@ `Wrapper`、`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 -**ラッパーにはVueインスタンスが含まれている必要があることに注意してください。** +**WrapperにはVueインスタンスが含まれている必要があることに注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/hasStyle.md b/docs/ja/api/wrapper/hasStyle.md index b9af7a0e7..001537011 100644 --- a/docs/ja/api/wrapper/hasStyle.md +++ b/docs/ja/api/wrapper/hasStyle.md @@ -8,9 +8,9 @@ - **使い方:** -`ラッパー`DOMノードにstyle属性と値があることをアサートします。 +`Wrapper`DOMノードにstyle属性と値があることをアサートします。 -`ラッパー`DOMノードにstyle属性と一致した文字列があればtrueを返します。 +`Wrapper`DOMノードにstyle属性と一致した文字列があればtrueを返します。 **`jsdom`で実行しているときのみ、インラインスタイルを検出します。** ```js From ca7db35765bfec571a7f71b98ef4739e0538ba95 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:56:49 +0900 Subject: [PATCH 36/51] translate /api/wrapper-array/shallow.md --- docs/ja/api/shallow.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/ja/api/shallow.md b/docs/ja/api/shallow.md index 389c06c9c..958781fb7 100644 --- a/docs/ja/api/shallow.md +++ b/docs/ja/api/shallow.md @@ -1,6 +1,6 @@ # shallow(component,{,options}]) -- **Arguments:** +- **引数:** - `{Component} component` - `{Object} options` @@ -15,21 +15,21 @@ - `{Object} children` - `{Vue} localVue` -- **Returns:** `{Wrapper}` +- **戻り値:** `{Wrapper}` -- **Options:** +- **オプション:** -See [options](/docs/en/api/options.md) +[オプション](/docs/ja/api/options.md)を参照してください。 -- **Usage:** +- **使い方:** -Returns [`Wrapper`](/docs/en/api/wrapper/README.md) of first DOM node or Vue component matching selector. +最初のDOMノードまたはVueコンポーネント一致セレクタの[`Wrapper`](/docs/ja/api/wrapper/README.md)を返します。 -Stubs all child components. +全ての子コンポーネントをスタブします。 -Use any valid [selector](/docs/en/api/selectors.md). +有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 -**Without options:** +**オプションなし:** ```js import { shallow } from 'vue-test-utils' @@ -44,7 +44,7 @@ describe('Foo', () => { }) ``` -**With Vue options:** +**Vueオプションを使用:** ```js import { shallow } from 'vue-test-utils' @@ -63,7 +63,7 @@ describe('Foo', () => { }) ``` -**Attach to DOM:** +**DOMへのアタッチ:** ```js import { shallow } from 'vue-test-utils' @@ -80,7 +80,7 @@ describe('Foo', () => { }) ``` -**Default and named slots:** +**デフォルトおよび名前付きスロット:** ```js import { shallow } from 'vue-test-utils' @@ -94,7 +94,7 @@ describe('Foo', () => { const wrapper = shallow(Foo, { slots: { default: [Bar, FooBar], - fooBar: FooBar, // Will match , + fooBar: FooBar, // と一致する, foo: '
' } }) @@ -103,7 +103,7 @@ describe('Foo', () => { }) ``` -**Stubbing global properties:** +**グローバルプロパティのスタブ:** ```js import { shallow } from 'vue-test-utils' From a1e8cae57b3cbe2457a2cf1423b559ec2beea534 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:57:16 +0900 Subject: [PATCH 37/51] translate /api/wrapper-array/README.md --- docs/ja/api/wrapper-array/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/wrapper-array/README.md b/docs/ja/api/wrapper-array/README.md index fa2a44831..86f745138 100644 --- a/docs/ja/api/wrapper-array/README.md +++ b/docs/ja/api/wrapper-array/README.md @@ -1,11 +1,11 @@ # WrapperArray -A `WrapperArray` is an object that contains an array of [Wrappers](/docs/en/api/wrapper/README.md), and methods to test the `Wrappers`. +`WrapperArray`は、[Wrapper](/docs/ja/api/wrapper/README.md)の配列と`Wrapper`をテストするメソッドを含むオブジェクトです。 -- **Properties:** +- **プロパティ:** -`length` `number`: the number of `Wrappers` contained in the `WrapperArray` +`length` `number`: `WrapperArray`に含まれる`Wrappers`の数 - - **Methods:** + - **メソッド:** -There is a detailed list of methods in the WrapperArray section of the docs. +ドキュメントのWrapperArrayセクションには、メソッドの詳細なリストがあります。 \ No newline at end of file From 126506b05082c96c154b956541a5bfd3f701c591 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:57:37 +0900 Subject: [PATCH 38/51] translate api/wrapper-array/at.md --- docs/ja/api/wrapper-array/at.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ja/api/wrapper-array/at.md b/docs/ja/api/wrapper-array/at.md index 19273f990..4d1206d03 100644 --- a/docs/ja/api/wrapper-array/at.md +++ b/docs/ja/api/wrapper-array/at.md @@ -1,13 +1,13 @@ # at(index) -- **Arguments:** +- **引数:** - `{number} index` -- **Returns:** `{Wrapper}` +- **戻り値:** `{Wrapper}` -- **Usage:** +- **使い方:** -Returns `Wrapper` at `index` passed. Uses zero based numbering (i.e. first item is at index 0). +渡された`index`の`Wrapper`を返します。ゼロベースの番号付けを使用します(つまり、最初のアイテムはインデックス0になります)。 ```js import { shallow } from 'vue-test-utils' From db154318d31be44603d6c5fde1f0cf85ff135480 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:57:55 +0900 Subject: [PATCH 39/51] translate /api/wrapper-array/contains.md --- docs/ja/api/wrapper-array/contains.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ja/api/wrapper-array/contains.md b/docs/ja/api/wrapper-array/contains.md index d4c8790fb..feb622c59 100644 --- a/docs/ja/api/wrapper-array/contains.md +++ b/docs/ja/api/wrapper-array/contains.md @@ -1,15 +1,15 @@ # contains(selector) -- **Arguments:** +- **引数:** - `{string|Component} selector` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every wrapper in `WrapperArray` contains selector. +`WrapperArray`のすべてのWrapperにセレクターが含まれているかアサートします。 -Use any valid [selector](/docs/en/api/selectors.md). +有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 ```js import { shallow } from 'vue-test-utils' From 2d772fc0548f17b904d5d4d53977d8cfd48156ce Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Mon, 2 Oct 2017 13:58:22 +0900 Subject: [PATCH 40/51] translate /api/wrapper-array --- docs/ja/api/wrapper-array/hasAttribute.md | 8 ++++---- docs/ja/api/wrapper-array/hasClass.md | 10 +++++----- docs/ja/api/wrapper-array/hasProp.md | 14 ++++++++------ docs/ja/api/wrapper-array/hasStyle.md | 10 +++++----- docs/ja/api/wrapper-array/is.md | 8 ++++---- docs/ja/api/wrapper-array/isEmpty.md | 6 +++--- docs/ja/api/wrapper-array/isVueInstance.md | 6 +++--- docs/ja/api/wrapper-array/setData.md | 8 ++++---- docs/ja/api/wrapper-array/setMethods.md | 9 ++++----- docs/ja/api/wrapper-array/setProps.md | 8 ++++---- docs/ja/api/wrapper-array/trigger.md | 7 ++++--- docs/ja/api/wrapper-array/update.md | 8 ++++---- 12 files changed, 52 insertions(+), 50 deletions(-) diff --git a/docs/ja/api/wrapper-array/hasAttribute.md b/docs/ja/api/wrapper-array/hasAttribute.md index 7bb511665..c7f2660be 100644 --- a/docs/ja/api/wrapper-array/hasAttribute.md +++ b/docs/ja/api/wrapper-array/hasAttribute.md @@ -1,14 +1,14 @@ # hasAttribute(attribute, value) -- **Arguments:** +- **引数:** - `{string} attribute` - `{string} value` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` DOM node has `attribute` matching `value`. +`WrapperArray`の全ての`Wrapper`が`value`と一致する属性を持っているかアサートします。 ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasClass.md b/docs/ja/api/wrapper-array/hasClass.md index 47559f904..06f6f9238 100644 --- a/docs/ja/api/wrapper-array/hasClass.md +++ b/docs/ja/api/wrapper-array/hasClass.md @@ -1,13 +1,13 @@ # hasClass(className) -- **Arguments:** - - `{string} className` +- **引数:** + - `{string} クラス名(className)` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` DOM node has class containing `className`. +`WrapperArray`のすべての`Wrapper`にDOMノードが`className`を含むクラスを持っているかアサートします。 ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasProp.md b/docs/ja/api/wrapper-array/hasProp.md index 2d03b5784..548bb0680 100644 --- a/docs/ja/api/wrapper-array/hasProp.md +++ b/docs/ja/api/wrapper-array/hasProp.md @@ -1,22 +1,24 @@ # hasProp(prop, value) -Check if every wrapper vm in wrapper array has prop matching value +Wrapper配列内の各Wrappervmにプロパティとマッチしているかアサートします。 -Can only be called on a Vue instance. +Vueインスタンスのみ呼び出せます。 # hasProp(prop, value) -- **Arguments:** +- **引数:** - `{string} prop` - `{any} value` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` `vm` has `prop` matching `value`. +`WrappersArray`の`Wrapper`と`vm`にプロパティを持っているかアサートします。 **Note the Wrapper must contain a Vue instance.** +**WrapperにはVueインスタンスを含む必要があることに注意してください。** + ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasStyle.md b/docs/ja/api/wrapper-array/hasStyle.md index 201180476..d48b8ef7f 100644 --- a/docs/ja/api/wrapper-array/hasStyle.md +++ b/docs/ja/api/wrapper-array/hasStyle.md @@ -1,18 +1,18 @@ # hasStyle(style, value) -- **Arguments:** +- **引数:** - `{string} style` - `{string} value` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` DOM node has style matching value. +`WrapperArray`の全ての`Wrapper`のDOMノードにstyle属性とマッチする値を持っているかアサートします。 Returns `true` if `Wrapper` DOM node has `style` matching `string`. -**Note will only detect inline styles when running in `jsdom`.** +**`jsdom`で実行しているときにのみインラインスタイルを検出しますので注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/is.md b/docs/ja/api/wrapper-array/is.md index e43a5e9be..bf6f57ffd 100644 --- a/docs/ja/api/wrapper-array/is.md +++ b/docs/ja/api/wrapper-array/is.md @@ -1,13 +1,13 @@ # is(selector) -- **Arguments:** +- **引数:** - `{string|Component} selector` -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` DOM node or `vm` matches [selector](/docs/en/api/selectors.md). +`WrapperArray`の全ての`Wrapper`のDOMノード、もしくは[セレクタ](/docs/ja/api/selectors.md)が`vm`とマッチするかアサートします。 ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/isEmpty.md b/docs/ja/api/wrapper-array/isEmpty.md index fc85f0c8c..3eb512e22 100644 --- a/docs/ja/api/wrapper-array/isEmpty.md +++ b/docs/ja/api/wrapper-array/isEmpty.md @@ -1,10 +1,10 @@ # isEmpty() -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` does not contain child node. +`WrapperArray`のすべての`Wrapper`に子ノードを含んでいないかアサートします。 ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/isVueInstance.md b/docs/ja/api/wrapper-array/isVueInstance.md index 3a39513fe..853427b9e 100644 --- a/docs/ja/api/wrapper-array/isVueInstance.md +++ b/docs/ja/api/wrapper-array/isVueInstance.md @@ -1,10 +1,10 @@ # isVueInstance() -- **Returns:** `{boolean}` +- **戻り値:** `{boolean}` -- **Usage:** +- **使い方:** -Assert every `Wrapper` in `WrapperArray` is Vue instance. +`WrapperArray`の全ての`Wrapper`がVueインスタンスであるかアサートします。 ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/setData.md b/docs/ja/api/wrapper-array/setData.md index bd621394f..7fcf9c735 100644 --- a/docs/ja/api/wrapper-array/setData.md +++ b/docs/ja/api/wrapper-array/setData.md @@ -1,13 +1,13 @@ # setData(data) -- **Arguments:** +- **引数:** - `{Object} data` -- **Usage:** +- **使い方:** -Sets `Wrapper` `vm` data and forces update on each `Wrapper` in `WrapperArray`. +`WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` データをセットし、強制的に更新します。 -**Note every `Wrapper` must contain a Vue instance.** +**すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/setMethods.md b/docs/ja/api/wrapper-array/setMethods.md index d8f66a6b5..7af72c314 100644 --- a/docs/ja/api/wrapper-array/setMethods.md +++ b/docs/ja/api/wrapper-array/setMethods.md @@ -1,14 +1,13 @@ # setMethods(methods) -- **Arguments:** +- **引数:** - `{Object} methods` -- **Usage:** +- **使い方:** +`WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` メソッドをセットし、強制的に更新します。 -Sets `Wrapper` `vm` methods and forces update on each `Wrapper` in `WrapperArray`. - -**Note every `Wrapper` must contain a Vue instance.** +**すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/setProps.md b/docs/ja/api/wrapper-array/setProps.md index 56317ff09..702fe0020 100644 --- a/docs/ja/api/wrapper-array/setProps.md +++ b/docs/ja/api/wrapper-array/setProps.md @@ -1,13 +1,13 @@ # setProps(props) -- **Arguments:** +- **引数:** - `{Object} props` -- **Usage:** +- **使い方:** -Sets `Wrapper` `vm` props and forces update on each `Wrapper` in `WrapperArray`. +`WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` プロパティをセットし、強制的に更新します。 -**Note every `Wrapper` must contain a Vue instance.** +**すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/trigger.md b/docs/ja/api/wrapper-array/trigger.md index b21284293..58d53219b 100644 --- a/docs/ja/api/wrapper-array/trigger.md +++ b/docs/ja/api/wrapper-array/trigger.md @@ -1,13 +1,14 @@ # trigger(eventName) -- **Arguments:** +- **引数:** - `{string} eventName -- **Usage:** +- **使い方:** Triggers an event on every `Wrapper` in the `WrapperArray` DOM node. +`WrapperArray` のDOMノードのすべての `Wrapper` でイベントを発火します。 -**Note every `Wrapper` must contain a Vue instance.** +**すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/update.md b/docs/ja/api/wrapper-array/update.md index 7efc88960..15dabb4bb 100644 --- a/docs/ja/api/wrapper-array/update.md +++ b/docs/ja/api/wrapper-array/update.md @@ -1,12 +1,12 @@ # update() -- **Usage:** +- **使い方:** -Force root Vue component of each `Wrapper` in `WrapperArray` to re-render. +`WrapperArray`の各`Wrapper`のルートVueコンポーネントを強制的に再レン​​ダリングします。 -If called on a Vue component wrapper array, it will force each Vue component to re-render. +VueコンポーネントをWrapperArrayで呼び出した場合、各Vueコンポーネントは強制的に再レン​​ダリングされます。 -### Example +### 例 ```js import { mount } from 'vue-test-utils' From 92e7e90c88b99972df0215858191caffd607faf4 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Thu, 5 Oct 2017 23:42:01 +0900 Subject: [PATCH 41/51] translate api/options.md --- docs/ja/api/options.md | 203 ++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 124 deletions(-) diff --git a/docs/ja/api/options.md b/docs/ja/api/options.md index 45e60e807..d798b2cf1 100644 --- a/docs/ja/api/options.md +++ b/docs/ja/api/options.md @@ -1,130 +1,114 @@ -# options +# マウンティングオプション -Options for mount and shallow. The options object can contain vue-test-utils options and Vue options together. +`mount`と`shallow`オプション。optionsオブジェクトには、`vue-test-utils`のマウントオプションと生のVueオプションの両方を含めることができます。 -Vue options are passed to the component when a new instance is created. , e.g. `store`, `propsData`. For full list, see the [Vue API](https://vuejs.org/v2/api/). Also takes vue-test-utils options: +新しくインスタンスが作成されると、Vueオプションがコンポーネントに渡されます。例:`store`、`propsData`など。完全なリストについては[Vue API docs](https://vuejs.org/v2/api/)を参照してください。 -- **Options:** +## `vue-test-utils`の詳細なマウンティングオプション -- `{Object} options` - - `{boolean} attachToDocument` - - `{Object} attrs` - - `{Object} children` - - `{boolean} clone` - - `{Object} context` - - `{Object} intercept` - - `{Vue} localVue` - - `{Object} slots` - - `{Array|Component|String} default` - - `{Array|Component|String} named` - - `{Object|Array} stubs` - - `{Object|Function} provide` +- [context](#context) +- [slots](#slots) +- [stubs](#stubs) +- [mocks](#mocks) +- [localVue](#localvue) +- [attachToDocument](#attachtodocument) +- [attrs](#attrs) +- [listeners](#listeners) +- [clone](#clone) -`options` (`Object`): a Vue options object. Vue options are passed to the component when a new instance is created. , e.g. `store`, `propsData`. For full list, see the [Vue API](https://vuejs.org/v2/api/). Also takes vue-test-utils options: +### `context` -`options.attachToDocument` (`boolean`): Component will attach to DOM when rendered. This can be used with [`hasStyle`](/docs/en/api/wrapper/hasStyle.md) to check multi element CSS selectors +- 型: `Object` -`options.attrs` (`Object`): Attrs object to pass to component. +コンテキストを機能コンポーネントに渡します。 機能コンポーネントのみで使用できます。 -`options.children` (`Array`): Passes children to be rendered by functional components +例: -`options.clone` (`boolean`): Clones component before editing if `true`, does not if `false`. Defaults to `true` - -`options.context` (`Object`): Passes context to functional component. Can only be used with functional components - -`options.intercept` (`Object`): Add globals to Vue instance. - -`options.localVue` (`Object`): vue class to use in `mount`. See [createLocalVue](/docs/en/api/createLocalVue.md) - -`options.propsData` (`Object`): Data for props in component - -`options.slots` (`Object`): Render component with slots. - -`options.slots.default` (`Array[Component]|Component|String`): Default slot object to render, can be a Vue component or array of Vue components +```js +const wrapper = mount(Component, { + context: { + props: { show: true } + } +}) -`options.slots.name` (`Array[Component]|Component`): Named slots. i.e. slots.name will match a , can be a Vue component or array of Vue components +expect(wrapper.is(Component)).toBe(true) +``` -`options.stubs` (`Object|Array`): Stubs components matching the name. Takes object or array of strings +### `slots` -`options.provide` (`Object`): Provides value to component +- 型: `{ [name: string]: Array|Component|string }` -- **Usage:** +コンポーネントにスロットコンテンツのオブジェクトを渡します。keyはスロット名に対応します。値は、コンポーネント、コンポーネントの配列、またはテンプレート文字列のいずれかです。 -**With Vue options:** +例: ```js import { expect } from 'chai' +import Foo from './Foo.vue' +import Bar from './Bar.vue' const wrapper = shallow(Component, { - propsData: { - color: 'red' + slots: { + default: [Foo, Bar], + fooBar: Foo, // Will match , + foo: '
' } }) -expect(wrapper.hasProp('color', 'red')).to.equal(true) +expect(wrapper.find('div')).toBe(true) ``` -**Do not clone component** - -```js -import { expect } from 'chai' +### `stubs` -const wrapper = mount(Component, { - clone: false -}) +- type: `{ [name: string]: Component | boolean } | Array` -expect(wrapper.hasProp('color', 'red')).to.equal(true) -``` +子のコンポーネントをスタブします。スタブまたはオブジェクトに対するコンポーネント名の配列になります。 -**Attach to DOM:** +例: ```js -import { expect } from 'chai' +import Foo from './Foo.vue' -const wrapper = shallow(Component, { - attachToDocument: true +mount(Component, { + stubs: ['registered-component'] }) -expect(wrapper.contains('div')).to.equal(true) -``` - -**Pass attrs:** -```js shallow(Component, { - attrs: { - attribute: 'value' + stubs: { + // 特定の実装によるスタブ + 'registered-component': Foo, + // デフォルトのスタブを作成します + 'another-component': true } }) ``` -**Mount a functional component:** +### `mocks` -```js -import { expect } from 'chai' +- 型: `Object` -const wrapper = mount(Component, { - context: { - props: { show: true } - } -}) - -expect(wrapper.is(Component)).to.equal(true) -``` +インスタンスに追加のプロパティを追加します。グローバル注入をモックするのに便利です。 -**Stub global properties:** +例: ```js import { expect } from 'chai' const $route = { path: 'http://www.example-path.com' } const wrapper = shallow(Component, { - intercept: { + mocks: { $route } }) -expect(wrapper.vm.$route.path).to.equal($route.path) +expect(wrapper.vm.$route.path).toBe($route.path) ``` -**Install Vue Router with a local Vue:** +### `localVue` + +- 型: `Vue` + +コンポーネントのマウント時に使用する[createLocalVue](./createLocalVue.md)によって作成されたVueのローカルコピーです。 + +例: ```js import { createLocalVue, mount } from 'vue-test-utils' @@ -147,64 +131,35 @@ const wrapper = mount(Component, { localVue, router }) -expect(wrapper.vm.$route).to.be.an('object') +expect(wrapper.vm.$route).toBeInstanceOf(Object) ``` -**Default and named slots:** +### `attachToDocument` -```js -import { expect } from 'chai' -import Foo from './Foo.vue' -import Bar from './Bar.vue' +- 型: `boolean` +- デフォルト: `false` -const wrapper = shallow(Component, { - slots: { - default: [Foo, Bar], - fooBar: Foo, // Will match , - foo: '
' - } -}) -expect(wrapper.find('div')).to.equal(true) -``` +`true`に設定されている場合、レンダリング時にコンポーネントはDOMにアタッチされます。これは複数の要素やCSSセレクタをチェックするための[`hasStyle`](wrapper/hasStyle.md)とも使用できます。 -**Stub components:** +### `attrs` -```js -import Foo from './Foo.vue' +- 型: `Object` -mount(Component, { - stubs: ['registered-component'] -}) +コンポーネントインスタンスの`$attrs`オブジェクトを設定します。 -shallow(Component, { - stubs: { - 'registered-component': Foo, - 'another-component': true - } -}) -``` +### `listeners` -**Provide data to components:** +- 型: `Object` -```js -import { expect } from 'chai' +コンポーネントインスタンスの`$listeners`オブジェクトを設定します。 -const wrapper = mount(Component, { - provide: { fromMount: 'functionValue' } -}) -expect(wrapper.text()).to.contain('functionValue') -``` +### `clone` -**Provide data to components:** +- 型: `boolean` +- デフォルト: `true` -```js -const wrapper = shallow(Component, { - provide () { - return { - fromMount: 'functionValue' - } - } -}) +`true`に設定されている場合、マウント前にコンポーネントを複製し、元のコンポーネントの定義を変更することはありません。 -expect(wrapper.text()).to.contain('functionValue') -``` +`options.mocks` (`Object`): Vueインスタンスにグローバルを追加します。 + +`options.localVue` (`Object`): `mount`で使うVueクラスです。[createLocalVue](createLocalVue.md)を参照してください。 From b88e0032bc6b2abaf3b0f9f51ad53e39e56ed325 Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Fri, 6 Oct 2017 00:00:22 +0900 Subject: [PATCH 42/51] improve README.md --- docs/ja/README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/docs/ja/README.md b/docs/ja/README.md index 8a2a37661..3203dfb0a 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -1,5 +1,48 @@ # vue-test-utils -vue-test-utilsはVue.jsの公式テストライブラリです。 Vueコンポーネントの単体テスト方法を提供します。 +`vue-test-utils`はVue.jsの公式テストライブラリです。 Vueコンポーネントの単体テスト方法を提供します。 -[概要](SUMMARY.md) +* [Guides](guides/README.md) + * [Getting Started](guides/getting-started.md) + * [Common Tips](guides/common-tips.md) + * [Choosing a test runner](guides/choosing-a-test-runner.md) + * [Testing SFCs with Jest](guides/testing-SFCs-with-jest.md) + * [Testing SFCs with Mocha + webpack](guides/testing-SFCs-with-mocha-webpack.md) + * [Using with Vuex](guides/using-with-vuex.md) +* [API](api/README.md) + * [createLocalVue](api/createLocalVue.md) + * [mount](api/mount.md) + * [shallow](api/shallow.md) + * [Mounting Options](api/options.md) + * [Wrapper](api/wrapper/README.md) + * [contains](api/wrapper/contains.md) + * [find](api/wrapper/find.md) + * [hasAttribute](api/wrapper/hasAttribute.md) + * [hasClass](api/wrapper/hasClass.md) + * [hasProp](api/wrapper/hasProp.md) + * [hasStyle](api/wrapper/hasStyle.md) + * [html](api/wrapper/html.md) + * [is](api/wrapper/is.md) + * [isEmpty](api/wrapper/isEmpty.md) + * [isVueInstance](api/wrapper/isVueInstance.md) + * [name](api/wrapper/name.md) + * [update](api/wrapper/update.md) + * [setData](api/wrapper/setData.md) + * [setProps](api/wrapper/setProps.md) + * [text](api/wrapper/text.md) + * [trigger](api/wrapper/trigger.md) + * [WrapperArray](api/wrapper-array/README.md) + * [at](api/wrapper-array/at.md) + * [contains](api/wrapper-array/contains.md) + * [hasAttribute](api/wrapper-array/hasAttribute.md) + * [hasClass](api/wrapper-array/hasClass.md) + * [hasProp](api/wrapper-array/hasProp.md) + * [hasStyle](api/wrapper-array/hasStyle.md) + * [is](api/wrapper-array/is.md) + * [isEmpty](api/wrapper-array/isEmpty.md) + * [isVueInstance](api/wrapper-array/isVueInstance.md) + * [update](api/wrapper-array/update.md) + * [setData](api/wrapper-array/setData.md) + * [setProps](api/wrapper-array/setProps.md) + * [trigger](api/wrapper-array/trigger.md) + * [Selectors](api/selectors.md) From 2d999e8cb989d4d2af375e0eb278c602c374747f Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Fri, 6 Oct 2017 00:00:47 +0900 Subject: [PATCH 43/51] improves api/options.md mount.md README.md --- docs/ja/api/README.md | 52 +++++++++++++++++++++++++++++++++-- docs/ja/api/mount.md | 2 +- docs/ja/api/options.md | 2 +- docs/ja/api/wrapper/README.md | 2 +- 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/docs/ja/api/README.md b/docs/ja/api/README.md index a0115dd4e..231254061 100644 --- a/docs/ja/api/README.md +++ b/docs/ja/api/README.md @@ -1,3 +1,49 @@ -## [mount](/docs/ja/api/mount.md) -## [shallow](/docs/ja/api/shallow.md) -## [selectors](/docs/ja/api/selectors.md) +# API + +* [mount](./mount.md) +* [shallow](./shallow.md) +* [Mounting Options](./options.md) + - [context](./options.md#context) + - [slots](./options.md#slots) + - [stubs](./options.md#stubs) + - [mocks](./options.md#mocks) + - [localVue](./options.md#localvue) + - [attachToDocument](./options.md#attachtodocument) + - [attrs](./options.md#attrs) + - [listeners](./options.md#listeners) + - [clone](./options.md#clone) +* [Wrapper](./wrapper/README.md) + * [contains](./wrapper/contains.md) + * [emitted](./wrapper/emitted.md) + * [emittedByOrder](./wrapper/emittedByOrder.md) + * [find](./wrapper/find.md) + * [hasAttribute](./wrapper/hasAttribute.md) + * [hasClass](./wrapper/hasClass.md) + * [hasProp](./wrapper/hasProp.md) + * [hasStyle](./wrapper/hasStyle.md) + * [html](./wrapper/html.md) + * [is](./wrapper/is.md) + * [isEmpty](./wrapper/isEmpty.md) + * [isVueInstance](./wrapper/isVueInstance.md) + * [name](./wrapper/name.md) + * [update](./wrapper/update.md) + * [setData](./wrapper/setData.md) + * [setProps](./wrapper/setProps.md) + * [text](./wrapper/text.md) + * [trigger](./wrapper/trigger.md) +* [WrapperArray](./wrapper-array/README.md) + * [at](./wrapper-array/at.md) + * [contains](./wrapper-array/contains.md) + * [hasAttribute](./wrapper-array/hasAttribute.md) + * [hasClass](./wrapper-array/hasClass.md) + * [hasProp](./wrapper-array/hasProp.md) + * [hasStyle](./wrapper-array/hasStyle.md) + * [is](./wrapper-array/is.md) + * [isEmpty](./wrapper-array/isEmpty.md) + * [isVueInstance](./wrapper-array/isVueInstance.md) + * [update](./wrapper-array/update.md) + * [setData](./wrapper-array/setData.md) + * [setProps](./wrapper-array/setProps.md) + * [trigger](./wrapper-array/trigger.md) +* [createLocalVue](./createLocalVue.md) +* [Selectors](./selectors.md) diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md index 486b59b4b..4afc8eac1 100644 --- a/docs/ja/api/mount.md +++ b/docs/ja/api/mount.md @@ -9,7 +9,7 @@ - **オプション:** -[オプション](/docs/ja/api/options.md)を見る +[オプション](/docs/ja/api/options.md)を参照してください。 - **使い方:** diff --git a/docs/ja/api/options.md b/docs/ja/api/options.md index d798b2cf1..68854c15b 100644 --- a/docs/ja/api/options.md +++ b/docs/ja/api/options.md @@ -38,7 +38,7 @@ expect(wrapper.is(Component)).toBe(true) - 型: `{ [name: string]: Array|Component|string }` -コンポーネントにスロットコンテンツのオブジェクトを渡します。keyはスロット名に対応します。値は、コンポーネント、コンポーネントの配列、またはテンプレート文字列のいずれかです。 +コンポーネントにスロットコンテンツのオブジェクトを渡します。keyはスロット名に対応します。値は、コンポーネント、コンポーネントの配列、またはテンプレート文字列のいずれかになります。 例: diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md index 598524528..f6f15d37e 100644 --- a/docs/ja/api/wrapper/README.md +++ b/docs/ja/api/wrapper/README.md @@ -13,4 +13,4 @@ vue-test-utilsはラッパーベースのAPIです。 - **メソッド:** -docsにはメソッドの詳細が一覧になっています。 +docs/wrapperのセクションにはメソッドの詳細が一覧になっています。 From bf358d24f9e3d9924be78fc9831b7a6ce052c2b2 Mon Sep 17 00:00:00 2001 From: Miljan Date: Fri, 6 Oct 2017 14:08:50 +0800 Subject: [PATCH 44/51] docs: fix small typo (#78) --- docs/en/guides/testing-SFCs-with-jest.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/guides/testing-SFCs-with-jest.md b/docs/en/guides/testing-SFCs-with-jest.md index 4c04e0485..0bd70718d 100644 --- a/docs/en/guides/testing-SFCs-with-jest.md +++ b/docs/en/guides/testing-SFCs-with-jest.md @@ -150,7 +150,7 @@ Then configure it in `package.json`: ### Placing Test Files -By default, jest will recursively pick up all files that have a `.spec.js` or `.test.js` extension in the entire project. If this does not fit your needs, it's possible [to chang the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. +By default, jest will recursively pick up all files that have a `.spec.js` or `.test.js` extension in the entire project. If this does not fit your needs, it's possible [to change the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. Jest recommends creating a `__tests__` directory right next to the code being tested, but feel free to structure your tests as you see fit. Just beware that Jest would create a `__snapshots__` directory next to test files that performs snapshot testing. From 1af67d8d6bf7ec88dae85e53dd98bd02437c2406 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 6 Oct 2017 10:25:00 -0400 Subject: [PATCH 45/51] bump docs theme --- package-lock.json | 5779 ++++++++++++++++++++++++++++++++++++++++----- package.json | 3 + 2 files changed, 5175 insertions(+), 607 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9271e05c7..295dae01f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,8 @@ { "name": "vue-test-utils", - "version": "1.0.0-beta", + "version": "1.0.0-beta.1", "lockfileVersion": 1, + "requires": true, "dependencies": { "@types/node": { "version": "6.0.88", @@ -25,7 +26,11 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } }, "acorn": { "version": "5.1.2", @@ -38,6 +43,9 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -52,6 +60,9 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -66,6 +77,9 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, + "requires": { + "acorn": "3.3.0" + }, "dependencies": { "acorn": { "version": "3.3.0", @@ -80,6 +94,9 @@ "resolved": "https://registry.npmjs.org/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz", "integrity": "sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg=", "dev": true, + "requires": { + "acorn": "3.3.0" + }, "dependencies": { "acorn": { "version": "3.3.0", @@ -99,7 +116,11 @@ "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "1.5.1", @@ -111,7 +132,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "alphanum-sort": { "version": "1.0.2", @@ -147,19 +173,29 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -189,7 +225,11 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.8.2" + } }, "array-slice": { "version": "0.2.3", @@ -201,7 +241,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -243,13 +286,21 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true + "dev": true, + "requires": { + "util": "0.10.3" + } }, "assert-plus": { "version": "1.0.0", @@ -286,12 +337,24 @@ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000740", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + }, "dependencies": { "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true + "dev": true, + "requires": { + "caniuse-db": "1.0.30000740", + "electron-to-chromium": "1.3.23" + } } } }, @@ -312,12 +375,24 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } } } }, @@ -325,127 +400,256 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.7" + } }, "babel-eslint": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } }, "babel-generator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } }, "babel-helper-bindify-decorators": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-define-map": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-explode-assignable-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-explode-class": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-regex": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-loader": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", - "dev": true + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-istanbul": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.8.0", + "test-exclude": "4.1.1" + } }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", @@ -505,193 +709,343 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-class-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-decorators": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } }, "babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-flow-strip-types": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-object-rest-spread": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.10.5" + }, "dependencies": { "regenerator-runtime": { "version": "0.10.5", @@ -705,55 +1059,142 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.0.tgz", "integrity": "sha512-OVgtQRuOZKckrILgMA5rvctvFZPv72Gua9Rt006AiPoB0DJKGN07UmaQA+qRrYgK71MVct8fFhT0EyNWYorVew==", - "dev": true + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.4.0", + "invariant": "2.2.2", + "semver": "5.4.1" + } }, "babel-preset-flow-vue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/babel-preset-flow-vue/-/babel-preset-flow-vue-1.0.0.tgz", "integrity": "sha1-vSjrZLU9ZfnEcmKzLObGAz/nBnE=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-flow-strip-types": "6.22.0" + } }, "babel-preset-stage-2": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } }, "babel-preset-stage-3": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } }, "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.18.0", @@ -808,13 +1249,19 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true + "dev": true, + "requires": { + "callsite": "1.0.0" + } }, "big.js": { "version": "3.2.0", @@ -831,7 +1278,9 @@ "bindings": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", + "dev": true, + "optional": true }, "blob": { "version": "0.0.4", @@ -855,25 +1304,49 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true + "dev": true, + "requires": { + "hoek": "4.2.0" + } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "brorand": { "version": "1.1.0", @@ -886,6 +1359,9 @@ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", "dev": true, + "requires": { + "resolve": "1.1.7" + }, "dependencies": { "resolve": { "version": "1.1.7", @@ -905,49 +1381,96 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", - "dev": true + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true + "dev": true, + "requires": { + "browserify-aes": "1.0.8", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true + "dev": true, + "requires": { + "pako": "0.2.9" + } }, "browserslist": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.4.0.tgz", "integrity": "sha512-aM2Gt4x9bVlCUteADBS6JP0F+2tMWKM1jQzUulVROtdFWFIcIVvY76AJbr7GDqy0eDhn+PcnpzzivGxY4qiaKQ==", - "dev": true + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000740", + "electron-to-chromium": "1.3.23" + } }, "buble": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/buble/-/buble-0.15.2.tgz", "integrity": "sha1-VH/EdIP45egXbYKqXrzLGDsC1hM=", "dev": true, + "requires": { + "acorn": "3.3.0", + "acorn-jsx": "3.0.1", + "acorn-object-spread": "1.0.0", + "chalk": "1.1.3", + "magic-string": "0.14.0", + "minimist": "1.2.0", + "os-homedir": "1.0.2" + }, "dependencies": { "acorn": { "version": "3.3.0", @@ -959,7 +1482,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "minimist": { "version": "1.2.0", @@ -973,7 +1503,12 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } }, "buffer-xor": { "version": "1.0.3", @@ -1003,7 +1538,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "0.2.0" + } }, "callsite": { "version": "1.0.0", @@ -1027,19 +1565,33 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000740", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, "dependencies": { "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true + "dev": true, + "requires": { + "caniuse-db": "1.0.30000740", + "electron-to-chromium": "1.3.23" + } } } }, @@ -1065,31 +1617,54 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chai": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", - "dev": true + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } }, "chalk": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -1121,13 +1696,28 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "circular-json": { "version": "0.3.3", @@ -1140,12 +1730,22 @@ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, + "requires": { + "chalk": "1.1.3" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } } } }, @@ -1153,7 +1753,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } }, "cli-width": { "version": "2.2.0", @@ -1166,6 +1769,11 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -1191,7 +1799,10 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "code-point-at": { "version": "1.1.0", @@ -1209,13 +1820,21 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true + "dev": true, + "requires": { + "clone": "1.0.2", + "color-convert": "1.9.0", + "color-string": "0.3.0" + } }, "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.3" + } }, "color-name": { "version": "1.1.3", @@ -1227,13 +1846,21 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.3" + } }, "colormin": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } }, "colors": { "version": "1.1.2", @@ -1245,13 +1872,19 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.11.0", @@ -1269,7 +1902,11 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", - "dev": true + "dev": true, + "requires": { + "array-ify": "1.0.0", + "dot-prop": "3.0.0" + } }, "component-bind": { "version": "1.0.0", @@ -1299,25 +1936,42 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } }, "connect": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + } }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, "consolidate": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", - "dev": true + "dev": true, + "requires": { + "bluebird": "3.5.0" + } }, "constants-browserify": { "version": "1.0.0", @@ -1341,85 +1995,166 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.5.tgz", "integrity": "sha512-DUM0iXhgE11uRCoEQnFuYQA5zJcxfvKn940ZFyXziFl0y05yBCoy5ci2fcQYFWQ+OyyxgE2H02EdgYpuz9XG4w==", - "dev": true + "dev": true, + "requires": { + "conventional-changelog-angular": "1.5.0", + "conventional-changelog-atom": "0.1.1", + "conventional-changelog-codemirror": "0.2.0", + "conventional-changelog-core": "1.9.1", + "conventional-changelog-ember": "0.2.7", + "conventional-changelog-eslint": "0.2.0", + "conventional-changelog-express": "0.2.0", + "conventional-changelog-jquery": "0.1.0", + "conventional-changelog-jscs": "0.1.0", + "conventional-changelog-jshint": "0.2.0" + } }, "conventional-changelog-angular": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.5.0.tgz", "integrity": "sha512-Gt0qSf5wdFmLabgdSlqjguDAmPyYTXtUl4WH5W3SlpElHhnU/UiCY3M7xcIkZxrNQfVA1UxUBgu65eBbaJnZVA==", - "dev": true + "dev": true, + "requires": { + "compare-func": "1.3.2", + "q": "1.5.0" + } }, "conventional-changelog-atom": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.1.1.tgz", "integrity": "sha512-6Nlu/+MiD4gi7k3Z+N1vMJWpaPSdvFPWzPGnH4OXewHAxiAl0L/TT9CGgA01fosPxmYr4hMNtD7kyN0tkg8vIA==", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-codemirror": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.2.0.tgz", "integrity": "sha512-jUbY98JoKdAOR5k3pOBiKZ+Iz9t2F84hL7x4WjSRW6x7FdeCEUOjyfml+YClE2h/h62Tf3mwur5jSO8upxxc1g==", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-core": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.1.tgz", "integrity": "sha512-Fo0bSeO+NsO6GtuQXts0xQeRpLrxaABTPU8NK4Zij9sJB3zFkU4BObSefJS4F4+EkKujaKCWtfS6Uih+9NpXrQ==", - "dev": true + "dev": true, + "requires": { + "conventional-changelog-writer": "2.0.1", + "conventional-commits-parser": "2.0.0", + "dateformat": "1.0.12", + "get-pkg-repo": "1.4.0", + "git-raw-commits": "1.2.0", + "git-remote-origin-url": "2.0.0", + "git-semver-tags": "1.2.1", + "lodash": "4.17.4", + "normalize-package-data": "2.4.0", + "q": "1.5.0", + "read-pkg": "1.1.0", + "read-pkg-up": "1.0.1", + "through2": "2.0.3" + } }, "conventional-changelog-ember": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.2.7.tgz", "integrity": "sha512-Xj1v9uVcKM8N798hMr7e6yiw8IFyvI6Ik+TdjdmG54uGupqvEEWW37xAbPPbdKvgoitbyZkqUTancj055actEg==", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-eslint": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-0.2.0.tgz", "integrity": "sha512-WGKnC0bGPD6BHGiRBfYqNGfy6DZDn2jGs1yxPRT8I2796wYdGqsbDF4477o4fdsxUJvckoW2OFPqkmRMQaCHSA==", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-express": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.2.0.tgz", "integrity": "sha512-ujSEmbWfozC1iIjH5Pl7AKtREowvAl10whs1q6c7nZLnoNZK5CmdB2PQ/V42O6rCgUzaLX+ACRW2+g0A/Htqvw==", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-jquery": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-jscs": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", - "dev": true + "dev": true, + "requires": { + "q": "1.5.0" + } }, "conventional-changelog-jshint": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.2.0.tgz", "integrity": "sha512-uUP4c0et6F2teapl+YY2JHFAHD401U5CkgI+P8PyU0y1zS8BdBy6EnhqgZEXhFOp9fPzUdic+Wv/9alOqw3agQ==", - "dev": true + "dev": true, + "requires": { + "compare-func": "1.3.2", + "q": "1.5.0" + } }, "conventional-changelog-writer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-2.0.1.tgz", "integrity": "sha512-X4qC758celQOKw0iUPAsH5sJX6fH6N5dboFc3elXb1/SIKhsYMukhhaxWmxRdtVUSqGt9rZg8giwBQG5B2GeKg==", - "dev": true + "dev": true, + "requires": { + "compare-func": "1.3.2", + "conventional-commits-filter": "1.0.0", + "dateformat": "1.0.12", + "handlebars": "4.0.10", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.4", + "meow": "3.7.0", + "semver": "5.4.1", + "split": "1.0.1", + "through2": "2.0.3" + } }, "conventional-commits-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.0.0.tgz", "integrity": "sha1-b8KmWTcrw/IznPn//34bA0S5MDk=", - "dev": true + "dev": true, + "requires": { + "is-subset": "0.1.1", + "modify-values": "1.0.0" + } }, "conventional-commits-parser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.0.0.tgz", "integrity": "sha512-8od6g684Fhi5Vpp4ABRv/RBsW1AY6wSHbJHEK6FGTv+8jvAAnlABniZu/FVmX9TcirkHepaEsa1QGkRvbg0CKw==", - "dev": true + "dev": true, + "requires": { + "is-text-path": "1.0.1", + "JSONStream": "1.3.1", + "lodash": "4.17.4", + "meow": "3.7.0", + "split2": "2.2.0", + "through2": "2.0.3", + "trim-off-newlines": "1.0.1" + } }, "convert-source-map": { "version": "1.5.0", @@ -1450,6 +2185,15 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1463,43 +2207,76 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "cross-env": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.0.5.tgz", "integrity": "sha1-Q4PTZNlmCHPdGFs5ivO/717//vM=", - "dev": true + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "is-windows": "1.0.1" + } }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, + "requires": { + "boom": "5.2.0" + }, "dependencies": { "boom": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true + "dev": true, + "requires": { + "hoek": "4.2.0" + } } } }, @@ -1507,7 +2284,19 @@ "version": "3.11.1", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", - "dev": true + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } }, "css-color-names": { "version": "0.0.4", @@ -1519,19 +2308,45 @@ "version": "0.28.7", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + } }, "css-selector-tokenizer": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, "dependencies": { "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } } } }, @@ -1545,13 +2360,51 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } }, "csso": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } }, "cssom": { "version": "0.3.2", @@ -1563,13 +2416,19 @@ "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true + "dev": true, + "requires": { + "cssom": "0.3.2" + } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } }, "custom-event": { "version": "1.0.1", @@ -1581,19 +2440,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true + "dev": true, + "requires": { + "es5-ext": "0.10.30" + } }, "dargs": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "date-now": { "version": "0.1.4", @@ -1605,7 +2473,11 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } }, "de-indent": { "version": "1.0.2", @@ -1617,7 +2489,10 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -1629,7 +2504,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true + "dev": true, + "requires": { + "type-detect": "4.0.3" + } }, "deep-is": { "version": "0.1.3", @@ -1641,7 +2519,11 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } }, "defined": { "version": "1.0.0", @@ -1653,7 +2535,16 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } }, "delayed-stream": { "version": "1.0.0", @@ -1671,13 +2562,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "di": { "version": "0.0.1", @@ -1695,25 +2593,44 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } }, "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" + } }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, "dependencies": { "domelementtype": { "version": "1.1.3", @@ -1739,26 +2656,39 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } }, "domutils": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "dev": true + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true + "dev": true, + "requires": { + "is-obj": "1.0.1" + } }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "ee-first": { "version": "1.1.1", @@ -1776,7 +2706,16 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "emojis-list": { "version": "2.1.0", @@ -1794,19 +2733,33 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } }, "engine.io": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1821,6 +2774,20 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -1832,7 +2799,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -1846,13 +2816,27 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } }, "ent": { "version": "2.2.0", @@ -1870,43 +2854,78 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true + "dev": true, + "requires": { + "prr": "0.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es-abstract": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.2.tgz", "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", - "dev": true + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } }, "es-to-primitive": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } }, "es5-ext": { "version": "0.10.30", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", - "dev": true + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-promise": { "version": "4.0.5", @@ -1918,19 +2937,36 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "escape-html": { "version": "1.0.3", @@ -1949,6 +2985,13 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, "dependencies": { "esprima": { "version": "3.1.3", @@ -1962,19 +3005,69 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "eslint": { "version": "3.19.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.5.1", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.5", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.7.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "strip-bom": { "version": "3.0.0", @@ -1988,43 +3081,71 @@ "version": "2.36.0", "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.36.0.tgz", "integrity": "sha512-f127/0KsOXlsszisFoBLTHp4eWrqPPHEExfn2O+wHr4LHRMoC17H4/Yvutk0Tbs3LZvhB/4chujAbchMb9yQnQ==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "eslint-plugin-html": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz", "integrity": "sha512-sSuafathF6ImPrzF2vUKEJY6Llq06d/riMTMzlsruDRDhNsQMYp2viUKo+jx+JRr1QevskeUpQcuptp2gN1XVQ==", - "dev": true + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "semver": "5.4.1" + } }, "eslint-plugin-markdown": { "version": "1.0.0-beta.6", "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.0-beta.6.tgz", "integrity": "sha1-2eYmZu6k52OH6F9QLfZoq9+9Q5U=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "remark-parse": "3.0.1", + "unified": "6.1.5" + } }, "eslint-plugin-react": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", - "dev": true + "dev": true, + "requires": { + "doctrine": "2.0.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + } }, "eslint-plugin-vue": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-2.1.0.tgz", "integrity": "sha1-UO0LfpojidkOaJdDo8wmtQJEG2k=", - "dev": true + "dev": true, + "requires": { + "eslint-plugin-html": "3.2.2", + "eslint-plugin-react": "7.4.0" + } }, "eslint-plugin-vue-libs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-1.2.0.tgz", "integrity": "sha512-E68eNTMw0BBvsFaVwldd51AgX9UKEGf9BdMPCJAVhNGwnVFZPkWjKnFAwKpzeTyAcm0MUxUQG5TrcS4+23TFEA==", "dev": true, + "requires": { + "eslint-plugin-html": "2.0.3" + }, "dependencies": { "eslint-plugin-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-2.0.3.tgz", "integrity": "sha1-fImIOrDIX6XSi2ZqFKTpBqqQuJc=", - "dev": true + "dev": true, + "requires": { + "htmlparser2": "3.9.2" + } } } }, @@ -2032,7 +3153,11 @@ "version": "3.5.1", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", - "dev": true + "dev": true, + "requires": { + "acorn": "5.1.2", + "acorn-jsx": "3.0.1" + } }, "esprima": { "version": "2.7.3", @@ -2044,13 +3169,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "dev": true, + "requires": { + "estraverse": "4.2.0" + } }, "esrecurse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "dev": true + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } }, "estraverse": { "version": "4.2.0", @@ -2074,7 +3206,11 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } }, "eventemitter3": { "version": "1.2.0", @@ -2092,13 +3228,26 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "exit-hook": { "version": "1.1.1", @@ -2111,18 +3260,30 @@ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, "dependencies": { "braces": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true + "dev": true, + "requires": { + "expand-range": "0.1.1" + } }, "expand-range": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } }, "is-number": { "version": "0.1.1", @@ -2142,13 +3303,19 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "extend": { "version": "3.0.1", @@ -2160,25 +3327,40 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "extract-zip": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.5.tgz", "integrity": "sha1-maBnNbbqIOqbcF13ms/8yHz/BEA=", "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.2.0", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "mkdirp": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "0.7.1", @@ -2217,6 +3399,15 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.14" + }, "dependencies": { "core-js": { "version": "1.2.7", @@ -2230,19 +3421,30 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true + "dev": true, + "requires": { + "pend": "1.2.0" + } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } }, "filename-regex": { "version": "2.0.1", @@ -2254,31 +3456,61 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "finalhandler": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", - "dev": true + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } }, "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.0.0", + "pkg-dir": "2.0.0" + } }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true + "dev": true, + "requires": { + "locate-path": "2.0.0" + } }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } }, "flatten": { "version": "1.0.2", @@ -2297,12 +3529,19 @@ "resolved": "https://registry.npmjs.org/flow-remove-types-no-whitespace/-/flow-remove-types-no-whitespace-1.0.5.tgz", "integrity": "sha1-PSl5haC+1Rl7j7DL6J7BY/jeqes=", "dev": true, + "requires": { + "babylon": "6.18.0", + "magic-string": "0.16.0" + }, "dependencies": { "magic-string": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", "integrity": "sha1-lw67DacZMwEoX7GqZQ85vdgetFo=", - "dev": true + "dev": true, + "requires": { + "vlq": "0.2.2" + } } } }, @@ -2316,7 +3555,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreach": { "version": "2.0.5", @@ -2334,25 +3576,41 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "dev": true + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } }, "formatio": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true + "dev": true, + "requires": { + "samsam": "1.2.1" + } }, "fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true + "dev": true, + "requires": { + "null-check": "1.0.0" + } }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } }, "fs.realpath": { "version": "1.0.0", @@ -2366,6 +3624,10 @@ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "dev": true, "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -2377,7 +3639,11 @@ "version": "4.11.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -2394,7 +3660,11 @@ "version": "1.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } }, "asn1": { "version": "0.2.3", @@ -2435,22 +3705,35 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -2477,7 +3760,10 @@ "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -2498,13 +3784,19 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2518,7 +3810,10 @@ "version": "2.6.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ms": "2.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -2541,7 +3836,10 @@ "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "extend": { "version": "3.0.1", @@ -2564,7 +3862,12 @@ "version": "2.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs.realpath": { "version": "1.0.0", @@ -2574,25 +3877,49 @@ "fstream": { "version": "1.0.11", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, "getpass": { "version": "0.1.7", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2605,7 +3932,15 @@ "glob": { "version": "7.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -2622,7 +3957,11 @@ "version": "4.2.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "has-unicode": { "version": "2.0.1", @@ -2634,7 +3973,13 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -2645,12 +3990,21 @@ "version": "1.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } }, "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2666,7 +4020,10 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -2689,7 +4046,10 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -2707,7 +4067,10 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -2726,6 +4089,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2743,12 +4112,18 @@ "mime-types": { "version": "2.1.15", "bundled": true, - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "minimatch": { "version": "3.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -2758,7 +4133,10 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -2770,19 +4148,40 @@ "version": "0.6.36", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "npmlog": { "version": "4.1.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -2804,7 +4203,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "os-homedir": { "version": "1.0.2", @@ -2822,7 +4224,11 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2857,6 +4263,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -2869,18 +4281,54 @@ "readable-stream": { "version": "2.2.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.81.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } }, "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.0.1", @@ -2909,13 +4357,27 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.13.0", "bundled": true, "dev": true, "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2928,12 +4390,20 @@ "string_decoder": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "string-width": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -2944,7 +4414,10 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -2955,25 +4428,46 @@ "tar": { "version": "2.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.4.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } }, "tough-cookie": { "version": "2.3.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "punycode": "1.4.1" + } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -3002,13 +4496,19 @@ "version": "1.3.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -3033,7 +4533,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true + "dev": true, + "requires": { + "is-property": "1.0.2" + } }, "get-caller-file": { "version": "1.0.2", @@ -3051,7 +4554,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "meow": "3.7.0", + "normalize-package-data": "2.4.0", + "parse-github-repo-url": "1.4.1", + "through2": "2.0.3" + } }, "get-stdin": { "version": "4.0.1", @@ -3069,31 +4579,62 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "git-raw-commits": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.2.0.tgz", "integrity": "sha1-DzqL/ZmuDy2LkiTViJKXXppS0Dw=", - "dev": true + "dev": true, + "requires": { + "dargs": "4.1.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "split2": "2.2.0", + "through2": "2.0.3" + } }, "git-remote-origin-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true + "dev": true, + "requires": { + "gitconfiglocal": "1.0.0", + "pify": "2.3.0" + } }, "git-semver-tags": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.2.1.tgz", "integrity": "sha512-fFyxtzTHCTQKwB4clA2AInVrlflBbVbbJD4NWwmxKXHUgsU/K9kmHNlkPLqFiuy9xu9q3lNopghR4VXeQwZbTQ==", - "dev": true + "dev": true, + "requires": { + "meow": "3.7.0", + "semver": "5.4.1" + } }, "gitbook-cli": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/gitbook-cli/-/gitbook-cli-2.3.2.tgz", "integrity": "sha512-eyGtkY7jKHhmgpfuvgAP5fZcUob/FBz4Ld0aLRdEmiTrS1RklimN9epzPp75dd4MWpGhYvSbiwxnpyLiv1wh6A==", "dev": true, + "requires": { + "bash-color": "0.0.4", + "commander": "2.11.0", + "fs-extra": "3.0.1", + "lodash": "4.17.4", + "npm": "5.1.0", + "npmi": "1.0.1", + "optimist": "0.6.1", + "q": "1.5.0", + "semver": "5.3.0", + "tmp": "0.0.31", + "user-home": "2.0.0" + }, "dependencies": { "semver": { "version": "5.3.0", @@ -3103,29 +4644,65 @@ } } }, + "gitbook-plugin-edit-link": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gitbook-plugin-edit-link/-/gitbook-plugin-edit-link-2.0.2.tgz", + "integrity": "sha1-2PzZJ+ztgeemYqctWdtgnq/X5y8=", + "dev": true + }, + "gitbook-plugin-github": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gitbook-plugin-github/-/gitbook-plugin-github-3.0.0.tgz", + "integrity": "sha1-Z0V9+YpX6o75slGLiDQNs3ClMXs=", + "dev": true + }, + "gitbook-plugin-theme-vuejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gitbook-plugin-theme-vuejs/-/gitbook-plugin-theme-vuejs-1.1.0.tgz", + "integrity": "sha512-PxFkLJdhowOP0hQhafSZ05sMegCpr1GSNnMe9RilXNB2Vz2XG2WtHITNGmemM4WpULLhWCT1WTqyLodwBwqFEA==", + "dev": true + }, "gitconfiglocal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true + "dev": true, + "requires": { + "ini": "1.3.4" + } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -3137,7 +4714,15 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -3162,12 +4747,21 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -3182,12 +4776,22 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, + "requires": { + "ajv": "5.2.3", + "har-schema": "2.0.0" + }, "dependencies": { "ajv": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } } } }, @@ -3195,19 +4799,28 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true + "dev": true, + "requires": { + "function-bind": "1.1.1" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-binary": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -3233,7 +4846,10 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "hash-sum": { "version": "1.0.2", @@ -3245,19 +4861,33 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } }, "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.0.2" + } }, "he": { "version": "1.1.1", @@ -3269,7 +4899,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoek": { "version": "4.2.0", @@ -3281,7 +4916,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "hosted-git-info": { "version": "2.5.0", @@ -3299,31 +4938,57 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", - "dev": true + "dev": true, + "requires": { + "whatwg-encoding": "1.0.1" + } }, "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } }, "https-browserify": { "version": "0.0.1", @@ -3348,18 +5013,29 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, + "requires": { + "postcss": "6.0.12" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -3385,7 +5061,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "indexes-of": { "version": "1.0.1", @@ -3403,7 +5082,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -3422,12 +5105,34 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } } } }, @@ -3441,7 +5146,10 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -3465,7 +5173,11 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", - "dev": true + "dev": true, + "requires": { + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1" + } }, "is-arrayish": { "version": "0.2.1", @@ -3477,7 +5189,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } }, "is-buffer": { "version": "1.1.5", @@ -3489,7 +5204,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-callable": { "version": "1.1.3", @@ -3525,7 +5243,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -3543,19 +5264,28 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-hexadecimal": { "version": "1.0.1", @@ -3573,13 +5303,22 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-obj": { "version": "1.0.1", @@ -3597,13 +5336,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-plain-obj": { "version": "1.1.0", @@ -3633,13 +5378,19 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1" + } }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "1.0.3" + } }, "is-stream": { "version": "1.1.0", @@ -3657,7 +5408,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } }, "is-symbol": { "version": "1.0.1", @@ -3669,7 +5423,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true + "dev": true, + "requires": { + "text-extensions": "1.6.0" + } }, "is-typedarray": { "version": "1.0.0", @@ -3723,13 +5480,20 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true + "dev": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } }, "isstream": { "version": "0.1.2", @@ -3742,12 +5506,35 @@ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.10", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.3.0", + "wordwrap": "1.0.0" + }, "dependencies": { "escodegen": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true + "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + } }, "estraverse": { "version": "1.9.3", @@ -3759,7 +5546,14 @@ "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "has-flag": { "version": "1.0.0", @@ -3778,13 +5572,19 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } }, "wordwrap": { "version": "1.0.0", @@ -3804,7 +5604,16 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz", "integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=", - "dev": true + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } }, "js-base64": { "version": "2.3.2", @@ -3822,7 +5631,11 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } }, "jsbn": { "version": "0.1.1", @@ -3836,6 +5649,29 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.2.0.tgz", "integrity": "sha512-+5wd6vJuh/Evw3wkmCuKXKibDd5RS7PYZjKaP4s2Hj5W7tvmbuFuaDN4erbH07VznTBFcK+lcsrGVnP6EugXow==", "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.1", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.1", + "nwmatcher": "1.4.2", + "parse5": "3.0.2", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.1", + "whatwg-url": "6.3.0", + "xml-name-validator": "2.0.1" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -3879,7 +5715,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true + "dev": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -3903,7 +5742,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "jsonify": { "version": "0.0.0", @@ -3927,25 +5769,67 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, "jsx-ast-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true + "dev": true, + "requires": { + "array-includes": "3.0.3" + } }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, + "requires": { + "bluebird": "3.5.0", + "body-parser": "1.18.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.5", + "core-js": "2.5.1", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.4.1", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.1.5", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "socket.io": "1.7.3", + "source-map": "0.5.7", + "tmp": "0.0.31", + "useragent": "2.2.1" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -3959,13 +5843,24 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", - "dev": true + "dev": true, + "requires": { + "fs-access": "1.0.1", + "which": "1.3.0" + } }, "karma-coverage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", "dev": true, + "requires": { + "dateformat": "1.0.12", + "istanbul": "0.4.5", + "lodash": "3.10.1", + "minimatch": "3.0.4", + "source-map": "0.5.7" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -3980,6 +5875,9 @@ "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", "dev": true, + "requires": { + "minimist": "1.2.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -3993,7 +5891,11 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4", + "phantomjs-prebuilt": "2.1.15" + } }, "karma-phantomjs-shim": { "version": "1.5.0", @@ -4005,25 +5907,41 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-1.3.2.tgz", "integrity": "sha512-JbV4xobGA4srGuR30YQszmgzv4YpKHpkQWSEBCBBj7OrCMSW4/9GIwtGLHMk/3sT94/b5zveVMR2CV5V2Y3dOg==", - "dev": true + "dev": true, + "requires": { + "lolex": "1.6.0" + } }, "karma-sourcemap-loader": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "karma-spec-reporter": { "version": "0.0.31", "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz", "integrity": "sha1-SDDccUihVcfXoYbmMjOaDYD63sM=", - "dev": true + "dev": true, + "requires": { + "colors": "1.1.2" + } }, "karma-webpack": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.4.tgz", "integrity": "sha1-Pi1PSLqUqHjhxmu44a5hKJh6F1s=", "dev": true, + "requires": { + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.1.43", + "webpack-dev-middleware": "1.12.0" + }, "dependencies": { "async": { "version": "0.9.2", @@ -4035,7 +5953,13 @@ "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } }, "lodash": { "version": "3.10.1", @@ -4047,7 +5971,10 @@ "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -4061,13 +5988,19 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "lazy-cache": { "version": "1.0.4", @@ -4079,19 +6012,33 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } }, "loader-runner": { "version": "2.3.0", @@ -4103,13 +6050,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } }, "lodash": { "version": "4.17.4", @@ -4120,7 +6076,11 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } }, "lodash._basecopy": { "version": "3.0.1", @@ -4168,7 +6128,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -4186,7 +6151,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lodash.memoize": { "version": "4.1.2", @@ -4204,13 +6174,20 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } }, "lodash.templatesettings": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0" + } }, "lodash.uniq": { "version": "4.5.0", @@ -4223,6 +6200,10 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -4234,7 +6215,13 @@ "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } }, "semver": { "version": "4.3.6", @@ -4266,19 +6253,30 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "macaddress": { "version": "0.2.8", @@ -4290,13 +6288,19 @@ "version": "0.14.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.14.0.tgz", "integrity": "sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI=", - "dev": true + "dev": true, + "requires": { + "vlq": "0.2.2" + } }, "make-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "dev": true + "dev": true, + "requires": { + "pify": "2.3.0" + } }, "map-obj": { "version": "1.0.1", @@ -4321,12 +6325,20 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, "dependencies": { "hash-base": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } } } }, @@ -4340,19 +6352,38 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -4366,13 +6397,32 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } }, "mime": { "version": "1.4.1", @@ -4390,7 +6440,10 @@ "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.30.0" + } }, "mimic-fn": { "version": "1.1.0", @@ -4414,7 +6467,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -4426,31 +6482,62 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "mocha": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, "dependencies": { "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "has-flag": { "version": "1.0.0", @@ -4462,7 +6549,10 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -4471,24 +6561,61 @@ "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-1.0.0-rc.1.tgz", "integrity": "sha512-9e0whjKF+NpmT1qM5nQ+iUkS314Sw8UJcxFUr3iMP2epTG/JJj/kscQWGgf8V1BK9kvxuePw3jU6db+M5r82Uw==", "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chalk": "1.1.3", + "chokidar": "1.7.0", + "glob-parent": "2.0.0", + "globby": "6.1.0", + "interpret": "1.0.4", + "is-glob": "2.0.1", + "loader-utils": "1.1.0", + "lodash": "4.17.4", + "memory-fs": "0.4.1", + "nodent-runtime": "3.0.4", + "normalize-path": "2.1.1", + "progress": "1.1.8", + "source-map-support": "0.4.18", + "toposort": "1.0.4", + "yargs": "4.8.1" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "window-size": { "version": "0.2.0", @@ -4500,7 +6627,23 @@ "version": "4.8.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "lodash.assign": "4.2.0", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" + } } } }, @@ -4551,13 +6694,42 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, "dependencies": { "string_decoder": { "version": "0.10.31", @@ -4577,19 +6749,31 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.0.9" + } }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } }, "normalize-range": { "version": "0.1.2", @@ -4601,13 +6785,117 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } }, "npm": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm/-/npm-5.1.0.tgz", "integrity": "sha512-pt5ClxEmY/dLpb60SmGQQBKi3nB6Ljx1FXmpoCUdAULlGqGVn2uCyXxPCWFbcuHGthT7qGiaGa1wOfs/UjGYMw==", "dev": true, + "requires": { + "abbrev": "1.1.0", + "ansi-regex": "3.0.0", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "1.1.2", + "archy": "1.0.0", + "bluebird": "3.5.0", + "cacache": "9.2.9", + "call-limit": "1.1.0", + "chownr": "1.0.1", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.11", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "fstream": "1.0.11", + "fstream-npm": "1.2.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "has-unicode": "2.0.1", + "hosted-git-info": "2.5.0", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "inflight": "1.0.6", + "inherits": "2.0.3", + "ini": "1.3.4", + "init-package-json": "1.10.1", + "JSONStream": "1.3.1", + "lazy-property": "1.0.0", + "lockfile": "1.0.3", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "node-gyp": "3.6.2", + "nopt": "4.0.1", + "normalize-package-data": "2.4.0", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-package-arg": "5.1.2", + "npm-registry-client": "8.4.0", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.4.3", + "osenv": "0.1.4", + "pacote": "2.7.38", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.9", + "read-package-tree": "5.1.6", + "readable-stream": "2.3.2", + "readdir-scoped-modules": "1.0.2", + "request": "2.81.0", + "retry": "0.10.1", + "rimraf": "2.6.1", + "safe-buffer": "5.1.1", + "semver": "5.3.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "4.1.6", + "strip-ansi": "4.0.0", + "tar": "2.2.1", + "text-table": "0.2.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.0", + "unpipe": "1.0.0", + "update-notifier": "2.2.0", + "uuid": "3.1.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "3.0.0", + "which": "1.2.14", + "worker-farm": "1.3.1", + "wrappy": "1.0.2", + "write-file-atomic": "2.1.0" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -4648,11 +6936,30 @@ "version": "9.2.9", "bundled": true, "dev": true, + "requires": { + "bluebird": "3.5.0", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.1", + "ssri": "4.1.6", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + }, "dependencies": { "lru-cache": { "version": "4.1.1", "bundled": true, "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + }, "dependencies": { "pseudomap": { "version": "1.0.2", @@ -4686,17 +6993,28 @@ "cmd-shim": { "version": "2.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1" + } }, "columnify": { "version": "1.5.4", "bundled": true, "dev": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + }, "dependencies": { "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "2.1.1", @@ -4709,11 +7027,17 @@ "version": "1.0.1", "bundled": true, "dev": true, + "requires": { + "defaults": "1.0.3" + }, "dependencies": { "defaults": { "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "clone": "1.0.2" + }, "dependencies": { "clone": { "version": "1.0.2", @@ -4730,6 +7054,10 @@ "version": "1.1.11", "bundled": true, "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + }, "dependencies": { "proto-list": { "version": "1.2.4", @@ -4752,6 +7080,10 @@ "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "asap": "2.0.5", + "wrappy": "1.0.2" + }, "dependencies": { "asap": { "version": "2.0.5", @@ -4768,37 +7100,70 @@ "fs-vacuum": { "version": "1.2.10", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "path-is-inside": "1.0.2", + "rimraf": "2.6.1" + } }, "fs-write-stream-atomic": { "version": "1.0.10", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.2" + } }, "fstream": { "version": "1.0.11", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-npm": { "version": "1.2.1", "bundled": true, "dev": true, + "requires": { + "fstream-ignore": "1.0.5", + "inherits": "2.0.3" + }, "dependencies": { "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + }, "dependencies": { "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, + "requires": { + "brace-expansion": "1.1.8" + }, "dependencies": { "brace-expansion": { "version": "1.1.8", "bundled": true, "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "1.0.0", @@ -4822,6 +7187,14 @@ "version": "7.1.2", "bundled": true, "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, "dependencies": { "fs.realpath": { "version": "1.0.0", @@ -4832,11 +7205,18 @@ "version": "3.0.4", "bundled": true, "dev": true, + "requires": { + "brace-expansion": "1.1.8" + }, "dependencies": { "brace-expansion": { "version": "1.1.8", "bundled": true, "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "1.0.0", @@ -4887,7 +7267,11 @@ "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -4903,11 +7287,24 @@ "version": "1.10.1", "bundled": true, "dev": true, + "requires": { + "glob": "7.1.2", + "npm-package-arg": "5.1.2", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.9", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "3.0.0" + }, "dependencies": { "promzard": { "version": "0.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "read": "1.0.7" + } } } }, @@ -4915,6 +7312,10 @@ "version": "1.3.1", "bundled": true, "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + }, "dependencies": { "jsonparse": { "version": "1.3.1", @@ -4947,6 +7348,10 @@ "version": "4.6.0", "bundled": true, "dev": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + }, "dependencies": { "lodash._createset": { "version": "4.0.3", @@ -4973,7 +7378,10 @@ "lodash._createcache": { "version": "3.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1" + } }, "lodash._getnative": { "version": "3.9.1", @@ -5009,6 +7417,10 @@ "version": "4.1.1", "bundled": true, "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + }, "dependencies": { "pseudomap": { "version": "1.0.2", @@ -5026,11 +7438,28 @@ "version": "1.3.0", "bundled": true, "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.0", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.2", + "pumpify": "1.3.5", + "stream-each": "1.2.0", + "through2": "2.0.3" + }, "dependencies": { "concat-stream": { "version": "1.6.0", "bundled": true, "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2", + "typedarray": "0.0.6" + }, "dependencies": { "typedarray": { "version": "0.0.6", @@ -5043,16 +7472,28 @@ "version": "3.5.0", "bundled": true, "dev": true, + "requires": { + "end-of-stream": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.2", + "stream-shift": "1.0.0" + }, "dependencies": { "end-of-stream": { "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "once": "1.3.3" + }, "dependencies": { "once": { "version": "1.3.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } } } }, @@ -5066,22 +7507,38 @@ "end-of-stream": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } }, "flush-write-stream": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2" + } }, "from2": { "version": "2.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2" + } }, "parallel-transform": { "version": "1.1.0", "bundled": true, "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.2" + }, "dependencies": { "cyclist": { "version": "0.2.2", @@ -5093,17 +7550,30 @@ "pump": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } }, "pumpify": { "version": "1.3.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "duplexify": "3.5.0", + "inherits": "2.0.3", + "pump": "1.0.2" + } }, "stream-each": { "version": "1.2.0", "bundled": true, "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + }, "dependencies": { "stream-shift": { "version": "1.0.0", @@ -5116,6 +7586,10 @@ "version": "2.0.3", "bundled": true, "dev": true, + "requires": { + "readable-stream": "2.3.2", + "xtend": "4.0.1" + }, "dependencies": { "xtend": { "version": "4.0.1", @@ -5130,6 +7604,9 @@ "version": "0.5.1", "bundled": true, "dev": true, + "requires": { + "minimist": "0.0.8" + }, "dependencies": { "minimist": { "version": "0.0.8", @@ -5142,16 +7619,35 @@ "version": "1.0.1", "bundled": true, "dev": true, + "requires": { + "aproba": "1.1.2", + "copy-concurrently": "1.0.3", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + }, "dependencies": { "copy-concurrently": { "version": "1.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "aproba": "1.1.2", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + } }, "run-queue": { "version": "1.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "aproba": "1.1.2" + } } } }, @@ -5159,16 +7655,38 @@ "version": "3.6.2", "bundled": true, "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.14" + }, "dependencies": { "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, + "requires": { + "brace-expansion": "1.1.8" + }, "dependencies": { "brace-expansion": { "version": "1.1.8", "bundled": true, "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "1.0.0", @@ -5187,24 +7705,40 @@ "nopt": { "version": "3.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "abbrev": "1.1.0" + } } } }, "nopt": { "version": "4.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "normalize-package-data": { "version": "2.4.0", "bundled": true, "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + }, "dependencies": { "is-builtin-module": { "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "builtin-modules": "1.1.1" + }, "dependencies": { "builtin-modules": { "version": "1.1.1", @@ -5223,22 +7757,49 @@ "npm-install-checks": { "version": "3.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "semver": "5.3.0" + } }, "npm-package-arg": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "osenv": "0.1.4", + "semver": "5.3.0", + "validate-npm-package-name": "3.0.0" + } }, "npm-registry-client": { "version": "8.4.0", "bundled": true, "dev": true, + "requires": { + "concat-stream": "1.6.0", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "5.1.2", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.81.0", + "retry": "0.10.1", + "semver": "5.3.0", + "slide": "1.1.6", + "ssri": "4.1.6" + }, "dependencies": { "concat-stream": { "version": "1.6.0", "bundled": true, "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.2", + "typedarray": "0.0.6" + }, "dependencies": { "typedarray": { "version": "0.0.6", @@ -5258,11 +7819,21 @@ "version": "4.1.2", "bundled": true, "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + }, "dependencies": { "are-we-there-yet": { "version": "1.1.4", "bundled": true, "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.2" + }, "dependencies": { "delegates": { "version": "1.0.0", @@ -5280,6 +7851,16 @@ "version": "2.7.4", "bundled": true, "dev": true, + "requires": { + "aproba": "1.1.2", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, "dependencies": { "object-assign": { "version": "4.1.1", @@ -5295,6 +7876,11 @@ "version": "1.0.2", "bundled": true, "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, "dependencies": { "code-point-at": { "version": "1.1.0", @@ -5305,6 +7891,9 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "number-is-nan": "1.0.1" + }, "dependencies": { "number-is-nan": { "version": "1.0.1", @@ -5319,6 +7908,9 @@ "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "2.1.1", @@ -5330,7 +7922,10 @@ "wide-align": { "version": "1.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2" + } } } }, @@ -5344,7 +7939,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "opener": { "version": "1.4.3", @@ -5355,6 +7953,10 @@ "version": "0.1.4", "bundled": true, "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, "dependencies": { "os-homedir": { "version": "1.0.2", @@ -5372,21 +7974,63 @@ "version": "2.7.38", "bundled": true, "dev": true, + "requires": { + "bluebird": "3.5.0", + "cacache": "9.2.9", + "glob": "7.1.2", + "lru-cache": "4.1.1", + "make-fetch-happen": "2.4.13", + "minimatch": "3.0.4", + "mississippi": "1.3.0", + "normalize-package-data": "2.4.0", + "npm-package-arg": "5.1.2", + "npm-pick-manifest": "1.0.4", + "osenv": "0.1.4", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "4.0.0", + "safe-buffer": "5.1.1", + "semver": "5.3.0", + "ssri": "4.1.6", + "tar-fs": "1.15.3", + "tar-stream": "1.5.4", + "unique-filename": "1.1.0", + "which": "1.2.14" + }, "dependencies": { "make-fetch-happen": { "version": "2.4.13", "bundled": true, "dev": true, + "requires": { + "agentkeepalive": "3.3.0", + "cacache": "9.2.9", + "http-cache-semantics": "3.7.3", + "http-proxy-agent": "2.0.0", + "https-proxy-agent": "2.0.0", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "node-fetch-npm": "2.0.1", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.0", + "ssri": "4.1.6" + }, "dependencies": { "agentkeepalive": { "version": "3.3.0", "bundled": true, "dev": true, + "requires": { + "humanize-ms": "1.2.1" + }, "dependencies": { "humanize-ms": { "version": "1.2.1", "bundled": true, "dev": true, + "requires": { + "ms": "2.0.0" + }, "dependencies": { "ms": { "version": "2.0.0", @@ -5406,16 +8050,26 @@ "version": "2.0.0", "bundled": true, "dev": true, + "requires": { + "agent-base": "4.1.0", + "debug": "2.6.8" + }, "dependencies": { "agent-base": { "version": "4.1.0", "bundled": true, "dev": true, + "requires": { + "es6-promisify": "5.0.0" + }, "dependencies": { "es6-promisify": { "version": "5.0.0", "bundled": true, "dev": true, + "requires": { + "es6-promise": "4.1.1" + }, "dependencies": { "es6-promise": { "version": "4.1.1", @@ -5430,6 +8084,9 @@ "version": "2.6.8", "bundled": true, "dev": true, + "requires": { + "ms": "2.0.0" + }, "dependencies": { "ms": { "version": "2.0.0", @@ -5444,16 +8101,26 @@ "version": "2.0.0", "bundled": true, "dev": true, + "requires": { + "agent-base": "4.1.0", + "debug": "2.6.8" + }, "dependencies": { "agent-base": { "version": "4.1.0", "bundled": true, "dev": true, + "requires": { + "es6-promisify": "5.0.0" + }, "dependencies": { "es6-promisify": { "version": "5.0.0", "bundled": true, "dev": true, + "requires": { + "es6-promise": "4.1.1" + }, "dependencies": { "es6-promise": { "version": "4.1.1", @@ -5468,6 +8135,9 @@ "version": "2.6.8", "bundled": true, "dev": true, + "requires": { + "ms": "2.0.0" + }, "dependencies": { "ms": { "version": "2.0.0", @@ -5482,11 +8152,19 @@ "version": "2.0.1", "bundled": true, "dev": true, + "requires": { + "encoding": "0.1.12", + "json-parse-helpfulerror": "1.0.3", + "safe-buffer": "5.1.1" + }, "dependencies": { "encoding": { "version": "0.1.12", "bundled": true, "dev": true, + "requires": { + "iconv-lite": "0.4.18" + }, "dependencies": { "iconv-lite": { "version": "0.4.18", @@ -5499,6 +8177,9 @@ "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "jju": "1.3.0" + }, "dependencies": { "jju": { "version": "1.3.0", @@ -5513,16 +8194,26 @@ "version": "3.0.0", "bundled": true, "dev": true, + "requires": { + "agent-base": "4.1.0", + "socks": "1.1.10" + }, "dependencies": { "agent-base": { "version": "4.1.0", "bundled": true, "dev": true, + "requires": { + "es6-promisify": "5.0.0" + }, "dependencies": { "es6-promisify": { "version": "5.0.0", "bundled": true, "dev": true, + "requires": { + "es6-promise": "4.1.1" + }, "dependencies": { "es6-promise": { "version": "4.1.1", @@ -5537,6 +8228,10 @@ "version": "1.1.10", "bundled": true, "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, "dependencies": { "ip": { "version": "1.1.5", @@ -5558,11 +8253,18 @@ "version": "3.0.4", "bundled": true, "dev": true, + "requires": { + "brace-expansion": "1.1.8" + }, "dependencies": { "brace-expansion": { "version": "1.1.8", "bundled": true, "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "1.0.0", @@ -5581,12 +8283,20 @@ "npm-pick-manifest": { "version": "1.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "npm-package-arg": "5.1.2", + "semver": "5.3.0" + } }, "promise-retry": { "version": "1.1.1", "bundled": true, "dev": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, "dependencies": { "err-code": { "version": "1.1.2", @@ -5599,6 +8309,9 @@ "version": "4.0.0", "bundled": true, "dev": true, + "requires": { + "genfun": "4.0.1" + }, "dependencies": { "genfun": { "version": "4.0.1", @@ -5611,16 +8324,29 @@ "version": "1.15.3", "bundled": true, "dev": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.2", + "tar-stream": "1.5.4" + }, "dependencies": { "pump": { "version": "1.0.2", "bundled": true, "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + }, "dependencies": { "end-of-stream": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } } } } @@ -5630,16 +8356,28 @@ "version": "1.5.4", "bundled": true, "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.2", + "xtend": "4.0.1" + }, "dependencies": { "bl": { "version": "1.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "readable-stream": "2.3.2" + } }, "end-of-stream": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } }, "xtend": { "version": "4.0.1", @@ -5664,6 +8402,9 @@ "version": "1.0.7", "bundled": true, "dev": true, + "requires": { + "mute-stream": "0.0.7" + }, "dependencies": { "mute-stream": { "version": "0.0.7", @@ -5675,12 +8416,24 @@ "read-cmd-shim": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "read-installed": { "version": "4.0.3", "bundled": true, "dev": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.1.11", + "read-package-json": "2.0.9", + "readdir-scoped-modules": "1.0.2", + "semver": "5.3.0", + "slide": "1.1.6", + "util-extend": "1.0.3" + }, "dependencies": { "util-extend": { "version": "1.0.3", @@ -5693,11 +8446,20 @@ "version": "2.0.9", "bundled": true, "dev": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "json-parse-helpfulerror": "1.0.3", + "normalize-package-data": "2.4.0" + }, "dependencies": { "json-parse-helpfulerror": { "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "jju": "1.3.0" + }, "dependencies": { "jju": { "version": "1.3.0", @@ -5711,12 +8473,28 @@ "read-package-tree": { "version": "5.1.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "once": "1.4.0", + "read-package-json": "2.0.9", + "readdir-scoped-modules": "1.0.2" + } }, "readable-stream": { "version": "2.3.2", "bundled": true, "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, "dependencies": { "core-util-is": { "version": "1.0.2", @@ -5736,7 +8514,10 @@ "string_decoder": { "version": "1.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "util-deprecate": { "version": "1.0.2", @@ -5748,12 +8529,42 @@ "readdir-scoped-modules": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.1.11", + "once": "1.4.0" + } }, "request": { "version": "2.81.0", "bundled": true, "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + }, "dependencies": { "aws-sign2": { "version": "0.6.0", @@ -5774,6 +8585,9 @@ "version": "1.0.5", "bundled": true, "dev": true, + "requires": { + "delayed-stream": "1.0.0" + }, "dependencies": { "delayed-stream": { "version": "1.0.0", @@ -5796,6 +8610,11 @@ "version": "2.1.4", "bundled": true, "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + }, "dependencies": { "asynckit": { "version": "0.4.0", @@ -5808,11 +8627,19 @@ "version": "4.2.1", "bundled": true, "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, "dependencies": { "ajv": { "version": "4.11.8", "bundled": true, "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + }, "dependencies": { "co": { "version": "4.6.0", @@ -5823,6 +8650,9 @@ "version": "1.0.1", "bundled": true, "dev": true, + "requires": { + "jsonify": "0.0.0" + }, "dependencies": { "jsonify": { "version": "0.0.0", @@ -5844,16 +8674,28 @@ "version": "3.1.3", "bundled": true, "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + }, "dependencies": { "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "cryptiles": { "version": "2.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "hoek": { "version": "2.16.3", @@ -5863,7 +8705,10 @@ "sntp": { "version": "1.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } } } }, @@ -5871,6 +8716,11 @@ "version": "1.1.1", "bundled": true, "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + }, "dependencies": { "assert-plus": { "version": "0.2.0", @@ -5881,6 +8731,12 @@ "version": "1.4.0", "bundled": true, "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -5900,7 +8756,10 @@ "verror": { "version": "1.3.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } } } }, @@ -5908,6 +8767,16 @@ "version": "1.13.1", "bundled": true, "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "asn1": { "version": "0.2.3", @@ -5923,23 +8792,35 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "dashdash": { "version": "1.14.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "getpass": { "version": "0.1.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "jsbn": { "version": "0.1.1", @@ -5976,6 +8857,9 @@ "version": "2.1.15", "bundled": true, "dev": true, + "requires": { + "mime-db": "1.27.0" + }, "dependencies": { "mime-db": { "version": "1.27.0", @@ -6008,6 +8892,9 @@ "version": "2.3.2", "bundled": true, "dev": true, + "requires": { + "punycode": "1.4.1" + }, "dependencies": { "punycode": { "version": "1.4.1", @@ -6019,7 +8906,10 @@ "tunnel-agent": { "version": "0.6.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } } } }, @@ -6031,7 +8921,10 @@ "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.1.1", @@ -6046,7 +8939,11 @@ "sha": { "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "readable-stream": "2.3.2" + } }, "slide": { "version": "1.1.6", @@ -6062,16 +8959,30 @@ "version": "2.1.3", "bundled": true, "dev": true, + "requires": { + "from2": "1.3.0", + "stream-iterate": "1.2.0" + }, "dependencies": { "from2": { "version": "1.3.0", "bundled": true, "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + }, "dependencies": { "readable-stream": { "version": "1.1.14", "bundled": true, "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + }, "dependencies": { "core-util-is": { "version": "1.0.2", @@ -6096,6 +9007,10 @@ "version": "1.2.0", "bundled": true, "dev": true, + "requires": { + "readable-stream": "2.3.2", + "stream-shift": "1.0.0" + }, "dependencies": { "stream-shift": { "version": "1.0.0", @@ -6109,12 +9024,18 @@ "ssri": { "version": "4.1.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "strip-ansi": { "version": "4.0.0", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "3.0.0" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -6127,11 +9048,19 @@ "version": "2.2.1", "bundled": true, "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + }, "dependencies": { "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, @@ -6154,11 +9083,17 @@ "version": "1.1.0", "bundled": true, "dev": true, + "requires": { + "unique-slug": "2.0.0" + }, "dependencies": { "unique-slug": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } } } }, @@ -6171,16 +9106,38 @@ "version": "2.2.0", "bundled": true, "dev": true, + "requires": { + "boxen": "1.1.0", + "chalk": "1.1.3", + "configstore": "3.1.0", + "import-lazy": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, "dependencies": { "boxen": { "version": "1.1.0", "bundled": true, "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "string-width": "2.1.0", + "term-size": "0.1.1", + "widest-line": "1.0.0" + }, "dependencies": { "ansi-align": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "string-width": "2.1.0" + } }, "camelcase": { "version": "4.1.0", @@ -6196,6 +9153,10 @@ "version": "2.1.0", "bundled": true, "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", @@ -6205,7 +9166,10 @@ "strip-ansi": { "version": "4.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -6213,16 +9177,31 @@ "version": "0.1.1", "bundled": true, "dev": true, + "requires": { + "execa": "0.4.0" + }, "dependencies": { "execa": { "version": "0.4.0", "bundled": true, "dev": true, + "requires": { + "cross-spawn-async": "2.2.5", + "is-stream": "1.1.0", + "npm-run-path": "1.0.0", + "object-assign": "4.1.1", + "path-key": "1.0.0", + "strip-eof": "1.0.0" + }, "dependencies": { "cross-spawn-async": { "version": "2.2.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.2.14" + } }, "is-stream": { "version": "1.1.0", @@ -6232,7 +9211,10 @@ "npm-run-path": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "path-key": "1.0.0" + } }, "object-assign": { "version": "4.1.1", @@ -6257,11 +9239,19 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "string-width": "1.0.2" + }, "dependencies": { "string-width": { "version": "1.0.2", "bundled": true, "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, "dependencies": { "code-point-at": { "version": "1.1.0", @@ -6272,6 +9262,9 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "number-is-nan": "1.0.1" + }, "dependencies": { "number-is-nan": { "version": "1.0.1", @@ -6284,6 +9277,9 @@ "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "2.1.1", @@ -6302,6 +9298,13 @@ "version": "1.1.3", "bundled": true, "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, "dependencies": { "ansi-styles": { "version": "2.2.1", @@ -6317,6 +9320,9 @@ "version": "2.0.0", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "2.1.1", @@ -6329,6 +9335,9 @@ "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "2.1.1", @@ -6348,11 +9357,22 @@ "version": "3.1.0", "bundled": true, "dev": true, + "requires": { + "dot-prop": "4.1.1", + "graceful-fs": "4.1.11", + "make-dir": "1.0.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.1.0", + "xdg-basedir": "3.0.0" + }, "dependencies": { "dot-prop": { "version": "4.1.1", "bundled": true, "dev": true, + "requires": { + "is-obj": "1.0.1" + }, "dependencies": { "is-obj": { "version": "1.0.1", @@ -6365,6 +9385,9 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "pify": "2.3.0" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -6377,6 +9400,9 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + }, "dependencies": { "crypto-random-string": { "version": "1.0.0", @@ -6401,21 +9427,46 @@ "version": "3.1.0", "bundled": true, "dev": true, + "requires": { + "package-json": "4.0.1" + }, "dependencies": { "package-json": { "version": "4.0.1", "bundled": true, "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.3.0" + }, "dependencies": { "got": { "version": "6.7.1", "bundled": true, "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + }, "dependencies": { "create-error-class": { "version": "3.0.2", "bundled": true, "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + }, "dependencies": { "capture-stack-trace": { "version": "1.0.0", @@ -6468,6 +9519,9 @@ "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "prepend-http": "1.0.4" + }, "dependencies": { "prepend-http": { "version": "1.0.4", @@ -6482,11 +9536,21 @@ "version": "3.3.1", "bundled": true, "dev": true, + "requires": { + "rc": "1.2.1", + "safe-buffer": "5.1.1" + }, "dependencies": { "rc": { "version": "1.2.1", "bundled": true, "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "deep-extend": { "version": "0.4.2", @@ -6511,11 +9575,20 @@ "version": "3.1.0", "bundled": true, "dev": true, + "requires": { + "rc": "1.2.1" + }, "dependencies": { "rc": { "version": "1.2.1", "bundled": true, "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "deep-extend": { "version": "0.4.2", @@ -6543,7 +9616,10 @@ "semver-diff": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "semver": "5.3.0" + } }, "xdg-basedir": { "version": "3.0.0", @@ -6561,11 +9637,18 @@ "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + }, "dependencies": { "spdx-correct": { "version": "1.0.2", "bundled": true, "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + }, "dependencies": { "spdx-license-ids": { "version": "1.2.2", @@ -6585,6 +9668,9 @@ "version": "3.0.0", "bundled": true, "dev": true, + "requires": { + "builtins": "1.0.3" + }, "dependencies": { "builtins": { "version": "1.0.3", @@ -6597,6 +9683,9 @@ "version": "1.2.14", "bundled": true, "dev": true, + "requires": { + "isexe": "2.0.0" + }, "dependencies": { "isexe": { "version": "2.0.0", @@ -6609,11 +9698,18 @@ "version": "1.3.1", "bundled": true, "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + }, "dependencies": { "errno": { "version": "0.1.4", "bundled": true, "dev": true, + "requires": { + "prr": "0.0.0" + }, "dependencies": { "prr": { "version": "0.0.0", @@ -6637,7 +9733,12 @@ "write-file-atomic": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } } } }, @@ -6645,19 +9746,99 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true + "dev": true, + "requires": { + "path-key": "2.0.1" + } }, "npmi": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npmi/-/npmi-1.0.1.tgz", "integrity": "sha1-FddpJzVHVF5oCdzwzhiu1IsCkOI=", "dev": true, + "requires": { + "npm": "2.15.12", + "semver": "4.3.6" + }, "dependencies": { "npm": { "version": "2.15.12", "resolved": "https://registry.npmjs.org/npm/-/npm-2.15.12.tgz", "integrity": "sha1-33w+1aJ3w/nUtdgZsFMR0QogCuY=", "dev": true, + "requires": { + "abbrev": "1.0.9", + "ansi": "0.3.1", + "ansi-regex": "2.0.0", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "archy": "1.0.0", + "async-some": "1.0.2", + "block-stream": "0.0.9", + "char-spinner": "1.0.1", + "chmodr": "1.0.2", + "chownr": "1.0.1", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.10", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "fs-vacuum": "1.2.9", + "fs-write-stream-atomic": "1.0.8", + "fstream": "1.0.10", + "fstream-npm": "1.1.1", + "github-url-from-git": "1.4.0", + "github-url-from-username-repo": "1.0.2", + "glob": "7.0.6", + "graceful-fs": "4.1.6", + "hosted-git-info": "2.1.5", + "imurmurhash": "0.1.4", + "inflight": "1.0.5", + "inherits": "2.0.3", + "ini": "1.3.4", + "init-package-json": "1.9.4", + "lockfile": "1.0.1", + "lru-cache": "4.0.1", + "minimatch": "3.0.3", + "mkdirp": "0.5.1", + "node-gyp": "3.6.0", + "nopt": "3.0.6", + "normalize-git-url": "3.0.2", + "normalize-package-data": "2.3.5", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "1.0.7", + "npm-package-arg": "4.1.0", + "npm-registry-client": "7.2.1", + "npm-user-validate": "0.1.5", + "npmlog": "2.0.4", + "once": "1.4.0", + "opener": "1.4.1", + "osenv": "0.1.3", + "path-is-inside": "1.0.1", + "read": "1.0.7", + "read-installed": "4.0.3", + "read-package-json": "2.0.4", + "readable-stream": "2.1.5", + "realize-package-specifier": "3.0.1", + "request": "2.74.0", + "retry": "0.10.0", + "rimraf": "2.5.4", + "semver": "5.1.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.0", + "spdx-license-ids": "1.2.2", + "strip-ansi": "3.0.1", + "tar": "2.2.1", + "text-table": "0.2.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "2.2.2", + "which": "1.2.11", + "wrappy": "1.0.2", + "write-file-atomic": "1.1.4" + }, "dependencies": { "abbrev": { "version": "1.0.9", @@ -6697,7 +9878,10 @@ "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "char-spinner": { "version": "1.0.1", @@ -6717,22 +9901,36 @@ "cmd-shim": { "version": "2.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.6", + "mkdirp": "0.5.1" + } }, "columnify": { "version": "1.5.4", "bundled": true, "dev": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.0" + }, "dependencies": { "wcwidth": { "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "defaults": "1.0.3" + }, "dependencies": { "defaults": { "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "clone": "1.0.2" + }, "dependencies": { "clone": { "version": "1.0.2", @@ -6749,6 +9947,10 @@ "version": "1.1.10", "bundled": true, "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + }, "dependencies": { "proto-list": { "version": "1.2.4", @@ -6777,12 +9979,23 @@ "fs-vacuum": { "version": "1.2.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.6", + "path-is-inside": "1.0.1", + "rimraf": "2.5.4" + } }, "fs-write-stream-atomic": { "version": "1.0.8", "bundled": true, "dev": true, + "requires": { + "graceful-fs": "4.1.6", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.1.5" + }, "dependencies": { "iferr": { "version": "0.1.5", @@ -6800,11 +10013,20 @@ "version": "1.1.1", "bundled": true, "dev": true, + "requires": { + "fstream-ignore": "1.0.5", + "inherits": "2.0.3" + }, "dependencies": { "fstream-ignore": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fstream": "1.0.10", + "inherits": "2.0.3", + "minimatch": "3.0.3" + } } } }, @@ -6822,6 +10044,14 @@ "version": "7.0.6", "bundled": true, "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.0" + }, "dependencies": { "fs.realpath": { "version": "1.0.0", @@ -6853,7 +10083,11 @@ "inflight": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -6869,11 +10103,28 @@ "version": "1.9.4", "bundled": true, "dev": true, + "requires": { + "glob": "6.0.4", + "npm-package-arg": "4.1.0", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.4", + "semver": "5.1.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "2.2.2" + }, "dependencies": { "glob": { "version": "6.0.4", "bundled": true, "dev": true, + "requires": { + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.0" + }, "dependencies": { "path-is-absolute": { "version": "1.0.0", @@ -6885,7 +10136,10 @@ "promzard": { "version": "0.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "read": "1.0.7" + } } } }, @@ -6898,6 +10152,10 @@ "version": "4.0.1", "bundled": true, "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.0.0" + }, "dependencies": { "pseudomap": { "version": "1.0.2", @@ -6915,11 +10173,18 @@ "version": "3.0.3", "bundled": true, "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, "dependencies": { "brace-expansion": { "version": "1.1.6", "bundled": true, "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, "dependencies": { "balanced-match": { "version": "0.4.2", @@ -6939,6 +10204,9 @@ "version": "0.5.1", "bundled": true, "dev": true, + "requires": { + "minimist": "0.0.8" + }, "dependencies": { "minimist": { "version": "0.0.8", @@ -6951,6 +10219,21 @@ "version": "3.6.0", "bundled": true, "dev": true, + "requires": { + "fstream": "1.0.10", + "glob": "7.0.6", + "graceful-fs": "4.1.6", + "minimatch": "3.0.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "2.0.4", + "osenv": "0.1.3", + "request": "2.74.0", + "rimraf": "2.5.4", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.11" + }, "dependencies": { "semver": { "version": "5.3.0", @@ -6973,11 +10256,20 @@ "version": "2.3.5", "bundled": true, "dev": true, + "requires": { + "hosted-git-info": "2.1.5", + "is-builtin-module": "1.0.0", + "semver": "5.1.0", + "validate-npm-package-license": "3.0.1" + }, "dependencies": { "is-builtin-module": { "version": "1.0.0", "bundled": true, "dev": true, + "requires": { + "builtin-modules": "1.1.0" + }, "dependencies": { "builtin-modules": { "version": "1.1.0", @@ -6996,27 +10288,60 @@ "npm-install-checks": { "version": "1.0.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "npmlog": "2.0.4", + "semver": "5.1.0" + } }, "npm-package-arg": { "version": "4.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.1.5", + "semver": "5.1.0" + } }, "npm-registry-client": { "version": "7.2.1", "bundled": true, "dev": true, + "requires": { + "concat-stream": "1.5.2", + "graceful-fs": "4.1.6", + "normalize-package-data": "2.3.5", + "npm-package-arg": "4.1.0", + "npmlog": "2.0.4", + "once": "1.4.0", + "request": "2.74.0", + "retry": "0.10.0", + "semver": "5.1.0", + "slide": "1.1.6" + }, "dependencies": { "concat-stream": { "version": "1.5.2", "bundled": true, "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, "dependencies": { "readable-stream": { "version": "2.0.6", "bundled": true, "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + }, "dependencies": { "core-util-is": { "version": "1.0.2", @@ -7068,11 +10393,20 @@ "version": "2.0.4", "bundled": true, "dev": true, + "requires": { + "ansi": "0.3.1", + "are-we-there-yet": "1.1.2", + "gauge": "1.2.7" + }, "dependencies": { "are-we-there-yet": { "version": "1.1.2", "bundled": true, "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.1.5" + }, "dependencies": { "delegates": { "version": "1.0.0", @@ -7085,6 +10419,13 @@ "version": "1.2.7", "bundled": true, "dev": true, + "requires": { + "ansi": "0.3.1", + "has-unicode": "2.0.0", + "lodash.pad": "4.4.0", + "lodash.padend": "4.5.0", + "lodash.padstart": "4.5.0" + }, "dependencies": { "has-unicode": { "version": "2.0.0", @@ -7104,17 +10445,32 @@ "lodash.pad": { "version": "4.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash._baseslice": "4.0.0", + "lodash._basetostring": "4.12.0", + "lodash.tostring": "4.1.4" + } }, "lodash.padend": { "version": "4.5.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash._baseslice": "4.0.0", + "lodash._basetostring": "4.12.0", + "lodash.tostring": "4.1.4" + } }, "lodash.padstart": { "version": "4.5.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash._baseslice": "4.0.0", + "lodash._basetostring": "4.12.0", + "lodash.tostring": "4.1.4" + } }, "lodash.tostring": { "version": "4.1.4", @@ -7128,7 +10484,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "opener": { "version": "1.4.1", @@ -7139,6 +10498,10 @@ "version": "0.1.3", "bundled": true, "dev": true, + "requires": { + "os-homedir": "1.0.0", + "os-tmpdir": "1.0.1" + }, "dependencies": { "os-homedir": { "version": "1.0.0", @@ -7161,6 +10524,9 @@ "version": "1.0.7", "bundled": true, "dev": true, + "requires": { + "mute-stream": "0.0.5" + }, "dependencies": { "mute-stream": { "version": "0.0.5", @@ -7195,11 +10561,24 @@ "version": "2.0.4", "bundled": true, "dev": true, + "requires": { + "glob": "6.0.4", + "graceful-fs": "4.1.6", + "json-parse-helpfulerror": "1.0.3", + "normalize-package-data": "2.3.5" + }, "dependencies": { "glob": { "version": "6.0.4", "bundled": true, "dev": true, + "requires": { + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.0" + }, "dependencies": { "path-is-absolute": { "version": "1.0.0", @@ -7212,6 +10591,9 @@ "version": "1.0.3", "bundled": true, "dev": true, + "requires": { + "jju": "1.3.0" + }, "dependencies": { "jju": { "version": "1.3.0", @@ -7226,6 +10608,15 @@ "version": "2.1.5", "bundled": true, "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + }, "dependencies": { "buffer-shims": { "version": "1.0.0", @@ -7262,12 +10653,39 @@ "realize-package-specifier": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "dezalgo": "1.0.3", + "npm-package-arg": "4.1.0" + } }, "request": { "version": "2.74.0", "bundled": true, "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.4.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.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.11", + "node-uuid": "1.4.7", + "oauth-sign": "0.8.2", + "qs": "6.2.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.1", + "tunnel-agent": "0.4.3" + }, "dependencies": { "aws-sign2": { "version": "0.6.0", @@ -7283,11 +10701,22 @@ "version": "1.1.2", "bundled": true, "dev": true, + "requires": { + "readable-stream": "2.0.6" + }, "dependencies": { "readable-stream": { "version": "2.0.6", "bundled": true, "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + }, "dependencies": { "core-util-is": { "version": "1.0.2", @@ -7327,6 +10756,9 @@ "version": "1.0.5", "bundled": true, "dev": true, + "requires": { + "delayed-stream": "1.0.0" + }, "dependencies": { "delayed-stream": { "version": "1.0.0", @@ -7349,6 +10781,11 @@ "version": "1.0.0-rc4", "bundled": true, "dev": true, + "requires": { + "async": "1.5.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.11" + }, "dependencies": { "async": { "version": "1.5.2", @@ -7361,11 +10798,24 @@ "version": "2.0.6", "bundled": true, "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.13.1", + "pinkie-promise": "2.0.1" + }, "dependencies": { "chalk": { "version": "1.1.3", "bundled": true, "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, "dependencies": { "ansi-styles": { "version": "2.2.1", @@ -7380,7 +10830,10 @@ "has-ansi": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.0.0" + } }, "supports-color": { "version": "2.0.0", @@ -7393,6 +10846,9 @@ "version": "2.9.0", "bundled": true, "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + }, "dependencies": { "graceful-readlink": { "version": "1.0.1", @@ -7405,6 +10861,12 @@ "version": "2.13.1", "bundled": true, "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "2.0.0", + "xtend": "4.0.1" + }, "dependencies": { "generate-function": { "version": "2.0.0", @@ -7415,6 +10877,9 @@ "version": "1.2.0", "bundled": true, "dev": true, + "requires": { + "is-property": "1.0.2" + }, "dependencies": { "is-property": { "version": "1.0.2", @@ -7439,6 +10904,9 @@ "version": "2.0.1", "bundled": true, "dev": true, + "requires": { + "pinkie": "2.0.4" + }, "dependencies": { "pinkie": { "version": "2.0.4", @@ -7453,16 +10921,28 @@ "version": "3.1.3", "bundled": true, "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + }, "dependencies": { "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "cryptiles": { "version": "2.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "hoek": { "version": "2.16.3", @@ -7472,7 +10952,10 @@ "sntp": { "version": "1.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } } } }, @@ -7480,6 +10963,11 @@ "version": "1.1.1", "bundled": true, "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.3.0", + "sshpk": "1.9.2" + }, "dependencies": { "assert-plus": { "version": "0.2.0", @@ -7490,6 +10978,11 @@ "version": "1.3.0", "bundled": true, "dev": true, + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.2", + "verror": "1.3.6" + }, "dependencies": { "extsprintf": { "version": "1.0.2", @@ -7504,7 +10997,10 @@ "verror": { "version": "1.3.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } } } }, @@ -7512,6 +11008,16 @@ "version": "1.9.2", "bundled": true, "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "dashdash": "1.14.0", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.6", + "jodid25519": "1.0.2", + "jsbn": "0.1.0", + "tweetnacl": "0.13.3" + }, "dependencies": { "asn1": { "version": "0.2.3", @@ -7526,24 +11032,36 @@ "dashdash": { "version": "1.14.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.0" + } }, "getpass": { "version": "0.1.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } }, "jodid25519": { "version": "1.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.0" + } }, "jsbn": { "version": "0.1.0", @@ -7580,6 +11098,9 @@ "version": "2.1.11", "bundled": true, "dev": true, + "requires": { + "mime-db": "1.23.0" + }, "dependencies": { "mime-db": { "version": "1.23.0", @@ -7628,7 +11149,10 @@ "rimraf": { "version": "2.5.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.0.6" + } }, "semver": { "version": "5.1.0", @@ -7639,11 +11163,23 @@ "version": "2.0.1", "bundled": true, "dev": true, + "requires": { + "graceful-fs": "4.1.6", + "readable-stream": "2.0.2" + }, "dependencies": { "readable-stream": { "version": "2.0.2", "bundled": true, "dev": true, + "requires": { + "core-util-is": "1.0.1", + "inherits": "2.0.3", + "isarray": "0.0.1", + "process-nextick-args": "1.0.3", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.1" + }, "dependencies": { "core-util-is": { "version": "1.0.1", @@ -7692,7 +11228,10 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.0.0" + } }, "tar": { "version": "2.2.1", @@ -7718,16 +11257,27 @@ "version": "3.0.1", "bundled": true, "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.2" + }, "dependencies": { "spdx-correct": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.2", "bundled": true, "dev": true, + "requires": { + "spdx-exceptions": "1.0.4", + "spdx-license-ids": "1.2.2" + }, "dependencies": { "spdx-exceptions": { "version": "1.0.4", @@ -7754,6 +11304,9 @@ "version": "1.2.11", "bundled": true, "dev": true, + "requires": { + "isexe": "1.1.2" + }, "dependencies": { "isexe": { "version": "1.1.2", @@ -7834,19 +11387,29 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "1.1.0", @@ -7858,13 +11421,25 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, "dependencies": { "wordwrap": { "version": "1.0.0", @@ -7896,7 +11471,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -7920,7 +11498,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true + "dev": true, + "requires": { + "p-limit": "1.1.0" + } }, "pako": { "version": "0.2.9", @@ -7932,13 +11513,28 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.8", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } }, "parse-entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", - "dev": true + "dev": true, + "requires": { + "character-entities": "1.2.1", + "character-entities-legacy": "1.1.1", + "character-reference-invalid": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-decimal": "1.0.1", + "is-hexadecimal": "1.0.1" + } }, "parse-github-repo-url": { "version": "1.4.1", @@ -7950,37 +11546,58 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parse5": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", - "dev": true + "dev": true, + "requires": { + "@types/node": "6.0.88" + } }, "parsejson": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseuri": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true + "dev": true, + "requires": { + "better-assert": "1.0.2" + } }, "parseurl": { "version": "1.3.2", @@ -8029,6 +11646,9 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -8042,7 +11662,12 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pathval": { "version": "1.1.0", @@ -8054,7 +11679,14 @@ "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "pend": { "version": "1.2.0", @@ -8073,6 +11705,17 @@ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz", "integrity": "sha1-IPhugtM0nFBZF1J3RbekEeCLOQM=", "dev": true, + "requires": { + "es6-promise": "4.0.5", + "extract-zip": "1.6.5", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.81.0", + "request-progress": "2.0.1", + "which": "1.2.14" + }, "dependencies": { "assert-plus": { "version": "0.2.0", @@ -8090,25 +11733,41 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } }, "fs-extra": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } }, "har-schema": { "version": "1.0.5", @@ -8120,13 +11779,23 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -8138,13 +11807,21 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "performance-now": { "version": "0.2.0", @@ -8162,19 +11839,49 @@ "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } } } }, @@ -8194,13 +11901,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0" + } }, "pluralize": { "version": "1.2.1", @@ -8219,12 +11932,25 @@ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, "dependencies": { "supports-color": { "version": "2.0.0", @@ -8244,7 +11970,10 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -8252,97 +11981,164 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } }, "postcss-colormin": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-convert-values": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-discard-comments": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-duplicates": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-empty": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-overridden": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-discard-unused": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "postcss-filter-plugins": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "uniqid": "4.1.1" + } }, "postcss-load-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } }, "postcss-load-options": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } }, "postcss-load-plugins": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } }, "postcss-merge-idents": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-merge-longhand": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-merge-rules": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, "dependencies": { "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true + "dev": true, + "requires": { + "caniuse-db": "1.0.30000740", + "electron-to-chromium": "1.3.23" + } } } }, @@ -8356,43 +12152,75 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-minify-gradients": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-minify-params": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } }, "postcss-minify-selectors": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-selector-parser": "2.2.3" + } }, "postcss-modules-extract-imports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, + "requires": { + "postcss": "6.0.12" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -8401,18 +12229,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.12" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -8421,18 +12261,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.12" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -8441,18 +12293,30 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.12" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -8460,55 +12324,96 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-normalize-url": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-ordered-values": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-reduce-idents": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-reduce-initial": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true + "dev": true, + "requires": { + "postcss": "5.2.17" + } }, "postcss-reduce-transforms": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0" + } }, "postcss-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } }, "postcss-svgo": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.17", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } }, "postcss-unique-selectors": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "postcss-value-parser": { "version": "3.3.0", @@ -8520,7 +12425,12 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.17", + "uniqs": "2.0.0" + } }, "prelude-ls": { "version": "1.1.2", @@ -8574,13 +12484,21 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true + "dev": true, + "requires": { + "asap": "2.0.6" + } }, "prop-types": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "dev": true + "dev": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } }, "prr": { "version": "0.0.0", @@ -8598,7 +12516,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "punycode": { "version": "1.4.1", @@ -8628,7 +12553,11 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } }, "querystring": { "version": "0.2.0", @@ -8647,18 +12576,28 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -8666,7 +12605,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -8674,7 +12616,10 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "range-parser": { "version": "1.2.0", @@ -8686,31 +12631,53 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, "dependencies": { "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } } } }, @@ -8718,37 +12685,69 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "readline2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true + "dev": true, + "requires": { + "resolve": "1.4.0" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, "dependencies": { "balanced-match": { "version": "0.4.2", @@ -8763,6 +12762,9 @@ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, "dependencies": { "balanced-match": { "version": "0.4.2", @@ -8788,19 +12790,32 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.7" + } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -8813,6 +12828,9 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, + "requires": { + "jsesc": "0.5.0" + }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -8826,7 +12844,25 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-3.0.1.tgz", "integrity": "sha1-G5+EGkTY9PvyJGhQJlRZpOs1TIA=", - "dev": true + "dev": true, + "requires": { + "collapse-white-space": "1.0.3", + "has": "1.0.1", + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1", + "is-whitespace-character": "1.0.1", + "is-word-character": "1.0.1", + "markdown-escapes": "1.0.1", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "state-toggle": "1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "1.1.0", + "unherit": "1.1.0", + "unist-util-remove-position": "1.1.1", + "vfile-location": "2.0.2", + "xtend": "4.0.1" + } }, "remove-trailing-separator": { "version": "1.1.0", @@ -8850,7 +12886,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "replace-ext": { "version": "1.0.0", @@ -8862,25 +12901,60 @@ "version": "2.83.0", "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } }, "request-progress": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true + "dev": true, + "requires": { + "throttleit": "1.0.0" + } }, "request-promise-core": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "request-promise-native": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } }, "require-directory": { "version": "2.1.1", @@ -8904,7 +12978,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "requires-port": { "version": "1.0.0", @@ -8916,7 +12994,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", - "dev": true + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, "resolve-from": { "version": "1.0.1", @@ -8928,43 +13009,72 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4" + } }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } }, "rollup": { "version": "0.43.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.43.1.tgz", "integrity": "sha512-Y/7r6bE1sSpvBoMNZpSWKGHM2q67YxzBADbsfVqMf+nM6SbsQnU7BPMdrE3m/GiT46BQMN8BwFGhjukQP8Yy0A==", - "dev": true + "dev": true, + "requires": { + "source-map-support": "0.4.18", + "weak": "1.0.1" + } }, "rollup-plugin-buble": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.15.0.tgz", "integrity": "sha1-g8PonH/SJmx5GPQbo5gDE1Gcf9A=", - "dev": true + "dev": true, + "requires": { + "buble": "0.15.2", + "rollup-pluginutils": "1.5.2" + } }, "rollup-plugin-commonjs": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.1.tgz", "integrity": "sha512-ZTwAetmKimCsuWost/+n4FaOpMoczBRTx+kuQaZCIKXTx/R1wNBezuX5NS0vnPKM3hBoErdpAqmNyVSCi5XKbg==", "dev": true, + "requires": { + "acorn": "5.1.2", + "estree-walker": "0.5.0", + "magic-string": "0.22.4", + "resolve": "1.4.0", + "rollup-pluginutils": "2.0.1" + }, "dependencies": { "estree-walker": { "version": "0.5.0", @@ -8976,13 +13086,20 @@ "version": "0.22.4", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", - "dev": true + "dev": true, + "requires": { + "vlq": "0.2.2" + } }, "rollup-pluginutils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + }, "dependencies": { "estree-walker": { "version": "0.3.1", @@ -8998,25 +13115,42 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-flow-no-whitespace/-/rollup-plugin-flow-no-whitespace-1.0.0.tgz", "integrity": "sha1-vUuhvNma1biCNNcubi2s6pqgLRY=", - "dev": true + "dev": true, + "requires": { + "flow-remove-types-no-whitespace": "1.0.5", + "rollup-pluginutils": "1.5.2" + } }, "rollup-plugin-node-resolve": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", - "dev": true + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "builtin-modules": "1.1.1", + "is-module": "1.0.0", + "resolve": "1.4.0" + } }, "rollup-pluginutils": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", - "dev": true + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } }, "run-async": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } }, "rx-lite": { "version": "3.1.2", @@ -9076,13 +13210,20 @@ "version": "2.4.9", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -9094,7 +13235,12 @@ "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.4", + "rechoir": "0.6.2" + } }, "signal-exit": { "version": "3.0.2", @@ -9106,7 +13252,17 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", - "dev": true + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + } }, "sinon-chai": { "version": "2.14.0", @@ -9130,19 +13286,34 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", - "dev": true + "dev": true, + "requires": { + "hoek": "4.2.0" + } }, "socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -9163,12 +13334,19 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, "dependencies": { "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -9183,6 +13361,19 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -9194,7 +13385,10 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.2" + } }, "ms": { "version": "0.7.2", @@ -9209,12 +13403,21 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, "dependencies": { "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true + "dev": true, + "requires": { + "ms": "0.7.1" + } }, "isarray": { "version": "0.0.1", @@ -9234,7 +13437,10 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } }, "source-list-map": { "version": "2.0.0", @@ -9252,13 +13458,19 @@ "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.7" + } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -9276,13 +13488,19 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true + "dev": true, + "requires": { + "through2": "2.0.3" + } }, "sprintf-js": { "version": "1.0.3", @@ -9294,7 +13512,17 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } }, "state-toggle": { "version": "1.0.0", @@ -9318,13 +13546,24 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } }, "strict-uri-encode": { "version": "1.1.0", @@ -9336,13 +13575,21 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -9354,13 +13601,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, "strip-eof": { "version": "1.0.0", @@ -9372,7 +13625,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -9390,7 +13646,16 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } }, "symbol-tree": { "version": "3.2.2", @@ -9403,6 +13668,14 @@ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -9414,7 +13687,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -9427,12 +13707,19 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, "dependencies": { "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } } @@ -9448,7 +13735,14 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } }, "text-encoding": { "version": "0.6.4", @@ -9484,7 +13778,11 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } }, "time-stamp": { "version": "2.0.0", @@ -9496,13 +13794,19 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "dev": true + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } }, "tmp": { "version": "0.0.31", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "to-array": { "version": "0.1.4", @@ -9532,13 +13836,19 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true + "dev": true, + "requires": { + "punycode": "1.4.1" + } }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, + "requires": { + "punycode": "2.1.0" + }, "dependencies": { "punycode": { "version": "2.1.0", @@ -9600,7 +13910,10 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -9613,7 +13926,10 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } }, "type-detect": { "version": "4.0.3", @@ -9625,7 +13941,11 @@ "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } }, "typedarray": { "version": "0.0.6", @@ -9649,7 +13969,12 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } }, "uglify-to-browserify": { "version": "1.0.2", @@ -9662,7 +13987,12 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + } }, "ultron": { "version": "1.0.2", @@ -9674,13 +14004,26 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "xtend": "4.0.1" + } }, "unified": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.5.tgz", "integrity": "sha1-cWk3hyYhpjE15iztLzrGoGPG+4c=", - "dev": true + "dev": true, + "requires": { + "bail": "1.0.2", + "extend": "3.0.1", + "is-plain-obj": "1.1.0", + "trough": "1.0.1", + "vfile": "2.2.0", + "x-is-function": "1.0.4", + "x-is-string": "0.1.0" + } }, "uniq": { "version": "1.0.1", @@ -9692,7 +14035,10 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true + "dev": true, + "requires": { + "macaddress": "0.2.8" + } }, "uniqs": { "version": "2.0.0", @@ -9704,7 +14050,10 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", - "dev": true + "dev": true, + "requires": { + "unist-util-visit": "1.1.3" + } }, "unist-util-stringify-position": { "version": "1.1.1", @@ -9735,6 +14084,10 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -9748,13 +14101,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } }, "useragent": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.31" + }, "dependencies": { "lru-cache": { "version": "2.2.4", @@ -9769,6 +14129,9 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -9800,7 +14163,11 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "vendors": { "version": "1.0.1", @@ -9812,13 +14179,23 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } }, "vfile": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.2.0.tgz", "integrity": "sha1-zkek+zNZIrIz5TXbD32BIdj87U4=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "1.1.1" + } }, "vfile-location": { "version": "2.0.2", @@ -9836,7 +14213,10 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, "void-elements": { "version": "2.0.1", @@ -9861,18 +14241,41 @@ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.0.5.tgz", "integrity": "sha512-sqCbhCQIPCalzHXcbuT8c91pFN8jlDvB9Dk+x6vsjCH91BS2+jNmgClDsFWhGEMj3FB8P5+RKJdHmUgKlyHwyw==", "dev": true, + "requires": { + "consolidate": "0.14.5", + "hash-sum": "1.0.2", + "loader-utils": "1.1.0", + "lru-cache": "4.1.1", + "postcss": "6.0.12", + "postcss-load-config": "1.2.0", + "postcss-selector-parser": "2.2.3", + "prettier": "1.7.2", + "resolve": "1.4.0", + "source-map": "0.5.7", + "vue-hot-reload-api": "2.1.0", + "vue-style-loader": "3.0.3", + "vue-template-es2015-compiler": "1.5.3" + }, "dependencies": { "postcss": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==", - "dev": true + "dev": true, + "requires": { + "chalk": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.4.0" + } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -9886,13 +14289,21 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.3.tgz", "integrity": "sha512-P/ihpaZKU23T1kq3E0y4c+F8sbm1HQO69EFYoLoGMSGVAHroHsGir/WQ9qUavP8dyFYHmXenzHaJ/nqd8vfaxw==", - "dev": true + "dev": true, + "requires": { + "hash-sum": "1.0.2", + "loader-utils": "1.1.0" + } }, "vue-template-compiler": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.4.4.tgz", "integrity": "sha512-XdHsNi8Z5WqwuFl/Z5eLKgE2DOEEOdMk1aA459uSgvwyy+pjKLBlQWsUpAtoR6o6Wmpujw6NtinAUGuqSTituQ==", - "dev": true + "dev": true, + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } }, "vue-template-es2015-compiler": { "version": "1.5.3", @@ -9911,19 +14322,33 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, "dependencies": { "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } } } }, "weak": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz", - "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=" + "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=", + "dev": true, + "optional": true, + "requires": { + "bindings": "1.3.0", + "nan": "2.7.0" + } }, "webidl-conversions": { "version": "4.0.2", @@ -9936,12 +14361,42 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", "dev": true, + "requires": { + "acorn": "5.1.2", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.2.3", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.7", + "supports-color": "4.4.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" + }, "dependencies": { "ajv": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "2.1.0", @@ -9959,7 +14414,10 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "camelcase": { "version": "4.1.0", @@ -9972,12 +14430,22 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, "dependencies": { "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -9985,37 +14453,64 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true + "dev": true, + "requires": { + "pify": "2.3.0" + } }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", @@ -10027,7 +14522,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -10041,7 +14539,10 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } }, "which-module": { "version": "2.0.0", @@ -10053,13 +14554,31 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } }, "yargs-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -10067,7 +14586,14 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", - "dev": true + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.4.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } }, "webpack-node-externals": { "version": "1.6.0", @@ -10079,13 +14605,20 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", - "dev": true + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.7" + } }, "whatwg-encoding": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", "dev": true, + "requires": { + "iconv-lite": "0.4.13" + }, "dependencies": { "iconv-lite": { "version": "0.4.13", @@ -10105,7 +14638,12 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", - "dev": true + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } }, "whet.extend": { "version": "0.9.9", @@ -10117,7 +14655,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -10141,7 +14682,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } }, "wrappy": { "version": "1.0.2", @@ -10153,13 +14698,20 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } }, "ws": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } }, "wtf-8": { "version": "1.0.0", @@ -10214,6 +14766,12 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + }, "dependencies": { "camelcase": { "version": "1.2.1", @@ -10228,6 +14786,10 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", "dev": true, + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -10241,7 +14803,10 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } }, "yeast": { "version": "0.1.2", diff --git a/package.json b/package.json index 3185752b1..e9fcbdd47 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,9 @@ "eslint-plugin-vue-libs": "1.2.0", "flow-bin": "^0.47.0", "gitbook-cli": "^2.3.0", + "gitbook-plugin-edit-link": "^2.0.2", + "gitbook-plugin-github": "^3.0.0", + "gitbook-plugin-theme-vuejs": "^1.1.0", "jsdom": "^11.0.0", "jsdom-global": "^3.0.2", "karma": "^1.7.0", From 8e74bcd4d37ac6d66e7492fc4bf2316405d2ef51 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 6 Oct 2017 10:30:50 -0400 Subject: [PATCH 46/51] docs: skip ci build --- docs/assets/circle.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/assets/circle.yml diff --git a/docs/assets/circle.yml b/docs/assets/circle.yml new file mode 100644 index 000000000..56ad41b2f --- /dev/null +++ b/docs/assets/circle.yml @@ -0,0 +1,4 @@ +general: + branches: + ignore: + - gh-pages From df1974a8a88226ea9b0ecb49dc4a7837f1c02083 Mon Sep 17 00:00:00 2001 From: Ankur Kumar Date: Sat, 7 Oct 2017 18:45:16 +0530 Subject: [PATCH 47/51] docs: update example repo links (#80) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 73c12fcfa..b26565c3e 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ Refer to [documentation](https://vue-test-utils.vuejs.org/) ## Examples -- [example with Jest](https://github.com/eddyerburgh/vue-test-utils-jest-example) -- [example with Mocha](https://github.com/eddyerburgh/vue-test-utils-mocha-example) +- [example with Jest](https://github.com/vuejs/vue-test-utils-jest-example) +- [example with Mocha](https://github.com/vuejs/vue-test-utils-mocha-webpack-example) - [example with tape](https://github.com/eddyerburgh/vue-test-utils-tape-example) - [example with AVA](https://github.com/eddyerburgh/vue-test-utils-ava-example) From 7013e6b798321c0f385390616a181ec0078a95cf Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 8 Oct 2017 09:26:33 +0900 Subject: [PATCH 48/51] improve ja docs --- docs/ja/SUMMARY.md | 34 +++- docs/ja/api/createLocalVue.md | 2 +- docs/ja/api/mount.md | 5 +- docs/ja/api/options.md | 4 +- docs/ja/api/wrapper-array/README.md | 2 +- docs/ja/api/wrapper-array/at.md | 8 +- docs/ja/api/wrapper-array/contains.md | 10 +- docs/ja/api/wrapper-array/hasAttribute.md | 6 +- docs/ja/api/wrapper-array/hasClass.md | 8 +- docs/ja/api/wrapper-array/hasProp.md | 14 +- docs/ja/api/wrapper-array/hasStyle.md | 13 +- docs/ja/api/wrapper-array/is.md | 6 +- docs/ja/api/wrapper-array/isEmpty.md | 6 +- docs/ja/api/wrapper-array/isVueInstance.md | 6 +- docs/ja/api/wrapper-array/setData.md | 12 +- docs/ja/api/wrapper-array/setMethods.md | 9 +- docs/ja/api/wrapper-array/setProps.md | 12 +- docs/ja/api/wrapper-array/trigger.md | 13 +- docs/ja/api/wrapper-array/update.md | 6 +- docs/ja/api/wrapper/README.md | 4 +- docs/ja/api/wrapper/contains.md | 8 +- docs/ja/api/wrapper/emitted.md | 33 ++++ docs/ja/api/wrapper/emittedByOrder.md | 28 +++ docs/ja/api/wrapper/exists.md | 10 +- docs/ja/api/wrapper/find.md | 10 +- docs/ja/api/wrapper/findAll.md | 10 +- docs/ja/api/wrapper/hasAttribute.md | 16 +- docs/ja/api/wrapper/hasClass.md | 13 +- docs/ja/api/wrapper/hasProp.md | 17 +- docs/ja/api/wrapper/hasStyle.md | 17 +- docs/ja/api/wrapper/html.md | 6 +- docs/ja/api/wrapper/is.md | 8 +- docs/ja/api/wrapper/isEmpty.md | 6 +- docs/ja/api/wrapper/isVueInstance.md | 9 +- docs/ja/api/wrapper/name.md | 8 +- docs/ja/api/wrapper/setData.md | 10 +- docs/ja/api/wrapper/setMethods.md | 10 +- docs/ja/api/wrapper/setProps.md | 12 +- docs/ja/api/wrapper/text.md | 8 +- docs/ja/api/wrapper/trigger.md | 14 +- docs/ja/api/wrapper/update.md | 4 +- docs/ja/getting-started.md | 13 +- docs/ja/guides/README.md | 9 + docs/ja/guides/choosing-a-test-runner.md | 45 +++++ docs/ja/guides/common-tips.md | 135 +++++++++++++ docs/ja/guides/getting-started.md | 114 +++++++++++ docs/ja/guides/testing-SFCs-with-jest.md | 178 +++++++++++++++++ .../guides/testing-SFCs-with-mocha-webpack.md | 180 ++++++++++++++++++ docs/ja/guides/using-with-jest.md | 81 -------- docs/ja/guides/using-with-vuex.md | 93 ++++----- 50 files changed, 963 insertions(+), 322 deletions(-) create mode 100644 docs/ja/api/wrapper/emitted.md create mode 100644 docs/ja/api/wrapper/emittedByOrder.md create mode 100644 docs/ja/guides/README.md create mode 100644 docs/ja/guides/choosing-a-test-runner.md create mode 100644 docs/ja/guides/common-tips.md create mode 100644 docs/ja/guides/getting-started.md create mode 100644 docs/ja/guides/testing-SFCs-with-jest.md create mode 100644 docs/ja/guides/testing-SFCs-with-mocha-webpack.md delete mode 100644 docs/ja/guides/using-with-jest.md diff --git a/docs/ja/SUMMARY.md b/docs/ja/SUMMARY.md index 3f70ce9de..893b003a9 100644 --- a/docs/ja/SUMMARY.md +++ b/docs/ja/SUMMARY.md @@ -1,13 +1,31 @@ ## 目次 +* [Guides](guides/README.md) + * [Getting Started](guides/getting-started.md) + * [Common Tips](guides/common-tips.md) + * [Choosing a test runner](guides/choosing-a-test-runner.md) + * [Testing SFCs with Jest](guides/testing-SFCs-with-jest.md) + * [Testing SFCs with Mocha + webpack](guides/testing-SFCs-with-mocha-webpack.md) + * [Using with Vuex](guides/using-with-vuex.md) * [API](api/README.md) - * [createLocalVue](api/createLocalVue.md) * [mount](api/mount.md) * [shallow](api/shallow.md) - * [options](api/options.md) + * [Mounting Options](api/options.md) + - [context](api/options.md#context) + - [slots](api/options.md#slots) + - [stubs](api/options.md#stubs) + - [mocks](api/options.md#mocks) + - [localVue](api/options.md#localvue) + - [attachToDocument](api/options.md#attachtodocument) + - [attrs](api/options.md#attrs) + - [listeners](api/options.md#listeners) + - [clone](api/options.md#clone) * [Wrapper](api/wrapper/README.md) * [contains](api/wrapper/contains.md) + * [emitted](api/wrapper/emitted.md) + * [emittedByOrder](api/wrapper/emittedByOrder.md) * [find](api/wrapper/find.md) + * [findAll](api/wrapper/findAll.md) * [hasAttribute](api/wrapper/hasAttribute.md) * [hasClass](api/wrapper/hasClass.md) * [hasProp](api/wrapper/hasProp.md) @@ -16,12 +34,13 @@ * [is](api/wrapper/is.md) * [isEmpty](api/wrapper/isEmpty.md) * [isVueInstance](api/wrapper/isVueInstance.md) - * [name](api/wrapper/name.md) - * [update](api/wrapper/update.md) + * [name](api/wrapper/name.md) * [setData](api/wrapper/setData.md) + * [setMethods](api/wrapper/setMethods.md) * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) + * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -32,9 +51,10 @@ * [is](api/wrapper-array/is.md) * [isEmpty](api/wrapper-array/isEmpty.md) * [isVueInstance](api/wrapper-array/isVueInstance.md) - * [update](api/wrapper-array/update.md) * [setData](api/wrapper-array/setData.md) + * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [selectors](api/selectors.md) - * [common gotchas](common-gotchas.md) + * [update](api/wrapper-array/update.md) + * [Selectors](api/selectors.md) + * [createLocalVue](api/createLocalVue.md) diff --git a/docs/ja/api/createLocalVue.md b/docs/ja/api/createLocalVue.md index c0a63be96..66364dc0e 100644 --- a/docs/ja/api/createLocalVue.md +++ b/docs/ja/api/createLocalVue.md @@ -5,7 +5,7 @@ - **使い方:** -createLocalVueは、グローバルVueクラスを汚染することなくコンポーネント、ミックスイン、プラグインを追加するためのVueクラスを返します。 +`createLocalVue`は、グローバルVueクラスを汚染することなくコンポーネント、ミックスイン、プラグインを追加するためのVueクラスを返します。 `options.localVue`と一緒に使用してください。 diff --git a/docs/ja/api/mount.md b/docs/ja/api/mount.md index 4afc8eac1..115a36b71 100644 --- a/docs/ja/api/mount.md +++ b/docs/ja/api/mount.md @@ -2,8 +2,8 @@ - **引数:** - - `{Component} コンポーネント(component)` - - `{Object} オプション(options)` + - `{Component} component` + - `{Object} options` - **戻り値:** `{Wrapper}` @@ -13,7 +13,6 @@ - **使い方:** - 最初のDOMノードまたはVueコンポーネント一致セレクタの[`Wrapper`](/docs/ja/api/wrapper/README.md)を返します。 有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 diff --git a/docs/ja/api/options.md b/docs/ja/api/options.md index 68854c15b..fc5165f7b 100644 --- a/docs/ja/api/options.md +++ b/docs/ja/api/options.md @@ -20,7 +20,7 @@ - 型: `Object` -コンテキストを機能コンポーネントに渡します。 機能コンポーネントのみで使用できます。 +コンテキストを関数型コンポーネントに渡します。 関数型コンポーネントのみで使用できます。 例: @@ -106,7 +106,7 @@ expect(wrapper.vm.$route.path).toBe($route.path) - 型: `Vue` -コンポーネントのマウント時に使用する[createLocalVue](./createLocalVue.md)によって作成されたVueのローカルコピーです。 +コンポーネントのマウント時に使用する[createLocalVue](./createLocalVue.md)によって作成されたVueのローカルコピーです。このVueのコピーにプラグインをインストールすると、元の`Vue`コピーが汚染されなくなります。 例: diff --git a/docs/ja/api/wrapper-array/README.md b/docs/ja/api/wrapper-array/README.md index 86f745138..9fedf3bc7 100644 --- a/docs/ja/api/wrapper-array/README.md +++ b/docs/ja/api/wrapper-array/README.md @@ -8,4 +8,4 @@ - **メソッド:** -ドキュメントのWrapperArrayセクションには、メソッドの詳細なリストがあります。 \ No newline at end of file +ドキュメントのWrapperArrayセクションには、詳細なメソッドのリストがあります。 \ No newline at end of file diff --git a/docs/ja/api/wrapper-array/at.md b/docs/ja/api/wrapper-array/at.md index 4d1206d03..1808366b3 100644 --- a/docs/ja/api/wrapper-array/at.md +++ b/docs/ja/api/wrapper-array/at.md @@ -1,13 +1,13 @@ # at(index) +渡された`index`の`Wrapper`を返します。ゼロベースの番号付けを使用します(つまり、最初のアイテムはインデックス0になります)。 + - **引数:** - `{number} index` - **戻り値:** `{Wrapper}` -- **使い方:** - -渡された`index`の`Wrapper`を返します。ゼロベースの番号付けを使用します(つまり、最初のアイテムはインデックス0になります)。 +- **例:** ```js import { shallow } from 'vue-test-utils' @@ -18,4 +18,4 @@ const wrapper = shallow(Foo) const divArray = wrapper.findAll('div') const secondDiv = divArray.at(1) expect(secondDiv.is('p')).to.equal(true) -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper-array/contains.md b/docs/ja/api/wrapper-array/contains.md index feb622c59..6ae198148 100644 --- a/docs/ja/api/wrapper-array/contains.md +++ b/docs/ja/api/wrapper-array/contains.md @@ -1,15 +1,15 @@ # contains(selector) +`WrapperArray`のすべてのWrapperにセレクターが含まれているか検証します。 + +有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 + - **引数:** - `{string|Component} selector` - **戻り値:** `{boolean}` -- **使い方:** - -`WrapperArray`のすべてのWrapperにセレクターが含まれているかアサートします。 - -有効な[セレクタ](/docs/ja/api/selectors.md)を使用してください。 +- **例:** ```js import { shallow } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasAttribute.md b/docs/ja/api/wrapper-array/hasAttribute.md index c7f2660be..33be3789b 100644 --- a/docs/ja/api/wrapper-array/hasAttribute.md +++ b/docs/ja/api/wrapper-array/hasAttribute.md @@ -1,14 +1,14 @@ # hasAttribute(attribute, value) +`WrapperArray`の全ての`Wrapper`が`value`と一致する属性を持っているか検証します。 + - **引数:** - `{string} attribute` - `{string} value` - **戻り値:** `{boolean}` -- **使い方:** - -`WrapperArray`の全ての`Wrapper`が`value`と一致する属性を持っているかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasClass.md b/docs/ja/api/wrapper-array/hasClass.md index 06f6f9238..dd02cfea1 100644 --- a/docs/ja/api/wrapper-array/hasClass.md +++ b/docs/ja/api/wrapper-array/hasClass.md @@ -1,13 +1,13 @@ # hasClass(className) +`WrapperArray`のすべての`Wrapper`にDOMノードが`className`を含むクラスを持っているか検証します。 + - **引数:** - - `{string} クラス名(className)` + - `{string} className` - **戻り値:** `{boolean}` -- **使い方:** - -`WrapperArray`のすべての`Wrapper`にDOMノードが`className`を含むクラスを持っているかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasProp.md b/docs/ja/api/wrapper-array/hasProp.md index 548bb0680..814c97d98 100644 --- a/docs/ja/api/wrapper-array/hasProp.md +++ b/docs/ja/api/wrapper-array/hasProp.md @@ -1,10 +1,8 @@ # hasProp(prop, value) -Wrapper配列内の各Wrappervmにプロパティとマッチしているかアサートします。 +`WrappersArray`の`Wrapper`と`vm`にプロパティを持っているか検証します。 -Vueインスタンスのみ呼び出せます。 - -# hasProp(prop, value) +**WrapperにはVueインスタンスを含む必要があることに注意してください。** - **引数:** - `{string} prop` @@ -12,13 +10,7 @@ Vueインスタンスのみ呼び出せます。 - **戻り値:** `{boolean}` -- **使い方:** - -`WrappersArray`の`Wrapper`と`vm`にプロパティを持っているかアサートします。 - -**Note the Wrapper must contain a Vue instance.** -**WrapperにはVueインスタンスを含む必要があることに注意してください。** - +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/hasStyle.md b/docs/ja/api/wrapper-array/hasStyle.md index d48b8ef7f..ee9ba355e 100644 --- a/docs/ja/api/wrapper-array/hasStyle.md +++ b/docs/ja/api/wrapper-array/hasStyle.md @@ -1,18 +1,17 @@ # hasStyle(style, value) +`WrapperArray`の全ての`Wrapper`のDOMノードにstyle属性とマッチする値を持っているか検証します。 + +`Wrapper`DOM nodeに`string`にマッチする`style`値がある場合`true`を返します。 + +**`jsdom`で実行しているときにのみインラインスタイルを検出しますので注意してください。** - **引数:** - `{string} style` - `{string} value` - **戻り値:** `{boolean}` -- **使い方:** - -`WrapperArray`の全ての`Wrapper`のDOMノードにstyle属性とマッチする値を持っているかアサートします。 - -Returns `true` if `Wrapper` DOM node has `style` matching `string`. - -**`jsdom`で実行しているときにのみインラインスタイルを検出しますので注意してください。** +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/is.md b/docs/ja/api/wrapper-array/is.md index bf6f57ffd..dacf10005 100644 --- a/docs/ja/api/wrapper-array/is.md +++ b/docs/ja/api/wrapper-array/is.md @@ -1,13 +1,13 @@ # is(selector) +`WrapperArray`の全ての`Wrapper`のDOMノード、もしくは[セレクタ](/docs/ja/api/selectors.md)が`vm`とマッチするか検証します。 + - **引数:** - `{string|Component} selector` - **戻り値:** `{boolean}` -- **使い方:** - -`WrapperArray`の全ての`Wrapper`のDOMノード、もしくは[セレクタ](/docs/ja/api/selectors.md)が`vm`とマッチするかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/isEmpty.md b/docs/ja/api/wrapper-array/isEmpty.md index 3eb512e22..0d77f7ce2 100644 --- a/docs/ja/api/wrapper-array/isEmpty.md +++ b/docs/ja/api/wrapper-array/isEmpty.md @@ -1,10 +1,10 @@ # isEmpty() -- **戻り値:** `{boolean}` +`WrapperArray`のすべての`Wrapper`に子ノードを含んでいないか検証します。 -- **使い方:** +- **戻り値:** `{boolean}` -`WrapperArray`のすべての`Wrapper`に子ノードを含んでいないかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/isVueInstance.md b/docs/ja/api/wrapper-array/isVueInstance.md index 853427b9e..f799fd675 100644 --- a/docs/ja/api/wrapper-array/isVueInstance.md +++ b/docs/ja/api/wrapper-array/isVueInstance.md @@ -1,10 +1,10 @@ # isVueInstance() -- **戻り値:** `{boolean}` +`WrapperArray`の全ての`Wrapper`がVueインスタンスであるか検証します。 -- **使い方:** +- **戻り値:** `{boolean}` -`WrapperArray`の全ての`Wrapper`がVueインスタンスであるかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper-array/setData.md b/docs/ja/api/wrapper-array/setData.md index 7fcf9c735..1ddf9009a 100644 --- a/docs/ja/api/wrapper-array/setData.md +++ b/docs/ja/api/wrapper-array/setData.md @@ -1,14 +1,14 @@ # setData(data) -- **引数:** - - `{Object} data` - -- **使い方:** - `WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` データをセットし、強制的に更新します。 **すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** +- **引数:** + - `{Object} data` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' @@ -19,4 +19,4 @@ const wrapper = mount(Foo) const barArray = wrapper.findAll(Bar) barArray.setData({ foo: 'bar' }) expect(barArray.at(0).vm.foo).to.equal('bar') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper-array/setMethods.md b/docs/ja/api/wrapper-array/setMethods.md index 7af72c314..3688287fc 100644 --- a/docs/ja/api/wrapper-array/setMethods.md +++ b/docs/ja/api/wrapper-array/setMethods.md @@ -1,14 +1,15 @@ # setMethods(methods) -- **引数:** - - `{Object} methods` - -- **使い方:** `WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` メソッドをセットし、強制的に更新します。 **すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** +- **引数:** + - `{Object} methods` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' diff --git a/docs/ja/api/wrapper-array/setProps.md b/docs/ja/api/wrapper-array/setProps.md index 702fe0020..2963a0e57 100644 --- a/docs/ja/api/wrapper-array/setProps.md +++ b/docs/ja/api/wrapper-array/setProps.md @@ -1,14 +1,14 @@ # setProps(props) -- **引数:** - - `{Object} props` - -- **使い方:** - `WrapperArray`の`Wrapper`ごとに`Wrapper` `vm` プロパティをセットし、強制的に更新します。 **すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** +- **引数:** + - `{Object} props` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' @@ -19,4 +19,4 @@ const wrapper = mount(Foo) const barArray = wrapper.findAll(Bar) barArray.setProps({ foo: 'bar' }) expect(barArray.at(0).vm.foo).to.equal('bar') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper-array/trigger.md b/docs/ja/api/wrapper-array/trigger.md index 58d53219b..a6708e544 100644 --- a/docs/ja/api/wrapper-array/trigger.md +++ b/docs/ja/api/wrapper-array/trigger.md @@ -1,15 +1,14 @@ # trigger(eventName) -- **引数:** - - `{string} eventName - -- **使い方:** - -Triggers an event on every `Wrapper` in the `WrapperArray` DOM node. `WrapperArray` のDOMノードのすべての `Wrapper` でイベントを発火します。 **すべての`Wrapper`はVueインスタンスを含んでいなければならないことに注意してください。** +- **引数:** + - `{string} eventName + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' @@ -24,4 +23,4 @@ const wrapper = mount(Foo, { const divArray = wrapper.findAll('div') divArray.trigger('click') expect(clickHandler.called).to.equal(true) -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper-array/update.md b/docs/ja/api/wrapper-array/update.md index 15dabb4bb..6b70e683d 100644 --- a/docs/ja/api/wrapper-array/update.md +++ b/docs/ja/api/wrapper-array/update.md @@ -1,12 +1,10 @@ # update() -- **使い方:** - `WrapperArray`の各`Wrapper`のルートVueコンポーネントを強制的に再レン​​ダリングします。 VueコンポーネントをWrapperArrayで呼び出した場合、各Vueコンポーネントは強制的に再レン​​ダリングされます。 -### 例 +- **例:** ```js import { mount } from 'vue-test-utils' @@ -19,4 +17,4 @@ expect(divArray.at(0).vm.bar).to.equal('bar') divArray.at(0).vm.bar = 'new value' divArray.update() expect(divArray.at(0).vm.bar).to.equal('new value') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md index f6f15d37e..d4373c761 100644 --- a/docs/ja/api/wrapper/README.md +++ b/docs/ja/api/wrapper/README.md @@ -1,6 +1,6 @@ -# ラッパー +# ラッパ -vue-test-utilsはラッパーベースのAPIです。 +vue-test-utilsはラッパベースのAPIです。 `Wrapper`は、マウントされたコンポーネントと仮想DOM、またはコンポーネントと仮想DOMをテストするメソッドを含むオブジェクトです。 diff --git a/docs/ja/api/wrapper/contains.md b/docs/ja/api/wrapper/contains.md index 5b766e5d9..607d08c20 100644 --- a/docs/ja/api/wrapper/contains.md +++ b/docs/ja/api/wrapper/contains.md @@ -1,13 +1,13 @@ # contains(selector) +`Wrapper`に要素、もしくは[セレクタ](/docs/ja/api/selectors.md)で指定したコンポーネントを含んでいるか検証します。 + - **引数:** - - `{string|Component} セレクタ(selector)` + - `{string|Component} selector` - **戻り値:** `{boolean}` -- **使い方:** - -`Wrapper`に要素、もしくは[セレクタ](/docs/ja/api/selectors.md)で指定したコンポーネントを含んでいるかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/emitted.md b/docs/ja/api/wrapper/emitted.md new file mode 100644 index 000000000..bb4d98aae --- /dev/null +++ b/docs/ja/api/wrapper/emitted.md @@ -0,0 +1,33 @@ +# emitted() + +`Wrapper``vm`によって生成されたカスタムイベントを含むオブジェクトを返します。 + +- **戻り値:** `{ [name: string]: Array> }` + +- **例:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' + +const wrapper = mount(Component) + +wrapper.vm.$emit('foo') +wrapper.vm.$emit('foo', 123) + +/* +wrapper.emitted() は次のオブジェクトを返します: +{ + foo: [[], [123]] +} +*/ + +// イベントが発行されたか検証します +expect(wrapper.emitted().foo).toBeTruthy() + +// イベントの数を検証します +expect(wrapper.emitted().foo.length).toBe(2) + +// イベントのペイロードを検証します +expect(wrapper.emitted().foo[1]).toEqual([123]) +``` diff --git a/docs/ja/api/wrapper/emittedByOrder.md b/docs/ja/api/wrapper/emittedByOrder.md new file mode 100644 index 000000000..5647ee5c3 --- /dev/null +++ b/docs/ja/api/wrapper/emittedByOrder.md @@ -0,0 +1,28 @@ +# emittedByOrder() + +`Wrapper``vm`によって生成されたカスタムイベントを含む配列を返します。 + +- **戻り値:** `Array<{ name: string, args: Array }>` + +- **例:** + +```js +import { mount } from 'vue-test-utils' +import { expect } from 'chai' + +const wrapper = mount(Component) + +wrapper.vm.$emit('foo') +wrapper.vm.$emit('bar', 123) + +/* +wrapper.emittedByOrder() は次の配列を返します +[ + { name: 'foo', args: [] }, + { name: 'bar', args: [123] } +] +*/ + +// イベントが発行したことを検証します +expect(wrapper.emittedByOrder().map(e => e.name)).toEqual(['foo', 'bar']) +``` diff --git a/docs/ja/api/wrapper/exists.md b/docs/ja/api/wrapper/exists.md index 79ed80112..574616025 100644 --- a/docs/ja/api/wrapper/exists.md +++ b/docs/ja/api/wrapper/exists.md @@ -1,12 +1,12 @@ # exists() -- **戻り値:** `{boolean}` +`Wrapper`か`WrapperArray`が存在したときに検証します。 -- **使い方:** +`Wrapper`か`WrapperArray`が空だった場合はfalseを返します。 -`Wrapper`か`WrapperArray`が存在したときにアサートします。 +- **戻り値:** `{boolean}` -`Wrapper`か`WrapperArray`が空だった場合はfalseを返します。 +- **例:** ```js import { mount } from 'vue-test-utils' @@ -18,4 +18,4 @@ expect(wrapper.exists()).to.equal(true) expect(wrapper.find('does-not-exist').exists()).to.equal(false) expect(wrapper.findAll('div').exists()).to.equal(true) expect(wrapper.findAll('does-not-exist').exists()).to.equal(false) -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper/find.md b/docs/ja/api/wrapper/find.md index 23e9fd367..af5ca26eb 100644 --- a/docs/ja/api/wrapper/find.md +++ b/docs/ja/api/wrapper/find.md @@ -1,15 +1,15 @@ # find(selector) +selectorで指定し最初のDOMノードかコンポーネントと一致した[Wrapper](/docs/ja/api/wrapper/README.md)を返します。 + +有効な[selector](/docs/ja/api/selectors.md)を使用してください。 + - **引数:** - `{string|Component} selector` - **戻り値:** `{Wrapper}` -- **使い方:** - -selectorで指定し最初のDOMノードかコンポーネントと一致した[Wrapper](/docs/ja/api/wrapper/README.md)を返します。 - -有効な[selector](/docs/ja/api/selectors.md)を使用してください。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/findAll.md b/docs/ja/api/wrapper/findAll.md index 8e154602e..7e70f45b1 100644 --- a/docs/ja/api/wrapper/findAll.md +++ b/docs/ja/api/wrapper/findAll.md @@ -1,15 +1,15 @@ # findAll(selector) +[Wrappers](/docs/ja/api/wrapper/README.md) の[`WrapperArray`](/docs/ja/api/wrapper-array/README.md)を返します。 + +有効な[selector](/docs/ja/api/selectors.md)を使用してください。 + - **引数:** - `{string|Component} selector` - **戻り値:** `{WrapperArray}` -- **使い方:** - -[Wrappers](/docs/ja/api/wrapper/README.md)の[`WrapperArray`](/docs/ja/api/wrapper-array/README.md)を返します。 - -有効な[selector](/docs/ja/api/selectors.md)を使用してください。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/hasAttribute.md b/docs/ja/api/wrapper/hasAttribute.md index 4319c863f..02b763583 100644 --- a/docs/ja/api/wrapper/hasAttribute.md +++ b/docs/ja/api/wrapper/hasAttribute.md @@ -1,16 +1,16 @@ # hasAttribute(attribute, value) -- **引数:** - - `{string} 属性(attribute)` - - `{string} 値(value)` +`Wrapper`DOMノードに属性とその値が一致したか検証します。 -- **戻り値:** `{boolean}` +`Wrapper`DOMノードに値が一致する属性が含まれている場合は` true`を返します。 -- **使い方:** +- **引数:** + - `{string} attribute` + - `{string} value` -`Wrapper`DOMノードに属性とその値が一致したかアサートします。 +- **戻り値:** `{boolean}` -`Wrapper`DOMノードに値が一致する属性が含まれている場合は` true`を返します。 +- **例:** ```js import { mount } from 'vue-test-utils' @@ -21,7 +21,7 @@ const wrapper = mount(Foo) expect(wrapper.hasAttribute('id', 'foo')).to.equal(true) ``` -- **その他:** +- **代替:** `Wrapper.element`から属性を取得して、値に基づくアサーションを得ることができます。 diff --git a/docs/ja/api/wrapper/hasClass.md b/docs/ja/api/wrapper/hasClass.md index 68f784770..f2389d754 100644 --- a/docs/ja/api/wrapper/hasClass.md +++ b/docs/ja/api/wrapper/hasClass.md @@ -1,16 +1,15 @@ # hasClass(className) -- **引数:** - - `{string} クラス名(className)` - -- **戻り値:** `{boolean}` +DOMノードに`className`が含まれているか検証します。 -- **使い方:** +`Wrapper`DOMノードにクラスが含まれている場合は` true`を返します。 +- **引数:** + - `{string} className` -DOMノードに`className`が含まれているかアサートします。 +- **戻り値:** `{boolean}` -`Wrapper`DOMノードにクラスが含まれている場合は` true`を返します。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/hasProp.md b/docs/ja/api/wrapper/hasProp.md index 3bfe87a5b..a5975cd12 100644 --- a/docs/ja/api/wrapper/hasProp.md +++ b/docs/ja/api/wrapper/hasProp.md @@ -1,18 +1,19 @@ # hasProp(prop, value) -- **引数:** - - `{string} プロパティ(prop)` - - `{any} 値(value)` +`Wrapper`、`vm`が`value`と一致する`prop`を持っているか検証します。 -- **戻り値:** `{boolean}` +`Wrapper`、`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 -- **使い方:** -`Wrapper`、`vm`が`value`と一致する`prop`を持っているかアサートします。 +**WrapperにはVueインスタンスが含まれている必要があることに注意してください。** -`Wrapper`、`vm`が`value`と一致する `prop`を持つ場合は`true`を返します。 +- **引数:** + - `{string} prop` + - `{any} value` -**WrapperにはVueインスタンスが含まれている必要があることに注意してください。** +- **戻り値:** `{boolean}` + +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/hasStyle.md b/docs/ja/api/wrapper/hasStyle.md index 001537011..90aa0a4aa 100644 --- a/docs/ja/api/wrapper/hasStyle.md +++ b/docs/ja/api/wrapper/hasStyle.md @@ -1,17 +1,18 @@ # hasStyle(style, value) -- **引数:** - - `{string} style属性(style)` - - `{string} 値(value)` +`Wrapper`DOMノードにstyle属性と値があることを検証します。 -- **戻り値:** `{boolean}` +`Wrapper`DOMノードにstyle属性と一致した文字列があればtrueを返します。 -- **使い方:** +**`jsdom`で実行しているときのみ、インラインスタイルを検出します。** -`Wrapper`DOMノードにstyle属性と値があることをアサートします。 +- **引数:** + - `{string} style` + - `{string} value` -`Wrapper`DOMノードにstyle属性と一致した文字列があればtrueを返します。 -**`jsdom`で実行しているときのみ、インラインスタイルを検出します。** +- **戻り値:** `{boolean}` + +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/html.md b/docs/ja/api/wrapper/html.md index 23d41c794..c6439fb87 100644 --- a/docs/ja/api/wrapper/html.md +++ b/docs/ja/api/wrapper/html.md @@ -1,10 +1,10 @@ # html() -- **戻り値:** `{string}` +`Wrapper`のDOMノードのHTMLを文字列として返します。 -- **使い方:** +- **戻り値:** `{string}` -`Wrapper`のDOMノードのHTMLを文字列として返します。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/is.md b/docs/ja/api/wrapper/is.md index 69a9d2a94..11f3ae921 100644 --- a/docs/ja/api/wrapper/is.md +++ b/docs/ja/api/wrapper/is.md @@ -1,13 +1,13 @@ # is(selector) +`Wrapper`のDOMノードか`vm`がセレクタと一致しているか検証します。 + - **引数:** - - `{string|Component} セレクタ(selector)` + - `{string|Component} selector` - **戻り値:** `{boolean}` -- **使い方:** - -`Wrapper`のDOMノードか`vm`がセレクタと一致しているかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/isEmpty.md b/docs/ja/api/wrapper/isEmpty.md index 2ab0e86a4..2015b73bd 100644 --- a/docs/ja/api/wrapper/isEmpty.md +++ b/docs/ja/api/wrapper/isEmpty.md @@ -1,10 +1,10 @@ # isEmpty() -- **戻り値:** `{boolean}` +`Wrapper`に子ノードを含んでいないか検証します。 -- **使い方:** +- **戻り値:** `{boolean}` -`Wrapper`に子ノードを含んでいないかアサートします。 +- **例:** ```js import { mount } from 'vue-test-utils' diff --git a/docs/ja/api/wrapper/isVueInstance.md b/docs/ja/api/wrapper/isVueInstance.md index bad5ac81f..c7aa113ec 100644 --- a/docs/ja/api/wrapper/isVueInstance.md +++ b/docs/ja/api/wrapper/isVueInstance.md @@ -1,10 +1,10 @@ # isVueInstance() + +`Wrapper`がVueのinstanceか検証します。 - **戻り値:** `{boolean}` -- **使い方:** - -`Wrapper`がVueのinstanceかアサートします +- **例:** ```js import { mount } from 'vue-test-utils' @@ -13,4 +13,5 @@ import Foo from './Foo.vue' const wrapper = mount(Foo) expect(wrapper.isVueInstance()).to.equal(true) - ``` \ No newline at end of file + ``` + \ No newline at end of file diff --git a/docs/ja/api/wrapper/name.md b/docs/ja/api/wrapper/name.md index 69c86291c..01389c4b5 100644 --- a/docs/ja/api/wrapper/name.md +++ b/docs/ja/api/wrapper/name.md @@ -1,10 +1,10 @@ # name() -- **戻り値:** `{string}` +`Wrapper`にVueインスタンスが含まれている場合はコンポーネント名を返し、そうでない場合は`Wrapper`のDOMノードのタグ名を返します。 -- **使い方:** +- **戻り値:** `{string}` -`Wrapper`にVueインスタンスが含まれている場合はコンポーネント名を返し、そうでない場合は`Wrapper`のDOMノードのタグ名を返します。 +- **例:** ```js import { mount } from 'vue-test-utils' @@ -15,4 +15,4 @@ const wrapper = mount(Foo) expect(wrapper.name()).to.equal('Foo') const p = wrapper.find('p') expect(p.name()).to.equal('p') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper/setData.md b/docs/ja/api/wrapper/setData.md index cd3909b01..c23bb78ab 100644 --- a/docs/ja/api/wrapper/setData.md +++ b/docs/ja/api/wrapper/setData.md @@ -1,14 +1,14 @@ # setData(data) -- **引数:** - - `{Object} データ(data)` - -- **使い方:** - `Wrapper` `vm` データを設定し、更新を強制します。 **WrapperにはVueインスタンスを含む必要があることに注意してください** +- **引数:** + - `{Object} data` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' diff --git a/docs/ja/api/wrapper/setMethods.md b/docs/ja/api/wrapper/setMethods.md index 9c1e9fc5a..49195964c 100644 --- a/docs/ja/api/wrapper/setMethods.md +++ b/docs/ja/api/wrapper/setMethods.md @@ -1,14 +1,14 @@ # setMethods(methods) -- **引数:** - - `{Object} methods` - -- **使い方:** - `Wrapper``vm`メソッドを設定し、更新を強制します。 **WrapperにはVueインスタンスを含む必要があることに注意してください** +- **引数:** + - `{Object} methods` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' diff --git a/docs/ja/api/wrapper/setProps.md b/docs/ja/api/wrapper/setProps.md index 98094ce6c..7ae292ba4 100644 --- a/docs/ja/api/wrapper/setProps.md +++ b/docs/ja/api/wrapper/setProps.md @@ -1,14 +1,14 @@ # setProps(props) -- **引数:** - - `{Object} プロパティ(props)` - -- **使い方:** - `Wrapper` `vm`のプロパティを設定し更新を強制します。 **WrapperにはVueインスタンスを含む必要があることに注意してください** +- **引数:** + - `{Object} props` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' @@ -17,4 +17,4 @@ import Foo from './Foo.vue' const wrapper = mount(Foo) wrapper.setProps({ foo: 'bar' }) expect(wrapper.props().foo).to.equal('bar') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper/text.md b/docs/ja/api/wrapper/text.md index def1fa4ce..8b4a14d1d 100644 --- a/docs/ja/api/wrapper/text.md +++ b/docs/ja/api/wrapper/text.md @@ -1,10 +1,10 @@ # text() -- **戻り値:** `{string}` +`Wrapper`のテキスト内容を返します。 -- **使い方:** +- **戻り値:** `{string}` -`Wrapper`のテキスト内容を返します。 +- **例:** ```js import { mount } from 'vue-test-utils' @@ -13,4 +13,4 @@ import Foo from './Foo.vue' const wrapper = mount(Foo) expect(wrapper.text()).to.equal('bar') -``` \ No newline at end of file +``` diff --git a/docs/ja/api/wrapper/trigger.md b/docs/ja/api/wrapper/trigger.md index c0d8b61d0..dd08a9c9a 100644 --- a/docs/ja/api/wrapper/trigger.md +++ b/docs/ja/api/wrapper/trigger.md @@ -1,18 +1,18 @@ # trigger(eventName) -- **引数:** - - `{string} イベント名(eventName)` - - `{Object} オプション(options)` - - `{boolean} preventDefault` - -- **Usage:** - `Wrapper`のDOMノードのイベントを発火します。 Triggerは`options`オブジェクト形式で行います。`options`オブジェクトのプロパティがイベントに追加されます。 オプションで` preventDefault:true`とすることで、イベントに対してpreventDefaultを実行することができます。 +- **引数:** + - `{string} eventName` + - `{Object} options` + - `{boolean} preventDefault` + +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' diff --git a/docs/ja/api/wrapper/update.md b/docs/ja/api/wrapper/update.md index 9a26de8b7..f07f1aa9c 100644 --- a/docs/ja/api/wrapper/update.md +++ b/docs/ja/api/wrapper/update.md @@ -1,11 +1,11 @@ # update() -- **使い方:** - Vueコンポーネントを強制的に再レン​​ダリングします。 `vm`を含む`Wrapper`で呼び出された場合、`Wrapper`、`vm`を強制的に再レン​​ダリングします。 +- **例:** + ```js import { mount } from 'vue-test-utils' import { expect } from 'chai' diff --git a/docs/ja/getting-started.md b/docs/ja/getting-started.md index c8e2d0a17..e2dc162c3 100644 --- a/docs/ja/getting-started.md +++ b/docs/ja/getting-started.md @@ -1,14 +1,13 @@ # 入門 -公式の`vue-test-utils`の取得と実行は簡単です。 -`npm` または `yarn` を使ってパッケージをインストールします。 +## セットアップ -```shell -# npm -$ npm install --save vue-test-utils +`vue-test-utils`の使い方を体験したい場合は、基本設定としてデモリポジトリをクローンし、依存関係をインストールしてください。 -# yarn -$ yarn add vue-test-utils +``` bash +git clone https://github.com/vuejs/vue-test-utils-getting-started +cd vue-test-utils-getting-started +npm install ``` **注意:** `vue-test-utils`を利用してVueコンポーネントをテストするには [Karma](https://karma-runner.github.io/1.0/index.html) のようなテストランナー、`jsDOM`(例:[jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava))などの仮想DOMをサポートするnodeの実行環境を使用してください diff --git a/docs/ja/guides/README.md b/docs/ja/guides/README.md new file mode 100644 index 000000000..8e8b6119d --- /dev/null +++ b/docs/ja/guides/README.md @@ -0,0 +1,9 @@ +# Guides + +* [Getting Started](./getting-started.md) +* [Common Tips](./common-tips.md) +* [Choosing a test runner](./choosing-a-test-runner.md) +* [Using with Jest](./using-with-jest.md) +* [Testing SFCs with Jest](./testing-SFCs-with-jest.md) +* [Testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md) +* [Using with Vuex](./using-with-vuex.md) diff --git a/docs/ja/guides/choosing-a-test-runner.md b/docs/ja/guides/choosing-a-test-runner.md new file mode 100644 index 000000000..692264d5d --- /dev/null +++ b/docs/ja/guides/choosing-a-test-runner.md @@ -0,0 +1,45 @@ +# Choosing a test runner + +A test runner is a program that runs tests. + +There are many popular JavaScript test runners, and `vue-test-utils` works with all of them. It's test runner agnostic. + +There are a few things to consider when choosing a test runner though: feature set, performance, and support for single-file component (SFC) pre-compilation. After carefully comparing existing libraries, here are two test runners that we recommend: + +- [Jest](https://facebook.github.io/jest/docs/en/getting-started.html#content) is the most fully featured test runner. It requires the least configuration, sets up JSDOM by default, provides built-in assertions, and has a great command line user experience. However, you will need a preprocessor to be able to import SFC components in your tests. We have created the `jest-vue` preprocessor which can handle most common SFC features, but it currently does not have 100% feature parity with `vue-loader`. + +- [mocha-webpack](https://github.com/zinserjan/mocha-webpack) is a wrapper around webpack + Mocha, but with a more streamlined interface and watch mode. The benefits of this setup is that we can get complete SFC support via webpack + `vue-loader`, but it requires more configuration upfront. + +## Browser Environment + +`vue-test-utils` relies on a browser environment. Technically you can run it in a real browser, but it's not recommended due to the complexity of launching real browsers on different platforms. Instead, we recommend running the tests in Node.js with a virtual browser environment using [JSDOM](https://github.com/tmpvar/jsdom). + +The Jest test runner sets up JSDOM automatically. For other test runners, you can manually set up JSDOM for the tests using [jsdom-global](https://github.com/rstacruz/jsdom-global) in the entry for your tests: + +``` bash +npm install --save-dev jsdom jsdom-global +``` +--- +``` js +// in test setup / entry +require('jsdom-global')() +``` + +## Testing Single-File Components + +Single-file Vue components (SFCs) require pre-compilation before they can be run in Node or in the browser. There are two recommended ways to perform the compilation: with a Jest preprocessor, or directly use webpack. + +The `jest-vue` preprocessor supports basic SFC functionalities, but currently does not handle style blocks or custom blocks, which are only supported in `vue-loader`. If you rely on these features or other webpack-specific configurations, you will need to use a webpack + `vue-loader` based setup. + +Read the following guides for different setups: + +- [Testing SFCs with Jest](./testing-SFCs-with-jest.md) +- [Testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md) + +## Resources + +- [Test runner performance comparison](https://github.com/eddyerburgh/vue-unit-test-perf-comparison) +- [Example project with Jest](https://github.com/vuejs/vue-test-utils-jest-example) +- [Example project with Mocha](https://github.com/vuejs/vue-test-utils-mocha-webpack-example) +- [Example project with tape](https://github.com/eddyerburgh/vue-test-utils-tape-example) +- [Example project with AVA](https://github.com/eddyerburgh/vue-test-utils-ava-example) diff --git a/docs/ja/guides/common-tips.md b/docs/ja/guides/common-tips.md new file mode 100644 index 000000000..978bf3586 --- /dev/null +++ b/docs/ja/guides/common-tips.md @@ -0,0 +1,135 @@ +# Common Tips + +## Knowing What to Test + +For UI components, we don't recommend aiming for complete line-based coverage, because it leads to too much focus on the internal implementation details of the components and could result in brittle tests. + +Instead, we recommend writing tests that assert your component's public interface, and treat its internals as a black box. A single test case would assert that some input (user interaction or change of props) provided to the component results in the expected output (render result or emitted custom events). + +For example, for the `Counter` component which increments a display counter by 1 each time a button is clicked, its test case would simulate the click and assert that the rendered output has increased by 1. The test doesn't care about how the Counter increments the value, it only cares about the input and the output. + +The benefit of this approach is that as long as your component's public interface remains the same, your tests will pass no matter how the component's internal implementation changes over time. + +This topic is discussed with more details in a [great presentation by Matt O'Connell](http://slides.com/mattoconnell/deck#/). + +## Shallow Rendering + +In unit tests, we typically want to focus on the component being tested as an isolated unit and avoid indirectly asserting the behavior of its child components. + +In addition, for components that contain many child components, the entire rendered tree can get really big. Repeatedly rendering all child components could slow down our tests. + +`vue-test-utils` allows you to mount a component without rendering its child components (by stubbing them) with the `shallow` method: + +```js +import { shallow } from 'vue-test-utils' + +const wrapper = shallow(Component) // returns a Wrapper containing a mounted Component instance +wrapper.vm // the mounted Vue instance +``` + +## Asserting Emitted Events + +Each mounted wrapper automatically records all events emitted by the underlying Vue instance. You can retrieve the recorded events using the `wrapper.emitted()` method: + +``` js +wrapper.vm.$emit('foo') +wrapper.vm.$emit('foo', 123) + +/* +wrapper.emitted() returns the following object: +{ + foo: [[], [123]] +} +*/ +``` + +You can then make assertions based on these data: + +``` js +import { expect } from 'chai' + +// assert event has been emitted +expect(wrapper.emitted().foo).toBeTruthy() + +// assert event count +expect(wrapper.emitted().foo.length).toBe(2) + +// assert event payload +expect(wrapper.emitted().foo[1]).toEqual([123]) +``` + +You can also get an Array of the events in their emit order by calling [wrapper.emittedByOrder()](../api/emittedByOrder.md). + +## Manipulating Component State + +You can directly manipulate the state of the component using the `setData` or `setProps` method on the wrapper: + +```js +wrapper.setData({ count: 10 }) + +wrapper.setProps({ foo: 'bar' }) +``` + +## Mocking Props + +You can pass props to the component using Vue's built-in `propsData` option: + +```js +import { mount } from 'vue-test-utils' + +mount(Component, { + propsData: { + aProp: 'some value' + } +}) +``` + +You can also update the props of an already-mounted component with the `wrapper.setProps({})` method. + +*For a full list of options, please see the [mount options section](./api/options.md) of the docs.* + +## Applying Global Plugins and Mixins + +Some of the components may rely on features injected by a global plugin or mixin, for example `vuex` and `vue-router`. + +If you are writing tests for components in a specific app, you can setup the same global plugins and mixins once in the entry of your tests. But in some cases, for example testing a generic component suite that may get shared across different apps, it's better to test your components in a more isolated setup, without polluting the global `Vue` constructor. We can use the [createLocalVue](../api/createLocalVue.md) method to achieve that: + +``` js +import createLocalVue from 'vue-test-utils' + +// create an extended Vue constructor +const localVue = createLocalVue() + +// install plugins as normal +localVue.use(MyPlugin) + +// pass the localVue to the mount options +mount(Component, { + localVue +}) +``` + +## Mocking Injections + +Another strategy for injected properties is simply mocking them. You can do that with the `mocks` option: + +```js +import { mount } from 'vue-test-utils' + +const $route = { + path: '/', + hash: '', + params: { id: '123' }, + query: { q: 'hello' } +} + +mount(Component, { + mocks: { + $route // adds the mocked $route object to the Vue instance before mounting component + } +}) +``` + +## Dealing with Routing + +Since routing by definition has to do with the overall structure of the application and involves multiple components, it is best tested via integration or end-to-end tests. For individual components that rely on `vue-router` features, you can mock them using the techniques mentioned above. diff --git a/docs/ja/guides/getting-started.md b/docs/ja/guides/getting-started.md new file mode 100644 index 000000000..c732ac1a6 --- /dev/null +++ b/docs/ja/guides/getting-started.md @@ -0,0 +1,114 @@ +# Getting Started + +## Setup + +To get a quick taste of using `vue-test-utils`, clone our demo repository with basic setup and install the dependencies: + +``` bash +git clone https://github.com/vuejs/vue-test-utils-getting-started +cd vue-test-utils-getting-started +npm install +``` + +You will see that the project includes a simple component, `counter.js`: + +```js +// counter.js + +export default { + template: ` +
+ {{ count }} + +
+ `, + + data () { + return { + count: 0 + } + }, + + methods: { + increment () { + this.count++ + } + } +} +``` + +### Mounting Components + +`vue-test-utils` tests Vue components by mounting them in isolation, mocking the necessary inputs (props, injections and user events) and asserting the outputs (render result, emitted custom events). + +Mounted components are returned inside a [Wrapper](./api/wrapper.md), which exposes many convenience methods for manipulating, traversing and querying the underlying Vue component instance. + +You can create wrappers using the `mount` method. Let's create a file called `test.js`: + +```js +// test.js + +// Import the mount() method from the test utils +// and the component you want to test +import { mount } from 'vue-test-utils' +import Counter from './counter' + +// Now mount the component and you have the wrapper +const wrapper = mount(Counter) + +// You can access the actual Vue instance via wrapper.vm +const vm = wrapper.vm + +// To inspect the wrapper deeper just log it to the console +// and your adventure with the vue-test-utils begins +console.log(wrapper) +``` + +### Test rendered HTML output of the component + +Now that we have the wrapper, the first thing we can do is to verify that the rendered HTML output of the component matches what is expected. + +```js +import { mount } from 'vue-test-utils' +import Counter from './counter' + +describe('Counter', () => { + // Now mount the component and you have the wrapper + const wrapper = mount(Counter) + + it('renders the correct markup', () => { + expect(wrapper.html()).toContain('0') + }) + + // it's also easy to check for the existence of elements + it('has a button', () => { + expect(wrapper.contains('button')).toBe(true) + }) +}) +``` + +Now run the tests with `npm test`. You should see the tests passing. + +### Simulating User Interaction + +Our counter should increment the count when the user clicks the button. To simulate the behavior, we need to first locate the button with `wrapper.find()`, which returns a **wrapper for the button element**. We can then simulate the click by calling `.trigger()` on the button wrapper: + +```js +it('button click should increment the count', () => { + expect(wrapper.vm.count).toBe(0) + const button = wrapper.find('button') + button.trigger('click') + expect(wrapper.vm.count).toBe(1) +}) +``` + +### What about `nextTick`? + +Vue batches pending DOM updates and applies them asynchronously to prevent unnecessary re-renders caused by multiple data mutations. This is why in practice we often have to use `Vue.nextTick` to wait until Vue has performed the actual DOM update after we trigger some state change. + +To simplify usage, `vue-test-utils` applies all updates synchronously so you don't need to use `Vue.nextTick` in your tests. + +## What's Next + +- Integrate `vue-test-utils` into your project by [choosing a test runner](./choosing-a-test-runner.md) +- Learn more about [common techniques when writing tests](./common-tips.md) diff --git a/docs/ja/guides/testing-SFCs-with-jest.md b/docs/ja/guides/testing-SFCs-with-jest.md new file mode 100644 index 000000000..0bd70718d --- /dev/null +++ b/docs/ja/guides/testing-SFCs-with-jest.md @@ -0,0 +1,178 @@ +# Testing Single File Components with Jest + +> An example project for this setup is available on [GitHub](https://github.com/vuejs/vue-test-utils-jest-example). + +Jest is a test runner developed by Facebook, aiming to deliver a battery-included unit testing solution. You can learn more about Jest on its [official documentation](https://facebook.github.io/jest/). + +## Setting up Jest + +We will assume you are starting with a setup that already has webpack, vue-loader and Babel properly configured - e.g. the `webpack-simple` template scaffolded by `vue-cli`. + +The first thing to do is install Jest and `vue-test-utils`: + +```bash +$ npm install --save-dev jest vue-test-utils +``` + +Next we need to define a unit script in our `package.json`. + +```json +// package.json +{ + "scripts": { + "test": "jest" + } +} +``` + +## Processing SFCs in Jest + +To teach Jest how to process `*.vue` files, we will need to install and configure the `jest-vue` preprocessor: + +``` bash +npm install --save-dev jest-vue +``` + +Next, create a `jest` block in `package.json`: + +``` json +{ + // ... + "jest": { + "moduleFileExtensions": [ + "js", + "json", + // tell Jest to handle *.vue files + "vue" + ], + "transform": { + // process *.vue files with jest-vue + ".*\\.(vue)$": "/node_modules/jest-vue" + }, + "mapCoverage": true + } +} +``` + +> **Note:** `jest-vue` currently does not support all the features of `vue-loader`, for example custom block support and style loading. In addition, some webpack-specific features such as code-splitting are not supported either. To use them, read the guide on [testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md). + +## Handling webpack Aliases + +If you use a resolve alias in the webpack config, e.g. aliasing `@` to `/src`, you need to add a matching config for Jest as well, using the `moduleNameMapper` option: + +``` json +{ + // ... + "jest": { + // ... + // support the same @ -> src alias mapping in source code + "moduleNameMapper": { + "^@/(.*)$": "/src/$1" + } + } +} +``` + +## Configuring Babel for Jest + +Although latest versions of Node already supports most ES2015 features, you may still want to use ES modules syntax and stage-x features in your tests. For that we need to install `babel-jest`: + +``` bash +npm install --save-dev babel-jest +``` + +Next, we need to tell Jest to process JavaScript test files with `babel-jest` by adding an entry under `jest.transform` in `package.json`: + +``` json +{ + // ... + "jest": { + // ... + "transform": { + // ... + // process js with babel-jest + "^.+\\.js$": "/node_modules/babel-jest" + }, + // ... + } +} +``` + +> By default, `babel-jest` automatically configures itself as long as it's installed. However, because we have explicitly added a transform for `*.vue` files, we now need to explicitly configure `babel-jest` as well. + +Assuming using `babel-preset-env` with webpack, the default Babel config disables ES modules transpilation because webpack already knows how to handle ES modules. However, we do need to enable it for our tests because Jest tests run directly in Node. + +Also, we can tell `babel-preset-env` to target the Node version we are using. This skips transpiling unnecessary features and makes our tests boot faster. + +To apply these options only for tests, put them in a separate config under `env.test` (this will be automatically picked up by `babel-jest`). + +Example `.babelrc`: + +``` json +{ + "presets": [ + ["env", { "modules": false }] + ], + "env": { + "test": { + "presets": [ + ["env", { "targets": { "node": "current" }}] + ] + } + } +} +``` + +### Snapshot Testing + +You can use [`vue-server-renderer`](https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer) to render a component into a string so that it can be saved as a snapshot for [Jest snapshot testing](https://facebook.github.io/jest/docs/en/snapshot-testing.html). + +The render result of `vue-server-renderer` includes a few SSR-specific attributes, and it ignores whitespaces, making it harder to scan a diff. We can improve the saved snapshot with a custom serializer: + +``` bash +npm install --save-dev jest-serializer-vue +``` + +Then configure it in `package.json`: + +``` json +{ + // ... + "jest": { + // ... + // serializer for snapshots + "snapshotSerializers": [ + "/node_modules/jest-serializer-vue" + ] + } +} +``` + +### Placing Test Files + +By default, jest will recursively pick up all files that have a `.spec.js` or `.test.js` extension in the entire project. If this does not fit your needs, it's possible [to change the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. + +Jest recommends creating a `__tests__` directory right next to the code being tested, but feel free to structure your tests as you see fit. Just beware that Jest would create a `__snapshots__` directory next to test files that performs snapshot testing. + +### Example Spec + +If you are familiar with Jasmine, you should feel right at home with Jest's [assertion API](https://facebook.github.io/jest/docs/en/expect.html#content): + +```js +import { mount } from 'vue-test-utils' +import Component from './component' + +describe('Component', () => { + test('is a Vue instance', () => { + const wrapper = mount(Component) + expect(wrapper.isVueInstance()).toBeTruthy() + }) +}) +``` + +### Resources + +- [Example project for this setup](https://github.com/vuejs/vue-test-utils-jest-example) +- [Examples and slides from Vue Conf 2017](https://github.com/codebryo/vue-testing-with-jest-conf17) +- [Jest](https://facebook.github.io/jest/) +- [Babel preset env](https://github.com/babel/babel-preset-env) diff --git a/docs/ja/guides/testing-SFCs-with-mocha-webpack.md b/docs/ja/guides/testing-SFCs-with-mocha-webpack.md new file mode 100644 index 000000000..f7013a015 --- /dev/null +++ b/docs/ja/guides/testing-SFCs-with-mocha-webpack.md @@ -0,0 +1,180 @@ +# Testing Single File Components with Mocha + webpack + +> An example project for this setup is available on [GitHub](https://github.com/vuejs/vue-test-utils-mocha-webpack-example). + +Another strategy for testing SFCs is compiling all our tests via webpack and then run it in a test runner. The advantage of this approach is that it gives us full support for all webpack and `vue-loader` features, so we don't have to make compromises in our source code. + +You can technically use any test runner you like and manually wire things together, but we've found [`mocha-webpack`](https://github.com/zinserjan/mocha-webpack) to provide a very streamlined experience for this particular task. + +## Setting Up `mocha-webpack` + +We will assume you are starting with a setup that already has webpack, vue-loader and Babel properly configured - e.g. the `webpack-simple` template scaffolded by `vue-cli`. + +The first thing to do is installing test dependencies: + +``` bash +npm install --save-dev vue-test-utils mocha mocha-webpack +``` + +Next we need to define a test script in our `package.json`. + +```json +// package.json +{ + "scripts": { + "test": "mocha-webpack --webpack-config webpack.config.js --require test/setup.js test/**/*.spec.js" + } +} +``` + +A few things to note here: + +- The `--webpack-config` flag specifies the webpack config file to use for the tests. In most cases, this would be identical to the config you use for the actual project with one small tweak. We will talk about this later. + +- The `--require` flag ensures the file `test/setup.js` is run before any tests, in which we can setup the global environment for our tests to be run in. + +- The final argument is a glob for the test files to be included in the test bundle. + +### Extra webpack Configuration + +#### Externalizing NPM Dependencies + +In our tests we will likely import a number of NPM dependencies - some of these modules may be written without browser usage in mind and simply cannot be bundled properly by webpack. Another consideration is externalizing dependencies greatly improves test boot up speed. We can externalize all NPM dependencies with `webpack-node-externals`: + +```js +// webpack.config.js +const nodeExternals = require('webpack-node-externals') + +module.exports = { + // ... + externals: [nodeExternals()] +} +``` + +#### Source Maps + +Source maps need to be inlined to be picked up by `mocha-webpack`. The recommended config is: + +``` js +module.exports = { + // ... + devtool: 'inline-cheap-module-source-map' +} +``` + +If debugging via IDE, it's also recommended to add the following: + +``` js +module.exports = { + // ... + output: { + // ... + // use absolute paths in sourcemaps (important for debugging via IDE) + devtoolModuleFilenameTemplate: '[absolute-resource-path]', + devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]' + } +} +``` + +### Setting Up Browser Environment + +`vue-test-utils` requires a browser environment to run. We can simulate it in Node.js using `jsdom-global`: + +```bash +npm install --save-dev jsdom jsdom-global +``` + +Then in `test/setup.js`: + +``` js +require('jsdom-global')() +``` + +This adds a browser environment to node, so that `vue-test-utils` can run correctly. + +### Picking an Assertion Library + +[Chai](http://chaijs.com/) is a popular assertion library that is commonly used alongside Mocha. You may also want to check out [Sinon](http://sinonjs.org/) for creating spies and stubs. + +Alternatively you can use `expect` which is now part of Jest, and exposes [the exact same API](http://facebook.github.io/jest/docs/en/expect.html#content) in Jest docs. + +We will be using `expect` here and make it globally available so that we don't have to import it in every test: + +``` bash +npm install --save-dev expect +``` + +Then in `test/setup.js`: + +``` js +require('jsdom-global')() + +global.expect = require('expect') +``` + +### Optimizing Babel for Tests + +Notice that we are using `babel-loader` to handle JavaScript. You should already have Babel configured if you are using it in your app via a `.babelrc` file. Here `babel-loader` will automatically use the same config file. + +One thing to note is that if you are using Node 6+, which already supports the majority of ES2015 features, you can configure a separate Babel [env option](https://babeljs.io/docs/usage/babelrc/#env-option) that only transpiles features that are not already supported in the Node version you are using (e.g. `stage-2` or flow syntax support, etc.) + +### Adding a test + +Create a file in `src` named `Counter.vue`: + +``` html + + + +``` + +And create a test file named `test/Counter.spec.js` with the following code: + +```js +import { shallow } from 'vue-test-utils' +import Counter from '../src/Counter.vue' + +describe('Counter.vue', () => { + it('increments count when button is clicked', () => { + const wrapper = shallow(Counter) + wrapper.find('button').trigger('click') + expect(wrapper.find('div').text()).toMatch('1') + }) +}) +``` + +And now we can run the test: + +``` +npm run unit +``` + +Woohoo, we got our tests running! + +### Resources + +- [Example project for this setup](https://github.com/vuejs/vue-test-utils-mocha-webpack-example) +- [Mocha](https://mochajs.org/) +- [mocha-webpack](http://zinserjan.github.io/mocha-webpack/) +- [Chai](http://chaijs.com/) +- [Sinon](http://sinonjs.org/) +- [jest/expect](http://facebook.github.io/jest/docs/en/expect.html#content) diff --git a/docs/ja/guides/using-with-jest.md b/docs/ja/guides/using-with-jest.md deleted file mode 100644 index 302cf20b3..000000000 --- a/docs/ja/guides/using-with-jest.md +++ /dev/null @@ -1,81 +0,0 @@ -# Using with Jest - -## Setup Jest - -Jest is a test runner developed by Facebook, aiming to come with everything included to get started. [Learn more about Jest](https://facebook.github.io/jest/) So let's get started: - -```bash -$ yarn add jest -``` - -will install jest and makes it available to be executed through yarn or a package script. - -```json -// package.json -{ - "scripts": { - "test": "jest" - } -} -``` - -or - -```bash -$ yarn jest -``` - -As you probably want to use latest javascript capabilities inside your specs though, it's recommendable to enable `babel` for the project. - - -```bash -$ yarn add babel babel-jest babel-preset-env -``` - -If you’ve not heard of babel-preset-env, it basically allows compiling the JS based on the browsers you plan to support. Get more info here: [babel-preset-env](https://github.com/babel/babel-preset-env) - -Be sure to update your `.babelrc` file accordingly - -```json -{ - "presets": [ - ["env", { - "targets": { - "browsers": ["last 2 versions", "safari >= 7"] - } - }] - ] -} -``` - -That's pretty much everything necessary to do before writing the first specs. - -### Where should my tests live - -By default, jest will pick up all files that have a `.spec.js` or `.test.js` extension. If this does not fit your needs, it's possible [to chang the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. - -Jest recommends to create a `__spec__` folder, but feel free to do as you like. Just know ahead of time, that when using the [snapshot](https://facebook.github.io/jest/docs/en/snapshot-testing.html#content) feature, snapshots will get stored in a `__snapshot__` folder. - -### Example Spec - -If you are familiar with Jasmine, or similar test libraries you should feel at home in Jest right away. Many useful assertions are in place, so -enjoy writing specs. - -```js -import { mount } from 'vue-test-utils' -import Component from './component' - -describe('Component', () => { - test('is a Vue instance', () => { - const wrapper = mount(Component) - expect(wrapper.isVueInstance()).toBeTruthy() - }) -}) -``` - -### Resources - -- Examples and slides from Vue Conf 2017 - https://github.com/codebryo/vue-testing-with-jest-conf17 -- Jest - https://facebook.github.io/jest/ -- Babel preset env - https://github.com/babel/babel-preset-env - diff --git a/docs/ja/guides/using-with-vuex.md b/docs/ja/guides/using-with-vuex.md index 645663eb7..46ad358a6 100644 --- a/docs/ja/guides/using-with-vuex.md +++ b/docs/ja/guides/using-with-vuex.md @@ -6,11 +6,11 @@ Let’s look at some code. This is the component we want to test. It calls Vuex actions. -```vue +``` html @@ -39,7 +39,7 @@ To test this, we need to pass a mock store to Vue when we mount our component. Let’s see what this looks like: -```js +``` js import Vue from 'vue' import { mount } from 'vue-test-utils' import sinon from 'sinon' @@ -70,7 +70,7 @@ describe('Actions.vue', () => { const input = wrapper.find('input')[0] input.element.value = 'input' input.trigger('input') - expect(actions.actionInput.calledOnce).to.equal(true) + expect(actions.actionInput.calledOnce).toBe(true) }) it('does not call store action actionInput when input value is not input and an input even is fired', () => { @@ -78,16 +78,17 @@ describe('Actions.vue', () => { const input = wrapper.find('input')[0] input.element.value = 'not input' input.trigger('input') - expect(actions.actionInput.calledOnce).to.equal(false) + expect(actions.actionInput.calledOnce).toBe(false) }) it('calls store action actionClick when button is clicked', () => { const wrapper = mount(Actions, { store }) wrapper.find('button')[0].trigger('click') - expect(actions.actionClick.calledOnce).to.equal(true) + expect(actions.actionClick.calledOnce).toBe(true) }) }) ``` + What’s happening here? First we tell Vue to use Vuex with the Vue.use method. This is just a wrapper around Vue.use. We then make a mock store by calling new Vuex.store with our mock values. We only pass it the actions, since that’s all we care about. @@ -105,25 +106,25 @@ The most important thing to note in this test is that **we create a mock Vuex st Great, so now we can mock actions, let’s look at mocking getters. ## Mocking Getters - -```vue + +``` html ``` @@ -131,7 +132,7 @@ This is a fairly simple component. It renders the result of the getters clicks a Let’s see the test: -```javascript +``` js import 'babel-polyfill' import Vue from 'vue' import { mount } from 'vue-test-utils' @@ -159,13 +160,13 @@ describe('Getters.vue', () => { it('Renders state.inputValue in first p tag', () => { const wrapper = mount(Actions, { store }) const p = wrapper.find('p')[0] - expect(p.text()).to.equal(getters.inputValue()) + expect(p.text()).toBe(getters.inputValue()) }) it('Renders state.clicks in second p tag', () => { const wrapper = mount(Actions, { store }) const p = wrapper.find('p')[1] - expect(p.text()).to.equal(getters.clicks().toString()) + expect(p.text()).toBe(getters.clicks().toString()) }) }) ``` @@ -174,40 +175,40 @@ This test is similar to our actions test. We create a mock store before each tes This is great, but what if we want to check our getters are returning the correct part of our state? ## Mocking with Modules - + [Modules](https://vuex.vuejs.org/en/modules.html) are useful for separating out our store into manageable chunks. They also export getters. We can use these in our tests. Let’s look at our component: -```vue +``` html ``` Simple component that includes one action and one getter. And the test: -```javascript +``` js import Vue from 'vue' import { mount } from 'vue-test-utils' import sinon from 'sinon' @@ -246,25 +247,15 @@ describe('Modules.vue', () => { const wrapper = mount(Modules, { store }) const button = wrapper.find('button')[0] button.trigger('click') - expect(actions.moduleActionClick.calledOnce).to.equal(true) + expect(actions.moduleActionClick.calledOnce).toBe(true) }) it('Renders state.inputValue in first p tag', () => { const wrapper = mount(Modules, { store }) const p = wrapper.find('p')[0] - expect(p.text()).to.equal(state.module.clicks.toString()) + expect(p.text()).toBe(state.module.clicks.toString()) }) }) ``` -To have a look at what the module file looks like, [check out the repo](https://github.com/eddyerburgh/mock-vuex-in-vue-unit-tests-tutorial). - -So now we’re importing getters from out Vuex store module. This means we need to mock the state. - -Is this a good thing? Well, it means we’re testing that the state we expect will be returned by the getter. But this is a unit test, so maybe we should test that in a store test. - -I’ll leave it up to you whether you want to test the state or not. - -Hopefully this tutorial has helped you understand how to mock Vuex in Vue unit tests. - -If you have any questions, leave a comment. +To have a look at what the module file looks like, [check out the repo](https://github.com/eddyerburgh/mock-vuex-in-vue-unit-tests-tutorial). From de4003e7070fd6670d4e2144dbf32c6da18c8bed Mon Sep 17 00:00:00 2001 From: sunecosuri Date: Sun, 8 Oct 2017 17:17:54 +0900 Subject: [PATCH 49/51] translate docs/guides/ --- docs/ja/api/wrapper/README.md | 4 +- docs/ja/common-gotchas.md | 37 ----- docs/ja/getting-started.md | 145 ------------------ docs/ja/guides/README.md | 16 +- docs/ja/guides/choosing-a-test-runner.md | 45 +++--- docs/ja/guides/common-tips.md | 77 +++++----- docs/ja/guides/getting-started.md | 54 +++---- docs/ja/guides/testing-SFCs-with-jest.md | 74 ++++----- .../guides/testing-SFCs-with-mocha-webpack.md | 76 ++++----- docs/ja/guides/using-with-vuex.md | 52 +++---- 10 files changed, 199 insertions(+), 381 deletions(-) delete mode 100644 docs/ja/common-gotchas.md delete mode 100644 docs/ja/getting-started.md diff --git a/docs/ja/api/wrapper/README.md b/docs/ja/api/wrapper/README.md index d4373c761..820797a08 100644 --- a/docs/ja/api/wrapper/README.md +++ b/docs/ja/api/wrapper/README.md @@ -6,8 +6,8 @@ vue-test-utilsはラッパベースのAPIです。 - **プロパティ:** -`vm` `Component`:これはvueのインスタンスです。`wrapper.vm`を使って[vmのプロパティとインスタンスメソッド](https://vuejs.org/v2/api/#Instance-Properties)にアクセスできます。これは、Vueコンポーネントラッパーにのみ存在します。 -`element` `HTMLElement`: ラッパーのルートDOM +`vm` `Component`:これはvueのインスタンスです。`wrapper.vm`を使って[vmのプロパティとインスタンスメソッド](https://vuejs.org/v2/api/#Instance-Properties)にアクセスできます。これは、Vueコンポーネントラッパにのみ存在します。 +`element` `HTMLElement`: ラッパのルートDOM `options` `Object`: `mount`または`shallow`に渡されたvue-test-utilsオプションを含むオブジェクト `options.attachedToDom` `Boolean`: `mount` か `shallow`に渡された場合はTrueです。 diff --git a/docs/ja/common-gotchas.md b/docs/ja/common-gotchas.md deleted file mode 100644 index 892f5e1ca..000000000 --- a/docs/ja/common-gotchas.md +++ /dev/null @@ -1,37 +0,0 @@ -# よくある落とし穴 - -## createLocalVue - -`createLocalVue`は拡張Vueクラスを返すため、グローバルVueクラスに影響を与えることなく、ミックスイン、ディレクティブ、コンポーネント、プラグインを追加することができます。 - -残念ながら、多くのプラグインは内部チェックがあるため複数のプラグインをインストールすることができません。 - -現在、 **Vuexは複数回インスタンスにインストールができません。** しかし、 ストアを変更することができます。そのため、1回インストールすれば大丈夫です。[Vuexとの使い方](guides/using-with-vuex.md)を参照してください。 - -また、**Vue Routerを複数回インストールする際は2つのオプションをfalseに設定する必要があります。** - -```js -import createLocalVue from 'vue-test-utils' -import VueRouter from 'vue-router' - -const localVue = createLocalVue() -VueRouter.installed = false -VueRouter.install.installed = false -localVue.use(VueRouter) -``` - -プラグインをインストールする代わりにテストするプロパティをスタブする方法もあります。 - -たとえば、テストが`this.$route.params.id`に依存している場合、[intercept](mount.md)を使って`$route`をスタブします。 - -```js -mount(Component, { - intercept: { - $route: { - params: { - id: true - } - } - } -}) -``` \ No newline at end of file diff --git a/docs/ja/getting-started.md b/docs/ja/getting-started.md deleted file mode 100644 index e2dc162c3..000000000 --- a/docs/ja/getting-started.md +++ /dev/null @@ -1,145 +0,0 @@ -# 入門 - -## セットアップ - -`vue-test-utils`の使い方を体験したい場合は、基本設定としてデモリポジトリをクローンし、依存関係をインストールしてください。 - -``` bash -git clone https://github.com/vuejs/vue-test-utils-getting-started -cd vue-test-utils-getting-started -npm install -``` - -**注意:** `vue-test-utils`を利用してVueコンポーネントをテストするには [Karma](https://karma-runner.github.io/1.0/index.html) のようなテストランナー、`jsDOM`(例:[jest](https://facebook.github.io/jest/), [ava](https://github.com/avajs/ava))などの仮想DOMをサポートするnodeの実行環境を使用してください - -counterのようなシンプルなVueコンポーネントをテストしてこれらのutilsの使い方を感じてみましょう。 - - -```js -// counter.js - -export default { - template: ` -
- {{ count }} - -
- `, - - data () { - return { - count: 0 - } - }, - - methods: { - increment () { - this.count++ - } - } -} - -``` - -このコンポーネントはとても基本的な機能のコンポーネントです、とは言ってもここでテストはできません。`vue-test-utils`というラッパーを使うことでVueコンポーネントとやり取りをします。このラッパーには便利なヘルパーがたくさんあり、複雑な仕様も簡単に書くことができるはずです。さっそく始めましょう。 - -### コンポーネントをラップする方法 - -上に書いたように、ラッパーはコンポーネントと効率よくやり取りをする核となる要素です。手順は以下のようになります。 - -```js -// test utilsからmount()メソッドをインポートします -// コンポーネントをテストします - -import { mount } from 'vue-test-utils' -import Counter from './counter' - -// コンポーネントをマウントすることでラッパーを取得します -const wrapper = mount(Counter) - -// ラッパーをより深く調べるためにconsole.logを実行してみましょう -// あなたのvue-test-utilsはここから始まります -console.log(wrapper) -``` - -既に最初のハードルを越えました。とても簡単にできましたね。このように、ラッパーを上手に使いましょう。 - -### コンポーネントのレンダリングされたHTML出力をテストする - -はじめに、レンダリングされたHTML出力が期待通りに見えることを確認するとよいでしょう。 - -```js -// html出力を取得するために、ラッパーはhtml()メソッドを提供します。 -describe('Counter', () => { - it('renders the correct markup', () => { - expect(wrapper.html()).to.equal('
0
') - }) - - // 要素の存在を調べるのも簡単です。 - it('has a button', () => { - expect(wrapper.contains('button')).to.equal(true) - }) -}) -``` - -簡単だったので、次に行きましょう。 - -### Component data - -効率のいいテストをするにはコンポーネントのデータを変更することがとても便利です。`setData({...})`メソッドはインスタンス上のデータを変更するためのものです。`vm`を使うことでやり取りすることができます。全てのvalueとcomputed propertyを自動的にgetterとしてルートインスタンスに設定をするため、直接アクセスすることができます。 -仕様に応じてデータを変更することが良い場合もある際は、`beforeEach()`を使うと良いでしょう。 - -```js - -describe('Data interactions', () => { - beforeEach(() => { - wrapper.setData({ count: 10 }) - }) - - it('should be set to 10', () => { - expect(wrapper.vm.count).to.equal(10) - }) -}) - -``` - -### インタラクション - -このセクションではラッパーオブジェクトの2つの重要なメソッドを紹介します。 -コンポーネントのHTML要素の中でHTML要素を見つけるために`find()`を呼び出し、`trigger()`でイベントを発生させます。 - -```js - -describe('Trigger an event', () => { - it('button should increment the count', () => { - expect(wrapper.vm.count).to.equal(0) - const button = wrapper.find('button') - button.trigger('click') - expect(wrapper.vm.count).to.equal(1) - }) -}) - -``` - -### 非同期DOMの更新処理 - -Vueは、内部の `tick` 'に基づいてDOMを更新し、たくさんのデータが変更された場合に不要な再レンダリングを防止します。そのため、`Vue.nextTick(...)`はDOMの変更が正しく適用されたことを確認し、その直後にコールバックを渡すことができます。幸いにも、`vue-test-utils`はここでもカバーされています。`update()`メソッドは強制的に再レンダリングし、その後で `html()`を使うと更新されたDOMがreturnされます。 - -```js - -describe('DOM updates', () => { - it('html() should account for async DOM updates', () => { - expect(wrapper.html()).to.equal('
0
') - wrapper.setData({ count: 23 }) - wrapper.update() - expect(wrapper.html()).to.equal('
23
') - }) -}) - -``` - -## 驚き - -もちろん`vue-test-utils`はこれだけではありません。[提供されているAPI](SUMMARY.md)の一覧で探すことをおすすめします。 - -`vue-test-utils`と様々なテストランナーにて問題が起こった場合、公式のリポジトリを見てください。[vue-test-utils](https://github.com/vuejs/vue-test-utils) diff --git a/docs/ja/guides/README.md b/docs/ja/guides/README.md index 8e8b6119d..497ec8645 100644 --- a/docs/ja/guides/README.md +++ b/docs/ja/guides/README.md @@ -1,9 +1,9 @@ -# Guides +# ガイド -* [Getting Started](./getting-started.md) -* [Common Tips](./common-tips.md) -* [Choosing a test runner](./choosing-a-test-runner.md) -* [Using with Jest](./using-with-jest.md) -* [Testing SFCs with Jest](./testing-SFCs-with-jest.md) -* [Testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md) -* [Using with Vuex](./using-with-vuex.md) +* [はじめに](./getting-started.md) +* [共通のヒント](./common-tips.md) +* [テストランナーを選ぶ](./choosing-a-test-runner.md) +* [Jestと一緒に使う](./using-with-jest.md) +* [Jestによる単一ファイルコンポーネントのテスト](./testing-SFCs-with-jest.md) +* [Mocha + webpackによる単一ファイルコンポーネントのテスト](./testing-SFCs-with-mocha-webpack.md) +* [Vuexと一緒に使う](./using-with-vuex.md) diff --git a/docs/ja/guides/choosing-a-test-runner.md b/docs/ja/guides/choosing-a-test-runner.md index 692264d5d..5fd3eaac3 100644 --- a/docs/ja/guides/choosing-a-test-runner.md +++ b/docs/ja/guides/choosing-a-test-runner.md @@ -1,45 +1,44 @@ -# Choosing a test runner +# テストランナーを選ぶ -A test runner is a program that runs tests. +テストランナーは、テストを実行するプログラムです。 -There are many popular JavaScript test runners, and `vue-test-utils` works with all of them. It's test runner agnostic. +多くの一般的なJavaScriptテストランナーがあり、`vue-test-utils`はそれらすべてで動作します。テストランナーにとらわれません。 -There are a few things to consider when choosing a test runner though: feature set, performance, and support for single-file component (SFC) pre-compilation. After carefully comparing existing libraries, here are two test runners that we recommend: +テストランナーを選択する際には、フィーチャセット、パフォーマンス、およびシングルファイルコンポーネント(SFC)の事前コンパイルのサポートが考慮されます。既存のライブラリを慎重に比較した上で、以下の2つのテストランナーをお勧めします。: -- [Jest](https://facebook.github.io/jest/docs/en/getting-started.html#content) is the most fully featured test runner. It requires the least configuration, sets up JSDOM by default, provides built-in assertions, and has a great command line user experience. However, you will need a preprocessor to be able to import SFC components in your tests. We have created the `jest-vue` preprocessor which can handle most common SFC features, but it currently does not have 100% feature parity with `vue-loader`. +- [Jest](https://facebook.github.io/jest/docs/en/getting-started.html#content) は最も充実したテストランナーです。最小の設定が必要で、デフォルトでJSDOMを設定し、組み込みのアサーションを提供し、コマンドラインのユーザーエクスペリエンスが優れています。ただし、テストでSFCコンポーネントをインポートできるようにするには、プリプロセッサが必要です。最も一般的なSFC機能を処理できる `jest-vue`プリプロセッサを作成しましたが、現在`vue-loader`に100%の機能パリティを持っていません。 -- [mocha-webpack](https://github.com/zinserjan/mocha-webpack) is a wrapper around webpack + Mocha, but with a more streamlined interface and watch mode. The benefits of this setup is that we can get complete SFC support via webpack + `vue-loader`, but it requires more configuration upfront. +- [mocha-webpack](https://github.com/zinserjan/mocha-webpack) はwebpack + Mochaのラッパですが、より合理的なインターフェースとwatchモードを備えています。この設定のメリットは、webpack + `vue-loader`を使用して完全なSFCサポートを得ることができるということですが、より多くの設定を行う必要があります。 -## Browser Environment +## ブラウザ環境 -`vue-test-utils` relies on a browser environment. Technically you can run it in a real browser, but it's not recommended due to the complexity of launching real browsers on different platforms. Instead, we recommend running the tests in Node.js with a virtual browser environment using [JSDOM](https://github.com/tmpvar/jsdom). +`vue-test-utils`はブラウザ環境に依存します。技術的には、実際のブラウザで実行することはできますが、異なるプラットフォーム上で実際のブラウザを起動するという複雑さのため、お勧めできません。代わりに、[JSDOM](https://github.com/tmpvar/jsdom)を使用して仮想ブラウザ環境でNode.jsでテストを実行することをお勧めします。 -The Jest test runner sets up JSDOM automatically. For other test runners, you can manually set up JSDOM for the tests using [jsdom-global](https://github.com/rstacruz/jsdom-global) in the entry for your tests: +JestテストランナーはJSDOMを自動的に設定します。他のテストランナーの場合は、[jsdom-global](https://github.com/rstacruz/jsdom-global) を使用してテスト用のJSDOMを手動で設定できます。: ``` bash npm install --save-dev jsdom jsdom-global ``` --- ``` js -// in test setup / entry +// テストのセットアップと登録 require('jsdom-global')() ``` -## Testing Single-File Components +## 単一ファイルコンポーネントをテストする -Single-file Vue components (SFCs) require pre-compilation before they can be run in Node or in the browser. There are two recommended ways to perform the compilation: with a Jest preprocessor, or directly use webpack. +単一ファイルコンポーネントは、ノードまたはブラウザで実行する前に事前コンパイルが必要です。コンパイルを実行するには、Jestプリプロセッサを使用する方法とwebpackを直接使用する方法が推奨されます。 -The `jest-vue` preprocessor supports basic SFC functionalities, but currently does not handle style blocks or custom blocks, which are only supported in `vue-loader`. If you rely on these features or other webpack-specific configurations, you will need to use a webpack + `vue-loader` based setup. +The `jest-vue`プリプロセッサは基本的なSFC機能をサポートしていますが、現在`vue-loader`でのみサポートされているスタイルブロックやカスタムブロックは扱いません。これらの機能やその他のWebpack固有の設定に依存する場合は、webpack + `vue-loader`ベースの設定を使用する必要があります。 -Read the following guides for different setups: +さまざまな設定については、次のガイドをお読みください。: +- [Jestによる単一ファイルコンポーネントのテスト](./testing-SFCs-with-jest.md) +- [Mocha + webpackによる単一ファイルコンポーネントのテスト](./testing-SFCs-with-mocha-webpack.md) -- [Testing SFCs with Jest](./testing-SFCs-with-jest.md) -- [Testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md) +## リソース -## Resources - -- [Test runner performance comparison](https://github.com/eddyerburgh/vue-unit-test-perf-comparison) -- [Example project with Jest](https://github.com/vuejs/vue-test-utils-jest-example) -- [Example project with Mocha](https://github.com/vuejs/vue-test-utils-mocha-webpack-example) -- [Example project with tape](https://github.com/eddyerburgh/vue-test-utils-tape-example) -- [Example project with AVA](https://github.com/eddyerburgh/vue-test-utils-ava-example) +- [テストランナーの性能比較](https://github.com/eddyerburgh/vue-unit-test-perf-comparison) +- [Jestのプロジェクト例](https://github.com/vuejs/vue-test-utils-jest-example) +- [Mochaのプロジェクト例](https://github.com/vuejs/vue-test-utils-mocha-webpack-example) +- [tapeのプロジェクト例](https://github.com/eddyerburgh/vue-test-utils-tape-example) +- [AVAのプロジェクト例](https://github.com/eddyerburgh/vue-test-utils-ava-example) diff --git a/docs/ja/guides/common-tips.md b/docs/ja/guides/common-tips.md index 978bf3586..9b895a4ef 100644 --- a/docs/ja/guides/common-tips.md +++ b/docs/ja/guides/common-tips.md @@ -1,68 +1,68 @@ -# Common Tips +# よくあるヒント -## Knowing What to Test +## なにをテストするかを知る -For UI components, we don't recommend aiming for complete line-based coverage, because it leads to too much focus on the internal implementation details of the components and could result in brittle tests. +UIコンポーネントでは、コンポーネントの内部実装の詳細に集中しすぎて脆弱なテストが発生する可能性があるため、完全なラインベースのカバレッジを目指すことはお勧めしません。 -Instead, we recommend writing tests that assert your component's public interface, and treat its internals as a black box. A single test case would assert that some input (user interaction or change of props) provided to the component results in the expected output (render result or emitted custom events). +代わりに、コンポーネントのパブリックインターフェイスを検証するテストを作成し、内部をブラックボックスとして扱うことをお勧めします。単一のテストケースでは、コンポーネントに提供された入力(ユーザーのやり取りやpropsの変更)によって、期待される出力(結果のレンダリングまたはカスタムイベントの出力)が行われることが示されます。 -For example, for the `Counter` component which increments a display counter by 1 each time a button is clicked, its test case would simulate the click and assert that the rendered output has increased by 1. The test doesn't care about how the Counter increments the value, it only cares about the input and the output. +たとえば、ボタンがクリックされるたびに表示カウンタを1ずつインクリメントする `Counter`コンポーネントの場合、そのテストケースはクリックをシミュレートし、レンダリングされた出力が1つ増加したのか検証します。カウンタは値をインクリメントし、入力と出力のみを扱います。 -The benefit of this approach is that as long as your component's public interface remains the same, your tests will pass no matter how the component's internal implementation changes over time. +このアプローチの利点は、コンポーネントのパブリックインターフェイスが同じままである限り、コンポーネントの内部実装が時間の経過とともにどのように変化してもテストは合格になります。 -This topic is discussed with more details in a [great presentation by Matt O'Connell](http://slides.com/mattoconnell/deck#/). +このトピックは、[Matt O'Connellによる偉大なプレゼンテーション](http://slides.com/mattoconnell/deck#/)で詳細に説明されています。 -## Shallow Rendering +## Shallowレンダリング -In unit tests, we typically want to focus on the component being tested as an isolated unit and avoid indirectly asserting the behavior of its child components. +単体テストでは、通常、単体テストとしてテスト対象のコンポーネントに焦点を当て、子コンポーネントの動作を間接的に検証することを避けたいと考えています。 -In addition, for components that contain many child components, the entire rendered tree can get really big. Repeatedly rendering all child components could slow down our tests. +さらに、多くの子コンポーネントを含むコンポーネントの場合、レンダリングされたツリー全体が非常に大きくなる可能性があります。すべての子コンポーネントを繰り返しレンダリングすると、テストが遅くなる可能性があります。 -`vue-test-utils` allows you to mount a component without rendering its child components (by stubbing them) with the `shallow` method: +`vue-test-utils`を使うと、`shallow`メソッドを使って子コンポーネントを(スタブによって)レンダリングせずにコンポーネントをマウントすることができます: ```js import { shallow } from 'vue-test-utils' -const wrapper = shallow(Component) // returns a Wrapper containing a mounted Component instance -wrapper.vm // the mounted Vue instance +const wrapper = shallow(Component) // Componentインスタンスを含むWrapperを返します。 +wrapper.vm // マウントされたVueインスタンス ``` -## Asserting Emitted Events +## イベントの発行を検証する -Each mounted wrapper automatically records all events emitted by the underlying Vue instance. You can retrieve the recorded events using the `wrapper.emitted()` method: +マウントされた各ラッパは、基になるVueインスタンスによって発行されたすべてのイベントを自動的に記録します。`wrapper.emitted()`を使って、記録されたイベントを取り出すことができます: ``` js wrapper.vm.$emit('foo') wrapper.vm.$emit('foo', 123) /* -wrapper.emitted() returns the following object: +wrapper.emitted()は次のオブジェクトを返します: { foo: [[], [123]] } */ ``` -You can then make assertions based on these data: +次に、これらのデータに基づいて検証することもできます。 ``` js import { expect } from 'chai' -// assert event has been emitted +// イベントが発行されたか検証する expect(wrapper.emitted().foo).toBeTruthy() -// assert event count +// イベント数を検証する expect(wrapper.emitted().foo.length).toBe(2) -// assert event payload +// イベントを含んでいるか検証する expect(wrapper.emitted().foo[1]).toEqual([123]) ``` -You can also get an Array of the events in their emit order by calling [wrapper.emittedByOrder()](../api/emittedByOrder.md). +また、[wrapper.emittedByOrder()](../api/emittedByOrder.md)を呼び出すことで、イベントの配列をエミット順に取得することもできます。 -## Manipulating Component State +## コンポーネントの状態を操作する -You can directly manipulate the state of the component using the `setData` or `setProps` method on the wrapper: +ラッパの `setData`メソッドまたは`setProps`メソッドを使って、コンポーネントの状態を直接操作することができます。: ```js wrapper.setData({ count: 10 }) @@ -70,9 +70,9 @@ wrapper.setData({ count: 10 }) wrapper.setProps({ foo: 'bar' }) ``` -## Mocking Props +## Propsをモックする -You can pass props to the component using Vue's built-in `propsData` option: +Vueに組み込まれた`propsData`オプションを使用してコンポーネントにpropsを渡すことができます。: ```js import { mount } from 'vue-test-utils' @@ -84,34 +84,34 @@ mount(Component, { }) ``` -You can also update the props of an already-mounted component with the `wrapper.setProps({})` method. +`wrapper.setProps({})`メソッドを使用して、すでにマウントされているコンポーネントのpropsを更新することもできます。 -*For a full list of options, please see the [mount options section](./api/options.md) of the docs.* +*オプションの完全なリストについては、ドキュメントの [マウントオプションのセクション](./api/options.md)を参照してください。* -## Applying Global Plugins and Mixins +## グローバルプラグインとミックスインの適用 -Some of the components may rely on features injected by a global plugin or mixin, for example `vuex` and `vue-router`. +コンポーネントの中には、グローバルプラグインやmixinによって注入された機能 (例:`vuex`、`vue-router`など)に依存するものもあります。 -If you are writing tests for components in a specific app, you can setup the same global plugins and mixins once in the entry of your tests. But in some cases, for example testing a generic component suite that may get shared across different apps, it's better to test your components in a more isolated setup, without polluting the global `Vue` constructor. We can use the [createLocalVue](../api/createLocalVue.md) method to achieve that: +特定のアプリケーションでコンポーネントのテストを作成している場合は、同じグローバルプラグインとミックスインをテストのエントリに設定できます。しかし、異なるアプリケーション間で共有される可能性のあるジェネリックコンポーネントスイートをテストする場合など、グローバルな `Vue`コンストラクタを汚染することなく、より孤立した設定でコンポーネントをテストする方が良い場合もあります。[createLocalVue](../api/createLocalVue.md)メソッドを使用すると、次のことができます。: ``` js import createLocalVue from 'vue-test-utils' -// create an extended Vue constructor +// 拡張されたVueコンストラクタを作成する const localVue = createLocalVue() -// install plugins as normal +// プラグインをインストールする localVue.use(MyPlugin) -// pass the localVue to the mount options +// localVueをマウントオプションに渡す mount(Component, { localVue }) ``` -## Mocking Injections +## モックの注入 -Another strategy for injected properties is simply mocking them. You can do that with the `mocks` option: +単純なモックを注入するための別の戦略として`mocks`オプションで行うことができます: ```js import { mount } from 'vue-test-utils' @@ -125,11 +125,12 @@ const $route = { mount(Component, { mocks: { - $route // adds the mocked $route object to the Vue instance before mounting component + $route // コンポーネントをマウントする前に、モックした$routeオブジェクトをVueインスタンスに追加します。 } }) ``` -## Dealing with Routing +## ルーティングの扱い -Since routing by definition has to do with the overall structure of the application and involves multiple components, it is best tested via integration or end-to-end tests. For individual components that rely on `vue-router` features, you can mock them using the techniques mentioned above. +定義によるルーティングは、アプリケーションの全体的な構造と関連し、複数のコンポーネントが関係するため、統合テストまたはエンドツーエンドテストによってよくテストされます。 +`vue-router`機能に依存する個々のコンポーネントについては、上記の手法を使ってモックすることができます。 diff --git a/docs/ja/guides/getting-started.md b/docs/ja/guides/getting-started.md index c732ac1a6..35e957bbc 100644 --- a/docs/ja/guides/getting-started.md +++ b/docs/ja/guides/getting-started.md @@ -1,8 +1,8 @@ -# Getting Started +# 入門 -## Setup +## セットアップ -To get a quick taste of using `vue-test-utils`, clone our demo repository with basic setup and install the dependencies: +`vue-test-utils`の使い方を体験したい場合は、基本設定としてデモリポジトリをクローンし、依存関係をインストールしてください。 ``` bash git clone https://github.com/vuejs/vue-test-utils-getting-started @@ -10,7 +10,7 @@ cd vue-test-utils-getting-started npm install ``` -You will see that the project includes a simple component, `counter.js`: +プロジェクトには単純なコンポーネント、`counter.js`が含まれています。 ```js // counter.js @@ -37,61 +37,61 @@ export default { } ``` -### Mounting Components +### マウンティングコンポーネント -`vue-test-utils` tests Vue components by mounting them in isolation, mocking the necessary inputs (props, injections and user events) and asserting the outputs (render result, emitted custom events). +`vue-test-utils`はVueコンポーネントを隔離してマウントし、必要な入力(props,注入、ユーザイベント)をモックにし出力されたものを検証することで結果を出力します。 -Mounted components are returned inside a [Wrapper](./api/wrapper.md), which exposes many convenience methods for manipulating, traversing and querying the underlying Vue component instance. +マウントされたコンポーネントは[Wrapper](./api/wrapper.md)の内部に返されます。これは、基のVueコンポーネントインスタンスを操作、トラバース、クエリングするための多くの便利なメソッドを公開しています。 -You can create wrappers using the `mount` method. Let's create a file called `test.js`: +`mount`メソッドを使ってラッパを作成することができます。 `test.js`というファイルを作りましょう。: ```js // test.js -// Import the mount() method from the test utils -// and the component you want to test +// test utilsからmount()メソッドをインポート +// テストするコンポーネント import { mount } from 'vue-test-utils' import Counter from './counter' -// Now mount the component and you have the wrapper +//コンポーネントがマウントされ、ラッパが作成されます。 const wrapper = mount(Counter) -// You can access the actual Vue instance via wrapper.vm +// wrapper.vmを介して実際のVueインスタンスにアクセスできます const vm = wrapper.vm -// To inspect the wrapper deeper just log it to the console -// and your adventure with the vue-test-utils begins +// ラッパをより深く調べるためにコンソールに記録してみましょう。 +// vue-test-utilsでのあなたの冒険はここから始まります。 console.log(wrapper) ``` -### Test rendered HTML output of the component +### コンポーネントのレンダリングされたHTML出力をテストする -Now that we have the wrapper, the first thing we can do is to verify that the rendered HTML output of the component matches what is expected. +ラッパが完成したので、コンポーネントのレンダリングされたHTML出力が、期待されるものと一致することを確認します。 ```js import { mount } from 'vue-test-utils' import Counter from './counter' describe('Counter', () => { - // Now mount the component and you have the wrapper + // コンポーネントがマウントされ、ラッパが作成されます。 const wrapper = mount(Counter) it('renders the correct markup', () => { expect(wrapper.html()).toContain('0') }) - // it's also easy to check for the existence of elements + // 要素の存在を確認することも簡単です it('has a button', () => { expect(wrapper.contains('button')).toBe(true) }) }) ``` -Now run the tests with `npm test`. You should see the tests passing. +次に、`npm test`でテストを実行します。テストが合格になるはずです。 -### Simulating User Interaction +### ユーザのインタラクションをシミュレーションする -Our counter should increment the count when the user clicks the button. To simulate the behavior, we need to first locate the button with `wrapper.find()`, which returns a **wrapper for the button element**. We can then simulate the click by calling `.trigger()` on the button wrapper: +ユーザがボタンをクリックすると、カウンターがカウントをインクリメントする必要があります。この振る舞いをシミュレートするには、まず**button要素のラッパ**を返す`wrapper.find()`を使ってボタンを見つける必要があります。ボタンのラッパで`.trigger()`を呼び出すことでクリックをシミュレートできます。: ```js it('button click should increment the count', () => { @@ -102,13 +102,13 @@ it('button click should increment the count', () => { }) ``` -### What about `nextTick`? +### `nextTick`はどうですか? -Vue batches pending DOM updates and applies them asynchronously to prevent unnecessary re-renders caused by multiple data mutations. This is why in practice we often have to use `Vue.nextTick` to wait until Vue has performed the actual DOM update after we trigger some state change. +VueバッチはDOM更新を保留し、非同期的に適用して、複数のデータのミューテーションに起因する不要な再レンダリングを防ぎます。実際には、Vueが何らかの状態変更をトリガーした後にVueが実際のDOM更新を実行するまで待つために、`Vue.nextTick`を使用しなければならないからです。 -To simplify usage, `vue-test-utils` applies all updates synchronously so you don't need to use `Vue.nextTick` in your tests. +使い方を簡単にするため、 `vue-test-utils`はすべての更新を同期的に適用するので、テストで`Vue.nextTick`を使う必要はありません。 -## What's Next +## 次はなにをするのか -- Integrate `vue-test-utils` into your project by [choosing a test runner](./choosing-a-test-runner.md) -- Learn more about [common techniques when writing tests](./common-tips.md) +- [テストランナーを選ぶ](./choosing-a-test-runner.md)で`vue-test-utils`をプロジェクトに組み込みます。 +- [テストを書くときの一般的なテクニック](./common-tips.md)についてもっと知る。 diff --git a/docs/ja/guides/testing-SFCs-with-jest.md b/docs/ja/guides/testing-SFCs-with-jest.md index 0bd70718d..082da26eb 100644 --- a/docs/ja/guides/testing-SFCs-with-jest.md +++ b/docs/ja/guides/testing-SFCs-with-jest.md @@ -1,20 +1,20 @@ -# Testing Single File Components with Jest +# Jestを使用した単一ファイルコンポーネントのテスト -> An example project for this setup is available on [GitHub](https://github.com/vuejs/vue-test-utils-jest-example). +> このセットアップのサンプルプロジェクトは、 [GitHub](https://github.com/vuejs/vue-test-utils-jest-example)にあります。 -Jest is a test runner developed by Facebook, aiming to deliver a battery-included unit testing solution. You can learn more about Jest on its [official documentation](https://facebook.github.io/jest/). +JestはFacebookが開発したテストランナーであり、ユニットテストソリューションの提供を目指しています。 Jestの詳細については、[公式ドキュメント](https://facebook.github.io/jest/)を参照してください。 -## Setting up Jest +## Jestのセットアップ -We will assume you are starting with a setup that already has webpack, vue-loader and Babel properly configured - e.g. the `webpack-simple` template scaffolded by `vue-cli`. +既に、webpack、vue-loader、およびBabelが正しく設定されている設定から始めると仮定します。例:`vue-cli`によってscaffoldされた`webpack-simple`テンプレートです。 -The first thing to do is install Jest and `vue-test-utils`: +まずJestと `vue-test-utils`をインストールします。: ```bash $ npm install --save-dev jest vue-test-utils ``` -Next we need to define a unit script in our `package.json`. +次に、`package.json`にスクリプトを定義する必要があります。 ```json // package.json @@ -25,15 +25,15 @@ Next we need to define a unit script in our `package.json`. } ``` -## Processing SFCs in Jest +## Jestにおける単一ファイルコンポーネントの処理 -To teach Jest how to process `*.vue` files, we will need to install and configure the `jest-vue` preprocessor: +Jestに `*.vue`ファイルの処理方法を教えるために、`jest-vue`プリプロセッサをインストールして設定する必要があります。: ``` bash npm install --save-dev jest-vue ``` -Next, create a `jest` block in `package.json`: +次に、`package.json`に`jest`ブロックを作成します: ``` json { @@ -42,11 +42,11 @@ Next, create a `jest` block in `package.json`: "moduleFileExtensions": [ "js", "json", - // tell Jest to handle *.vue files + // *.vueファイルを処理するようにJestに指示する "vue" ], "transform": { - // process *.vue files with jest-vue + // jest-vueで*.vueファイルを処理する ".*\\.(vue)$": "/node_modules/jest-vue" }, "mapCoverage": true @@ -54,18 +54,18 @@ Next, create a `jest` block in `package.json`: } ``` -> **Note:** `jest-vue` currently does not support all the features of `vue-loader`, for example custom block support and style loading. In addition, some webpack-specific features such as code-splitting are not supported either. To use them, read the guide on [testing SFCs with Mocha + webpack](./testing-SFCs-with-mocha-webpack.md). +> **注意:** `jest-vue`は現在、カスタムブロックのサポートやスタイルのロードなど、`vue-loader`のすべての機能をサポートしていません。さらに、コード分割などのWebpack固有の機能はサポートされていません。それらを使用するには、[Mocha + webpackによる単一ファイルコンポーネントのテスト](./testing-SFCs-with-mocha-webpack.md)のガイドをお読みください。 -## Handling webpack Aliases +## Webpackエイリアスの処理 -If you use a resolve alias in the webpack config, e.g. aliasing `@` to `/src`, you need to add a matching config for Jest as well, using the `moduleNameMapper` option: +webpack設定で、`@`を`/src`のエイリアスにしたいといった場合、`moduleNameMapper`オプションを使ってJestの設定を追加する必要があります ``` json { // ... "jest": { // ... - // support the same @ -> src alias mapping in source code + // ソースコードにある@ を src へと割当てる "moduleNameMapper": { "^@/(.*)$": "/src/$1" } @@ -73,15 +73,15 @@ If you use a resolve alias in the webpack config, e.g. aliasing `@` to `/src`, y } ``` -## Configuring Babel for Jest +## JestのためのBabelの設定 -Although latest versions of Node already supports most ES2015 features, you may still want to use ES modules syntax and stage-x features in your tests. For that we need to install `babel-jest`: +nodeの最新バージョンではすでにほとんどのES2015機能がサポートされていますが、テストではESモジュール構文とstage-x機能を使用することができます。そのために、`babel-jest`をインストールする必要があります。 ``` bash npm install --save-dev babel-jest ``` -Next, we need to tell Jest to process JavaScript test files with `babel-jest` by adding an entry under `jest.transform` in `package.json`: +次に、Jestに`babel-jest`でJavaScriptテストファイルを処理するよう、`package.json`の`jest.transform`の中にエントリを追加する必要があります。: ``` json { @@ -90,7 +90,7 @@ Next, we need to tell Jest to process JavaScript test files with `babel-jest` by // ... "transform": { // ... - // process js with babel-jest + // babel-jestでjsを処理する "^.+\\.js$": "/node_modules/babel-jest" }, // ... @@ -98,15 +98,15 @@ Next, we need to tell Jest to process JavaScript test files with `babel-jest` by } ``` -> By default, `babel-jest` automatically configures itself as long as it's installed. However, because we have explicitly added a transform for `*.vue` files, we now need to explicitly configure `babel-jest` as well. +> デフォルトでは、`babel-jest`はインストールされている間自動的に設定します。しかし、`*.vue`ファイルのための変換を明示的に追加したため、`babel-jest`も明示的に設定する必要があります。 -Assuming using `babel-preset-env` with webpack, the default Babel config disables ES modules transpilation because webpack already knows how to handle ES modules. However, we do need to enable it for our tests because Jest tests run directly in Node. +webpackで `babel-preset-env`を使用するとした場合、webpackはESモジュールの処理方法を既に知っているので、デフォルトのBabel configはESモジュールのトランスパイルを無効にします。ただし、JestテストはNodeで直接実行されるため、テスト用に有効にする必要があります。 -Also, we can tell `babel-preset-env` to target the Node version we are using. This skips transpiling unnecessary features and makes our tests boot faster. +また、`babel-preset-env`に、使用しているNodeのバージョンを指定するように指示することもできます。これにより不要な機能をスキップし、テストがより速く起動します。 -To apply these options only for tests, put them in a separate config under `env.test` (this will be automatically picked up by `babel-jest`). +これらのオプションをテストのためだけに適用するには、 `env.test`の下に別の設定をします(これは`babel-jest`によって自動的に選択されます)。 -Example `.babelrc`: +例 `.babelrc`: ``` json { @@ -123,24 +123,24 @@ Example `.babelrc`: } ``` -### Snapshot Testing +### スナップショットテスト -You can use [`vue-server-renderer`](https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer) to render a component into a string so that it can be saved as a snapshot for [Jest snapshot testing](https://facebook.github.io/jest/docs/en/snapshot-testing.html). +[`vue-server-renderer`](https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer) を使ってコンポーネントを文字列にレンダリングして保存することができます。[Jestのスナップショットテスト](https://facebook.github.io/jest/docs/en/snapshot-testing.html) のスナップショットとして表示されます。 -The render result of `vue-server-renderer` includes a few SSR-specific attributes, and it ignores whitespaces, making it harder to scan a diff. We can improve the saved snapshot with a custom serializer: +`vue-server-renderer`のレンダリング結果には、いくつかのSSR固有の属性が含まれており、空白を無視するため、diffをスキャンするのが難しくなります。カスタムシリアライザを使用して、保存されたスナップショットを改善することができます。 ``` bash npm install --save-dev jest-serializer-vue ``` -Then configure it in `package.json`: +次に`package.json`で設定します: ``` json { // ... "jest": { // ... - // serializer for snapshots + // スナップショットのシリアライザ "snapshotSerializers": [ "/node_modules/jest-serializer-vue" ] @@ -148,15 +148,15 @@ Then configure it in `package.json`: } ``` -### Placing Test Files +### テストファイルの配置 -By default, jest will recursively pick up all files that have a `.spec.js` or `.test.js` extension in the entire project. If this does not fit your needs, it's possible [to change the testRegex](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string) in the config section in the `package.json` file. +デフォルトでは、jestはプロジェクト全体で `.spec.js`または`.test.js`拡張子を持つすべてのファイルを再帰的に取得します。これがあなたのニーズに合わない場合は、`package.json`ファイルのconfigセクションで[testRegexを変更する](https://facebook.github.io/jest/docs/en/configuration.html#testregex-string)ことが可能です。 -Jest recommends creating a `__tests__` directory right next to the code being tested, but feel free to structure your tests as you see fit. Just beware that Jest would create a `__snapshots__` directory next to test files that performs snapshot testing. +Jestは、テスト対象のコードのすぐ隣に`__tests__`ディレクトリを作成することを推奨していますが、適切にテストを構造化することは自由です。 Jestがスナップショットテストを実行するテストファイルの隣に`__snapshots__`ディレクトリを作成することに注意してください。 -### Example Spec +### 仕様例 -If you are familiar with Jasmine, you should feel right at home with Jest's [assertion API](https://facebook.github.io/jest/docs/en/expect.html#content): +あなたがJasmineをよく知っているなら、Jestの[assertion API](https://facebook.github.io/jest/docs/en/expect.html#content)は自宅のように感じるはずです。 ```js import { mount } from 'vue-test-utils' @@ -172,7 +172,7 @@ describe('Component', () => { ### Resources -- [Example project for this setup](https://github.com/vuejs/vue-test-utils-jest-example) -- [Examples and slides from Vue Conf 2017](https://github.com/codebryo/vue-testing-with-jest-conf17) +- [このセットアップのプロジェクト例](https://github.com/vuejs/vue-test-utils-jest-example) +- [Vue Conf 2017のスライド](https://github.com/codebryo/vue-testing-with-jest-conf17) - [Jest](https://facebook.github.io/jest/) - [Babel preset env](https://github.com/babel/babel-preset-env) diff --git a/docs/ja/guides/testing-SFCs-with-mocha-webpack.md b/docs/ja/guides/testing-SFCs-with-mocha-webpack.md index f7013a015..fa86ccc94 100644 --- a/docs/ja/guides/testing-SFCs-with-mocha-webpack.md +++ b/docs/ja/guides/testing-SFCs-with-mocha-webpack.md @@ -1,22 +1,22 @@ -# Testing Single File Components with Mocha + webpack +# Mocha + webpackによる単一ファイルコンポーネントのテスト -> An example project for this setup is available on [GitHub](https://github.com/vuejs/vue-test-utils-mocha-webpack-example). +> このセットアップのサンプルプロジェクトは、 [GitHub](https://github.com/vuejs/vue-test-utils-mocha-webpack-example)にあります。 -Another strategy for testing SFCs is compiling all our tests via webpack and then run it in a test runner. The advantage of this approach is that it gives us full support for all webpack and `vue-loader` features, so we don't have to make compromises in our source code. +単一ファイルコンポーネントをテストするためのもう一つの戦略は、webpackを使用してすべてのテストをコンパイルし、それをテストランナーで実行することです。このアプローチの利点は、すべてのwebpackと`vue-loader`機能を完全にサポートしていることです。ソースコードに妥協する必要はありません。 -You can technically use any test runner you like and manually wire things together, but we've found [`mocha-webpack`](https://github.com/zinserjan/mocha-webpack) to provide a very streamlined experience for this particular task. +技術的に好きなテストランナーを使用して結びつけることができますが、この特定の作業に非常に合理的な経験を提供するために[`mocha-webpack`](https://github.com/zinserjan/mocha-webpack)を見つけました。 -## Setting Up `mocha-webpack` +## `mocha-webpack`の設定 -We will assume you are starting with a setup that already has webpack, vue-loader and Babel properly configured - e.g. the `webpack-simple` template scaffolded by `vue-cli`. +既に、webpack、vue-loader、およびBabelが正しく設定されている設定から始めると仮定します。例:`vue-cli`によってscaffoldされた`webpack-simple`テンプレートです。 -The first thing to do is installing test dependencies: +最初に行うことは、テストの依存関係をインストールすることです。: ``` bash npm install --save-dev vue-test-utils mocha mocha-webpack ``` -Next we need to define a test script in our `package.json`. +次に、`package.json`にスクリプトを定義する必要があります。 ```json // package.json @@ -27,19 +27,19 @@ Next we need to define a test script in our `package.json`. } ``` -A few things to note here: +ここで注意すべき点がいくつかあります。: -- The `--webpack-config` flag specifies the webpack config file to use for the tests. In most cases, this would be identical to the config you use for the actual project with one small tweak. We will talk about this later. +- `--webpack-config`フラグはテストに使うwebpack設定ファイルを指定します。ほとんどの場合、これは実際のプロジェクトで使用する設定と同じですが、小さな調整が1つあります。これについては後で話します。 -- The `--require` flag ensures the file `test/setup.js` is run before any tests, in which we can setup the global environment for our tests to be run in. +- `--require`フラグは、テストの前に`test/setup.js`ファイルが実行されることを保証します。このテストでは、テストを実行するためのグローバル環境を設定できます。 -- The final argument is a glob for the test files to be included in the test bundle. +- 最後の引数は、テストバンドルに含まれるテストファイルのグロブです。 -### Extra webpack Configuration +### 別のwebpackの設定 -#### Externalizing NPM Dependencies +#### NPM依存関係の外部化 -In our tests we will likely import a number of NPM dependencies - some of these modules may be written without browser usage in mind and simply cannot be bundled properly by webpack. Another consideration is externalizing dependencies greatly improves test boot up speed. We can externalize all NPM dependencies with `webpack-node-externals`: +私たちのテストでは、いくつかのNPM依存関係をインポートする可能性があります。これらのモジュールの中には、ブラウザの使用を念頭に置いて記述されているものもあれば、webpackによって適切にバンドルされていないものもあります。依存関係を外部化することにより、テストの起動速度が大幅に向上するというもう一つの考慮すべき点としてあります。`webpack-node-externals`を使ってNPMの依存関係をすべて外部化することができます。: ```js // webpack.config.js @@ -51,9 +51,9 @@ module.exports = { } ``` -#### Source Maps +#### ソースマップ -Source maps need to be inlined to be picked up by `mocha-webpack`. The recommended config is: +ソースマップは、`mocha-webpack`によってピックアップされるようにインライン化する必要があります。推奨設定は次のとおりです。: ``` js module.exports = { @@ -62,49 +62,49 @@ module.exports = { } ``` -If debugging via IDE, it's also recommended to add the following: +IDE経由でデバッグする場合は、以下を追加することをお勧めします。: ``` js module.exports = { // ... output: { // ... - // use absolute paths in sourcemaps (important for debugging via IDE) + // ソースマップで絶対パスを使用する(IDE経由のデバッグで重要) devtoolModuleFilenameTemplate: '[absolute-resource-path]', devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]' } } ``` -### Setting Up Browser Environment +### ブラウザ環境の設定 -`vue-test-utils` requires a browser environment to run. We can simulate it in Node.js using `jsdom-global`: +`vue-test-utils`はブラウザ環境を必要とします。 `jsdom-global`を使ってNode.jsでシミュレーションすることができます。: ```bash npm install --save-dev jsdom jsdom-global ``` -Then in `test/setup.js`: +次に、`test/setup.js`の中で: ``` js require('jsdom-global')() ``` -This adds a browser environment to node, so that `vue-test-utils` can run correctly. +これにより、nodeにブラウザ環境が追加され、 `vue-test-utils`が正しく動作するようになります。 -### Picking an Assertion Library +### 検証ライブラリのピッキング -[Chai](http://chaijs.com/) is a popular assertion library that is commonly used alongside Mocha. You may also want to check out [Sinon](http://sinonjs.org/) for creating spies and stubs. +[Chai](http://chaijs.com/) is Mochaと並行して一般的に使用される一般的なアサーションライブラリです。また、スパイとスタブを作成するための[Sinon](http://sinonjs.org/) をチェックしてみてください。 -Alternatively you can use `expect` which is now part of Jest, and exposes [the exact same API](http://facebook.github.io/jest/docs/en/expect.html#content) in Jest docs. +あるいは、Jestの一部である `expect`を使うことができ、Jest docsにある[まったく同じAPI](http://facebook.github.io/jest/docs/en/expect.html#content)を公開しています。 -We will be using `expect` here and make it globally available so that we don't have to import it in every test: +ここで`expect`を使用してグローバルに利用できるようにして、すべてのテストでインポートする必要はありません。 ``` bash npm install --save-dev expect ``` -Then in `test/setup.js`: +次に、`test/setup.js`の中で: ``` js require('jsdom-global')() @@ -112,15 +112,15 @@ require('jsdom-global')() global.expect = require('expect') ``` -### Optimizing Babel for Tests +### テストのためのBabelの最適化 -Notice that we are using `babel-loader` to handle JavaScript. You should already have Babel configured if you are using it in your app via a `.babelrc` file. Here `babel-loader` will automatically use the same config file. +JavaScriptを処理するには `babel-loader`を使用しています。あなたが`.babelrc`ファイルを使ってあなたのアプリでそれを使用しているならば、Babelを設定しておくべきです。`babel-loader`は自動的に同じ設定ファイルを使います。 -One thing to note is that if you are using Node 6+, which already supports the majority of ES2015 features, you can configure a separate Babel [env option](https://babeljs.io/docs/usage/babelrc/#env-option) that only transpiles features that are not already supported in the Node version you are using (e.g. `stage-2` or flow syntax support, etc.) +注意すべき点の1つは、ノード6+を使用している場合、ES2015の大部分の機能を既にサポートしているため、使用しているノードのバージョンではサポートされていない機能のみをトランスパイルするBabelの[envオプション](https://babeljs.io/docs/usage/babelrc/#env-option)を設定できます。(例えば`stage-2`やflow syntax supportなど) -### Adding a test +### テストを追加する -Create a file in `src` named `Counter.vue`: +`Counter.vue`という名前の`src`ファイルを作成します。 ``` html