├── .babelrc
├── .editorconfig
├── .eslintrc
├── .gitattributes
├── .gitignore
├── .npmignore
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── index.d.ts
├── package-lock.json
├── package.json
├── readme.md
├── src
├── assertions
│ ├── count.js
│ ├── displayed.js
│ ├── enabled.js
│ ├── focus.js
│ ├── text.js
│ ├── there.js
│ └── value.js
├── chains
│ └── immediately.js
├── index.js
└── util
│ ├── default-config.js
│ └── element-exists.js
├── test
├── .eslintrc
├── assertions
│ ├── count-test.js
│ ├── displayed-test.js
│ ├── enabled-test.js
│ ├── focus-test.js
│ ├── text-test.js
│ ├── there-test.js
│ └── value-test.js
├── index-test.js
├── stubs
│ ├── fake-client.js
│ ├── fake-element.js
│ └── get-fake-page-element.js
└── util
│ └── element-exists-test.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [ "transform-object-rest-spread" ],
3 | "presets": [ "es2015" ]
4 | }
5 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | end_of_line = lf
6 | charset = utf-8
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [{package.json,*.yml}]
11 | indent_style = space
12 | indent_size = 2
13 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": [
4 | "eslint-config-airbnb/rules/es6",
5 | "@atlassian/atlassian-fecq"
6 | ],
7 | // our custom rules
8 | "rules": {
9 | "space-before-function-paren": [2, { "anonymous": "never", "named": "never" }],
10 | "semi": [2, "always"],
11 | "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "anywhere" }],
12 | "space-after-keywords": [2, "always"],
13 | "react/jsx-indent-props": [2, 4],
14 | "react/jsx-no-bind": [2, {
15 | "ignoreRefs": false,
16 | "allowArrowFunctions": false,
17 | "allowBind": false
18 | }],
19 | // http://eslint.org/docs/rules/quotes.html
20 | // allows "single quotes", "internal "double" quotes" and `es6 backticks`
21 | "quotes": [
22 | 2,
23 | "single"
24 | ],
25 | "eol-last": 2
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.js text eol=lf
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .vscode
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | sudo: false
3 | node_js:
4 | - "8.15.1"
5 | install:
6 | - npm install
7 | script:
8 | - npm test
9 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## 1.0.0:
4 | **Breaking changes**
5 | - `.visible()` is renamed to `.displayed()` to be in line with new WebdriverIO wording
6 | - Requires NodeJS 8 or newer
7 |
8 | **Added feature**
9 | - Compatability with WebdriverIO v5
10 | - TypeScript types are now shipped directly with the `chai-webdriverio` package
11 |
12 | **Bug Fixes:**
13 | - `.focus()`, `.text()`, `.value()` exssertions do now wait until [at least one] selected element matches the assertion, not only until [at least one] element with the given selector exists.
14 |
15 | ## 0.4.3:
16 | **Added feature:**
17 | - added `enabled` assertion
18 |
19 | ## 0.4.2:
20 |
21 | **Bug Fixes:**
22 | - Use `waitForVisible` instead of `waitForExist` in `visible`
23 | - Use `waitUntil` instead of `waitForExist` in `count`
24 |
25 | ## 0.4.1:
26 |
27 | **Bug Fixes:**
28 | - fix error in `visible` assertion introduced in `0.4.0`
29 |
30 | ## 0.4.0:
31 |
32 | **Breaking Changes:**
33 | - elementExists not requires 4 arguments instead of 3, to account for defaultWait time.
34 | - all assertions except `there` will now throw an error when the element doesn't exist, even when negated (`value` and `focus` did not fail when negated, previously)
35 |
36 | **Added features:**
37 | - added `defaultWait` configuration to make `immediately` work as intended
38 | - this is provided to the main initializer (`require('chai-webdriverio').default`) which now accepts an `options` object as the last (optional) argument
39 |
40 | ## 0.3.0:
41 |
42 | Changelog not present up to this version (see commit history)
43 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/index.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | declare namespace Chai {
5 | interface Assertion {
6 | count: (count: number) => void;
7 | focus: () => void;
8 | text: (expected: string|number|RegExp) => void;
9 | there: () => void;
10 | value: (expected: string|number|RegExp) => void;
11 | displayed: () => void;
12 | enabled: () => void;
13 | immediately: Assertion;
14 | }
15 | }
16 |
17 | declare module 'chai-webdriverio' {
18 | interface Options {
19 | defaultWait?: number
20 | }
21 |
22 | function chaiWebdriverIO(client: WebDriver.Client | WebDriver.ClientAsync, options?: Options): (chai: any, utils: any) => void;
23 | export = chaiWebdriverIO;
24 | }
25 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chai-webdriverio",
3 | "version": "1.0.0",
4 | "description": "Chai assertions for use with webdriverio",
5 | "license": "Apache-2.0",
6 | "repository": "marcodejongh/chai-webdriverio",
7 | "main": "dist/index.js",
8 | "typings": "index.d.ts",
9 | "author": {
10 | "name": "Marco De Jongh",
11 | "email": "mdejongh@atlassian.com",
12 | "url": "atlassian.com"
13 | },
14 | "contributors": [
15 | "Joe Marty (https://github.com/mltsy)"
16 | ],
17 | "engines": {
18 | "node": ">= 8.11.0"
19 | },
20 | "scripts": {
21 | "prepublish": "npm run transpile",
22 | "transpile": "node_modules/.bin/babel src -d dist",
23 | "transpile-watch": "node_modules/.bin/babel src -d dist -w",
24 | "test": "mocha \"test/**/*.js\" --compilers js:babel-core/register",
25 | "test-watch": "yarn test -- --watch"
26 | },
27 | "keywords": [
28 | "webdriverio",
29 | "webdriver",
30 | "chai",
31 | "chai matchers",
32 | "assertion helpers"
33 | ],
34 | "devDependencies": {
35 | "babel-cli": "^6.24.0",
36 | "babel-core": "^6.24.0",
37 | "babel-plugin-transform-object-rest-spread": "^6.23.0",
38 | "babel-preset-es2015": "^6.24.0",
39 | "chai": "^4.0.2",
40 | "eslint": "^4.1.0",
41 | "eslint-config-airbnb": "^15.0.0",
42 | "mocha": "^3.2.0",
43 | "proxyquire": "^1.7.11",
44 | "sinon": "^3.0.0",
45 | "sinon-chai": "^2.9.0",
46 | "webdriverio": "^5.0.0"
47 | },
48 | "peerDependencies": {
49 | "chai": "~4.0.1"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # chai-webdriverio  [](https://greenkeeper.io/)
2 |
3 |
4 |
5 | Provides [webdriverio](https://npmjs.org/package/webdriverio) sugar for the [Chai](http://chaijs.com/) assertion library. Allows you to create expressive integration tests:
6 |
7 | ```javascript
8 | expect('.frequency-field').to.have.text('One time')
9 | expect('.toggle-pane').to.not.be.displayed()
10 | ```
11 |
12 | ## What sorts of assertions can we make?
13 |
14 | All assertions start with a [WebdriverIO-compatible selector](http://webdriver.io/guide/usage/selectors.html), for example:
15 |
16 | - `expect('.list')` (CSS selector)
17 | - `expect('a[href=http://google.com]')` (CSS Selector)
18 | - `expect('//BODY/DIV[6]/DIV[1]')` (XPath selector)
19 | - `expect('a*=Save')` (Text selector)
20 |
21 | Then, we can add our assertion to the chain.
22 |
23 | - `expect(selector).to.be.there()` - Test whether [at least one] matching element exists in the DOM
24 | - `expect(selector).to.be.displayed()` - Test whether or not [at least one] matching element is displayed
25 | - `expect(selector).to.have.text('string')` - Test the text value of the selected element(s) against supplied string. Succeeds if at least one element matches exactly
26 | - `expect(selector).to.have.text(/regex/)` - Test the text value of the selected element(s) against the supplied regular expression. Succeeds if at least one element matches
27 | - `expect(selector).to.have.count(number)` - Test how many elements exist in the DOM with the supplied selector
28 | - `expect(selector).to.have.value('x')` - Test that [at least one] selected element has the given value
29 | - `expect(selector).to.have.focus()` - Test that [at least one] selected element has focus
30 |
31 | You can also always add a `not` in there to negate the assertion:
32 |
33 | - `expect(selector).not.to.have.text('property')`
34 |
35 | ## Setup
36 |
37 | Setup is pretty easy. Just:
38 |
39 | ```javascript
40 | var chai = require('chai');
41 | var chaiWebdriver = require('chai-webdriverio').default;
42 | chai.use(chaiWebdriver(browser));
43 |
44 | // And you're good to go!
45 | browser.url('http://github.com');
46 | chai.expect('#site-container h1.heading').to.not.contain.text("I'm a kitty!");
47 | ```
48 |
49 | ## Default Wait Time
50 |
51 | As an optional argument to the initializer, you can add an `options` object in this format:
52 |
53 | ```javascript
54 | var options = {defaultWait: 500} // 500ms
55 | chai.use(chaiWebdriver(browser, options));
56 | ```
57 |
58 | The `defaultWait` parameter will cause chai-webdriverio to wait the specified number of milliseconds
59 | for a given selector to appear before failing (if it is not yet present on the page). You can use `immediately`
60 | to skip this default wait time:
61 |
62 | ```javascript
63 | expect(selector).to.immediately.have.text('string'); // fails immediately if element is not found
64 | ```
65 |
66 | **Beware:** For `immediately` to work, your [implicit wait time in WebdriverIO](http://webdriver.io/guide/testrunner/timeouts.html#Session-Implicit-Wait-Timeout)
67 | must be set to 0. The immediately flag has no way to skip WebdriverIO's implicit wait.
68 |
69 | ## Compatability
70 |
71 | ### WebdriverIO
72 | | WebdriverIO version | Compatible `chai-webdriverio` version |
73 | | ---- | ---- |
74 | | 5.x.x | >= 1.0.0
75 | | 4.x.x | 0.4.3
76 |
77 | ### Node.js
78 |
79 | `chai-webdriverio` version >= 1.0.0 requires Node.js 8.x
80 |
81 | ## Contributing
82 |
83 | so easy.
84 |
85 | ```bash
86 | npm # download the necessary development dependencies
87 | npm transpile # compile ES6 into javascript
88 | npm test # build and run the specs
89 | ```
90 |
91 | **Contributors:**
92 |
93 | * [@mltsy](https://github.com/mltsy) : `exist`, `text` assertions, documentation & test adjustments
94 |
95 | ## License
96 |
97 | Apache 2.0
98 |
99 | ## Thanks
100 | Thanks to [goodeggs](https://github.com/goodeggs/) for creating: [chai-webdriver](https://github.com/goodeggs/chai-webdriver) which inspired this module.
101 |
--------------------------------------------------------------------------------
/src/assertions/count.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | function hasCount(client, selector, count, countStore) {
4 | const elements = client.$$(selector);
5 |
6 | countStore.count = elements.length;
7 |
8 | return elements.length === count;
9 | }
10 |
11 | function waitUntilCount(client, selector, count, defaultWait=0, reverse) {
12 | const countStore = {};
13 |
14 | if (!reverse) {
15 | try {
16 | client.waitUntil(
17 | () => hasCount(client, selector, count, countStore),
18 | defaultWait
19 | );
20 | } catch (error) {
21 | throw new Error(
22 | `Element with selector <${selector}> does not appear in the DOM ${count} times ` +
23 | `within ${defaultWait} ms, but it shows up ${countStore.count} times instead.`
24 | );
25 | }
26 | } else {
27 | client.waitUntil(
28 | () => !hasCount(client, selector, count, countStore),
29 | defaultWait,
30 | `Element with selector <${selector}> still appears in the DOM ${count} times after ${defaultWait} ms`
31 | );
32 | }
33 | }
34 |
35 | export default function count(client, chai, utils, options) {
36 | const config = configWithDefaults(options);
37 | chai.Assertion.addMethod('count', function(expected) {
38 | const selector = utils.flag(this, 'object');
39 | const negate = utils.flag(this, 'negate');
40 | const immediately = utils.flag(this, 'immediately');
41 |
42 | if (!immediately) {
43 | waitUntilCount(client, selector, expected, config.defaultWait, negate);
44 | }
45 |
46 | const countStore = {};
47 |
48 | this.assert(
49 | hasCount(client, selector, expected, countStore),
50 | `Expected <${selector}> to appear in the DOM ${expected} times, but it shows up ${countStore.count} times instead.`,
51 | `Expected <${selector}> not to appear in the DOM ${expected} times, but it does.`
52 | );
53 | });
54 | }
55 |
--------------------------------------------------------------------------------
/src/assertions/displayed.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | const isOneElementDisplayed = function(client, selector) {
4 | const elements = client.$$(selector);
5 | let filteredList = elements.filter((element) => {
6 | return element.isDisplayed();
7 | });
8 |
9 | return filteredList.length > 0;
10 | }
11 |
12 | export default function displayed(client, chai, utils, options) {
13 | const config = configWithDefaults(options);
14 |
15 | chai.Assertion.addMethod('displayed', function() {
16 | const negate = utils.flag(this, 'negate');
17 | const selector = utils.flag(this, 'object');
18 | const immediately = utils.flag(this, 'immediately');
19 |
20 | const errorMsg = `Expected <${selector}> to be displayed but it is not`;
21 | const errorMsgNegate = `Expected <${selector}> to not be displayed but it is`;
22 |
23 | if (!immediately) {
24 | client.waitUntil(() => {
25 | return isOneElementDisplayed(client, selector) == !negate;
26 | }, config.defaultWait, (negate) ? errorMsgNegate : errorMsg);
27 | }
28 |
29 | this.assert(
30 | isOneElementDisplayed(client, selector),
31 | errorMsg,
32 | errorMsgNegate
33 | );
34 | });
35 | }
36 |
--------------------------------------------------------------------------------
/src/assertions/enabled.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | const isOneElementEnabled = function(client, selector) {
4 | const elements = client.$$(selector);
5 | let filteredList = elements.filter((element) => {
6 | return element.isEnabled();
7 | });
8 |
9 | return filteredList.length > 0;
10 | }
11 |
12 | export default function enabled(client, chai, utils, options) {
13 | const config = configWithDefaults(options);
14 |
15 | chai.Assertion.addMethod('enabled', function() {
16 | const negate = utils.flag(this, 'negate');
17 | const selector = utils.flag(this, 'object');
18 | const immediately = utils.flag(this, 'immediately');
19 |
20 | const errorMsg = `Expected <${selector}> to be enabled but it is not`;
21 | const errorMsgNegate = `Expected <${selector}> to not be enabled but it is` ;
22 |
23 | if (!immediately) {
24 | client.waitUntil(() => {
25 | return isOneElementEnabled(client, selector) == !negate
26 | }, config.defaultWait, (negate) ? errorMsgNegate : errorMsg);
27 | }
28 |
29 | this.assert(
30 | isOneElementEnabled(client, selector),
31 | errorMsg,
32 | errorMsgNegate
33 | );
34 | });
35 | }
--------------------------------------------------------------------------------
/src/assertions/focus.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | const isOneElementFocused = function(client, selector) {
4 | const elements = client.$$(selector);
5 | let filteredList = elements.filter((element) => {
6 | return element.isFocused();
7 | });
8 | return filteredList.length > 0;
9 | }
10 |
11 | export default function focus(client, chai, utils, options) {
12 | const config = configWithDefaults(options);
13 |
14 | chai.Assertion.addMethod('focus', function() {
15 | const negate = utils.flag(this, 'negate');
16 | const selector = utils.flag(this, 'object');
17 | const immediately = utils.flag(this, 'immediately');
18 |
19 | const errorMsg = `Expected <${selector}> to be focused but it is not`;
20 | const errorMsgNegate = `Expected <${selector}> to not be focused but it is`;
21 |
22 | if (!immediately) {
23 | client.waitUntil(() => {
24 | return isOneElementFocused(client, selector) == !negate;
25 | }, config.defaultWait, (negate) ? errorMsgNegate : errorMsg);
26 | }
27 |
28 | this.assert(
29 | isOneElementFocused(client, selector),
30 | errorMsg,
31 | errorMsgNegate
32 | );
33 | });
34 | }
35 |
--------------------------------------------------------------------------------
/src/assertions/text.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | const doesOneElementContainText = function(client, selector, expected) {
4 | let elements = client.$$(selector);
5 | let texts = []
6 | let filteredList = elements.filter((element) => {
7 | let text = element.getText();
8 | texts.push(text);
9 | var elementHasExpectedText = (expected instanceof RegExp) ? text.match(expected) : text === expected;
10 |
11 | return elementHasExpectedText;
12 | });
13 |
14 | return {
15 | result: filteredList.length > 0,
16 | texts: texts
17 | };
18 | }
19 |
20 | export default function text(client, chai, utils, options) {
21 | const config = configWithDefaults(options);
22 |
23 | chai.Assertion.addMethod('text', function(expected) {
24 | const selector = utils.flag(this, 'object');
25 | const immediately = utils.flag(this, 'immediately');
26 |
27 | if(!immediately) {
28 | try {
29 | client.waitUntil(() => {
30 | return doesOneElementContainText(client, selector, expected).result;
31 | }, config.defaultWait)
32 | } catch(e) {
33 | // actual assertion is handled below
34 | }
35 | }
36 |
37 | let elementContainsText = doesOneElementContainText(client, selector, expected);
38 | this.assert(
39 | elementContainsText.result,
40 | `Expected element <${selector}> to contain text "${expected}", but only found: ${elementContainsText.texts}`,
41 | `Expected element <${selector}> not to contain text "${expected}", but found: ${elementContainsText.texts}`
42 | );
43 | });
44 | }
45 |
--------------------------------------------------------------------------------
/src/assertions/there.js:
--------------------------------------------------------------------------------
1 | import elementExists from '../util/element-exists';
2 | import configWithDefaults from '../util/default-config';
3 |
4 | export default function there(client, chai, utils, options) {
5 | const config = configWithDefaults(options);
6 |
7 | chai.Assertion.addMethod('there', function() {
8 | const selector = utils.flag(this, 'object');
9 | const negate = utils.flag(this, 'negate');
10 | const immediately = utils.flag(this, 'immediately');
11 |
12 | var isThere = !negate;
13 | const defaultWait = (immediately) ? 0 : config.defaultWait;
14 | try {
15 | elementExists(client, selector, defaultWait, negate);
16 | } catch (error) {
17 | isThere = negate;
18 | }
19 |
20 | this.assert(
21 | isThere,
22 | `Expected <${selector}> to be there, but it is not there.`,
23 | `Expected <${selector}> not to be there, and yet, there it is.`
24 | );
25 | });
26 | }
27 |
--------------------------------------------------------------------------------
/src/assertions/value.js:
--------------------------------------------------------------------------------
1 | import configWithDefaults from '../util/default-config';
2 |
3 | const doesOneElementHaveValue = function(client, selector, expected) {
4 | let elements = client.$$(selector);
5 | let values = []
6 | let filteredList = elements.filter((element) => {
7 | let value = element.getValue();
8 | values.push(value);
9 | var elementHasExpectedValue = (expected instanceof RegExp) ? value.match(expected) : value === expected;
10 |
11 | return elementHasExpectedValue;
12 | });
13 |
14 | return {
15 | result: filteredList.length > 0,
16 | values: values
17 | };
18 | }
19 |
20 | export default function value(client, chai, utils, options) {
21 | const config = configWithDefaults(options);
22 | chai.Assertion.addMethod('value', function(expected) {
23 | const selector = utils.flag(this, 'object');
24 | const immediately = utils.flag(this, 'immediately');
25 |
26 | if(!immediately) {
27 | try {
28 | client.waitUntil(() => {
29 | return doesOneElementHaveValue(client, selector, expected).result;
30 | }, config.defaultWait)
31 | } catch(e) {
32 | // actual assertion is handled below
33 | }
34 | }
35 |
36 | let elementContainsValue = doesOneElementHaveValue(client, selector, expected);
37 | this.assert(
38 | elementContainsValue.result,
39 | `Expected an element matching <${selector}> to contain value "${expected}", but only found these values: ${elementContainsValue.values}`,
40 | `Expected an element matching <${selector}> not to contain value "${expected}", but found these values: ${elementContainsValue.values}`
41 | );
42 | });
43 | }
44 |
--------------------------------------------------------------------------------
/src/chains/immediately.js:
--------------------------------------------------------------------------------
1 | export default function immediately(client, chai, utils) {
2 | chai.Assertion.addChainableMethod('immediately', function() {
3 | utils.flag(this, 'immediately', true);
4 | });
5 | }
6 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import there from './assertions/there';
3 | import displayed from './assertions/displayed';
4 | import count from './assertions/count';
5 | import text from './assertions/text';
6 | import value from './assertions/value';
7 | import focus from './assertions/focus';
8 | import enabled from './assertions/enabled';
9 | import immediately from './chains/immediately';
10 |
11 | export default function (client, options = {}) {
12 | return function chaiWebdriverIO(chai, utils) {
13 | let methodsToAdd = [there, displayed, count, text, immediately, value, focus , enabled];
14 |
15 | methodsToAdd.forEach(function (methodToAdd) {
16 | methodToAdd(client, chai, utils, options);
17 | });
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/src/util/default-config.js:
--------------------------------------------------------------------------------
1 | export default function configWithDefaults(config) {
2 | var defaultConfig = {defaultWait: 0};
3 | return Object.assign({}, defaultConfig, config);
4 | }
5 |
--------------------------------------------------------------------------------
/src/util/element-exists.js:
--------------------------------------------------------------------------------
1 | export default function assertElementExists(client, selector, defaultWait=0, reverse) {
2 | try {
3 | client.$(selector).waitForExist(defaultWait, reverse);
4 | } catch (error) {
5 | if (reverse) {
6 | throw new Error(`Element with selector <${selector}> still exists after ${defaultWait}ms (while waiting for it not to).`);
7 | } else {
8 | throw new Error(`Could not find element with selector <${selector}> within ${defaultWait}ms`);
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/test/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "mocha": true
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/test/assertions/count-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import count from '../../src/assertions/count';
6 | import immediately from '../../src/chains/immediately';
7 |
8 | //Using real chai, because it would be too much effort to stub/mock everything
9 | chai.use(sinonChai);
10 |
11 | const doesNotHaveCountError = (count, actualCount, defaultWait=0) => {
12 | return 'Element with selector <.some-selector> does not ' +
13 | `appear in the DOM ${count} times within ${defaultWait} ms, ` +
14 | `but it shows up ${actualCount} times instead.`;
15 | };
16 |
17 | const hasCountError = (count, defaultWait=0) => {
18 | return 'Element with selector <.some-selector> still ' +
19 | `appears in the DOM ${count} times after ${defaultWait} ms`;
20 | };
21 |
22 | describe('count', () => {
23 | let elements
24 | let fakeClient;
25 |
26 | beforeEach(() => {
27 | elements = [new FakeElement(), new FakeElement()];
28 | fakeClient = new FakeClient();
29 |
30 | fakeClient.$$.throws('ArgumentError');
31 | fakeClient.$$.withArgs('.some-selector').returns(elements);
32 |
33 | fakeClient.waitUntil.callsFake((condition, timeout, timeoutMsg) => {
34 | if (condition()) return;
35 |
36 | throw new Error(timeoutMsg);
37 | });
38 |
39 | chai.use((chai, utils) => count(fakeClient, chai, utils));
40 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
41 | });
42 |
43 | afterEach(() => fakeClient.__resetStubs__());
44 |
45 | describe('When in synchronous mode', () => {
46 | describe('When not negated', () => {
47 | beforeEach(() => {
48 | expect('.some-selector').to.have.count(elements.length);
49 | });
50 |
51 | it('Should call `waitUntil`', () => {
52 | expect(fakeClient.waitUntil).to.have.been.calledWithMatch(
53 | callback => callback(),
54 | 0
55 | );
56 | });
57 |
58 | describe('When the element still does not appear the expected times after the wait time', () => {
59 | it('Should throw an exception', () => {
60 | expect(() => expect('.some-selector').to.have.count(elements.length + 1))
61 | .to.throw(doesNotHaveCountError(elements.length + 1, elements.length));
62 | });
63 | });
64 | });
65 |
66 | describe('When negated', () => {
67 | beforeEach(() => {
68 | expect('.some-selector').to.not.have.count(elements.length + 1);
69 | });
70 |
71 | it('Should call `waitUntil`', () => {
72 | expect(fakeClient.waitUntil).to.have.been.calledWithMatch(
73 | callback => callback(),
74 | 0,
75 | hasCountError(elements.length + 1)
76 | );
77 | });
78 |
79 | describe('When the element still appears the expected times after the wait time', () => {
80 | it('Should throw an exception', () => {
81 | expect(() => expect('.some-selector').to.not.have.count(elements.length))
82 | .to.throw(hasCountError(elements.length));
83 | });
84 | });
85 | });
86 |
87 | describe('When the element count matches the expectation', () => {
88 | it('Should not throw an exception', () => {
89 | expect('.some-selector').to.have.count(elements.length);
90 | });
91 |
92 | describe('When given a default wait time' , () => {
93 | beforeEach(() => {
94 | chai.use((chai, utils) => count(fakeClient, chai, utils, {defaultWait: 100}));
95 |
96 | expect('.some-selector').to.have.count(elements.length);
97 | });
98 |
99 | it('Should call `waitUntil` with the specified wait time', () => {
100 | expect(fakeClient.waitUntil).to.have.been.calledWithMatch(
101 | callback => callback(),
102 | 100
103 | );
104 | });
105 | });
106 |
107 | describe('When the call is chained with `immediately`', () => {
108 | beforeEach(() => {
109 | expect('.some-selector').to.have.immediately().count(elements.length);
110 | });
111 |
112 | it('Should not wait for the element to match the expected count', () => {
113 | expect(fakeClient.waitUntil).to.not.have.been.called;
114 | });
115 | });
116 |
117 | describe('When the assertion is negated', () => {
118 | it('Should throw an exception', () => {
119 | expect(() => expect('.some-selector').to.not.have.count(elements.length))
120 | .to.throw();
121 | });
122 | });
123 | });
124 |
125 | describe('When the element count does not match the expectation', () => {
126 | it('Should throw an exception', () => {
127 | expect(() => expect('.some-selector').to.have.count(elements.length + 1))
128 | .to.throw();
129 | });
130 |
131 | describe('When the assertion is negated', () => {
132 | it('Should not throw an exception', () => {
133 | expect('.some-selector').to.not.have.count(elements.length + 1);
134 | });
135 | });
136 | });
137 | });
138 | });
139 |
--------------------------------------------------------------------------------
/test/assertions/displayed-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import displayed from '../../src/assertions/displayed';
5 | import immediately from '../../src/chains/immediately';
6 | import FakeElement from '../stubs/fake-element';
7 |
8 | //Using real chai, because it would be too much effort to stub/mock everything
9 | chai.use(sinonChai);
10 |
11 | describe('displayed', () => {
12 | let fakeClient;
13 | let fakeElement1;
14 | let fakeElement2;
15 |
16 | beforeEach(() => {
17 | fakeClient = new FakeClient();
18 | fakeElement1 = new FakeElement();
19 | fakeElement2 = new FakeElement();
20 |
21 | fakeElement1.isDisplayed.returns(false);
22 | fakeClient.$$.withArgs('.some-selector').returns([fakeElement1]);
23 |
24 | chai.use((chai, utils) => displayed(fakeClient, chai, utils));
25 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
26 | });
27 |
28 | afterEach(() => {
29 | fakeClient.__resetStubs__()
30 | fakeElement1.__resetStubs__()
31 | });
32 |
33 | describe('When in synchronous mode', () => {
34 | describe('When not negated', () => {
35 | beforeEach(() => {
36 | fakeElement1.isDisplayed.returns(true);
37 |
38 | expect('.some-selector').to.be.displayed();
39 | });
40 |
41 | it('Should call `waitUntil`', () => {
42 | expect(fakeClient.waitUntil).to.have.been.called;
43 | });
44 |
45 | describe('When the element is still not displayed after the wait time', () => {
46 | let testError;
47 |
48 | beforeEach(() => {
49 | testError = 'Element still not displayed';
50 |
51 | fakeClient.waitUntil.throws(new Error(testError));
52 | });
53 |
54 | it('Should throw an exception', () => {
55 | expect(() => expect('.some-selector').to.be.displayed())
56 | .to.throw(testError);
57 | });
58 | });
59 | });
60 |
61 | describe('When negated', () => {
62 | beforeEach(() => {
63 | expect('.some-selector').to.not.be.displayed()
64 | });
65 |
66 | it('Should call `waitUntil`', () => {
67 | expect(fakeClient.waitUntil).to.have.been.called;
68 | });
69 |
70 | describe('When the element is still displayed after the wait time', () => {
71 | let testError;
72 |
73 | beforeEach(() => {
74 | testError = 'Element still displayed';
75 |
76 | fakeClient.waitUntil.throws(new Error(testError));
77 | });
78 |
79 | it('Should throw an exception', () => {
80 | expect(() => expect('.some-selector').to.not.be.displayed())
81 | .to.throw(testError);
82 | });
83 | });
84 | });
85 |
86 | describe('When the element is displayed', () => {
87 | beforeEach(() => {
88 | fakeElement1.isDisplayed.returns(true);
89 | });
90 |
91 | it('Should not throw an exception', () => {
92 | expect('.some-selector').to.be.displayed();
93 | });
94 |
95 | describe('When given a default wait time' , () => {
96 | beforeEach(() => {
97 | chai.use((chai, utils) => displayed(fakeClient, chai, utils, {defaultWait: 100}));
98 |
99 | expect('.some-selector').to.be.displayed();
100 | });
101 |
102 | it('Should call `waitUntil`', () => {
103 | expect(fakeClient.waitUntil)
104 | .to.have.been.called;
105 | });
106 | });
107 |
108 | describe('When the call is chained with `immediately`', () => {
109 | beforeEach(() => {
110 | expect('.some-selector').to.be.immediately().displayed();
111 | });
112 |
113 | it('Should not wait for the element to be displayed', () => {
114 | expect(fakeClient.waitUntil).to.not.have.been.called;
115 | });
116 | });
117 |
118 | describe('When the assertion is negated', () => {
119 | it('Should throw an exception', () => {
120 | expect(() => expect('.some-selector').to.not.be.displayed()).to.throw();
121 | });
122 | });
123 | });
124 |
125 | describe('When the element is not displayed', () => {
126 | beforeEach(() => {
127 | fakeElement1.isDisplayed.returns(false);
128 | });
129 |
130 | it('Should throw an exception', () => {
131 | expect(() => expect('.some-selector').to.be.displayed()).to.throw();
132 | });
133 |
134 | describe('When the assertion is negated', () => {
135 | it('Should not throw an exception', () => {
136 | expect('.some-selector').to.not.be.displayed();
137 | });
138 | });
139 | });
140 |
141 | describe('When multiple matching elements exist', () => {
142 | beforeEach(() => {
143 | fakeClient.$$.returns([fakeElement1, fakeElement2])
144 | });
145 |
146 | describe('When any one is displayed', () => {
147 | beforeEach(() => {
148 | fakeElement1.isDisplayed.returns(true);
149 | fakeElement2.isDisplayed.returns(false);
150 | });
151 |
152 | it('Should not throw an exception', () => {
153 | expect('.some-selector').to.be.displayed();
154 | });
155 |
156 | describe('When the call is chained with `immediately`', () => {
157 | beforeEach(() => {
158 | expect('.some-selector').to.be.immediately().displayed();
159 | });
160 |
161 | it('Should not wait for the element to be displayed', () => {
162 | expect(fakeElement1.waitForDisplayed).to.not.have.been.called;
163 | });
164 | });
165 |
166 | describe('When the assertion is negated', () => {
167 | it('Should throw an exception', () => {
168 | expect(() => expect('.some-selector').to.not.be.displayed()).to.throw();
169 | });
170 | });
171 | });
172 |
173 | describe('When none are displayed', () => {
174 | beforeEach(() => {
175 | fakeElement1.isDisplayed.returns(false);
176 | fakeElement2.isDisplayed.returns(false);
177 | });
178 |
179 | it('Should throw an exception', () => {
180 | expect(() => expect('.some-selector').to.be.displayed()).to.throw();
181 | });
182 |
183 | describe('When the assertion is negated', () => {
184 | it('Should not throw an exception', () => {
185 | expect('.some-selector').to.not.be.displayed();
186 | });
187 | });
188 | });
189 | });
190 | });
191 | });
192 |
--------------------------------------------------------------------------------
/test/assertions/enabled-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import enabled from '../../src/assertions/enabled';
6 | import immediately from '../../src/chains/immediately';
7 |
8 | //Using real chai, because it would be too much effort to stub/mock everything
9 | chai.use(sinonChai);
10 |
11 | describe('enabled', () => {
12 | let fakeClient;
13 | let fakeElement1;
14 | let fakeElement2;
15 |
16 | beforeEach(() => {
17 | fakeClient = new FakeClient();
18 | fakeElement1 = new FakeElement();
19 | fakeElement2 = new FakeElement();
20 |
21 | fakeElement1.isEnabled.returns(false)
22 | fakeClient.$$.withArgs('.some-selector').returns([fakeElement1]);
23 |
24 | chai.use((chai, utils) => enabled(fakeClient, chai, utils));
25 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
26 | });
27 |
28 | afterEach(() => {
29 | fakeClient.__resetStubs__()
30 | fakeElement1.__resetStubs__()
31 | fakeElement2.__resetStubs__()
32 | });
33 |
34 | describe('When in synchronous mode', () => {
35 | describe('When not negated', () => {
36 | beforeEach(() => {
37 | fakeElement1.isEnabled.returns(true);
38 |
39 | expect('.some-selector').to.be.enabled();
40 | });
41 |
42 | it('Should call `isEnabled`', () => {
43 | expect(fakeElement1.isEnabled).to.have.been.calledWith();
44 | });
45 | });
46 |
47 | describe('When negated', () => {
48 | beforeEach(() => {
49 | expect('.some-selector').to.not.be.enabled()
50 | });
51 |
52 | it('Should call `isEnabled`', () => {
53 | expect(fakeElement1.isEnabled).to.have.been.calledWith();
54 | });
55 | });
56 |
57 | describe('When the element is enabled', () => {
58 | beforeEach(() => {
59 | fakeElement1.isEnabled.returns(true);
60 | });
61 |
62 | it('Should not throw an exception', () => {
63 | expect('.some-selector').to.be.enabled();
64 | });
65 |
66 | describe('When given a default wait time' , () => {
67 | beforeEach(() => {
68 | chai.use((chai, utils) => enabled(fakeClient, chai, utils, {defaultWait: 100}));
69 |
70 | expect('.some-selector').to.be.enabled();
71 | });
72 |
73 | it('Should call `waitUntil`', () => {
74 | expect(fakeClient.waitUntil)
75 | .to.have.been.calledWith();
76 | });
77 | });
78 |
79 | describe('When the call is chained with `immediately`', () => {
80 | beforeEach(() => {
81 | expect('.some-selector').to.be.immediately().enabled();
82 | });
83 |
84 | it('Should not wait for the element to be enabled', () => {
85 | expect(fakeClient.waitUntil).to.not.have.been.called;
86 | });
87 | });
88 |
89 | describe('When the assertion is negated', () => {
90 | it('Should throw an exception', () => {
91 | expect(() => expect('.some-selector').to.not.be.enabled()).to.throw();
92 | });
93 | });
94 | });
95 |
96 | describe('When the element is not enabled', () => {
97 | beforeEach(() => {
98 | fakeElement1.isEnabled.returns(false);
99 | });
100 |
101 | it('Should throw an exception', () => {
102 | expect(() => expect('.some-selector').to.be.enabled()).to.throw();
103 | });
104 |
105 | describe('When the assertion is negated', () => {
106 | it('Should not throw an exception', () => {
107 | expect('.some-selector').to.not.be.enabled();
108 | });
109 | });
110 | });
111 |
112 | describe('When multiple matching elements exist', () => {
113 | describe('When any one is enabled', () => {
114 | beforeEach(() => {
115 | fakeElement1.isEnabled.returns(true);
116 | fakeElement2.isEnabled.returns(false);
117 | fakeClient.$$.withArgs('.multiple-selector').returns([fakeElement1, fakeElement2]);
118 | });
119 |
120 | it('Should not throw an exception', () => {
121 | expect('.multiple-selector').to.be.enabled();
122 | });
123 |
124 | describe('When the call is chained with `immediately`', () => {
125 | beforeEach(() => {
126 | expect('.multiple-selector').to.be.immediately().enabled();
127 | });
128 |
129 | it('Should not wait for the element to be enabled', () => {
130 | expect(fakeClient.waitUntil).to.not.have.been.called;
131 | });
132 | });
133 |
134 | describe('When the assertion is negated', () => {
135 | it('Should throw an exception', () => {
136 | expect(() => expect('.multiple-selector').to.not.be.enabled()).to.throw();
137 | });
138 | });
139 | });
140 |
141 | describe('When none are enabled', () => {
142 | beforeEach(() => {
143 | fakeElement1.isEnabled.returns(false);
144 | fakeElement2.isEnabled.returns(false);
145 | fakeClient.$$.withArgs('.multiple-selector').returns([fakeElement1, fakeElement2]);
146 | });
147 |
148 | it('Should throw an exception', () => {
149 | expect(() => expect('.multiple-selector').to.be.enabled()).to.throw();
150 | });
151 |
152 | describe('When the assertion is negated', () => {
153 | it('Should not throw an exception', () => {
154 | expect('.multiple-selector').to.not.be.enabled();
155 | });
156 | });
157 | });
158 | });
159 | });
160 | });
161 |
--------------------------------------------------------------------------------
/test/assertions/focus-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import immediately from '../../src/chains/immediately';
6 | import focus from '../../src/assertions/focus';
7 |
8 | const fakeClient = new FakeClient();
9 | const fakeElement = new FakeElement();
10 |
11 | //Using real chai, because it would be too much effort to stub/mock everything
12 | chai.use((chai, utils) => focus(fakeClient, chai, utils));
13 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
14 | chai.use(sinonChai);
15 |
16 | describe('focus', () => {
17 | beforeEach(() => {
18 | fakeClient.__resetStubs__();
19 | fakeElement.__resetStubs__();
20 | });
21 |
22 | describe('When in synchronous mode', () => {
23 | describe("When element doesn't exist", () => {
24 | it('Should throw an error', () => {
25 | expect(() => expect('.some-selector').to.have.focus()).to.throw();
26 | });
27 |
28 | context('When negated', () => {
29 | it('Should throw an error', () => {
30 | expect(() => expect('.some-selector').to.not.have.focus()).to.throw();
31 | });
32 | });
33 | });
34 |
35 | describe('When element exists', () => {
36 | describe('When element is focused', () => {
37 | beforeEach(() => {
38 | fakeClient.$$.returns([fakeElement])
39 | fakeElement.isFocused.returns(true);
40 | });
41 |
42 | it('Should not throw an exception', () => {
43 | expect('.some-selector').to.have.focus();
44 | });
45 |
46 | describe('When negated', () => {
47 | it('Should throw an exception', () => {
48 | expect(() => expect('.some-selector').to.not.have.focus()).to.throw();
49 | });
50 | });
51 | });
52 | });
53 | });
54 | });
55 |
--------------------------------------------------------------------------------
/test/assertions/text-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import text from '../../src/assertions/text';
6 | import immediately from '../../src/chains/immediately';
7 |
8 | const fakeClient = new FakeClient();
9 | const fakeElement1 = new FakeElement();
10 | const fakeElement2 = new FakeElement();
11 |
12 | //Using real chai, because it would be too much effort to stub/mock everything
13 | chai.use((chai, utils) => text(fakeClient, chai, utils));
14 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
15 |
16 | chai.use(sinonChai);
17 |
18 | describe('text', () => {
19 | beforeEach(() => {
20 | fakeClient.__resetStubs__();
21 | fakeElement1.__resetStubs__();
22 | fakeElement2.__resetStubs__();
23 | });
24 |
25 | describe('When in synchronous mode', () => {
26 | context("when element doesn't exist", () => {
27 | beforeEach(() => {
28 | fakeClient.$$.withArgs('.some-selector').returns([])
29 | });
30 |
31 | it('Should throw element doesn\'t exist error for strings', () => {
32 | expect(() => expect('.some-selector').to.have.text('blablabla')).to.throw();
33 | });
34 | it('Should throw element doesn\'t exist error for regular expressions', () => {
35 | expect(() => expect('.some-selector').to.have.text(/blablabla/)).to.throw();
36 | });
37 | });
38 |
39 | describe('When element exists', () => {
40 | let elementText = 'Never gonna give you up';
41 |
42 | beforeEach(() => {
43 | fakeElement1.getText.returns(elementText);
44 | fakeClient.$$.withArgs('.some-selector').returns([fakeElement1]);
45 | });
46 |
47 | describe('When call is chained with Immediately', () => {
48 | it('Should not wait till the element exists', () => {
49 | expect('.some-selector').to.have.immediately().text(elementText);
50 | expect(fakeClient.waitUntil).to.not.have.been.called;
51 | });
52 | it('Should not throw an exception', () => {
53 | expect('.some-selector').to.have.immediately().text(elementText);
54 | });
55 | describe('When negated', () => {
56 | it('Should throw an error', () => {
57 | expect(() => expect('.some-selector').to.not.have.immediately().text(elementText)).to.throw();
58 | });
59 | });
60 | });
61 |
62 | describe('When element text matches string expectation', () => {
63 | it('Should not throw an error', () => {
64 | expect('.some-selector').to.have.text(elementText);
65 | });
66 |
67 | describe('When negated', () => {
68 | it('Should throw an error', () => {
69 | expect(() => expect('.some-selector').to.not.have.text(elementText)).to.throw();
70 | });
71 | });
72 | });
73 |
74 | describe('When element text matches regex expectation', () => {
75 | it('Should not throw an error', () => {
76 | expect('.some-selector').to.have.text(/gon+a give/);
77 | });
78 |
79 | describe('When negated', () => {
80 | it('Should throw an error', () => {
81 | expect(() => expect('.some-selector').to.not.have.text(/gon+a give/)).to.throw();
82 | });
83 | });
84 | });
85 |
86 | describe('When element text does not match string expectation', () => {
87 | it('Should throw an error', () => {
88 | expect(() => expect('.some-selector').to.have.text("dis don't match jack! 1#43@")).to.throw();
89 | });
90 |
91 | describe('When negated', () => {
92 | it('Should not throw an error', () => {
93 | expect('.some-selector').to.not.have.text("dis don't match jack! 1#43@");
94 | });
95 | });
96 | });
97 |
98 | describe('When element text does not match regex expectation', () => {
99 | it('Should throw an error', () => {
100 | expect(() => expect('.some-selector').to.have.text(/dis don't match jack! 1#43@/)).to.throw();
101 | });
102 |
103 | describe('When negated', () => {
104 | it('Should not throw an error', () => {
105 | expect('.some-selector').to.not.have.text(/dis don't match jack! 1#43@/);
106 | });
107 | });
108 | });
109 | });
110 |
111 | describe('When multiple elements exists', () => {
112 | let elementTexts = ['Never gonna give you up', 'Never gonna let you down'];
113 | beforeEach(() => {
114 | fakeElement1.getText.returns(elementTexts[0]);
115 | fakeElement2.getText.returns(elementTexts[1]);
116 | fakeClient.$$.withArgs('.some-selector').returns([fakeElement1, fakeElement2])
117 | });
118 |
119 | describe("When at least one element's text matches string expectation", () => {
120 | it('Should not throw an error', () => {
121 | expect('.some-selector').to.have.text(elementTexts[0]);
122 | });
123 |
124 | describe('When negated', () => {
125 | it('Should throw an error', () => {
126 | expect(() => expect('.some-selector').to.not.have.text(elementTexts[0])).to.throw();
127 | });
128 | });
129 | });
130 |
131 | describe("When at least one element's text matches regex expectation", () => {
132 | it('Should not throw an error', () => {
133 | expect('.some-selector').to.have.text(/gon+a give/);
134 | });
135 |
136 | describe('When negated', () => {
137 | it('Should throw an error', () => {
138 | expect(() => expect('.some-selector').to.not.have.text(/gon+a give/)).to.throw();
139 | });
140 | });
141 | });
142 |
143 | describe('When no element text matches string expectation', () => {
144 | it('Should throw an error', () => {
145 | expect(() => expect('.some-selector').to.have.text("dis don't match jack! 1#43@")).to.throw();
146 | });
147 |
148 | describe('When negated', () => {
149 | it('Should not throw an error', () => {
150 | expect('.some-selector').to.not.have.text("dis don't match jack! 1#43@");
151 | });
152 | });
153 | });
154 |
155 | describe('When no element text matches regex expectation', () => {
156 | it('Should throw an error', () => {
157 | expect(() => expect('.some-selector').to.have.text(/dis don't match jack! 1#43@/)).to.throw();
158 | });
159 |
160 | describe('When negated', () => {
161 | it('Should not throw an error', () => {
162 | expect('.some-selector').to.not.have.text(/dis don't match jack! 1#43@/);
163 | });
164 | });
165 | });
166 | });
167 | });
168 | });
169 |
--------------------------------------------------------------------------------
/test/assertions/there-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import proxyquire from 'proxyquire';
5 | import sinon from 'sinon';
6 |
7 | const fakeClient = new FakeClient();
8 |
9 | const elementExists = sinon.stub();
10 |
11 | const there = proxyquire('../../src/assertions/there', {
12 | '../util/element-exists': {
13 | 'default': elementExists
14 | }
15 | }).default;
16 |
17 | //Using real chai, because it would be too much effort to stub/mock everything
18 | chai.use((chai, utils) => there(fakeClient, chai, utils));
19 | chai.use(sinonChai);
20 |
21 | describe('there', () => {
22 | beforeEach(() => {
23 | fakeClient.__resetStubs__();
24 | elementExists.reset();
25 | // Reset doesn't reset throws :(
26 | elementExists.returns();
27 | });
28 |
29 | context("When element doesn't exist", () => {
30 | it('Should throw an error', () => {
31 | elementExists.throws(new Error());
32 | expect(() => expect('.some-selector').to.be.there()).to.throw(/Expected .+ to be there/);
33 | expect(elementExists).to.have.been.calledOnce;
34 | });
35 |
36 | context('When negated', () => {
37 | it('Should not throw an error', () => {
38 | expect(() => expect('.some-selector').to.not.be.there()).to.not.throw();
39 | expect(elementExists).to.have.been.calledWith(fakeClient, '.some-selector', 0, true);
40 | });
41 | });
42 | });
43 |
44 | context('When element exists', () => {
45 | beforeEach(() => elementExists.returns(true));
46 |
47 | it('Should not throw an exception', () => {
48 | expect('.some-selector').to.be.there();
49 | });
50 |
51 | context('When negated', () => {
52 | it('Should throw an exception', () => {
53 | elementExists.throws(new Error());
54 | expect(() => expect('.some-selector').to.not.be.there()).to.throw(/Expected .+ not to be there/);
55 | expect(elementExists).to.have.been.calledWith(fakeClient, '.some-selector', 0, true);
56 | });
57 | });
58 | });
59 | });
60 |
--------------------------------------------------------------------------------
/test/assertions/value-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import immediately from '../../src/chains/immediately';
6 | import value from '../../src/assertions/value';
7 |
8 | const fakeClient = new FakeClient();
9 | const fakeElement1 = new FakeElement();
10 | const fakeElement2 = new FakeElement();
11 |
12 | //Using real chai, because it would be too much effort to stub/mock everything
13 | chai.use((chai, utils) => value(fakeClient, chai, utils));
14 | chai.use((chai, utils) => immediately(fakeClient, chai, utils));
15 |
16 | chai.use(sinonChai);
17 |
18 | describe('value', () => {
19 | beforeEach(() => {
20 | fakeClient.__resetStubs__();
21 | fakeElement1.__resetStubs__();
22 | fakeElement2.__resetStubs__();
23 |
24 | fakeClient.$$.returns([fakeElement1]);
25 | });
26 |
27 | describe('When in synchronous mode', () => {
28 | it('Should throw element doesn\'t exist error', () => {
29 | const testError = 'foobar';
30 | expect(() => expect('.some-selector').to.have.value('blablabla')).to.throw();
31 | });
32 |
33 | describe('When matching element exists', () => {
34 | let testResult = 'Never gonna give you up';
35 | beforeEach(() => {
36 | fakeElement1.getValue.returns(testResult);
37 | });
38 |
39 | describe('When call is chained with Immediately', () => {
40 | it('Should not wait till the element exists', () => {
41 | expect('.some-selector').to.have.immediately().value(testResult);
42 | expect(fakeClient.waitUntil).to.not.have.been.called;
43 | });
44 | it('Should not throw an exception', () => {
45 | expect('.some-selector').to.have.immediately().value(testResult);
46 | });
47 | describe('When negated', () => {
48 | it('Should throw an error', () => {
49 | expect(() => expect('.some-selector').to.not.have.immediately().value(testResult)).to.throw();
50 | });
51 | });
52 | });
53 |
54 | describe('When element value matches string expectation', () => {
55 | it('Should not throw an error', () => {
56 | expect('.some-selector').to.have.value(testResult);
57 | });
58 |
59 | describe('When negated', () => {
60 | it('Should throw an error', () => {
61 | expect(() => expect('.some-selector').to.not.have.value(testResult)).to.throw();
62 | });
63 | });
64 | });
65 |
66 | describe('When element value matches regex expectation', () => {
67 | it('Should not throw an error', () => {
68 | expect('.some-selector').to.have.value(/gon+a give/);
69 | });
70 |
71 | describe('When negated', () => {
72 | it('Should throw an error', () => {
73 | expect(() => expect('.some-selector').to.not.have.value(/gon+a give/)).to.throw();
74 | });
75 | });
76 | });
77 |
78 | describe('When element value does not match string expectation', () => {
79 | it('Should throw an error', () => {
80 | expect(() => expect('.some-selector').to.have.value("dis don't match jack! 1#43@")).to.throw();
81 | });
82 |
83 | describe('When negated', () => {
84 | it('Should not throw an error', () => {
85 | expect('.some-selector').to.not.have.value("dis don't match jack! 1#43@");
86 | });
87 | });
88 | });
89 |
90 | describe('When element value does not match regex expectation', () => {
91 | it('Should throw an error', () => {
92 | expect(() => expect('.some-selector').to.have.value(/dis don't match jack! 1#43@/)).to.throw();
93 | });
94 |
95 | describe('When negated', () => {
96 | it('Should not throw an error', () => {
97 | expect('.some-selector').to.not.have.value(/dis don't match jack! 1#43@/);
98 | });
99 | });
100 | });
101 | });
102 |
103 | describe('When multiple elements match', () => {
104 | let testResult = ['Never gonna give you up', 'Never gonna let you down'];
105 | beforeEach(() => {
106 | fakeElement1.getValue.returns(testResult[0])
107 | fakeElement2.getValue.returns(testResult[1])
108 | fakeClient.$$.returns([fakeElement1, fakeElement2]);
109 | });
110 |
111 | describe('When at least one element value matches string expectation', () => {
112 | it('Should not throw an error', () => {
113 | expect('.some-selector').to.have.value(testResult[0]);
114 | });
115 |
116 | describe('When negated', () => {
117 | it('Should throw an error', () => {
118 | expect(() => expect('.some-selector').to.not.have.value(testResult[0])).to.throw();
119 | });
120 | });
121 | });
122 |
123 | describe('When at least one element value matches regex expectation', () => {
124 | it('Should not throw an error', () => {
125 | expect('.some-selector').to.have.value(/gon+a give/);
126 | });
127 |
128 | describe('When negated', () => {
129 | it('Should throw an error', () => {
130 | expect(() => expect('.some-selector').to.not.have.value(/gon+a give/)).to.throw();
131 | });
132 | });
133 | });
134 |
135 | describe('When no element value matches string expectation', () => {
136 | it('Should throw an error', () => {
137 | expect(() => expect('.some-selector').to.have.value("dis don't match jack! 1#43@")).to.throw();
138 | });
139 |
140 | describe('When negated', () => {
141 | it('Should not throw an error', () => {
142 | expect('.some-selector').to.not.have.value("dis don't match jack! 1#43@");
143 | });
144 | });
145 | });
146 |
147 | describe('When no element value matches regex expectation', () => {
148 | it('Should throw an error', () => {
149 | expect(() => expect('.some-selector').to.have.value(/dis don't match jack! 1#43@/)).to.throw();
150 | });
151 |
152 | describe('When negated', () => {
153 | it('Should not throw an error', () => {
154 | expect('.some-selector').to.not.have.value(/dis don't match jack! 1#43@/);
155 | });
156 | });
157 | });
158 | });
159 | });
160 | });
161 |
--------------------------------------------------------------------------------
/test/index-test.js:
--------------------------------------------------------------------------------
1 | describe('index', () => {
2 |
3 | });
4 |
--------------------------------------------------------------------------------
/test/stubs/fake-client.js:
--------------------------------------------------------------------------------
1 | import sinon from 'sinon';
2 | import { getPrototype } from 'webdriverio/build/utils';
3 |
4 | const clientPrototype = getPrototype('browser')
5 |
6 | export default class FakeClient {
7 | constructor() {
8 | const fakeClient = {};
9 | Object.keys(clientPrototype).forEach(key => fakeClient[key] = sinon.stub());
10 |
11 | Object.assign(this, fakeClient);
12 | }
13 | __resetStubs__() {
14 | Object.keys(this).filter(key => key.substring(0, 1) !== '__').forEach(key => this[key].reset());
15 | }
16 | };
17 |
--------------------------------------------------------------------------------
/test/stubs/fake-element.js:
--------------------------------------------------------------------------------
1 | import sinon from 'sinon';
2 | import { getPrototype } from 'webdriverio/build/utils';
3 |
4 | const elementPrototype = getPrototype('element')
5 |
6 | export default class FakeElement {
7 | constructor() {
8 | const fakeElement = {};
9 | Object.keys(elementPrototype).forEach(key => fakeElement[key] = sinon.stub());
10 |
11 | Object.assign(this, fakeElement);
12 | }
13 |
14 | __resetStubs__() {
15 | Object.keys(this).filter(key => key.substring(0, 1) !== '__').forEach(key => this[key].reset());
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/test/stubs/get-fake-page-element.js:
--------------------------------------------------------------------------------
1 | import sinon from 'sinon';
2 |
3 | export default function getFakePageElement() {
4 | return {
5 | type: 'Never gonna run around and desert you',
6 | message: 'Never gonna make you cry',
7 | state: 'Never gonna say goodbye',
8 | sessionId: 'Never gonna tell a lie and hurt you',
9 | value: 'We\'ve known each other for so long',
10 | selector: 'Your heart\'s been aching, but you\'re too shy to say it',
11 | someOtherKey: 'Inside, we both know what\'s been going on',
12 | yetAnotherKey: 'We know the game and we\'re gonna play it',
13 | waitForExists: sinon.stub(),
14 | isExisting: sinon.stub()
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/test/util/element-exists-test.js:
--------------------------------------------------------------------------------
1 | import chai, { expect } from 'chai';
2 | import sinonChai from 'sinon-chai';
3 | import FakeClient from '../stubs/fake-client';
4 | import FakeElement from '../stubs/fake-element';
5 | import elementExists from '../../src/util/element-exists';
6 |
7 | const fakeClient = new FakeClient();
8 | const fakeElement = new FakeElement();
9 |
10 | chai.use(sinonChai);
11 |
12 | describe('elementExists', () => {
13 | beforeEach(() => {
14 | fakeClient.__resetStubs__();
15 | fakeElement.__resetStubs__();
16 |
17 | fakeClient.$.returns(fakeElement)
18 | });
19 |
20 | describe('When in synchronous mode', () => {
21 | it('Should throw element doesn\'t exist error', () => {
22 | fakeElement.waitForExist.throws();
23 | expect(() => elementExists(fakeClient, 'bla', 0)).to.throw(/Could not find element with selector/);
24 | });
25 | describe('When the element exist', () => {
26 | it('Should NOT throw an error', () => {
27 | fakeElement.waitForExist.returns();
28 | expect(() => elementExists(fakeClient, 'bla', 0)).to.not.throw();
29 | });
30 | });
31 |
32 | });
33 | });
34 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abbrev@1:
6 | version "1.0.9"
7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
8 |
9 | acorn-jsx@^3.0.0:
10 | version "3.0.1"
11 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
12 | dependencies:
13 | acorn "^3.0.4"
14 |
15 | acorn@4.0.4:
16 | version "4.0.4"
17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
18 |
19 | acorn@^3.0.4:
20 | version "3.3.0"
21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
22 |
23 | ajv-keywords@^1.0.0:
24 | version "1.5.0"
25 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c"
26 |
27 | ajv@^4.7.0:
28 | version "4.10.4"
29 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.4.tgz#c0974dd00b3464984892d6010aa9c2c945933254"
30 | dependencies:
31 | co "^4.6.0"
32 | json-stable-stringify "^1.0.1"
33 |
34 | amdefine@>=0.0.4:
35 | version "1.0.1"
36 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
37 |
38 | ansi-escapes@^1.1.0:
39 | version "1.4.0"
40 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
41 |
42 | ansi-regex@^2.0.0:
43 | version "2.0.0"
44 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
45 |
46 | ansi-styles@^2.2.1:
47 | version "2.2.1"
48 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
49 |
50 | anymatch@^1.3.0:
51 | version "1.3.0"
52 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
53 | dependencies:
54 | arrify "^1.0.0"
55 | micromatch "^2.1.5"
56 |
57 | aproba@^1.0.3:
58 | version "1.0.4"
59 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
60 |
61 | archiver-utils@^1.0.0, archiver-utils@^1.3.0:
62 | version "1.3.0"
63 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174"
64 | dependencies:
65 | glob "^7.0.0"
66 | graceful-fs "^4.1.0"
67 | lazystream "^1.0.0"
68 | lodash "^4.8.0"
69 | normalize-path "^2.0.0"
70 | readable-stream "^2.0.0"
71 |
72 | archiver@1.0.0:
73 | version "1.0.0"
74 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.0.0.tgz#de1d61082e947755b599bb3bc27130a4c859fc83"
75 | dependencies:
76 | archiver-utils "^1.0.0"
77 | async "^1.5.0"
78 | buffer-crc32 "^0.2.1"
79 | glob "^7.0.0"
80 | lodash "^4.8.0"
81 | readable-stream "^2.0.0"
82 | tar-stream "^1.5.0"
83 | zip-stream "^1.0.0"
84 |
85 | are-we-there-yet@~1.1.2:
86 | version "1.1.2"
87 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
88 | dependencies:
89 | delegates "^1.0.0"
90 | readable-stream "^2.0.0 || ^1.1.13"
91 |
92 | argparse@^1.0.7:
93 | version "1.0.9"
94 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
95 | dependencies:
96 | sprintf-js "~1.0.2"
97 |
98 | arr-diff@^2.0.0:
99 | version "2.0.0"
100 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
101 | dependencies:
102 | arr-flatten "^1.0.1"
103 |
104 | arr-flatten@^1.0.1:
105 | version "1.0.1"
106 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
107 |
108 | array-union@^1.0.1:
109 | version "1.0.2"
110 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
111 | dependencies:
112 | array-uniq "^1.0.1"
113 |
114 | array-uniq@^1.0.1:
115 | version "1.0.3"
116 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
117 |
118 | array-unique@^0.2.1:
119 | version "0.2.1"
120 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
121 |
122 | arrify@^1.0.0:
123 | version "1.0.1"
124 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
125 |
126 | asn1@~0.2.3:
127 | version "0.2.3"
128 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
129 |
130 | assert-plus@^0.2.0:
131 | version "0.2.0"
132 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
133 |
134 | assert-plus@^1.0.0:
135 | version "1.0.0"
136 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
137 |
138 | assertion-error@^1.0.1:
139 | version "1.0.2"
140 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
141 |
142 | async-each@^1.0.0:
143 | version "1.0.1"
144 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
145 |
146 | async@^1.5.0:
147 | version "1.5.2"
148 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
149 |
150 | asynckit@^0.4.0:
151 | version "0.4.0"
152 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
153 |
154 | atob@~1.1.0:
155 | version "1.1.3"
156 | resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
157 |
158 | aws-sign2@~0.6.0:
159 | version "0.6.0"
160 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
161 |
162 | aws4@^1.2.1:
163 | version "1.5.0"
164 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
165 |
166 | babel-cli@^6.24.0:
167 | version "6.24.0"
168 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.0.tgz#a05ffd210dca0c288a26d5319c5ac8669a265ad0"
169 | dependencies:
170 | babel-core "^6.24.0"
171 | babel-polyfill "^6.23.0"
172 | babel-register "^6.24.0"
173 | babel-runtime "^6.22.0"
174 | commander "^2.8.1"
175 | convert-source-map "^1.1.0"
176 | fs-readdir-recursive "^1.0.0"
177 | glob "^7.0.0"
178 | lodash "^4.2.0"
179 | output-file-sync "^1.1.0"
180 | path-is-absolute "^1.0.0"
181 | slash "^1.0.0"
182 | source-map "^0.5.0"
183 | v8flags "^2.0.10"
184 | optionalDependencies:
185 | chokidar "^1.6.1"
186 |
187 | babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
188 | version "6.22.0"
189 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
190 | dependencies:
191 | chalk "^1.1.0"
192 | esutils "^2.0.2"
193 | js-tokens "^3.0.0"
194 |
195 | babel-core@^6.24.0:
196 | version "6.24.0"
197 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02"
198 | dependencies:
199 | babel-code-frame "^6.22.0"
200 | babel-generator "^6.24.0"
201 | babel-helpers "^6.23.0"
202 | babel-messages "^6.23.0"
203 | babel-register "^6.24.0"
204 | babel-runtime "^6.22.0"
205 | babel-template "^6.23.0"
206 | babel-traverse "^6.23.1"
207 | babel-types "^6.23.0"
208 | babylon "^6.11.0"
209 | convert-source-map "^1.1.0"
210 | debug "^2.1.1"
211 | json5 "^0.5.0"
212 | lodash "^4.2.0"
213 | minimatch "^3.0.2"
214 | path-is-absolute "^1.0.0"
215 | private "^0.1.6"
216 | slash "^1.0.0"
217 | source-map "^0.5.0"
218 |
219 | babel-generator@^6.24.0:
220 | version "6.24.0"
221 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56"
222 | dependencies:
223 | babel-messages "^6.23.0"
224 | babel-runtime "^6.22.0"
225 | babel-types "^6.23.0"
226 | detect-indent "^4.0.0"
227 | jsesc "^1.3.0"
228 | lodash "^4.2.0"
229 | source-map "^0.5.0"
230 | trim-right "^1.0.1"
231 |
232 | babel-helper-call-delegate@^6.22.0:
233 | version "6.22.0"
234 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef"
235 | dependencies:
236 | babel-helper-hoist-variables "^6.22.0"
237 | babel-runtime "^6.22.0"
238 | babel-traverse "^6.22.0"
239 | babel-types "^6.22.0"
240 |
241 | babel-helper-define-map@^6.23.0:
242 | version "6.23.0"
243 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz#1444f960c9691d69a2ced6a205315f8fd00804e7"
244 | dependencies:
245 | babel-helper-function-name "^6.23.0"
246 | babel-runtime "^6.22.0"
247 | babel-types "^6.23.0"
248 | lodash "^4.2.0"
249 |
250 | babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.23.0:
251 | version "6.23.0"
252 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz#25742d67175c8903dbe4b6cb9d9e1fcb8dcf23a6"
253 | dependencies:
254 | babel-helper-get-function-arity "^6.22.0"
255 | babel-runtime "^6.22.0"
256 | babel-template "^6.23.0"
257 | babel-traverse "^6.23.0"
258 | babel-types "^6.23.0"
259 |
260 | babel-helper-get-function-arity@^6.22.0:
261 | version "6.22.0"
262 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce"
263 | dependencies:
264 | babel-runtime "^6.22.0"
265 | babel-types "^6.22.0"
266 |
267 | babel-helper-hoist-variables@^6.22.0:
268 | version "6.22.0"
269 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72"
270 | dependencies:
271 | babel-runtime "^6.22.0"
272 | babel-types "^6.22.0"
273 |
274 | babel-helper-optimise-call-expression@^6.23.0:
275 | version "6.23.0"
276 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz#f3ee7eed355b4282138b33d02b78369e470622f5"
277 | dependencies:
278 | babel-runtime "^6.22.0"
279 | babel-types "^6.23.0"
280 |
281 | babel-helper-regex@^6.22.0:
282 | version "6.22.0"
283 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d"
284 | dependencies:
285 | babel-runtime "^6.22.0"
286 | babel-types "^6.22.0"
287 | lodash "^4.2.0"
288 |
289 | babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.23.0:
290 | version "6.23.0"
291 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz#eeaf8ad9b58ec4337ca94223bacdca1f8d9b4bfd"
292 | dependencies:
293 | babel-helper-optimise-call-expression "^6.23.0"
294 | babel-messages "^6.23.0"
295 | babel-runtime "^6.22.0"
296 | babel-template "^6.23.0"
297 | babel-traverse "^6.23.0"
298 | babel-types "^6.23.0"
299 |
300 | babel-helpers@^6.23.0:
301 | version "6.23.0"
302 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992"
303 | dependencies:
304 | babel-runtime "^6.22.0"
305 | babel-template "^6.23.0"
306 |
307 | babel-messages@^6.23.0:
308 | version "6.23.0"
309 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
310 | dependencies:
311 | babel-runtime "^6.22.0"
312 |
313 | babel-plugin-check-es2015-constants@^6.22.0:
314 | version "6.22.0"
315 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
316 | dependencies:
317 | babel-runtime "^6.22.0"
318 |
319 | babel-plugin-syntax-object-rest-spread@^6.8.0:
320 | version "6.13.0"
321 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
322 |
323 | babel-plugin-transform-es2015-arrow-functions@^6.22.0:
324 | version "6.22.0"
325 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
326 | dependencies:
327 | babel-runtime "^6.22.0"
328 |
329 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
330 | version "6.22.0"
331 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
332 | dependencies:
333 | babel-runtime "^6.22.0"
334 |
335 | babel-plugin-transform-es2015-block-scoping@^6.22.0:
336 | version "6.23.0"
337 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz#e48895cf0b375be148cd7c8879b422707a053b51"
338 | dependencies:
339 | babel-runtime "^6.22.0"
340 | babel-template "^6.23.0"
341 | babel-traverse "^6.23.0"
342 | babel-types "^6.23.0"
343 | lodash "^4.2.0"
344 |
345 | babel-plugin-transform-es2015-classes@^6.22.0:
346 | version "6.23.0"
347 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz#49b53f326202a2fd1b3bbaa5e2edd8a4f78643c1"
348 | dependencies:
349 | babel-helper-define-map "^6.23.0"
350 | babel-helper-function-name "^6.23.0"
351 | babel-helper-optimise-call-expression "^6.23.0"
352 | babel-helper-replace-supers "^6.23.0"
353 | babel-messages "^6.23.0"
354 | babel-runtime "^6.22.0"
355 | babel-template "^6.23.0"
356 | babel-traverse "^6.23.0"
357 | babel-types "^6.23.0"
358 |
359 | babel-plugin-transform-es2015-computed-properties@^6.22.0:
360 | version "6.22.0"
361 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7"
362 | dependencies:
363 | babel-runtime "^6.22.0"
364 | babel-template "^6.22.0"
365 |
366 | babel-plugin-transform-es2015-destructuring@^6.22.0:
367 | version "6.23.0"
368 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
369 | dependencies:
370 | babel-runtime "^6.22.0"
371 |
372 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
373 | version "6.22.0"
374 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b"
375 | dependencies:
376 | babel-runtime "^6.22.0"
377 | babel-types "^6.22.0"
378 |
379 | babel-plugin-transform-es2015-for-of@^6.22.0:
380 | version "6.23.0"
381 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
382 | dependencies:
383 | babel-runtime "^6.22.0"
384 |
385 | babel-plugin-transform-es2015-function-name@^6.22.0:
386 | version "6.22.0"
387 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104"
388 | dependencies:
389 | babel-helper-function-name "^6.22.0"
390 | babel-runtime "^6.22.0"
391 | babel-types "^6.22.0"
392 |
393 | babel-plugin-transform-es2015-literals@^6.22.0:
394 | version "6.22.0"
395 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
396 | dependencies:
397 | babel-runtime "^6.22.0"
398 |
399 | babel-plugin-transform-es2015-modules-amd@^6.24.0:
400 | version "6.24.0"
401 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz#a1911fb9b7ec7e05a43a63c5995007557bcf6a2e"
402 | dependencies:
403 | babel-plugin-transform-es2015-modules-commonjs "^6.24.0"
404 | babel-runtime "^6.22.0"
405 | babel-template "^6.22.0"
406 |
407 | babel-plugin-transform-es2015-modules-commonjs@^6.24.0:
408 | version "6.24.0"
409 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz#e921aefb72c2cc26cb03d107626156413222134f"
410 | dependencies:
411 | babel-plugin-transform-strict-mode "^6.22.0"
412 | babel-runtime "^6.22.0"
413 | babel-template "^6.23.0"
414 | babel-types "^6.23.0"
415 |
416 | babel-plugin-transform-es2015-modules-systemjs@^6.22.0:
417 | version "6.23.0"
418 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0"
419 | dependencies:
420 | babel-helper-hoist-variables "^6.22.0"
421 | babel-runtime "^6.22.0"
422 | babel-template "^6.23.0"
423 |
424 | babel-plugin-transform-es2015-modules-umd@^6.24.0:
425 | version "6.24.0"
426 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz#fd5fa63521cae8d273927c3958afd7c067733450"
427 | dependencies:
428 | babel-plugin-transform-es2015-modules-amd "^6.24.0"
429 | babel-runtime "^6.22.0"
430 | babel-template "^6.23.0"
431 |
432 | babel-plugin-transform-es2015-object-super@^6.22.0:
433 | version "6.22.0"
434 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc"
435 | dependencies:
436 | babel-helper-replace-supers "^6.22.0"
437 | babel-runtime "^6.22.0"
438 |
439 | babel-plugin-transform-es2015-parameters@^6.22.0:
440 | version "6.23.0"
441 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b"
442 | dependencies:
443 | babel-helper-call-delegate "^6.22.0"
444 | babel-helper-get-function-arity "^6.22.0"
445 | babel-runtime "^6.22.0"
446 | babel-template "^6.23.0"
447 | babel-traverse "^6.23.0"
448 | babel-types "^6.23.0"
449 |
450 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
451 | version "6.22.0"
452 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723"
453 | dependencies:
454 | babel-runtime "^6.22.0"
455 | babel-types "^6.22.0"
456 |
457 | babel-plugin-transform-es2015-spread@^6.22.0:
458 | version "6.22.0"
459 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
460 | dependencies:
461 | babel-runtime "^6.22.0"
462 |
463 | babel-plugin-transform-es2015-sticky-regex@^6.22.0:
464 | version "6.22.0"
465 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593"
466 | dependencies:
467 | babel-helper-regex "^6.22.0"
468 | babel-runtime "^6.22.0"
469 | babel-types "^6.22.0"
470 |
471 | babel-plugin-transform-es2015-template-literals@^6.22.0:
472 | version "6.22.0"
473 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
474 | dependencies:
475 | babel-runtime "^6.22.0"
476 |
477 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
478 | version "6.23.0"
479 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
480 | dependencies:
481 | babel-runtime "^6.22.0"
482 |
483 | babel-plugin-transform-es2015-unicode-regex@^6.22.0:
484 | version "6.22.0"
485 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20"
486 | dependencies:
487 | babel-helper-regex "^6.22.0"
488 | babel-runtime "^6.22.0"
489 | regexpu-core "^2.0.0"
490 |
491 | babel-plugin-transform-object-rest-spread@^6.23.0:
492 | version "6.23.0"
493 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
494 | dependencies:
495 | babel-plugin-syntax-object-rest-spread "^6.8.0"
496 | babel-runtime "^6.22.0"
497 |
498 | babel-plugin-transform-regenerator@^6.22.0:
499 | version "6.22.0"
500 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6"
501 | dependencies:
502 | regenerator-transform "0.9.8"
503 |
504 | babel-plugin-transform-strict-mode@^6.22.0:
505 | version "6.22.0"
506 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c"
507 | dependencies:
508 | babel-runtime "^6.22.0"
509 | babel-types "^6.22.0"
510 |
511 | babel-polyfill@^6.23.0:
512 | version "6.23.0"
513 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
514 | dependencies:
515 | babel-runtime "^6.22.0"
516 | core-js "^2.4.0"
517 | regenerator-runtime "^0.10.0"
518 |
519 | babel-preset-es2015@^6.24.0:
520 | version "6.24.0"
521 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.0.tgz#c162d68b1932696e036cd3110dc1ccd303d2673a"
522 | dependencies:
523 | babel-plugin-check-es2015-constants "^6.22.0"
524 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
525 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
526 | babel-plugin-transform-es2015-block-scoping "^6.22.0"
527 | babel-plugin-transform-es2015-classes "^6.22.0"
528 | babel-plugin-transform-es2015-computed-properties "^6.22.0"
529 | babel-plugin-transform-es2015-destructuring "^6.22.0"
530 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
531 | babel-plugin-transform-es2015-for-of "^6.22.0"
532 | babel-plugin-transform-es2015-function-name "^6.22.0"
533 | babel-plugin-transform-es2015-literals "^6.22.0"
534 | babel-plugin-transform-es2015-modules-amd "^6.24.0"
535 | babel-plugin-transform-es2015-modules-commonjs "^6.24.0"
536 | babel-plugin-transform-es2015-modules-systemjs "^6.22.0"
537 | babel-plugin-transform-es2015-modules-umd "^6.24.0"
538 | babel-plugin-transform-es2015-object-super "^6.22.0"
539 | babel-plugin-transform-es2015-parameters "^6.22.0"
540 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
541 | babel-plugin-transform-es2015-spread "^6.22.0"
542 | babel-plugin-transform-es2015-sticky-regex "^6.22.0"
543 | babel-plugin-transform-es2015-template-literals "^6.22.0"
544 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
545 | babel-plugin-transform-es2015-unicode-regex "^6.22.0"
546 | babel-plugin-transform-regenerator "^6.22.0"
547 |
548 | babel-register@^6.24.0:
549 | version "6.24.0"
550 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.0.tgz#5e89f8463ba9970356d02eb07dabe3308b080cfd"
551 | dependencies:
552 | babel-core "^6.24.0"
553 | babel-runtime "^6.22.0"
554 | core-js "^2.4.0"
555 | home-or-tmp "^2.0.0"
556 | lodash "^4.2.0"
557 | mkdirp "^0.5.1"
558 | source-map-support "^0.4.2"
559 |
560 | babel-runtime@^5.8.25:
561 | version "5.8.38"
562 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.38.tgz#1c0b02eb63312f5f087ff20450827b425c9d4c19"
563 | dependencies:
564 | core-js "^1.0.0"
565 |
566 | babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0:
567 | version "6.23.0"
568 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
569 | dependencies:
570 | core-js "^2.4.0"
571 | regenerator-runtime "^0.10.0"
572 |
573 | babel-runtime@^6.9.2:
574 | version "6.20.0"
575 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
576 | dependencies:
577 | core-js "^2.4.0"
578 | regenerator-runtime "^0.10.0"
579 |
580 | babel-template@^6.22.0, babel-template@^6.23.0:
581 | version "6.23.0"
582 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638"
583 | dependencies:
584 | babel-runtime "^6.22.0"
585 | babel-traverse "^6.23.0"
586 | babel-types "^6.23.0"
587 | babylon "^6.11.0"
588 | lodash "^4.2.0"
589 |
590 | babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1:
591 | version "6.23.1"
592 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48"
593 | dependencies:
594 | babel-code-frame "^6.22.0"
595 | babel-messages "^6.23.0"
596 | babel-runtime "^6.22.0"
597 | babel-types "^6.23.0"
598 | babylon "^6.15.0"
599 | debug "^2.2.0"
600 | globals "^9.0.0"
601 | invariant "^2.2.0"
602 | lodash "^4.2.0"
603 |
604 | babel-types@^6.19.0:
605 | version "6.21.0"
606 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
607 | dependencies:
608 | babel-runtime "^6.20.0"
609 | esutils "^2.0.2"
610 | lodash "^4.2.0"
611 | to-fast-properties "^1.0.1"
612 |
613 | babel-types@^6.22.0, babel-types@^6.23.0:
614 | version "6.23.0"
615 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
616 | dependencies:
617 | babel-runtime "^6.22.0"
618 | esutils "^2.0.2"
619 | lodash "^4.2.0"
620 | to-fast-properties "^1.0.1"
621 |
622 | babylon@^6.11.0:
623 | version "6.14.1"
624 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
625 |
626 | babylon@^6.15.0:
627 | version "6.16.1"
628 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
629 |
630 | balanced-match@^0.4.1:
631 | version "0.4.2"
632 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
633 |
634 | bcrypt-pbkdf@^1.0.0:
635 | version "1.0.0"
636 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
637 | dependencies:
638 | tweetnacl "^0.14.3"
639 |
640 | binary-extensions@^1.0.0:
641 | version "1.8.0"
642 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
643 |
644 | bl@^1.0.0:
645 | version "1.1.2"
646 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
647 | dependencies:
648 | readable-stream "~2.0.5"
649 |
650 | block-stream@*:
651 | version "0.0.9"
652 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
653 | dependencies:
654 | inherits "~2.0.0"
655 |
656 | boom@2.x.x:
657 | version "2.10.1"
658 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
659 | dependencies:
660 | hoek "2.x.x"
661 |
662 | brace-expansion@^1.0.0:
663 | version "1.1.6"
664 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
665 | dependencies:
666 | balanced-match "^0.4.1"
667 | concat-map "0.0.1"
668 |
669 | braces@^1.8.2:
670 | version "1.8.5"
671 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
672 | dependencies:
673 | expand-range "^1.8.1"
674 | preserve "^0.2.0"
675 | repeat-element "^1.1.2"
676 |
677 | browser-stdout@1.3.0:
678 | version "1.3.0"
679 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
680 |
681 | buffer-crc32@^0.2.1:
682 | version "0.2.13"
683 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
684 |
685 | buffer-shims@^1.0.0:
686 | version "1.0.0"
687 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
688 |
689 | caller-path@^0.1.0:
690 | version "0.1.0"
691 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
692 | dependencies:
693 | callsites "^0.2.0"
694 |
695 | callsites@^0.2.0:
696 | version "0.2.0"
697 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
698 |
699 | caseless@~0.11.0:
700 | version "0.11.0"
701 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
702 |
703 | chai@^3.5.0:
704 | version "3.5.0"
705 | resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
706 | dependencies:
707 | assertion-error "^1.0.1"
708 | deep-eql "^0.1.3"
709 | type-detect "^1.0.0"
710 |
711 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
712 | version "1.1.3"
713 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
714 | dependencies:
715 | ansi-styles "^2.2.1"
716 | escape-string-regexp "^1.0.2"
717 | has-ansi "^2.0.0"
718 | strip-ansi "^3.0.0"
719 | supports-color "^2.0.0"
720 |
721 | chokidar@^1.6.1:
722 | version "1.6.1"
723 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
724 | dependencies:
725 | anymatch "^1.3.0"
726 | async-each "^1.0.0"
727 | glob-parent "^2.0.0"
728 | inherits "^2.0.1"
729 | is-binary-path "^1.0.0"
730 | is-glob "^2.0.0"
731 | path-is-absolute "^1.0.0"
732 | readdirp "^2.0.0"
733 | optionalDependencies:
734 | fsevents "^1.0.0"
735 |
736 | circular-json@^0.3.1:
737 | version "0.3.1"
738 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
739 |
740 | cli-cursor@^1.0.1:
741 | version "1.0.2"
742 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
743 | dependencies:
744 | restore-cursor "^1.0.1"
745 |
746 | cli-width@^2.0.0:
747 | version "2.1.0"
748 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
749 |
750 | co@^4.6.0:
751 | version "4.6.0"
752 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
753 |
754 | code-point-at@^1.0.0:
755 | version "1.1.0"
756 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
757 |
758 | combined-stream@^1.0.5, combined-stream@~1.0.5:
759 | version "1.0.5"
760 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
761 | dependencies:
762 | delayed-stream "~1.0.0"
763 |
764 | commander@2.9.0, commander@^2.8.1, commander@^2.9.0:
765 | version "2.9.0"
766 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
767 | dependencies:
768 | graceful-readlink ">= 1.0.0"
769 |
770 | compress-commons@^1.1.0:
771 | version "1.1.0"
772 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.1.0.tgz#9f4460bb1288564c7473916e0298aa3c320dcadb"
773 | dependencies:
774 | buffer-crc32 "^0.2.1"
775 | crc32-stream "^1.0.0"
776 | normalize-path "^2.0.0"
777 | readable-stream "^2.0.0"
778 |
779 | concat-map@0.0.1:
780 | version "0.0.1"
781 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
782 |
783 | concat-stream@^1.4.7, concat-stream@^1.5.2:
784 | version "1.6.0"
785 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
786 | dependencies:
787 | inherits "^2.0.3"
788 | readable-stream "^2.2.2"
789 | typedarray "^0.0.6"
790 |
791 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
792 | version "1.1.0"
793 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
794 |
795 | convert-source-map@^1.1.0:
796 | version "1.3.0"
797 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
798 |
799 | core-js@^1.0.0:
800 | version "1.2.7"
801 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
802 |
803 | core-js@^2.4.0:
804 | version "2.4.1"
805 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
806 |
807 | core-util-is@~1.0.0:
808 | version "1.0.2"
809 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
810 |
811 | crc32-stream@^1.0.0:
812 | version "1.0.0"
813 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-1.0.0.tgz#ea155e5e1d738ed3778438ffe92ffe2a141aeb3f"
814 | dependencies:
815 | buffer-crc32 "^0.2.1"
816 | readable-stream "^2.0.0"
817 |
818 | cryptiles@2.x.x:
819 | version "2.0.5"
820 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
821 | dependencies:
822 | boom "2.x.x"
823 |
824 | css-parse@~2.0.0:
825 | version "2.0.0"
826 | resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4"
827 | dependencies:
828 | css "^2.0.0"
829 |
830 | css-value@~0.0.1:
831 | version "0.0.1"
832 | resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea"
833 |
834 | css@^2.0.0:
835 | version "2.2.1"
836 | resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
837 | dependencies:
838 | inherits "^2.0.1"
839 | source-map "^0.1.38"
840 | source-map-resolve "^0.3.0"
841 | urix "^0.1.0"
842 |
843 | d@^0.1.1, d@~0.1.1:
844 | version "0.1.1"
845 | resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
846 | dependencies:
847 | es5-ext "~0.10.2"
848 |
849 | dashdash@^1.12.0:
850 | version "1.14.1"
851 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
852 | dependencies:
853 | assert-plus "^1.0.0"
854 |
855 | debug@2.2.0, debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
856 | version "2.2.0"
857 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
858 | dependencies:
859 | ms "0.7.1"
860 |
861 | deep-eql@^0.1.3:
862 | version "0.1.3"
863 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
864 | dependencies:
865 | type-detect "0.1.1"
866 |
867 | deep-extend@~0.4.0:
868 | version "0.4.1"
869 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
870 |
871 | deep-is@~0.1.3:
872 | version "0.1.3"
873 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
874 |
875 | deepmerge@^0.2.10:
876 | version "0.2.10"
877 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-0.2.10.tgz#8906bf9e525a4fbf1b203b2afcb4640249821219"
878 |
879 | del@^2.0.2:
880 | version "2.2.2"
881 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
882 | dependencies:
883 | globby "^5.0.0"
884 | is-path-cwd "^1.0.0"
885 | is-path-in-cwd "^1.0.0"
886 | object-assign "^4.0.1"
887 | pify "^2.0.0"
888 | pinkie-promise "^2.0.0"
889 | rimraf "^2.2.8"
890 |
891 | delayed-stream@~1.0.0:
892 | version "1.0.0"
893 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
894 |
895 | delegates@^1.0.0:
896 | version "1.0.0"
897 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
898 |
899 | detect-indent@^4.0.0:
900 | version "4.0.0"
901 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
902 | dependencies:
903 | repeating "^2.0.0"
904 |
905 | diff@1.4.0:
906 | version "1.4.0"
907 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
908 |
909 | diff@^3.1.0:
910 | version "3.2.0"
911 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
912 |
913 | doctrine@^2.0.0:
914 | version "2.0.0"
915 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
916 | dependencies:
917 | esutils "^2.0.2"
918 | isarray "^1.0.0"
919 |
920 | ecc-jsbn@~0.1.1:
921 | version "0.1.1"
922 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
923 | dependencies:
924 | jsbn "~0.1.0"
925 |
926 | ejs@^2.3.1:
927 | version "2.5.5"
928 | resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.5.tgz#6ef4e954ea7dcf54f66aad2fe7aa421932d9ed77"
929 |
930 | end-of-stream@^1.0.0:
931 | version "1.1.0"
932 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07"
933 | dependencies:
934 | once "~1.3.0"
935 |
936 | es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7:
937 | version "0.10.12"
938 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
939 | dependencies:
940 | es6-iterator "2"
941 | es6-symbol "~3.1"
942 |
943 | es6-iterator@2:
944 | version "2.0.0"
945 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac"
946 | dependencies:
947 | d "^0.1.1"
948 | es5-ext "^0.10.7"
949 | es6-symbol "3"
950 |
951 | es6-map@^0.1.3:
952 | version "0.1.4"
953 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897"
954 | dependencies:
955 | d "~0.1.1"
956 | es5-ext "~0.10.11"
957 | es6-iterator "2"
958 | es6-set "~0.1.3"
959 | es6-symbol "~3.1.0"
960 | event-emitter "~0.3.4"
961 |
962 | es6-set@~0.1.3:
963 | version "0.1.4"
964 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8"
965 | dependencies:
966 | d "~0.1.1"
967 | es5-ext "~0.10.11"
968 | es6-iterator "2"
969 | es6-symbol "3"
970 | event-emitter "~0.3.4"
971 |
972 | es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0:
973 | version "3.1.0"
974 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa"
975 | dependencies:
976 | d "~0.1.1"
977 | es5-ext "~0.10.11"
978 |
979 | es6-weak-map@^2.0.1:
980 | version "2.0.1"
981 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81"
982 | dependencies:
983 | d "^0.1.1"
984 | es5-ext "^0.10.8"
985 | es6-iterator "2"
986 | es6-symbol "3"
987 |
988 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
989 | version "1.0.5"
990 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
991 |
992 | escope@^3.6.0:
993 | version "3.6.0"
994 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
995 | dependencies:
996 | es6-map "^0.1.3"
997 | es6-weak-map "^2.0.1"
998 | esrecurse "^4.1.0"
999 | estraverse "^4.1.1"
1000 |
1001 | eslint-config-airbnb-base@^11.1.0:
1002 | version "11.1.1"
1003 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.1.1.tgz#61e9e89e4eb89f474f6913ac817be9fbb59063e0"
1004 |
1005 | eslint-config-airbnb@^14.1.0:
1006 | version "14.1.0"
1007 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-14.1.0.tgz#355d290040bbf8e00bf8b4b19f4b70cbe7c2317f"
1008 | dependencies:
1009 | eslint-config-airbnb-base "^11.1.0"
1010 |
1011 | eslint@^3.18.0:
1012 | version "3.18.0"
1013 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b"
1014 | dependencies:
1015 | babel-code-frame "^6.16.0"
1016 | chalk "^1.1.3"
1017 | concat-stream "^1.5.2"
1018 | debug "^2.1.1"
1019 | doctrine "^2.0.0"
1020 | escope "^3.6.0"
1021 | espree "^3.4.0"
1022 | esquery "^1.0.0"
1023 | estraverse "^4.2.0"
1024 | esutils "^2.0.2"
1025 | file-entry-cache "^2.0.0"
1026 | glob "^7.0.3"
1027 | globals "^9.14.0"
1028 | ignore "^3.2.0"
1029 | imurmurhash "^0.1.4"
1030 | inquirer "^0.12.0"
1031 | is-my-json-valid "^2.10.0"
1032 | is-resolvable "^1.0.0"
1033 | js-yaml "^3.5.1"
1034 | json-stable-stringify "^1.0.0"
1035 | levn "^0.3.0"
1036 | lodash "^4.0.0"
1037 | mkdirp "^0.5.0"
1038 | natural-compare "^1.4.0"
1039 | optionator "^0.8.2"
1040 | path-is-inside "^1.0.1"
1041 | pluralize "^1.2.1"
1042 | progress "^1.1.8"
1043 | require-uncached "^1.0.2"
1044 | shelljs "^0.7.5"
1045 | strip-bom "^3.0.0"
1046 | strip-json-comments "~2.0.1"
1047 | table "^3.7.8"
1048 | text-table "~0.2.0"
1049 | user-home "^2.0.0"
1050 |
1051 | espree@^3.4.0:
1052 | version "3.4.0"
1053 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d"
1054 | dependencies:
1055 | acorn "4.0.4"
1056 | acorn-jsx "^3.0.0"
1057 |
1058 | esprima@^2.6.0:
1059 | version "2.7.3"
1060 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
1061 |
1062 | esquery@^1.0.0:
1063 | version "1.0.0"
1064 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
1065 | dependencies:
1066 | estraverse "^4.0.0"
1067 |
1068 | esrecurse@^4.1.0:
1069 | version "4.1.0"
1070 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
1071 | dependencies:
1072 | estraverse "~4.1.0"
1073 | object-assign "^4.0.1"
1074 |
1075 | estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
1076 | version "4.2.0"
1077 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
1078 |
1079 | estraverse@~4.1.0:
1080 | version "4.1.1"
1081 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
1082 |
1083 | esutils@^2.0.2:
1084 | version "2.0.2"
1085 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
1086 |
1087 | event-emitter@~0.3.4:
1088 | version "0.3.4"
1089 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5"
1090 | dependencies:
1091 | d "~0.1.1"
1092 | es5-ext "~0.10.7"
1093 |
1094 | exit-hook@^1.0.0:
1095 | version "1.1.1"
1096 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
1097 |
1098 | expand-brackets@^0.1.4:
1099 | version "0.1.5"
1100 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
1101 | dependencies:
1102 | is-posix-bracket "^0.1.0"
1103 |
1104 | expand-range@^1.8.1:
1105 | version "1.8.2"
1106 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
1107 | dependencies:
1108 | fill-range "^2.1.0"
1109 |
1110 | extend@^3.0.0, extend@~3.0.0:
1111 | version "3.0.0"
1112 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
1113 |
1114 | external-editor@^1.1.0:
1115 | version "1.1.1"
1116 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b"
1117 | dependencies:
1118 | extend "^3.0.0"
1119 | spawn-sync "^1.0.15"
1120 | tmp "^0.0.29"
1121 |
1122 | extglob@^0.3.1:
1123 | version "0.3.2"
1124 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
1125 | dependencies:
1126 | is-extglob "^1.0.0"
1127 |
1128 | extsprintf@1.0.2:
1129 | version "1.0.2"
1130 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
1131 |
1132 | fast-levenshtein@~2.0.4:
1133 | version "2.0.6"
1134 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1135 |
1136 | figures@^1.3.5:
1137 | version "1.7.0"
1138 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
1139 | dependencies:
1140 | escape-string-regexp "^1.0.5"
1141 | object-assign "^4.1.0"
1142 |
1143 | file-entry-cache@^2.0.0:
1144 | version "2.0.0"
1145 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
1146 | dependencies:
1147 | flat-cache "^1.2.1"
1148 | object-assign "^4.0.1"
1149 |
1150 | filename-regex@^2.0.0:
1151 | version "2.0.0"
1152 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
1153 |
1154 | fill-keys@^1.0.2:
1155 | version "1.0.2"
1156 | resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20"
1157 | dependencies:
1158 | is-object "~1.0.1"
1159 | merge-descriptors "~1.0.0"
1160 |
1161 | fill-range@^2.1.0:
1162 | version "2.2.3"
1163 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
1164 | dependencies:
1165 | is-number "^2.1.0"
1166 | isobject "^2.0.0"
1167 | randomatic "^1.1.3"
1168 | repeat-element "^1.1.2"
1169 | repeat-string "^1.5.2"
1170 |
1171 | flat-cache@^1.2.1:
1172 | version "1.2.2"
1173 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
1174 | dependencies:
1175 | circular-json "^0.3.1"
1176 | del "^2.0.2"
1177 | graceful-fs "^4.1.2"
1178 | write "^0.2.1"
1179 |
1180 | for-in@^0.1.5:
1181 | version "0.1.6"
1182 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
1183 |
1184 | for-own@^0.1.4:
1185 | version "0.1.4"
1186 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
1187 | dependencies:
1188 | for-in "^0.1.5"
1189 |
1190 | forever-agent@~0.6.1:
1191 | version "0.6.1"
1192 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1193 |
1194 | form-data@~2.1.1:
1195 | version "2.1.2"
1196 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
1197 | dependencies:
1198 | asynckit "^0.4.0"
1199 | combined-stream "^1.0.5"
1200 | mime-types "^2.1.12"
1201 |
1202 | formatio@1.2.0:
1203 | version "1.2.0"
1204 | resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb"
1205 | dependencies:
1206 | samsam "1.x"
1207 |
1208 | fs-readdir-recursive@^1.0.0:
1209 | version "1.0.0"
1210 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
1211 |
1212 | fs.realpath@^1.0.0:
1213 | version "1.0.0"
1214 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1215 |
1216 | fsevents@^1.0.0:
1217 | version "1.0.17"
1218 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
1219 | dependencies:
1220 | nan "^2.3.0"
1221 | node-pre-gyp "^0.6.29"
1222 |
1223 | fstream-ignore@~1.0.5:
1224 | version "1.0.5"
1225 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
1226 | dependencies:
1227 | fstream "^1.0.0"
1228 | inherits "2"
1229 | minimatch "^3.0.0"
1230 |
1231 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
1232 | version "1.0.10"
1233 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
1234 | dependencies:
1235 | graceful-fs "^4.1.2"
1236 | inherits "~2.0.0"
1237 | mkdirp ">=0.5 0"
1238 | rimraf "2"
1239 |
1240 | gauge@~2.7.1:
1241 | version "2.7.2"
1242 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
1243 | dependencies:
1244 | aproba "^1.0.3"
1245 | console-control-strings "^1.0.0"
1246 | has-unicode "^2.0.0"
1247 | object-assign "^4.1.0"
1248 | signal-exit "^3.0.0"
1249 | string-width "^1.0.1"
1250 | strip-ansi "^3.0.1"
1251 | supports-color "^0.2.0"
1252 | wide-align "^1.1.0"
1253 |
1254 | gaze@^1.1.2:
1255 | version "1.1.2"
1256 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
1257 | dependencies:
1258 | globule "^1.0.0"
1259 |
1260 | generate-function@^2.0.0:
1261 | version "2.0.0"
1262 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
1263 |
1264 | generate-object-property@^1.1.0:
1265 | version "1.2.0"
1266 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
1267 | dependencies:
1268 | is-property "^1.0.0"
1269 |
1270 | getpass@^0.1.1:
1271 | version "0.1.6"
1272 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
1273 | dependencies:
1274 | assert-plus "^1.0.0"
1275 |
1276 | glob-base@^0.3.0:
1277 | version "0.3.0"
1278 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
1279 | dependencies:
1280 | glob-parent "^2.0.0"
1281 | is-glob "^2.0.0"
1282 |
1283 | glob-parent@^2.0.0:
1284 | version "2.0.0"
1285 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
1286 | dependencies:
1287 | is-glob "^2.0.0"
1288 |
1289 | glob@7.0.5:
1290 | version "7.0.5"
1291 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95"
1292 | dependencies:
1293 | fs.realpath "^1.0.0"
1294 | inflight "^1.0.4"
1295 | inherits "2"
1296 | minimatch "^3.0.2"
1297 | once "^1.3.0"
1298 | path-is-absolute "^1.0.0"
1299 |
1300 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1:
1301 | version "7.1.1"
1302 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
1303 | dependencies:
1304 | fs.realpath "^1.0.0"
1305 | inflight "^1.0.4"
1306 | inherits "2"
1307 | minimatch "^3.0.2"
1308 | once "^1.3.0"
1309 | path-is-absolute "^1.0.0"
1310 |
1311 | globals@^9.0.0, globals@^9.14.0:
1312 | version "9.14.0"
1313 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
1314 |
1315 | globby@^5.0.0:
1316 | version "5.0.0"
1317 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
1318 | dependencies:
1319 | array-union "^1.0.1"
1320 | arrify "^1.0.0"
1321 | glob "^7.0.3"
1322 | object-assign "^4.0.1"
1323 | pify "^2.0.0"
1324 | pinkie-promise "^2.0.0"
1325 |
1326 | globule@^1.0.0:
1327 | version "1.1.0"
1328 | resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f"
1329 | dependencies:
1330 | glob "~7.1.1"
1331 | lodash "~4.16.4"
1332 | minimatch "~3.0.2"
1333 |
1334 | graceful-fs@^4.1.0, graceful-fs@^4.1.2, graceful-fs@^4.1.4:
1335 | version "4.1.11"
1336 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
1337 |
1338 | "graceful-readlink@>= 1.0.0":
1339 | version "1.0.1"
1340 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1341 |
1342 | growl@1.9.2:
1343 | version "1.9.2"
1344 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
1345 |
1346 | har-validator@~2.0.6:
1347 | version "2.0.6"
1348 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
1349 | dependencies:
1350 | chalk "^1.1.1"
1351 | commander "^2.9.0"
1352 | is-my-json-valid "^2.12.4"
1353 | pinkie-promise "^2.0.0"
1354 |
1355 | has-ansi@^2.0.0:
1356 | version "2.0.0"
1357 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1358 | dependencies:
1359 | ansi-regex "^2.0.0"
1360 |
1361 | has-flag@^1.0.0:
1362 | version "1.0.0"
1363 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
1364 |
1365 | has-unicode@^2.0.0:
1366 | version "2.0.1"
1367 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
1368 |
1369 | hawk@~3.1.3:
1370 | version "3.1.3"
1371 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
1372 | dependencies:
1373 | boom "2.x.x"
1374 | cryptiles "2.x.x"
1375 | hoek "2.x.x"
1376 | sntp "1.x.x"
1377 |
1378 | hoek@2.x.x:
1379 | version "2.16.3"
1380 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
1381 |
1382 | home-or-tmp@^2.0.0:
1383 | version "2.0.0"
1384 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
1385 | dependencies:
1386 | os-homedir "^1.0.0"
1387 | os-tmpdir "^1.0.1"
1388 |
1389 | http-signature@~1.1.0:
1390 | version "1.1.1"
1391 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
1392 | dependencies:
1393 | assert-plus "^0.2.0"
1394 | jsprim "^1.2.2"
1395 | sshpk "^1.7.0"
1396 |
1397 | ignore@^3.2.0:
1398 | version "3.2.6"
1399 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
1400 |
1401 | imurmurhash@^0.1.4:
1402 | version "0.1.4"
1403 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1404 |
1405 | inflight@^1.0.4:
1406 | version "1.0.6"
1407 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1408 | dependencies:
1409 | once "^1.3.0"
1410 | wrappy "1"
1411 |
1412 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
1413 | version "2.0.3"
1414 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1415 |
1416 | ini@~1.3.0:
1417 | version "1.3.4"
1418 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
1419 |
1420 | inquirer@^0.12.0:
1421 | version "0.12.0"
1422 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
1423 | dependencies:
1424 | ansi-escapes "^1.1.0"
1425 | ansi-regex "^2.0.0"
1426 | chalk "^1.0.0"
1427 | cli-cursor "^1.0.1"
1428 | cli-width "^2.0.0"
1429 | figures "^1.3.5"
1430 | lodash "^4.3.0"
1431 | readline2 "^1.0.1"
1432 | run-async "^0.1.0"
1433 | rx-lite "^3.1.2"
1434 | string-width "^1.0.1"
1435 | strip-ansi "^3.0.0"
1436 | through "^2.3.6"
1437 |
1438 | inquirer@^1.1.2:
1439 | version "1.2.3"
1440 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918"
1441 | dependencies:
1442 | ansi-escapes "^1.1.0"
1443 | chalk "^1.0.0"
1444 | cli-cursor "^1.0.1"
1445 | cli-width "^2.0.0"
1446 | external-editor "^1.1.0"
1447 | figures "^1.3.5"
1448 | lodash "^4.3.0"
1449 | mute-stream "0.0.6"
1450 | pinkie-promise "^2.0.0"
1451 | run-async "^2.2.0"
1452 | rx "^4.1.0"
1453 | string-width "^1.0.1"
1454 | strip-ansi "^3.0.0"
1455 | through "^2.3.6"
1456 |
1457 | interpret@^1.0.0:
1458 | version "1.0.1"
1459 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
1460 |
1461 | invariant@^2.2.0:
1462 | version "2.2.2"
1463 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1464 | dependencies:
1465 | loose-envify "^1.0.0"
1466 |
1467 | is-binary-path@^1.0.0:
1468 | version "1.0.1"
1469 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
1470 | dependencies:
1471 | binary-extensions "^1.0.0"
1472 |
1473 | is-buffer@^1.0.2:
1474 | version "1.1.4"
1475 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
1476 |
1477 | is-dotfile@^1.0.0:
1478 | version "1.0.2"
1479 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
1480 |
1481 | is-equal-shallow@^0.1.3:
1482 | version "0.1.3"
1483 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
1484 | dependencies:
1485 | is-primitive "^2.0.0"
1486 |
1487 | is-extendable@^0.1.1:
1488 | version "0.1.1"
1489 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1490 |
1491 | is-extglob@^1.0.0:
1492 | version "1.0.0"
1493 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
1494 |
1495 | is-finite@^1.0.0:
1496 | version "1.0.2"
1497 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1498 | dependencies:
1499 | number-is-nan "^1.0.0"
1500 |
1501 | is-fullwidth-code-point@^1.0.0:
1502 | version "1.0.0"
1503 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1504 | dependencies:
1505 | number-is-nan "^1.0.0"
1506 |
1507 | is-fullwidth-code-point@^2.0.0:
1508 | version "2.0.0"
1509 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1510 |
1511 | is-glob@^2.0.0, is-glob@^2.0.1:
1512 | version "2.0.1"
1513 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
1514 | dependencies:
1515 | is-extglob "^1.0.0"
1516 |
1517 | is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
1518 | version "2.15.0"
1519 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
1520 | dependencies:
1521 | generate-function "^2.0.0"
1522 | generate-object-property "^1.1.0"
1523 | jsonpointer "^4.0.0"
1524 | xtend "^4.0.0"
1525 |
1526 | is-number@^2.0.2, is-number@^2.1.0:
1527 | version "2.1.0"
1528 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1529 | dependencies:
1530 | kind-of "^3.0.2"
1531 |
1532 | is-object@~1.0.1:
1533 | version "1.0.1"
1534 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
1535 |
1536 | is-path-cwd@^1.0.0:
1537 | version "1.0.0"
1538 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
1539 |
1540 | is-path-in-cwd@^1.0.0:
1541 | version "1.0.0"
1542 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
1543 | dependencies:
1544 | is-path-inside "^1.0.0"
1545 |
1546 | is-path-inside@^1.0.0:
1547 | version "1.0.0"
1548 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
1549 | dependencies:
1550 | path-is-inside "^1.0.1"
1551 |
1552 | is-posix-bracket@^0.1.0:
1553 | version "0.1.1"
1554 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1555 |
1556 | is-primitive@^2.0.0:
1557 | version "2.0.0"
1558 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1559 |
1560 | is-promise@^2.1.0:
1561 | version "2.1.0"
1562 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
1563 |
1564 | is-property@^1.0.0:
1565 | version "1.0.2"
1566 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
1567 |
1568 | is-resolvable@^1.0.0:
1569 | version "1.0.0"
1570 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
1571 | dependencies:
1572 | tryit "^1.0.1"
1573 |
1574 | is-typedarray@~1.0.0:
1575 | version "1.0.0"
1576 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1577 |
1578 | isarray@0.0.1:
1579 | version "0.0.1"
1580 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
1581 |
1582 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
1583 | version "1.0.0"
1584 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1585 |
1586 | isobject@^2.0.0:
1587 | version "2.1.0"
1588 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1589 | dependencies:
1590 | isarray "1.0.0"
1591 |
1592 | isstream@~0.1.2:
1593 | version "0.1.2"
1594 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1595 |
1596 | jodid25519@^1.0.0:
1597 | version "1.0.2"
1598 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
1599 | dependencies:
1600 | jsbn "~0.1.0"
1601 |
1602 | js-tokens@^2.0.0:
1603 | version "2.0.0"
1604 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
1605 |
1606 | js-tokens@^3.0.0:
1607 | version "3.0.1"
1608 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
1609 |
1610 | js-yaml@^3.5.1:
1611 | version "3.7.0"
1612 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
1613 | dependencies:
1614 | argparse "^1.0.7"
1615 | esprima "^2.6.0"
1616 |
1617 | jsbn@~0.1.0:
1618 | version "0.1.0"
1619 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
1620 |
1621 | jsesc@^1.3.0:
1622 | version "1.3.0"
1623 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1624 |
1625 | jsesc@~0.5.0:
1626 | version "0.5.0"
1627 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1628 |
1629 | json-schema@0.2.3:
1630 | version "0.2.3"
1631 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1632 |
1633 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
1634 | version "1.0.1"
1635 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
1636 | dependencies:
1637 | jsonify "~0.0.0"
1638 |
1639 | json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
1640 | version "5.0.1"
1641 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1642 |
1643 | json3@3.3.2:
1644 | version "3.3.2"
1645 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
1646 |
1647 | json5@^0.5.0:
1648 | version "0.5.1"
1649 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1650 |
1651 | jsonify@~0.0.0:
1652 | version "0.0.0"
1653 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1654 |
1655 | jsonpointer@^4.0.0:
1656 | version "4.0.1"
1657 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
1658 |
1659 | jsprim@^1.2.2:
1660 | version "1.3.1"
1661 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
1662 | dependencies:
1663 | extsprintf "1.0.2"
1664 | json-schema "0.2.3"
1665 | verror "1.3.6"
1666 |
1667 | kind-of@^3.0.2:
1668 | version "3.1.0"
1669 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
1670 | dependencies:
1671 | is-buffer "^1.0.2"
1672 |
1673 | lazystream@^1.0.0:
1674 | version "1.0.0"
1675 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
1676 | dependencies:
1677 | readable-stream "^2.0.5"
1678 |
1679 | levn@^0.3.0, levn@~0.3.0:
1680 | version "0.3.0"
1681 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1682 | dependencies:
1683 | prelude-ls "~1.1.2"
1684 | type-check "~0.3.2"
1685 |
1686 | lodash._baseassign@^3.0.0:
1687 | version "3.2.0"
1688 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
1689 | dependencies:
1690 | lodash._basecopy "^3.0.0"
1691 | lodash.keys "^3.0.0"
1692 |
1693 | lodash._basecopy@^3.0.0:
1694 | version "3.0.1"
1695 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
1696 |
1697 | lodash._basecreate@^3.0.0:
1698 | version "3.0.3"
1699 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
1700 |
1701 | lodash._getnative@^3.0.0:
1702 | version "3.9.1"
1703 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
1704 |
1705 | lodash._isiterateecall@^3.0.0:
1706 | version "3.0.9"
1707 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
1708 |
1709 | lodash.create@3.1.1:
1710 | version "3.1.1"
1711 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
1712 | dependencies:
1713 | lodash._baseassign "^3.0.0"
1714 | lodash._basecreate "^3.0.0"
1715 | lodash._isiterateecall "^3.0.0"
1716 |
1717 | lodash.isarguments@^3.0.0:
1718 | version "3.1.0"
1719 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
1720 |
1721 | lodash.isarray@^3.0.0:
1722 | version "3.0.4"
1723 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
1724 |
1725 | lodash.keys@^3.0.0:
1726 | version "3.1.2"
1727 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
1728 | dependencies:
1729 | lodash._getnative "^3.0.0"
1730 | lodash.isarguments "^3.0.0"
1731 | lodash.isarray "^3.0.0"
1732 |
1733 | lodash@^4.0.0, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.8.0:
1734 | version "4.17.4"
1735 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
1736 |
1737 | lodash@~4.16.4:
1738 | version "4.16.6"
1739 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777"
1740 |
1741 | lolex@^1.6.0:
1742 | version "1.6.0"
1743 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6"
1744 |
1745 | loose-envify@^1.0.0:
1746 | version "1.3.0"
1747 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
1748 | dependencies:
1749 | js-tokens "^2.0.0"
1750 |
1751 | merge-descriptors@~1.0.0:
1752 | version "1.0.1"
1753 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1754 |
1755 | micromatch@^2.1.5:
1756 | version "2.3.11"
1757 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
1758 | dependencies:
1759 | arr-diff "^2.0.0"
1760 | array-unique "^0.2.1"
1761 | braces "^1.8.2"
1762 | expand-brackets "^0.1.4"
1763 | extglob "^0.3.1"
1764 | filename-regex "^2.0.0"
1765 | is-extglob "^1.0.0"
1766 | is-glob "^2.0.1"
1767 | kind-of "^3.0.2"
1768 | normalize-path "^2.0.1"
1769 | object.omit "^2.0.0"
1770 | parse-glob "^3.0.4"
1771 | regex-cache "^0.4.2"
1772 |
1773 | mime-db@~1.25.0:
1774 | version "1.25.0"
1775 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
1776 |
1777 | mime-types@^2.1.12, mime-types@~2.1.7:
1778 | version "2.1.13"
1779 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
1780 | dependencies:
1781 | mime-db "~1.25.0"
1782 |
1783 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2:
1784 | version "3.0.3"
1785 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
1786 | dependencies:
1787 | brace-expansion "^1.0.0"
1788 |
1789 | minimist@0.0.8, minimist@~0.0.1:
1790 | version "0.0.8"
1791 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1792 |
1793 | minimist@^1.2.0:
1794 | version "1.2.0"
1795 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1796 |
1797 | mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
1798 | version "0.5.1"
1799 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1800 | dependencies:
1801 | minimist "0.0.8"
1802 |
1803 | mocha@^3.2.0:
1804 | version "3.2.0"
1805 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3"
1806 | dependencies:
1807 | browser-stdout "1.3.0"
1808 | commander "2.9.0"
1809 | debug "2.2.0"
1810 | diff "1.4.0"
1811 | escape-string-regexp "1.0.5"
1812 | glob "7.0.5"
1813 | growl "1.9.2"
1814 | json3 "3.3.2"
1815 | lodash.create "3.1.1"
1816 | mkdirp "0.5.1"
1817 | supports-color "3.1.2"
1818 |
1819 | module-not-found-error@^1.0.0:
1820 | version "1.0.1"
1821 | resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0"
1822 |
1823 | ms@0.7.1:
1824 | version "0.7.1"
1825 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
1826 |
1827 | mute-stream@0.0.5:
1828 | version "0.0.5"
1829 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
1830 |
1831 | mute-stream@0.0.6:
1832 | version "0.0.6"
1833 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
1834 |
1835 | nan@^2.3.0:
1836 | version "2.5.0"
1837 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
1838 |
1839 | native-promise-only@^0.8.1:
1840 | version "0.8.1"
1841 | resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11"
1842 |
1843 | natural-compare@^1.4.0:
1844 | version "1.4.0"
1845 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1846 |
1847 | node-pre-gyp@^0.6.29:
1848 | version "0.6.32"
1849 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
1850 | dependencies:
1851 | mkdirp "~0.5.1"
1852 | nopt "~3.0.6"
1853 | npmlog "^4.0.1"
1854 | rc "~1.1.6"
1855 | request "^2.79.0"
1856 | rimraf "~2.5.4"
1857 | semver "~5.3.0"
1858 | tar "~2.2.1"
1859 | tar-pack "~3.3.0"
1860 |
1861 | noop2@^2.0.0:
1862 | version "2.0.0"
1863 | resolved "https://registry.yarnpkg.com/noop2/-/noop2-2.0.0.tgz#4b636015e9882b54783c02b412f699d8c5cd0a5b"
1864 |
1865 | nopt@~3.0.6:
1866 | version "3.0.6"
1867 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
1868 | dependencies:
1869 | abbrev "1"
1870 |
1871 | normalize-path@^2.0.0, normalize-path@^2.0.1:
1872 | version "2.0.1"
1873 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
1874 |
1875 | npm-install-package@^1.0.2:
1876 | version "1.1.0"
1877 | resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-1.1.0.tgz#f9fc1f84c2d31f6105631e0b5f5f280d1151d97e"
1878 | dependencies:
1879 | noop2 "^2.0.0"
1880 |
1881 | npmlog@^4.0.1:
1882 | version "4.0.2"
1883 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
1884 | dependencies:
1885 | are-we-there-yet "~1.1.2"
1886 | console-control-strings "~1.1.0"
1887 | gauge "~2.7.1"
1888 | set-blocking "~2.0.0"
1889 |
1890 | number-is-nan@^1.0.0:
1891 | version "1.0.1"
1892 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1893 |
1894 | oauth-sign@~0.8.1:
1895 | version "0.8.2"
1896 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1897 |
1898 | object-assign@^4.0.1, object-assign@^4.1.0:
1899 | version "4.1.0"
1900 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
1901 |
1902 | object.omit@^2.0.0:
1903 | version "2.0.1"
1904 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1905 | dependencies:
1906 | for-own "^0.1.4"
1907 | is-extendable "^0.1.1"
1908 |
1909 | once@^1.3.0:
1910 | version "1.4.0"
1911 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1912 | dependencies:
1913 | wrappy "1"
1914 |
1915 | once@~1.3.0, once@~1.3.3:
1916 | version "1.3.3"
1917 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
1918 | dependencies:
1919 | wrappy "1"
1920 |
1921 | onetime@^1.0.0:
1922 | version "1.1.0"
1923 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
1924 |
1925 | optimist@^0.6.1:
1926 | version "0.6.1"
1927 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
1928 | dependencies:
1929 | minimist "~0.0.1"
1930 | wordwrap "~0.0.2"
1931 |
1932 | optionator@^0.8.2:
1933 | version "0.8.2"
1934 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1935 | dependencies:
1936 | deep-is "~0.1.3"
1937 | fast-levenshtein "~2.0.4"
1938 | levn "~0.3.0"
1939 | prelude-ls "~1.1.2"
1940 | type-check "~0.3.2"
1941 | wordwrap "~1.0.0"
1942 |
1943 | os-homedir@^1.0.0:
1944 | version "1.0.2"
1945 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1946 |
1947 | os-shim@^0.1.2:
1948 | version "0.1.3"
1949 | resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
1950 |
1951 | os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
1952 | version "1.0.2"
1953 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1954 |
1955 | output-file-sync@^1.1.0:
1956 | version "1.1.2"
1957 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
1958 | dependencies:
1959 | graceful-fs "^4.1.4"
1960 | mkdirp "^0.5.1"
1961 | object-assign "^4.1.0"
1962 |
1963 | parse-glob@^3.0.4:
1964 | version "3.0.4"
1965 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1966 | dependencies:
1967 | glob-base "^0.3.0"
1968 | is-dotfile "^1.0.0"
1969 | is-extglob "^1.0.0"
1970 | is-glob "^2.0.0"
1971 |
1972 | path-is-absolute@^1.0.0:
1973 | version "1.0.1"
1974 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1975 |
1976 | path-is-inside@^1.0.1:
1977 | version "1.0.2"
1978 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1979 |
1980 | path-to-regexp@^1.7.0:
1981 | version "1.7.0"
1982 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
1983 | dependencies:
1984 | isarray "0.0.1"
1985 |
1986 | pify@^2.0.0:
1987 | version "2.3.0"
1988 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1989 |
1990 | pinkie-promise@^2.0.0:
1991 | version "2.0.1"
1992 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1993 | dependencies:
1994 | pinkie "^2.0.0"
1995 |
1996 | pinkie@^2.0.0:
1997 | version "2.0.4"
1998 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1999 |
2000 | pluralize@^1.2.1:
2001 | version "1.2.1"
2002 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
2003 |
2004 | prelude-ls@~1.1.2:
2005 | version "1.1.2"
2006 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
2007 |
2008 | preserve@^0.2.0:
2009 | version "0.2.0"
2010 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
2011 |
2012 | private@^0.1.6:
2013 | version "0.1.6"
2014 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
2015 |
2016 | process-nextick-args@~1.0.6:
2017 | version "1.0.7"
2018 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
2019 |
2020 | progress@^1.1.8:
2021 | version "1.1.8"
2022 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
2023 |
2024 | proxyquire@^1.7.11:
2025 | version "1.7.11"
2026 | resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.7.11.tgz#13b494eb1e71fb21cc3ebe3699e637d3bec1af9e"
2027 | dependencies:
2028 | fill-keys "^1.0.2"
2029 | module-not-found-error "^1.0.0"
2030 | resolve "~1.1.7"
2031 |
2032 | punycode@1.3.2:
2033 | version "1.3.2"
2034 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
2035 |
2036 | punycode@^1.4.1:
2037 | version "1.4.1"
2038 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
2039 |
2040 | q@~1.4.1:
2041 | version "1.4.1"
2042 | resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
2043 |
2044 | qs@~6.3.0:
2045 | version "6.3.0"
2046 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
2047 |
2048 | querystring@0.2.0:
2049 | version "0.2.0"
2050 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
2051 |
2052 | randomatic@^1.1.3:
2053 | version "1.1.6"
2054 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
2055 | dependencies:
2056 | is-number "^2.0.2"
2057 | kind-of "^3.0.2"
2058 |
2059 | rc@~1.1.6:
2060 | version "1.1.6"
2061 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
2062 | dependencies:
2063 | deep-extend "~0.4.0"
2064 | ini "~1.3.0"
2065 | minimist "^1.2.0"
2066 | strip-json-comments "~1.0.4"
2067 |
2068 | readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2:
2069 | version "2.2.2"
2070 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
2071 | dependencies:
2072 | buffer-shims "^1.0.0"
2073 | core-util-is "~1.0.0"
2074 | inherits "~2.0.1"
2075 | isarray "~1.0.0"
2076 | process-nextick-args "~1.0.6"
2077 | string_decoder "~0.10.x"
2078 | util-deprecate "~1.0.1"
2079 |
2080 | readable-stream@~2.0.5:
2081 | version "2.0.6"
2082 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
2083 | dependencies:
2084 | core-util-is "~1.0.0"
2085 | inherits "~2.0.1"
2086 | isarray "~1.0.0"
2087 | process-nextick-args "~1.0.6"
2088 | string_decoder "~0.10.x"
2089 | util-deprecate "~1.0.1"
2090 |
2091 | readable-stream@~2.1.4:
2092 | version "2.1.5"
2093 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
2094 | dependencies:
2095 | buffer-shims "^1.0.0"
2096 | core-util-is "~1.0.0"
2097 | inherits "~2.0.1"
2098 | isarray "~1.0.0"
2099 | process-nextick-args "~1.0.6"
2100 | string_decoder "~0.10.x"
2101 | util-deprecate "~1.0.1"
2102 |
2103 | readdirp@^2.0.0:
2104 | version "2.1.0"
2105 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
2106 | dependencies:
2107 | graceful-fs "^4.1.2"
2108 | minimatch "^3.0.2"
2109 | readable-stream "^2.0.2"
2110 | set-immediate-shim "^1.0.1"
2111 |
2112 | readline2@^1.0.1:
2113 | version "1.0.1"
2114 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
2115 | dependencies:
2116 | code-point-at "^1.0.0"
2117 | is-fullwidth-code-point "^1.0.0"
2118 | mute-stream "0.0.5"
2119 |
2120 | rechoir@^0.6.2:
2121 | version "0.6.2"
2122 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
2123 | dependencies:
2124 | resolve "^1.1.6"
2125 |
2126 | regenerate@^1.2.1:
2127 | version "1.3.2"
2128 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
2129 |
2130 | regenerator-runtime@^0.10.0:
2131 | version "0.10.1"
2132 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
2133 |
2134 | regenerator-transform@0.9.8:
2135 | version "0.9.8"
2136 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c"
2137 | dependencies:
2138 | babel-runtime "^6.18.0"
2139 | babel-types "^6.19.0"
2140 | private "^0.1.6"
2141 |
2142 | regex-cache@^0.4.2:
2143 | version "0.4.3"
2144 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
2145 | dependencies:
2146 | is-equal-shallow "^0.1.3"
2147 | is-primitive "^2.0.0"
2148 |
2149 | regexpu-core@^2.0.0:
2150 | version "2.0.0"
2151 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
2152 | dependencies:
2153 | regenerate "^1.2.1"
2154 | regjsgen "^0.2.0"
2155 | regjsparser "^0.1.4"
2156 |
2157 | regjsgen@^0.2.0:
2158 | version "0.2.0"
2159 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
2160 |
2161 | regjsparser@^0.1.4:
2162 | version "0.1.5"
2163 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
2164 | dependencies:
2165 | jsesc "~0.5.0"
2166 |
2167 | repeat-element@^1.1.2:
2168 | version "1.1.2"
2169 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
2170 |
2171 | repeat-string@^1.5.2:
2172 | version "1.6.1"
2173 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
2174 |
2175 | repeating@^2.0.0:
2176 | version "2.0.1"
2177 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
2178 | dependencies:
2179 | is-finite "^1.0.0"
2180 |
2181 | request@2.79.0, request@^2.79.0:
2182 | version "2.79.0"
2183 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
2184 | dependencies:
2185 | aws-sign2 "~0.6.0"
2186 | aws4 "^1.2.1"
2187 | caseless "~0.11.0"
2188 | combined-stream "~1.0.5"
2189 | extend "~3.0.0"
2190 | forever-agent "~0.6.1"
2191 | form-data "~2.1.1"
2192 | har-validator "~2.0.6"
2193 | hawk "~3.1.3"
2194 | http-signature "~1.1.0"
2195 | is-typedarray "~1.0.0"
2196 | isstream "~0.1.2"
2197 | json-stringify-safe "~5.0.1"
2198 | mime-types "~2.1.7"
2199 | oauth-sign "~0.8.1"
2200 | qs "~6.3.0"
2201 | stringstream "~0.0.4"
2202 | tough-cookie "~2.3.0"
2203 | tunnel-agent "~0.4.1"
2204 | uuid "^3.0.0"
2205 |
2206 | require-uncached@^1.0.2:
2207 | version "1.0.3"
2208 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
2209 | dependencies:
2210 | caller-path "^0.1.0"
2211 | resolve-from "^1.0.0"
2212 |
2213 | resolve-from@^1.0.0:
2214 | version "1.0.1"
2215 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
2216 |
2217 | resolve-url@~0.2.1:
2218 | version "0.2.1"
2219 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
2220 |
2221 | resolve@^1.1.6, resolve@~1.1.7:
2222 | version "1.1.7"
2223 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
2224 |
2225 | restore-cursor@^1.0.1:
2226 | version "1.0.1"
2227 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
2228 | dependencies:
2229 | exit-hook "^1.0.0"
2230 | onetime "^1.0.0"
2231 |
2232 | rgb2hex@~0.1.0:
2233 | version "0.1.0"
2234 | resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.0.tgz#ccd55f860ae0c5c4ea37504b958e442d8d12325b"
2235 |
2236 | rimraf@2, rimraf@^2.2.8, rimraf@~2.5.1, rimraf@~2.5.4:
2237 | version "2.5.4"
2238 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
2239 | dependencies:
2240 | glob "^7.0.5"
2241 |
2242 | run-async@^0.1.0:
2243 | version "0.1.0"
2244 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
2245 | dependencies:
2246 | once "^1.3.0"
2247 |
2248 | run-async@^2.2.0:
2249 | version "2.3.0"
2250 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
2251 | dependencies:
2252 | is-promise "^2.1.0"
2253 |
2254 | rx-lite@^3.1.2:
2255 | version "3.1.2"
2256 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
2257 |
2258 | rx@^4.1.0:
2259 | version "4.1.0"
2260 | resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
2261 |
2262 | samsam@1.x, samsam@^1.1.3:
2263 | version "1.2.1"
2264 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67"
2265 |
2266 | semver@~5.3.0:
2267 | version "5.3.0"
2268 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
2269 |
2270 | set-blocking@~2.0.0:
2271 | version "2.0.0"
2272 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
2273 |
2274 | set-immediate-shim@^1.0.1:
2275 | version "1.0.1"
2276 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
2277 |
2278 | shelljs@^0.7.5:
2279 | version "0.7.7"
2280 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
2281 | dependencies:
2282 | glob "^7.0.0"
2283 | interpret "^1.0.0"
2284 | rechoir "^0.6.2"
2285 |
2286 | signal-exit@^3.0.0:
2287 | version "3.0.2"
2288 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
2289 |
2290 | sinon-chai@^2.9.0:
2291 | version "2.9.0"
2292 | resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-2.9.0.tgz#34d820042bc9661a14527130d401eb462c49bb84"
2293 |
2294 | sinon@^2.1.0:
2295 | version "2.1.0"
2296 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.1.0.tgz#e057a9d2bf1b32f5d6dd62628ca9ee3961b0cafb"
2297 | dependencies:
2298 | diff "^3.1.0"
2299 | formatio "1.2.0"
2300 | lolex "^1.6.0"
2301 | native-promise-only "^0.8.1"
2302 | path-to-regexp "^1.7.0"
2303 | samsam "^1.1.3"
2304 | text-encoding "0.6.4"
2305 | type-detect "^4.0.0"
2306 |
2307 | slash@^1.0.0:
2308 | version "1.0.0"
2309 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
2310 |
2311 | slice-ansi@0.0.4:
2312 | version "0.0.4"
2313 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
2314 |
2315 | sntp@1.x.x:
2316 | version "1.0.9"
2317 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
2318 | dependencies:
2319 | hoek "2.x.x"
2320 |
2321 | source-map-resolve@^0.3.0:
2322 | version "0.3.1"
2323 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
2324 | dependencies:
2325 | atob "~1.1.0"
2326 | resolve-url "~0.2.1"
2327 | source-map-url "~0.3.0"
2328 | urix "~0.1.0"
2329 |
2330 | source-map-support@^0.4.2:
2331 | version "0.4.8"
2332 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
2333 | dependencies:
2334 | source-map "^0.5.3"
2335 |
2336 | source-map-url@~0.3.0:
2337 | version "0.3.0"
2338 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
2339 |
2340 | source-map@^0.1.38:
2341 | version "0.1.43"
2342 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
2343 | dependencies:
2344 | amdefine ">=0.0.4"
2345 |
2346 | source-map@^0.5.0, source-map@^0.5.3:
2347 | version "0.5.6"
2348 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
2349 |
2350 | spawn-sync@^1.0.15:
2351 | version "1.0.15"
2352 | resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"
2353 | dependencies:
2354 | concat-stream "^1.4.7"
2355 | os-shim "^0.1.2"
2356 |
2357 | sprintf-js@~1.0.2:
2358 | version "1.0.3"
2359 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2360 |
2361 | sshpk@^1.7.0:
2362 | version "1.10.1"
2363 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
2364 | dependencies:
2365 | asn1 "~0.2.3"
2366 | assert-plus "^1.0.0"
2367 | dashdash "^1.12.0"
2368 | getpass "^0.1.1"
2369 | optionalDependencies:
2370 | bcrypt-pbkdf "^1.0.0"
2371 | ecc-jsbn "~0.1.1"
2372 | jodid25519 "^1.0.0"
2373 | jsbn "~0.1.0"
2374 | tweetnacl "~0.14.0"
2375 |
2376 | string-width@^1.0.1:
2377 | version "1.0.2"
2378 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
2379 | dependencies:
2380 | code-point-at "^1.0.0"
2381 | is-fullwidth-code-point "^1.0.0"
2382 | strip-ansi "^3.0.0"
2383 |
2384 | string-width@^2.0.0:
2385 | version "2.0.0"
2386 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e"
2387 | dependencies:
2388 | is-fullwidth-code-point "^2.0.0"
2389 | strip-ansi "^3.0.0"
2390 |
2391 | string_decoder@~0.10.x:
2392 | version "0.10.31"
2393 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
2394 |
2395 | stringstream@~0.0.4:
2396 | version "0.0.5"
2397 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
2398 |
2399 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2400 | version "3.0.1"
2401 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2402 | dependencies:
2403 | ansi-regex "^2.0.0"
2404 |
2405 | strip-bom@^3.0.0:
2406 | version "3.0.0"
2407 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
2408 |
2409 | strip-json-comments@~1.0.4:
2410 | version "1.0.4"
2411 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
2412 |
2413 | strip-json-comments@~2.0.1:
2414 | version "2.0.1"
2415 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2416 |
2417 | supports-color@3.1.2, supports-color@^3.1.2:
2418 | version "3.1.2"
2419 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
2420 | dependencies:
2421 | has-flag "^1.0.0"
2422 |
2423 | supports-color@^0.2.0:
2424 | version "0.2.0"
2425 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
2426 |
2427 | supports-color@^2.0.0:
2428 | version "2.0.0"
2429 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2430 |
2431 | table@^3.7.8:
2432 | version "3.8.3"
2433 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
2434 | dependencies:
2435 | ajv "^4.7.0"
2436 | ajv-keywords "^1.0.0"
2437 | chalk "^1.1.1"
2438 | lodash "^4.0.0"
2439 | slice-ansi "0.0.4"
2440 | string-width "^2.0.0"
2441 |
2442 | tar-pack@~3.3.0:
2443 | version "3.3.0"
2444 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
2445 | dependencies:
2446 | debug "~2.2.0"
2447 | fstream "~1.0.10"
2448 | fstream-ignore "~1.0.5"
2449 | once "~1.3.3"
2450 | readable-stream "~2.1.4"
2451 | rimraf "~2.5.1"
2452 | tar "~2.2.1"
2453 | uid-number "~0.0.6"
2454 |
2455 | tar-stream@^1.5.0:
2456 | version "1.5.2"
2457 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf"
2458 | dependencies:
2459 | bl "^1.0.0"
2460 | end-of-stream "^1.0.0"
2461 | readable-stream "^2.0.0"
2462 | xtend "^4.0.0"
2463 |
2464 | tar@~2.2.1:
2465 | version "2.2.1"
2466 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
2467 | dependencies:
2468 | block-stream "*"
2469 | fstream "^1.0.2"
2470 | inherits "2"
2471 |
2472 | text-encoding@0.6.4:
2473 | version "0.6.4"
2474 | resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19"
2475 |
2476 | text-table@~0.2.0:
2477 | version "0.2.0"
2478 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2479 |
2480 | through@^2.3.6:
2481 | version "2.3.8"
2482 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2483 |
2484 | tmp@^0.0.29:
2485 | version "0.0.29"
2486 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0"
2487 | dependencies:
2488 | os-tmpdir "~1.0.1"
2489 |
2490 | to-fast-properties@^1.0.1:
2491 | version "1.0.2"
2492 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
2493 |
2494 | tough-cookie@~2.3.0:
2495 | version "2.3.2"
2496 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
2497 | dependencies:
2498 | punycode "^1.4.1"
2499 |
2500 | trim-right@^1.0.1:
2501 | version "1.0.1"
2502 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
2503 |
2504 | tryit@^1.0.1:
2505 | version "1.0.3"
2506 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
2507 |
2508 | tunnel-agent@~0.4.1:
2509 | version "0.4.3"
2510 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
2511 |
2512 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
2513 | version "0.14.5"
2514 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
2515 |
2516 | type-check@~0.3.2:
2517 | version "0.3.2"
2518 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
2519 | dependencies:
2520 | prelude-ls "~1.1.2"
2521 |
2522 | type-detect@0.1.1:
2523 | version "0.1.1"
2524 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
2525 |
2526 | type-detect@^1.0.0:
2527 | version "1.0.0"
2528 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
2529 |
2530 | type-detect@^4.0.0:
2531 | version "4.0.0"
2532 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.0.tgz#62053883542a321f2f7b25746dc696478b18ff6b"
2533 |
2534 | typedarray@^0.0.6:
2535 | version "0.0.6"
2536 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
2537 |
2538 | uid-number@~0.0.6:
2539 | version "0.0.6"
2540 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
2541 |
2542 | urix@^0.1.0, urix@~0.1.0:
2543 | version "0.1.0"
2544 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
2545 |
2546 | url@^0.11.0:
2547 | version "0.11.0"
2548 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
2549 | dependencies:
2550 | punycode "1.3.2"
2551 | querystring "0.2.0"
2552 |
2553 | user-home@^1.1.1:
2554 | version "1.1.1"
2555 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
2556 |
2557 | user-home@^2.0.0:
2558 | version "2.0.0"
2559 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
2560 | dependencies:
2561 | os-homedir "^1.0.0"
2562 |
2563 | util-deprecate@~1.0.1:
2564 | version "1.0.2"
2565 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2566 |
2567 | uuid@^3.0.0:
2568 | version "3.0.1"
2569 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
2570 |
2571 | v8flags@^2.0.10:
2572 | version "2.0.11"
2573 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
2574 | dependencies:
2575 | user-home "^1.1.1"
2576 |
2577 | validator@^5.4.0:
2578 | version "5.7.0"
2579 | resolved "https://registry.yarnpkg.com/validator/-/validator-5.7.0.tgz#7a87a58146b695ac486071141c0c49d67da05e5c"
2580 |
2581 | verror@1.3.6:
2582 | version "1.3.6"
2583 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
2584 | dependencies:
2585 | extsprintf "1.0.2"
2586 |
2587 | wdio-dot-reporter@^0.0.6:
2588 | version "0.0.6"
2589 | resolved "https://registry.yarnpkg.com/wdio-dot-reporter/-/wdio-dot-reporter-0.0.6.tgz#153b3e1c5d76777190d893480ffa6f37833740f1"
2590 | dependencies:
2591 | babel-runtime "^5.8.25"
2592 |
2593 | webdriverio@^4.6.2:
2594 | version "4.6.2"
2595 | resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.6.2.tgz#dd095ee618896a21c8f1b9d4278736d85a64ca0f"
2596 | dependencies:
2597 | archiver "1.0.0"
2598 | babel-runtime "^6.9.2"
2599 | css-parse "~2.0.0"
2600 | css-value "~0.0.1"
2601 | deepmerge "^0.2.10"
2602 | ejs "^2.3.1"
2603 | gaze "^1.1.2"
2604 | glob "^7.0.5"
2605 | inquirer "^1.1.2"
2606 | json-stringify-safe "^5.0.1"
2607 | mkdirp "^0.5.1"
2608 | npm-install-package "^1.0.2"
2609 | optimist "^0.6.1"
2610 | q "~1.4.1"
2611 | request "2.79.0"
2612 | rgb2hex "~0.1.0"
2613 | supports-color "^3.1.2"
2614 | url "^0.11.0"
2615 | validator "^5.4.0"
2616 | wdio-dot-reporter "^0.0.6"
2617 | wgxpath "~1.0.0"
2618 |
2619 | wgxpath@~1.0.0:
2620 | version "1.0.0"
2621 | resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz#eef8a4b9d558cc495ad3a9a2b751597ecd9af690"
2622 |
2623 | wide-align@^1.1.0:
2624 | version "1.1.0"
2625 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
2626 | dependencies:
2627 | string-width "^1.0.1"
2628 |
2629 | wordwrap@~0.0.2:
2630 | version "0.0.3"
2631 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
2632 |
2633 | wordwrap@~1.0.0:
2634 | version "1.0.0"
2635 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
2636 |
2637 | wrappy@1:
2638 | version "1.0.2"
2639 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2640 |
2641 | write@^0.2.1:
2642 | version "0.2.1"
2643 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
2644 | dependencies:
2645 | mkdirp "^0.5.1"
2646 |
2647 | xtend@^4.0.0:
2648 | version "4.0.1"
2649 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
2650 |
2651 | zip-stream@^1.0.0:
2652 | version "1.1.0"
2653 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.1.0.tgz#2ad479fffc168e05a888e8c348ff6813b3f13733"
2654 | dependencies:
2655 | archiver-utils "^1.3.0"
2656 | compress-commons "^1.1.0"
2657 | lodash "^4.8.0"
2658 | readable-stream "^2.0.0"
2659 |
--------------------------------------------------------------------------------