├── .gitignore ├── .travis.yml ├── .jshintrc ├── CONTRIBUTING.md ├── LICENSE.md ├── package.json ├── karma.conf.js ├── Countable.min.js ├── test └── test.js ├── README.md ├── index.d.ts ├── Countable.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | coverage 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8.0" 4 | addons: 5 | firefox: "latest" 6 | before_script: 7 | - export CHROME_BIN=chromium-browser 8 | - export DISPLAY=:99.0 9 | - sh -e /etc/init.d/xvfb start 10 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "globals": { 3 | "define": true 4 | }, 5 | "asi": true, 6 | "browser": true, 7 | "curly": false, 8 | "es3": true, 9 | "latedef": true, 10 | "laxbreak": true, 11 | "node": true, 12 | "nonbsp": true, 13 | "strict": true, 14 | "undef": true, 15 | "unused": true 16 | } -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Countable 2 | 3 | * When submitting a pull request or an issue, be as precise as possible in wording the changes you've made or the problems you've encountered. 4 | * Please follow the coding conventions used on this script. 5 | * use single quotes 6 | * indent using two spaces 7 | * omit semicolons where possible 8 | * follow the [jsdoc specification](https://code.google.com/p/jsdoc-toolkit/w/list) for commenting 9 | * for other questions, follow the [airbnb styleguide](https://github.com/airbnb/javascript) 10 | * If applicable, provide a live example on [jsFiddle](http://jsfiddle.net) or [CodePen](http://codepen.io). -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (C) 2015 Sacha Schmid (http://sacha.me) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "countable", 3 | "description": "Countable is a JavaScript library to add live paragraph-, word- and character-counting to an HTML element.", 4 | "author": "Sacha Schmid ", 5 | "version": "3.0.1", 6 | "main": "Countable.js", 7 | "keywords": [ 8 | "paragraphs", 9 | "words", 10 | "characters", 11 | "count", 12 | "live" 13 | ], 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/RadLikeWhoa/Countable.git" 17 | }, 18 | "devDependencies": { 19 | "chai": "^4.0.2", 20 | "karma": "^1.7.0", 21 | "karma-chai": "^0.1.0", 22 | "karma-chrome-launcher": "^2.2.0", 23 | "karma-coverage": "^1.1.1", 24 | "karma-firefox-launcher": "^1.0.1", 25 | "karma-mocha": "^1.3.0", 26 | "karma-safari-launcher": "^1.0.0", 27 | "mocha": "^3.4.2", 28 | "uglify-es": "^3.3.9" 29 | }, 30 | "scripts": { 31 | "test": "./node_modules/karma/bin/karma start", 32 | "minify": "./node_modules/uglify-es/bin/uglifyjs -c -m -o Countable.min.js Countable.js" 33 | }, 34 | "license": "MIT" 35 | } 36 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | 3 | module.exports = function (config) { 4 | var configuration = { 5 | 6 | // base path, that will be used to resolve files and exclude 7 | basePath: '', 8 | 9 | frameworks: [ 'mocha', 'chai' ], 10 | 11 | // list of files / patterns to load in the browser 12 | files: [ 13 | 'Countable.js', 14 | 'test/*.js' 15 | ], 16 | 17 | // test results reporter to use 18 | // possible values: 'dots', 'progress', 'junit' 19 | reporters: [ 'progress', 'coverage' ], 20 | 21 | preprocessors: { 22 | 'Countable.js': [ 'coverage' ] 23 | }, 24 | 25 | // web server port 26 | port: 9876, 27 | 28 | // enable / disable colors in the output (reporters and logs) 29 | colors: true, 30 | 31 | // level of logging 32 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 33 | logLevel: config.LOG_INFO, 34 | 35 | // enable / disable watching file and executing tests whenever any file changes 36 | autoWatch: true, 37 | 38 | // Start these browsers, currently available: 39 | // - Chrome 40 | // - ChromeCanary 41 | // - Firefox 42 | // - Opera 43 | // - Safari (only Mac) 44 | // - PhantomJS 45 | // - IE (only Windows) 46 | browsers: [ 'Firefox', 'Chrome', 'Safari' ], 47 | 48 | // If browser does not capture in Given timeout [ms], kill it 49 | captureTimeout: 20000, 50 | 51 | // Continuous Integration mode 52 | // if true, it capture browsers, run tests and exit 53 | singleRun: true, 54 | 55 | // report which specs are slower than 500ms 56 | // CLI --report-slower-than 500 57 | reportSlowerThan: 500 58 | } 59 | 60 | if (process.env.TRAVIS) { 61 | configuration.browsers = [ 'Firefox' ] 62 | } 63 | 64 | config.set(configuration) 65 | } 66 | -------------------------------------------------------------------------------- /Countable.min.js: -------------------------------------------------------------------------------- 1 | !function(t){"use strict";let n=[];const e=Array.prototype.forEach;function r(t){const n=[];let e=0;const r=t.length;for(;e=55296&&o<=56319&&e]*>/gi,"")),n.ignore&&e.call(n.ignore,function(t){o=o.replace(t,"")});const c=o.trim();return{paragraphs:c?(c.match(n.hardReturns?/\n{2,}/g:/\n+/g)||[]).length+1:0,sentences:c?(c.match(/[.?!…]+./g)||[]).length+1:0,words:c?(c.replace(/['";:,.?¿\-!¡]+/g,"").match(/\S+/g)||[]).length:0,characters:c?r(c.replace(/\s/g,"")).length:0,all:r(o).length}}const i={on:function(t,r,i){if(o(t,r))return Array.isArray(t)||(t=[t]),e.call(t,function(t){const e=function(){r.call(t,c(t,i))};n.push({element:t,handler:e}),e(),t.addEventListener("input",e)}),this},off:function(t){if(o(t,function(){}))return Array.isArray(t)||(t=[t]),n.filter(function(n){return-1!==t.indexOf(n.element)}).forEach(function(t){t.element.removeEventListener("input",t.handler)}),n=n.filter(function(n){return-1===t.indexOf(n.element)}),this},count:function(t,n,r){if(o(t,n))return Array.isArray(t)||(t=[t]),e.call(t,function(t){n.call(t,c(t,r))}),this},enabled:function(t){return void 0===t.length&&(t=[t]),n.filter(function(n){return-1!==t.indexOf(n.element)}).length===t.length}};"object"==typeof exports?module.exports=i:"function"==typeof define&&define.amd?define(function(){return i}):t.Countable=i}(this); -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | var expect = chai.expect 2 | 3 | describe('Countable', function () { 4 | var paragraphs, sentences, words, characters, all, 5 | areaContainer, area 6 | 7 | function callback (counter) { 8 | paragraphs.innerHTML = counter.paragraphs 9 | sentences.innerHTML = counter.sentences 10 | words.innerHTML = counter.words 11 | characters.innerHTML = counter.characters 12 | all.innerHTML = counter.all 13 | } 14 | 15 | function check (values) { 16 | expect(paragraphs.innerHTML).to.equal(values[0]) 17 | expect(sentences.innerHTML).to.equal(values[1]) 18 | expect(words.innerHTML).to.equal(values[2]) 19 | expect(characters.innerHTML).to.equal(values[3]) 20 | expect(all.innerHTML).to.equal(values[4]) 21 | } 22 | 23 | function triggerInput () { 24 | var event = document.createEvent('HTMLEvents') 25 | event.initEvent('input', true, true) 26 | event.eventName = 'input' 27 | area.dispatchEvent(event) 28 | } 29 | 30 | before(function () { 31 | document.body.innerHTML = '
    ' + 32 | '
  • ' + 33 | '
  • ' + 34 | '
  • ' + 35 | '
  • ' + 36 | '
  • ' + 37 | '
' + 38 | '' 39 | 40 | paragraphs = document.getElementById('paragraphs') 41 | sentences = document.getElementById('sentences') 42 | words = document.getElementById('words') 43 | characters = document.getElementById('characters') 44 | all = document.getElementById('all') 45 | 46 | area = document.getElementsByTagName('textarea')[0] 47 | }) 48 | 49 | beforeEach(function () { 50 | area.value = '' 51 | }) 52 | 53 | describe('Countable.on', function () { 54 | it('should enable live counting', function () { 55 | Countable.on(area, callback) 56 | expect(Countable.enabled(area)).to.equal(true) 57 | }) 58 | 59 | it('should count initially', function () { 60 | check([ '0', '0', '0', '0', '0' ]) 61 | }) 62 | 63 | it('should update counts', function () { 64 | area.value = 'Hello world' 65 | triggerInput() 66 | check([ '1', '1', '2', '10', '11' ]) 67 | }) 68 | 69 | it('should disable live counting', function () { 70 | Countable.off(area) 71 | expect(Countable.enabled(area)).to.equal(false) 72 | }) 73 | }) 74 | 75 | describe('Countable.count', function () { 76 | it('should not enable live counting', function () { 77 | Countable.count(area, callback) 78 | expect(Countable.enabled(area)).to.equal(false) 79 | }) 80 | 81 | it('should count initially', function () { 82 | check([ '0', '0', '0', '0', '0' ]) 83 | }) 84 | 85 | it('should not update counts', function () { 86 | area.value = 'Hello world' 87 | triggerInput() 88 | check([ '0', '0', '0', '0', '0' ]) 89 | }) 90 | 91 | it('should work on strings', function () { 92 | Countable.count('Hello world', callback) 93 | check([ '1', '1', '2', '10', '11' ]) 94 | }) 95 | }) 96 | 97 | describe('Options', function () { 98 | beforeEach(function () { 99 | area.value = '' 100 | }) 101 | 102 | it('should strip HTML tags', function () { 103 | area.value = '
Hello world
' 104 | Countable.count(area, callback, { stripTags: true }) 105 | check([ '1', '1', '2', '10', '11' ]) 106 | }) 107 | 108 | it('should use hard returns', function () { 109 | area.value = 'Hello\n\nworld' 110 | Countable.count(area, callback, { hardReturns: true }) 111 | check([ '2', '1', '2', '10', '12' ]) 112 | }) 113 | 114 | it('should ignore given characters', function () { 115 | area.value = 'Hello\nworld' 116 | Countable.count(area, callback, { ignore: [ '\n', 'w', 'D' ] }) 117 | check([ '1', '1', '1', '9', '9' ]) 118 | }) 119 | }) 120 | }) 121 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Countable 2 | 3 | [![Build Status](http://img.shields.io/travis/RadLikeWhoa/Countable.svg)](https://travis-ci.org/RadLikeWhoa/Countable) 4 | [![Code Climate](https://codeclimate.com/github/RadLikeWhoa/Countable/badges/gpa.svg)](https://codeclimate.com/github/RadLikeWhoa/Countable) 5 | [![Latest Tag](http://img.shields.io/github/tag/RadLikeWhoa/Countable.svg)](https://github.com/RadLikeWhoa/Countable/tags) 6 | [![License](http://img.shields.io/badge/license-MIT-orange.svg)](https://github.com/RadLikeWhoa/Countable/blob/master/LICENSE.md) 7 | 8 | Countable is a JavaScript function to add **live paragraph-, word- and character-counting** to an HTML element. Countable is a *zero-dependency* library and comes in at **1KB** when minified and gzipped. 9 | 10 | [**View the Demo**](http://radlikewhoa.github.io/Countable#demo) 11 | 12 | ## Installation 13 | 14 | The preferred method of installation is [**npm**](https://www.npmjs.com/) or [**yarn**](https://yarnpkg.com/). 15 | 16 | ``` 17 | npm i --save-dev countable 18 | yarn add --dev countable 19 | ``` 20 | 21 | Alternatively, you can download the latest [zipball](https://github.com/RadLikeWhoa/Countable/archive/master.zip) or copy the [script](https://raw.github.com/RadLikeWhoa/Countable/master/Countable.js) directly. 22 | 23 | ## Usage 24 | 25 | Countable is available as a Node / CommonJS module, an AMD module and as a global. All methods are accessed on the Countable object directly. 26 | 27 | ### Callbacks 28 | 29 | The `on` and `count` methods both accept a callback. The given callback is then called whenever needed with a single parameter that carries all the relevant data. `this` is bound to the current element. Take the following code for an example. 30 | 31 | ```javascript 32 | Countable.count(document.getElementById('text'), counter => console.log(this, counter)) 33 | ``` 34 | 35 | ``` 36 | => , { all: 0, characters: 0, paragraphs: 0, words: 0 } 37 | ``` 38 | 39 | Property | Meaning 40 | ---------- | -------------------------------------------------------------------------------------------- 41 | paragraphs | The number of paragraphs. Paragraphs can be separated by either a soft or a hard (two line breaks) return. To use hard returns, set the corresponding option (`hardReturns`). 42 | sentences | The number of sentences. Sentences are separated by a sentence-terminating character. 43 | words | The number of words. Words are split using spaces. 44 | characters | The number of characters (without spaces). This contains all non-whitespace characters. 45 | all | The number of characters including whitespace. This is the total number of all characters in the element. 46 | 47 | ### Countable.on(elements, callback, options) 48 | 49 | Bind the callback to all given elements. The callback gets called every time the element's value or text is changed. 50 | 51 | ```javascript 52 | Countable.on(area, counter => console.log(counter)) 53 | ``` 54 | 55 | ### Countable.off(elements) 56 | 57 | Remove the bound callback from all given elements. 58 | 59 | ```javascript 60 | Countable.off(area) 61 | ``` 62 | 63 | ### Countable.count(elements, callback, options) 64 | 65 | Similar to `Countable.on()`, but the callback is only executed once, there are no events bound. 66 | 67 | ```javascript 68 | Countable.count(area, counter => console.log(counter)) 69 | ``` 70 | 71 | ### Countable.enabled(elements) 72 | 73 | Checks the live-counting functionality is bound to the given. 74 | 75 | ```javascript 76 | Countable.enabled(area) 77 | ``` 78 | 79 | ### Options 80 | 81 | `Countable.on()` and `Countable.count()` both accept a third argument, an options object that allows you to change how Countable treats certain aspects of your element's text. 82 | 83 | ```javascript 84 | { 85 | hardReturns: false, 86 | stripTags: false, 87 | ignore: [] 88 | } 89 | ``` 90 | 91 | By default, paragraphs are split by a single return (a soft return). By setting `hardReturns` to true, Countable splits paragraphs after two returns. 92 | 93 | Depending on your application and audience, you might need to strip HTML tags from the text before counting it. You can do this by setting `stripTags` to true. 94 | 95 | Sometimes it is desirable to ignore certain characters. These can be included in an array and passed using the `ignore` option. 96 | 97 | ## Browser Support 98 | 99 | Countable supports all modern browsers. Full ES5 support is expected, as are some ES6 features, namely `let` and `const`. 100 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for Countable.js 3.0.0 2 | // Project: countable 3 | // Definitions by: youjenli youjenli1124+pub@gmail.com 4 | 5 | /** 6 | * How to use this library in typescript? 7 | * 8 | * If you want to use this library in terms of typescript module, 9 | * which means you want to import functions exported from this module to another module and invoke them later, 10 | * then you should add this library to your typescript code by expression `import * as Countable from 'path/to/this/project';` 11 | * or simply import functions which you want to invoke by `import { on, off } from 'path/to/this/project'`. 12 | * Since this library was written in UMD, imported-functions can be load by the module loader 13 | * which you have specified in tsc settings `module` from javascript source file `Countable.js` without occupancy of global namespace. 14 | * 15 | * The other way is to call this library in a non-modular javascript file through global namespace. 16 | * By calling 'non-modular' javascript file, it means that export and import expressions are not allowed in these js file, 17 | * otherwise typescript transpiler will report error. 18 | * 19 | * The first thing you have to do in this case is to let tsc know where is the javascript source file of this library by adding directives 20 | * `/// ` on the top of javascript file which utilize this library. 21 | * After that you can invoke functions of this library from global variable `Countable` (e.g. `Countable.count(elements, callback, )`) 22 | * in your module without warning from development tool which perform type checking for you. 23 | * Notice that in case of importing Countable to global namespace, you will be responsible for concatenating the javascript file of this library 24 | * with your code if you want to, as well as link it to your runtime. 25 | * 26 | */ 27 | 28 | export interface CountingResult { 29 | paragraphs: number 30 | sentences: number 31 | words: number 32 | characters: number 33 | all: number 34 | } 35 | 36 | export interface OptionsOfCountable { 37 | hardReturns?: boolean 38 | stripTags?: boolean 39 | ignore?: string[] 40 | } 41 | 42 | /** 43 | * The `on` method binds the counting handler to all given elements. The 44 | * event is either `oninput` or `onkeydown`, based on the capabilities of 45 | * the browser. 46 | * 47 | * @param elements All elements that should receive the Countable functionality. 48 | * 49 | * @param callback The callback to fire whenever the element's value changes. 50 | * The callback is called with the relevant element bound to `this` 51 | * and the counted values as the single parameter. 52 | * 53 | * @param options An object to modify Countable's behaviour. 54 | * 55 | * @return Returns the Countable object to allow for chaining if the binding complete successfully. Returns void if the argument is not valid. 56 | */ 57 | export function on(elements: NodeList | HTMLCollection, 58 | callback?: (counter: CountingResult) => void, 59 | options?:OptionsOfCountable): Countable 60 | 61 | /** 62 | * The `off` method removes the Countable functionality from all given 63 | * elements. 64 | * 65 | * @param elements All elements whose Countable functionality should be unbound. 66 | * 67 | * @return Returns the Countable object to allow for chaining. 68 | */ 69 | export function off(elements: NodeList | HTMLCollection): Countable; 70 | 71 | /** 72 | * The `count` method works mostly like the `live` method, but no events are 73 | * bound, the functionality is only executed once. 74 | * 75 | * @param elements All elements that should be counted. 76 | * 77 | * @param callback The callback to fire whenever the element's value changes. 78 | * The callback is called with the relevant element bound to `this` 79 | * and the counted values as the single parameter. 80 | * 81 | * @param options An object to modify Countable's behaviour. 82 | * 83 | * @returns The Countable object to allow for chaining. Return void if the argument is not valid. 84 | */ 85 | export function count(elements: NodeList | HTMLCollection | String, 86 | callback?: (counter: CountingResult) => void, 87 | options?: OptionsOfCountable): Countable; 88 | 89 | /** 90 | * The `enabled` method checks if the live-counting functionality is bound 91 | * to an element. 92 | * 93 | * @param element All elements that should be checked for the Countable functionality. 94 | * 95 | * @return A boolean value representing whether Countable functionality is bound to all given elements. 96 | */ 97 | export function enabled(elements: NodeList | HTMLCollection): boolean; 98 | 99 | /** 100 | * The purpose of this type is to gather all functions exported above together. 101 | * Thus content assist of vscode will display the return type of functions above as `Countable` 102 | * instead of the whole structure of this module. Users won't be disturb by verbosity of assisting content. 103 | */ 104 | type Countable = { 105 | on:typeof on 106 | off: typeof off 107 | count: typeof count 108 | enabled: typeof enabled 109 | } 110 | 111 | export as namespace Countable; -------------------------------------------------------------------------------- /Countable.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Countable is a script to allow for live paragraph-, word- and character- 3 | * counting on an HTML element. 4 | * 5 | * @author Sacha Schmid () 6 | * @version 3.0.1 7 | * @license MIT 8 | * @see 9 | */ 10 | 11 | /** 12 | * Note: For the purpose of this internal documentation, arguments of the type 13 | * {Nodes} are to be interpreted as either {NodeList} or {Element}. 14 | */ 15 | 16 | ;(function (global) { 17 | 'use strict' 18 | 19 | /** 20 | * @private 21 | * 22 | * `liveElements` holds all elements that have the live-counting 23 | * functionality bound to them. 24 | */ 25 | 26 | let liveElements = [] 27 | const each = Array.prototype.forEach 28 | 29 | /** 30 | * `ucs2decode` function from the punycode.js library. 31 | * 32 | * Creates an array containing the decimal code points of each Unicode 33 | * character in the string. While JavaScript uses UCS-2 internally, this 34 | * function will convert a pair of surrogate halves (each of which UCS-2 35 | * exposes as separate characters) into a single code point, matching 36 | * UTF-16. 37 | * 38 | * @see 39 | * @see 40 | * 41 | * @param {String} string The Unicode input string (UCS-2). 42 | * 43 | * @return {Array} The new array of code points. 44 | */ 45 | 46 | function decode (string) { 47 | const output = [] 48 | let counter = 0 49 | const length = string.length 50 | 51 | while (counter < length) { 52 | const value = string.charCodeAt(counter++) 53 | 54 | if (value >= 0xD800 && value <= 0xDBFF && counter < length) { 55 | 56 | // It's a high surrogate, and there is a next character. 57 | 58 | const extra = string.charCodeAt(counter++) 59 | 60 | if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. 61 | output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000) 62 | } else { 63 | 64 | // It's an unmatched surrogate; only append this code unit, in case the 65 | // next code unit is the high surrogate of a surrogate pair. 66 | 67 | output.push(value) 68 | counter-- 69 | } 70 | } else { 71 | output.push(value) 72 | } 73 | } 74 | 75 | return output 76 | } 77 | 78 | /** 79 | * `validateArguments` validates the arguments given to each function call. 80 | * Errors are logged to the console as warnings, but Countable fails 81 | * silently. 82 | * 83 | * @private 84 | * 85 | * @param {Nodes|String} targets A (collection of) element(s) or a single 86 | * string to validate. 87 | * 88 | * @param {Function} callback The callback function to validate. 89 | * 90 | * @return {Boolean} Returns whether all arguments are valid. 91 | */ 92 | 93 | function validateArguments (targets, callback) { 94 | const nodes = Object.prototype.toString.call(targets) 95 | const targetsValid = typeof targets === 'string' || ((nodes === '[object NodeList]' || nodes === '[object HTMLCollection]') || targets.nodeType === 1) 96 | const callbackValid = typeof callback === 'function' 97 | 98 | if (!targetsValid) console.error('Countable: Not a valid target') 99 | if (!callbackValid) console.error('Countable: Not a valid callback function') 100 | 101 | return targetsValid && callbackValid 102 | } 103 | 104 | /** 105 | * `count` trims an element's value, optionally strips HTML tags and counts 106 | * paragraphs, sentences, words, characters and characters plus spaces. 107 | * 108 | * @private 109 | * 110 | * @param {Node|String} target The target for the count. 111 | * 112 | * @param {Object} options The options to use for the counting. 113 | * 114 | * @return {Object} The object containing the number of paragraphs, 115 | * sentences, words, characters and characters 116 | * plus spaces. 117 | */ 118 | 119 | function count (target, options) { 120 | let original = '' + (typeof target === 'string' ? target : ('value' in target ? target.value : target.textContent)) 121 | options = options || {} 122 | 123 | /** 124 | * The initial implementation to allow for HTML tags stripping was created 125 | * @craniumslows while the current one was created by @Rob--W. 126 | * 127 | * @see 128 | * @see 129 | */ 130 | 131 | if (options.stripTags) original = original.replace(/<\/?[a-z][^>]*>/gi, '') 132 | 133 | if (options.ignore) { 134 | each.call(options.ignore, function (i) { 135 | original = original.replace(i, '') 136 | }) 137 | } 138 | 139 | const trimmed = original.trim() 140 | 141 | /** 142 | * Most of the performance improvements are based on the works of @epmatsw. 143 | * 144 | * @see 145 | */ 146 | 147 | return { 148 | paragraphs: trimmed ? (trimmed.match(options.hardReturns ? /\n{2,}/g : /\n+/g) || []).length + 1 : 0, 149 | sentences: trimmed ? (trimmed.match(/[.?!…]+./g) || []).length + 1 : 0, 150 | words: trimmed ? (trimmed.replace(/['";:,.?¿\-!¡]+/g, '').match(/\S+/g) || []).length : 0, 151 | characters: trimmed ? decode(trimmed.replace(/\s/g, '')).length : 0, 152 | all: decode(original).length 153 | } 154 | } 155 | 156 | /** 157 | * This is the main object that will later be exposed to other scripts. It 158 | * holds all the public methods that can be used to enable the Countable 159 | * functionality. 160 | * 161 | * Some methods accept an optional options parameter. This includes the 162 | * following options. 163 | * 164 | * {Boolean} hardReturns Use two returns to seperate a paragraph 165 | * instead of one. (default: false) 166 | * {Boolean} stripTags Strip HTML tags before counting the values. 167 | * (default: false) 168 | * {Array} ignore A list of characters that should be removed 169 | * ignored when calculating the counters. 170 | * (default: ) 171 | */ 172 | 173 | const Countable = { 174 | 175 | /** 176 | * The `on` method binds the counting handler to all given elements. The 177 | * event is either `oninput` or `onkeydown`, based on the capabilities of 178 | * the browser. 179 | * 180 | * @param {Nodes} elements All elements that should receive the 181 | * Countable functionality. 182 | * 183 | * @param {Function} callback The callback to fire whenever the 184 | * element's value changes. The callback is 185 | * called with the relevant element bound 186 | * to `this` and the counted values as the 187 | * single parameter. 188 | * 189 | * @param {Object} [options] An object to modify Countable's 190 | * behaviour. 191 | * 192 | * @return {Object} Returns the Countable object to allow for chaining. 193 | */ 194 | 195 | on: function (elements, callback, options) { 196 | if (!validateArguments(elements, callback)) return 197 | 198 | if (!Array.isArray(elements)) { 199 | elements = [ elements ] 200 | } 201 | 202 | each.call(elements, function (e) { 203 | const handler = function () { 204 | callback.call(e, count(e, options)) 205 | } 206 | 207 | liveElements.push({ element: e, handler: handler }) 208 | 209 | handler() 210 | 211 | e.addEventListener('input', handler) 212 | }) 213 | 214 | return this 215 | }, 216 | 217 | /** 218 | * The `off` method removes the Countable functionality from all given 219 | * elements. 220 | * 221 | * @param {Nodes} elements All elements whose Countable functionality 222 | * should be unbound. 223 | * 224 | * @return {Object} Returns the Countable object to allow for chaining. 225 | */ 226 | 227 | off: function (elements) { 228 | if (!validateArguments(elements, function () {})) return 229 | 230 | if (!Array.isArray(elements)) { 231 | elements = [ elements ] 232 | } 233 | 234 | liveElements.filter(function (e) { 235 | return elements.indexOf(e.element) !== -1 236 | }).forEach(function (e) { 237 | e.element.removeEventListener('input', e.handler) 238 | }) 239 | 240 | liveElements = liveElements.filter(function (e) { 241 | return elements.indexOf(e.element) === -1 242 | }) 243 | 244 | return this 245 | }, 246 | 247 | /** 248 | * The `count` method works mostly like the `live` method, but no events are 249 | * bound, the functionality is only executed once. 250 | * 251 | * @param {Nodes|String} targets All elements that should be counted. 252 | * 253 | * @param {Function} callback The callback to fire whenever the 254 | * element's value changes. The callback 255 | * is called with the relevant element 256 | * bound to `this` and the counted values 257 | * as the single parameter. 258 | * 259 | * @param {Object} [options] An object to modify Countable's 260 | * behaviour. 261 | * 262 | * @return {Object} Returns the Countable object to allow for chaining. 263 | */ 264 | 265 | count: function (targets, callback, options) { 266 | if (!validateArguments(targets, callback)) return 267 | 268 | if (!Array.isArray(targets)) { 269 | targets = [ targets ] 270 | } 271 | 272 | each.call(targets, function (e) { 273 | callback.call(e, count(e, options)) 274 | }) 275 | 276 | return this 277 | }, 278 | 279 | /** 280 | * The `enabled` method checks if the live-counting functionality is bound 281 | * to an element. 282 | * 283 | * @param {Node} element All elements that should be checked for the 284 | * Countable functionality. 285 | * 286 | * @return {Boolean} A boolean value representing whether Countable 287 | * functionality is bound to all given elements. 288 | */ 289 | 290 | enabled: function (elements) { 291 | if (elements.length === undefined) { 292 | elements = [ elements ] 293 | } 294 | 295 | return liveElements.filter(function (e) { 296 | return elements.indexOf(e.element) !== -1 297 | }).length === elements.length 298 | } 299 | 300 | } 301 | 302 | /** 303 | * Expose Countable depending on the module system used across the 304 | * application. (Node / CommonJS, AMD, global) 305 | */ 306 | 307 | if (typeof exports === 'object') { 308 | module.exports = Countable 309 | } else if (typeof define === 'function' && define.amd) { 310 | define(function () { return Countable }) 311 | } else { 312 | global.Countable = Countable 313 | } 314 | }(this)); 315 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1, abbrev@1.0.x: 6 | version "1.0.9" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 8 | 9 | accepts@1.3.3: 10 | version "1.3.3" 11 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 12 | dependencies: 13 | mime-types "~2.1.11" 14 | negotiator "0.6.1" 15 | 16 | after@0.8.2: 17 | version "0.8.2" 18 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" 19 | 20 | ajv@^4.9.1: 21 | version "4.11.8" 22 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 23 | dependencies: 24 | co "^4.6.0" 25 | json-stable-stringify "^1.0.1" 26 | 27 | align-text@^0.1.1, align-text@^0.1.3: 28 | version "0.1.4" 29 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 30 | dependencies: 31 | kind-of "^3.0.2" 32 | longest "^1.0.1" 33 | repeat-string "^1.5.2" 34 | 35 | amdefine@>=0.0.4: 36 | version "1.0.1" 37 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 38 | 39 | ansi-regex@^2.0.0: 40 | version "2.1.1" 41 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 42 | 43 | anymatch@^1.3.0: 44 | version "1.3.0" 45 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 46 | dependencies: 47 | arrify "^1.0.0" 48 | micromatch "^2.1.5" 49 | 50 | aproba@^1.0.3: 51 | version "1.1.2" 52 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" 53 | 54 | are-we-there-yet@~1.1.2: 55 | version "1.1.4" 56 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 57 | dependencies: 58 | delegates "^1.0.0" 59 | readable-stream "^2.0.6" 60 | 61 | argparse@^1.0.7: 62 | version "1.0.9" 63 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 64 | dependencies: 65 | sprintf-js "~1.0.2" 66 | 67 | arr-diff@^2.0.0: 68 | version "2.0.0" 69 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 70 | dependencies: 71 | arr-flatten "^1.0.1" 72 | 73 | arr-flatten@^1.0.1: 74 | version "1.0.3" 75 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" 76 | 77 | array-find-index@^1.0.1: 78 | version "1.0.2" 79 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 80 | 81 | array-slice@^0.2.3: 82 | version "0.2.3" 83 | resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" 84 | 85 | array-unique@^0.2.1: 86 | version "0.2.1" 87 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 88 | 89 | arraybuffer.slice@0.0.6: 90 | version "0.0.6" 91 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" 92 | 93 | arrify@^1.0.0: 94 | version "1.0.1" 95 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 96 | 97 | asn1@~0.2.3: 98 | version "0.2.3" 99 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 100 | 101 | assert-plus@1.0.0, assert-plus@^1.0.0: 102 | version "1.0.0" 103 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 104 | 105 | assert-plus@^0.2.0: 106 | version "0.2.0" 107 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 108 | 109 | assertion-error@^1.0.1: 110 | version "1.0.2" 111 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 112 | 113 | async-each@^1.0.0: 114 | version "1.0.1" 115 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 116 | 117 | async@1.x, async@^1.4.0: 118 | version "1.5.2" 119 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 120 | 121 | asynckit@^0.4.0: 122 | version "0.4.0" 123 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 124 | 125 | aws-sign2@~0.6.0: 126 | version "0.6.0" 127 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 128 | 129 | aws4@^1.2.1: 130 | version "1.6.0" 131 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 132 | 133 | backo2@1.0.2: 134 | version "1.0.2" 135 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 136 | 137 | balanced-match@^1.0.0: 138 | version "1.0.0" 139 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 140 | 141 | base64-arraybuffer@0.1.5: 142 | version "0.1.5" 143 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" 144 | 145 | base64id@1.0.0: 146 | version "1.0.0" 147 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" 148 | 149 | bcrypt-pbkdf@^1.0.0: 150 | version "1.0.1" 151 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 152 | dependencies: 153 | tweetnacl "^0.14.3" 154 | 155 | better-assert@~1.0.0: 156 | version "1.0.2" 157 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" 158 | dependencies: 159 | callsite "1.0.0" 160 | 161 | binary-extensions@^1.0.0: 162 | version "1.8.0" 163 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 164 | 165 | blob@0.0.4: 166 | version "0.0.4" 167 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" 168 | 169 | block-stream@*: 170 | version "0.0.9" 171 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 172 | dependencies: 173 | inherits "~2.0.0" 174 | 175 | bluebird@^3.3.0: 176 | version "3.5.0" 177 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" 178 | 179 | body-parser@^1.16.1: 180 | version "1.17.2" 181 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" 182 | dependencies: 183 | bytes "2.4.0" 184 | content-type "~1.0.2" 185 | debug "2.6.7" 186 | depd "~1.1.0" 187 | http-errors "~1.6.1" 188 | iconv-lite "0.4.15" 189 | on-finished "~2.3.0" 190 | qs "6.4.0" 191 | raw-body "~2.2.0" 192 | type-is "~1.6.15" 193 | 194 | boom@2.x.x: 195 | version "2.10.1" 196 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 197 | dependencies: 198 | hoek "2.x.x" 199 | 200 | brace-expansion@^1.1.7: 201 | version "1.1.8" 202 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 203 | dependencies: 204 | balanced-match "^1.0.0" 205 | concat-map "0.0.1" 206 | 207 | braces@^0.1.2: 208 | version "0.1.5" 209 | resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" 210 | dependencies: 211 | expand-range "^0.1.0" 212 | 213 | braces@^1.8.2: 214 | version "1.8.5" 215 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 216 | dependencies: 217 | expand-range "^1.8.1" 218 | preserve "^0.2.0" 219 | repeat-element "^1.1.2" 220 | 221 | browser-stdout@1.3.0: 222 | version "1.3.0" 223 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 224 | 225 | builtin-modules@^1.0.0: 226 | version "1.1.1" 227 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 228 | 229 | bytes@2.4.0: 230 | version "2.4.0" 231 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" 232 | 233 | callsite@1.0.0: 234 | version "1.0.0" 235 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 236 | 237 | camelcase-keys@^2.0.0: 238 | version "2.1.0" 239 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 240 | dependencies: 241 | camelcase "^2.0.0" 242 | map-obj "^1.0.0" 243 | 244 | camelcase@^1.0.2: 245 | version "1.2.1" 246 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 247 | 248 | camelcase@^2.0.0: 249 | version "2.1.1" 250 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 251 | 252 | caseless@~0.12.0: 253 | version "0.12.0" 254 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 255 | 256 | center-align@^0.1.1: 257 | version "0.1.3" 258 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 259 | dependencies: 260 | align-text "^0.1.3" 261 | lazy-cache "^1.0.3" 262 | 263 | chai@^4.0.2: 264 | version "4.0.2" 265 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.0.2.tgz#2f7327c4de6f385dd7787999e2ab02697a32b83b" 266 | dependencies: 267 | assertion-error "^1.0.1" 268 | check-error "^1.0.1" 269 | deep-eql "^2.0.1" 270 | get-func-name "^2.0.0" 271 | pathval "^1.0.0" 272 | type-detect "^4.0.0" 273 | 274 | check-error@^1.0.1: 275 | version "1.0.2" 276 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 277 | 278 | chokidar@^1.4.1: 279 | version "1.7.0" 280 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 281 | dependencies: 282 | anymatch "^1.3.0" 283 | async-each "^1.0.0" 284 | glob-parent "^2.0.0" 285 | inherits "^2.0.1" 286 | is-binary-path "^1.0.0" 287 | is-glob "^2.0.0" 288 | path-is-absolute "^1.0.0" 289 | readdirp "^2.0.0" 290 | optionalDependencies: 291 | fsevents "^1.0.0" 292 | 293 | cliui@^2.1.0: 294 | version "2.1.0" 295 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 296 | dependencies: 297 | center-align "^0.1.1" 298 | right-align "^0.1.1" 299 | wordwrap "0.0.2" 300 | 301 | co@^4.6.0: 302 | version "4.6.0" 303 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 304 | 305 | code-point-at@^1.0.0: 306 | version "1.1.0" 307 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 308 | 309 | colors@^1.1.0: 310 | version "1.1.2" 311 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 312 | 313 | combine-lists@^1.0.0: 314 | version "1.0.1" 315 | resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" 316 | dependencies: 317 | lodash "^4.5.0" 318 | 319 | combined-stream@^1.0.5, combined-stream@~1.0.5: 320 | version "1.0.5" 321 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 322 | dependencies: 323 | delayed-stream "~1.0.0" 324 | 325 | commander@2.9.0: 326 | version "2.9.0" 327 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 328 | dependencies: 329 | graceful-readlink ">= 1.0.0" 330 | 331 | commander@~2.13.0: 332 | version "2.13.0" 333 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" 334 | 335 | component-bind@1.0.0: 336 | version "1.0.0" 337 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" 338 | 339 | component-emitter@1.1.2: 340 | version "1.1.2" 341 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" 342 | 343 | component-emitter@1.2.1: 344 | version "1.2.1" 345 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 346 | 347 | component-inherit@0.0.3: 348 | version "0.0.3" 349 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" 350 | 351 | concat-map@0.0.1: 352 | version "0.0.1" 353 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 354 | 355 | connect@^3.6.0: 356 | version "3.6.2" 357 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7" 358 | dependencies: 359 | debug "2.6.7" 360 | finalhandler "1.0.3" 361 | parseurl "~1.3.1" 362 | utils-merge "1.0.0" 363 | 364 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 365 | version "1.1.0" 366 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 367 | 368 | content-type@~1.0.2: 369 | version "1.0.2" 370 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 371 | 372 | cookie@0.3.1: 373 | version "0.3.1" 374 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 375 | 376 | core-js@^2.2.0: 377 | version "2.4.1" 378 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 379 | 380 | core-util-is@~1.0.0: 381 | version "1.0.2" 382 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 383 | 384 | cryptiles@2.x.x: 385 | version "2.0.5" 386 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 387 | dependencies: 388 | boom "2.x.x" 389 | 390 | currently-unhandled@^0.4.1: 391 | version "0.4.1" 392 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 393 | dependencies: 394 | array-find-index "^1.0.1" 395 | 396 | custom-event@~1.0.0: 397 | version "1.0.1" 398 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 399 | 400 | dashdash@^1.12.0: 401 | version "1.14.1" 402 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 403 | dependencies: 404 | assert-plus "^1.0.0" 405 | 406 | dateformat@^1.0.6: 407 | version "1.0.12" 408 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" 409 | dependencies: 410 | get-stdin "^4.0.1" 411 | meow "^3.3.0" 412 | 413 | debug@2.2.0: 414 | version "2.2.0" 415 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 416 | dependencies: 417 | ms "0.7.1" 418 | 419 | debug@2.3.3: 420 | version "2.3.3" 421 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" 422 | dependencies: 423 | ms "0.7.2" 424 | 425 | debug@2.6.0: 426 | version "2.6.0" 427 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" 428 | dependencies: 429 | ms "0.7.2" 430 | 431 | debug@2.6.7, debug@^2.2.0: 432 | version "2.6.7" 433 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" 434 | dependencies: 435 | ms "2.0.0" 436 | 437 | decamelize@^1.0.0, decamelize@^1.1.2: 438 | version "1.2.0" 439 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 440 | 441 | deep-eql@^2.0.1: 442 | version "2.0.2" 443 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" 444 | dependencies: 445 | type-detect "^3.0.0" 446 | 447 | deep-extend@~0.4.0: 448 | version "0.4.2" 449 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 450 | 451 | deep-is@~0.1.3: 452 | version "0.1.3" 453 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 454 | 455 | delayed-stream@~1.0.0: 456 | version "1.0.0" 457 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 458 | 459 | delegates@^1.0.0: 460 | version "1.0.0" 461 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 462 | 463 | depd@1.1.0, depd@~1.1.0: 464 | version "1.1.0" 465 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 466 | 467 | di@^0.0.1: 468 | version "0.0.1" 469 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 470 | 471 | diff@3.2.0: 472 | version "3.2.0" 473 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 474 | 475 | dom-serialize@^2.2.0: 476 | version "2.2.1" 477 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 478 | dependencies: 479 | custom-event "~1.0.0" 480 | ent "~2.2.0" 481 | extend "^3.0.0" 482 | void-elements "^2.0.0" 483 | 484 | ecc-jsbn@~0.1.1: 485 | version "0.1.1" 486 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 487 | dependencies: 488 | jsbn "~0.1.0" 489 | 490 | ee-first@1.1.1: 491 | version "1.1.1" 492 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 493 | 494 | encodeurl@~1.0.1: 495 | version "1.0.1" 496 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 497 | 498 | engine.io-client@1.8.3: 499 | version "1.8.3" 500 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" 501 | dependencies: 502 | component-emitter "1.2.1" 503 | component-inherit "0.0.3" 504 | debug "2.3.3" 505 | engine.io-parser "1.3.2" 506 | has-cors "1.1.0" 507 | indexof "0.0.1" 508 | parsejson "0.0.3" 509 | parseqs "0.0.5" 510 | parseuri "0.0.5" 511 | ws "1.1.2" 512 | xmlhttprequest-ssl "1.5.3" 513 | yeast "0.1.2" 514 | 515 | engine.io-parser@1.3.2: 516 | version "1.3.2" 517 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" 518 | dependencies: 519 | after "0.8.2" 520 | arraybuffer.slice "0.0.6" 521 | base64-arraybuffer "0.1.5" 522 | blob "0.0.4" 523 | has-binary "0.1.7" 524 | wtf-8 "1.0.0" 525 | 526 | engine.io@1.8.3: 527 | version "1.8.3" 528 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" 529 | dependencies: 530 | accepts "1.3.3" 531 | base64id "1.0.0" 532 | cookie "0.3.1" 533 | debug "2.3.3" 534 | engine.io-parser "1.3.2" 535 | ws "1.1.2" 536 | 537 | ent@~2.2.0: 538 | version "2.2.0" 539 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 540 | 541 | error-ex@^1.2.0: 542 | version "1.3.1" 543 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 544 | dependencies: 545 | is-arrayish "^0.2.1" 546 | 547 | escape-html@~1.0.3: 548 | version "1.0.3" 549 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 550 | 551 | escape-string-regexp@1.0.5: 552 | version "1.0.5" 553 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 554 | 555 | escodegen@1.8.x: 556 | version "1.8.1" 557 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 558 | dependencies: 559 | esprima "^2.7.1" 560 | estraverse "^1.9.1" 561 | esutils "^2.0.2" 562 | optionator "^0.8.1" 563 | optionalDependencies: 564 | source-map "~0.2.0" 565 | 566 | esprima@2.7.x, esprima@^2.7.1: 567 | version "2.7.3" 568 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 569 | 570 | esprima@^3.1.1: 571 | version "3.1.3" 572 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 573 | 574 | estraverse@^1.9.1: 575 | version "1.9.3" 576 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 577 | 578 | esutils@^2.0.2: 579 | version "2.0.2" 580 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 581 | 582 | eventemitter3@1.x.x: 583 | version "1.2.0" 584 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" 585 | 586 | expand-braces@^0.1.1: 587 | version "0.1.2" 588 | resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" 589 | dependencies: 590 | array-slice "^0.2.3" 591 | array-unique "^0.2.1" 592 | braces "^0.1.2" 593 | 594 | expand-brackets@^0.1.4: 595 | version "0.1.5" 596 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 597 | dependencies: 598 | is-posix-bracket "^0.1.0" 599 | 600 | expand-range@^0.1.0: 601 | version "0.1.1" 602 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" 603 | dependencies: 604 | is-number "^0.1.1" 605 | repeat-string "^0.2.2" 606 | 607 | expand-range@^1.8.1: 608 | version "1.8.2" 609 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 610 | dependencies: 611 | fill-range "^2.1.0" 612 | 613 | extend@^3.0.0, extend@~3.0.0: 614 | version "3.0.1" 615 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 616 | 617 | extglob@^0.3.1: 618 | version "0.3.2" 619 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 620 | dependencies: 621 | is-extglob "^1.0.0" 622 | 623 | extsprintf@1.0.2: 624 | version "1.0.2" 625 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 626 | 627 | fast-levenshtein@~2.0.4: 628 | version "2.0.6" 629 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 630 | 631 | filename-regex@^2.0.0: 632 | version "2.0.1" 633 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 634 | 635 | fill-range@^2.1.0: 636 | version "2.2.3" 637 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 638 | dependencies: 639 | is-number "^2.1.0" 640 | isobject "^2.0.0" 641 | randomatic "^1.1.3" 642 | repeat-element "^1.1.2" 643 | repeat-string "^1.5.2" 644 | 645 | finalhandler@1.0.3: 646 | version "1.0.3" 647 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" 648 | dependencies: 649 | debug "2.6.7" 650 | encodeurl "~1.0.1" 651 | escape-html "~1.0.3" 652 | on-finished "~2.3.0" 653 | parseurl "~1.3.1" 654 | statuses "~1.3.1" 655 | unpipe "~1.0.0" 656 | 657 | find-up@^1.0.0: 658 | version "1.1.2" 659 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 660 | dependencies: 661 | path-exists "^2.0.0" 662 | pinkie-promise "^2.0.0" 663 | 664 | for-in@^1.0.1: 665 | version "1.0.2" 666 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 667 | 668 | for-own@^0.1.4: 669 | version "0.1.5" 670 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 671 | dependencies: 672 | for-in "^1.0.1" 673 | 674 | forever-agent@~0.6.1: 675 | version "0.6.1" 676 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 677 | 678 | form-data@~2.1.1: 679 | version "2.1.4" 680 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 681 | dependencies: 682 | asynckit "^0.4.0" 683 | combined-stream "^1.0.5" 684 | mime-types "^2.1.12" 685 | 686 | fs-access@^1.0.0: 687 | version "1.0.1" 688 | resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" 689 | dependencies: 690 | null-check "^1.0.0" 691 | 692 | fs.realpath@^1.0.0: 693 | version "1.0.0" 694 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 695 | 696 | fsevents@^1.0.0: 697 | version "1.1.2" 698 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" 699 | dependencies: 700 | nan "^2.3.0" 701 | node-pre-gyp "^0.6.36" 702 | 703 | fstream-ignore@^1.0.5: 704 | version "1.0.5" 705 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 706 | dependencies: 707 | fstream "^1.0.0" 708 | inherits "2" 709 | minimatch "^3.0.0" 710 | 711 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 712 | version "1.0.11" 713 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 714 | dependencies: 715 | graceful-fs "^4.1.2" 716 | inherits "~2.0.0" 717 | mkdirp ">=0.5 0" 718 | rimraf "2" 719 | 720 | gauge@~2.7.3: 721 | version "2.7.4" 722 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 723 | dependencies: 724 | aproba "^1.0.3" 725 | console-control-strings "^1.0.0" 726 | has-unicode "^2.0.0" 727 | object-assign "^4.1.0" 728 | signal-exit "^3.0.0" 729 | string-width "^1.0.1" 730 | strip-ansi "^3.0.1" 731 | wide-align "^1.1.0" 732 | 733 | get-func-name@^2.0.0: 734 | version "2.0.0" 735 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 736 | 737 | get-stdin@^4.0.1: 738 | version "4.0.1" 739 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 740 | 741 | getpass@^0.1.1: 742 | version "0.1.7" 743 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 744 | dependencies: 745 | assert-plus "^1.0.0" 746 | 747 | glob-base@^0.3.0: 748 | version "0.3.0" 749 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 750 | dependencies: 751 | glob-parent "^2.0.0" 752 | is-glob "^2.0.0" 753 | 754 | glob-parent@^2.0.0: 755 | version "2.0.0" 756 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 757 | dependencies: 758 | is-glob "^2.0.0" 759 | 760 | glob@7.1.1: 761 | version "7.1.1" 762 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 763 | dependencies: 764 | fs.realpath "^1.0.0" 765 | inflight "^1.0.4" 766 | inherits "2" 767 | minimatch "^3.0.2" 768 | once "^1.3.0" 769 | path-is-absolute "^1.0.0" 770 | 771 | glob@^5.0.15: 772 | version "5.0.15" 773 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 774 | dependencies: 775 | inflight "^1.0.4" 776 | inherits "2" 777 | minimatch "2 || 3" 778 | once "^1.3.0" 779 | path-is-absolute "^1.0.0" 780 | 781 | glob@^7.0.5, glob@^7.1.1: 782 | version "7.1.2" 783 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 784 | dependencies: 785 | fs.realpath "^1.0.0" 786 | inflight "^1.0.4" 787 | inherits "2" 788 | minimatch "^3.0.4" 789 | once "^1.3.0" 790 | path-is-absolute "^1.0.0" 791 | 792 | graceful-fs@^4.1.2: 793 | version "4.1.11" 794 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 795 | 796 | "graceful-readlink@>= 1.0.0": 797 | version "1.0.1" 798 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 799 | 800 | growl@1.9.2: 801 | version "1.9.2" 802 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 803 | 804 | handlebars@^4.0.1: 805 | version "4.0.10" 806 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" 807 | dependencies: 808 | async "^1.4.0" 809 | optimist "^0.6.1" 810 | source-map "^0.4.4" 811 | optionalDependencies: 812 | uglify-js "^2.6" 813 | 814 | har-schema@^1.0.5: 815 | version "1.0.5" 816 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 817 | 818 | har-validator@~4.2.1: 819 | version "4.2.1" 820 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 821 | dependencies: 822 | ajv "^4.9.1" 823 | har-schema "^1.0.5" 824 | 825 | has-binary@0.1.7: 826 | version "0.1.7" 827 | resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" 828 | dependencies: 829 | isarray "0.0.1" 830 | 831 | has-cors@1.1.0: 832 | version "1.1.0" 833 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 834 | 835 | has-flag@^1.0.0: 836 | version "1.0.0" 837 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 838 | 839 | has-unicode@^2.0.0: 840 | version "2.0.1" 841 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 842 | 843 | hawk@~3.1.3: 844 | version "3.1.3" 845 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 846 | dependencies: 847 | boom "2.x.x" 848 | cryptiles "2.x.x" 849 | hoek "2.x.x" 850 | sntp "1.x.x" 851 | 852 | hoek@2.x.x: 853 | version "2.16.3" 854 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 855 | 856 | hosted-git-info@^2.1.4: 857 | version "2.5.0" 858 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 859 | 860 | http-errors@~1.6.1: 861 | version "1.6.1" 862 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" 863 | dependencies: 864 | depd "1.1.0" 865 | inherits "2.0.3" 866 | setprototypeof "1.0.3" 867 | statuses ">= 1.3.1 < 2" 868 | 869 | http-proxy@^1.13.0: 870 | version "1.16.2" 871 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" 872 | dependencies: 873 | eventemitter3 "1.x.x" 874 | requires-port "1.x.x" 875 | 876 | http-signature@~1.1.0: 877 | version "1.1.1" 878 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 879 | dependencies: 880 | assert-plus "^0.2.0" 881 | jsprim "^1.2.2" 882 | sshpk "^1.7.0" 883 | 884 | iconv-lite@0.4.15: 885 | version "0.4.15" 886 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" 887 | 888 | indent-string@^2.1.0: 889 | version "2.1.0" 890 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 891 | dependencies: 892 | repeating "^2.0.0" 893 | 894 | indexof@0.0.1: 895 | version "0.0.1" 896 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 897 | 898 | inflight@^1.0.4: 899 | version "1.0.6" 900 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 901 | dependencies: 902 | once "^1.3.0" 903 | wrappy "1" 904 | 905 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: 906 | version "2.0.3" 907 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 908 | 909 | ini@~1.3.0: 910 | version "1.3.4" 911 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 912 | 913 | is-arrayish@^0.2.1: 914 | version "0.2.1" 915 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 916 | 917 | is-binary-path@^1.0.0: 918 | version "1.0.1" 919 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 920 | dependencies: 921 | binary-extensions "^1.0.0" 922 | 923 | is-buffer@^1.1.5: 924 | version "1.1.5" 925 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 926 | 927 | is-builtin-module@^1.0.0: 928 | version "1.0.0" 929 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 930 | dependencies: 931 | builtin-modules "^1.0.0" 932 | 933 | is-dotfile@^1.0.0: 934 | version "1.0.3" 935 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 936 | 937 | is-equal-shallow@^0.1.3: 938 | version "0.1.3" 939 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 940 | dependencies: 941 | is-primitive "^2.0.0" 942 | 943 | is-extendable@^0.1.1: 944 | version "0.1.1" 945 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 946 | 947 | is-extglob@^1.0.0: 948 | version "1.0.0" 949 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 950 | 951 | is-finite@^1.0.0: 952 | version "1.0.2" 953 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 954 | dependencies: 955 | number-is-nan "^1.0.0" 956 | 957 | is-fullwidth-code-point@^1.0.0: 958 | version "1.0.0" 959 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 960 | dependencies: 961 | number-is-nan "^1.0.0" 962 | 963 | is-glob@^2.0.0, is-glob@^2.0.1: 964 | version "2.0.1" 965 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 966 | dependencies: 967 | is-extglob "^1.0.0" 968 | 969 | is-number@^0.1.1: 970 | version "0.1.1" 971 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" 972 | 973 | is-number@^2.1.0: 974 | version "2.1.0" 975 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 976 | dependencies: 977 | kind-of "^3.0.2" 978 | 979 | is-number@^3.0.0: 980 | version "3.0.0" 981 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 982 | dependencies: 983 | kind-of "^3.0.2" 984 | 985 | is-posix-bracket@^0.1.0: 986 | version "0.1.1" 987 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 988 | 989 | is-primitive@^2.0.0: 990 | version "2.0.0" 991 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 992 | 993 | is-typedarray@~1.0.0: 994 | version "1.0.0" 995 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 996 | 997 | is-utf8@^0.2.0: 998 | version "0.2.1" 999 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1000 | 1001 | isarray@0.0.1: 1002 | version "0.0.1" 1003 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1004 | 1005 | isarray@1.0.0, isarray@~1.0.0: 1006 | version "1.0.0" 1007 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1008 | 1009 | isbinaryfile@^3.0.0: 1010 | version "3.0.2" 1011 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" 1012 | 1013 | isexe@^2.0.0: 1014 | version "2.0.0" 1015 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1016 | 1017 | isobject@^2.0.0: 1018 | version "2.1.0" 1019 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1020 | dependencies: 1021 | isarray "1.0.0" 1022 | 1023 | isstream@~0.1.2: 1024 | version "0.1.2" 1025 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1026 | 1027 | istanbul@^0.4.0: 1028 | version "0.4.5" 1029 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" 1030 | dependencies: 1031 | abbrev "1.0.x" 1032 | async "1.x" 1033 | escodegen "1.8.x" 1034 | esprima "2.7.x" 1035 | glob "^5.0.15" 1036 | handlebars "^4.0.1" 1037 | js-yaml "3.x" 1038 | mkdirp "0.5.x" 1039 | nopt "3.x" 1040 | once "1.x" 1041 | resolve "1.1.x" 1042 | supports-color "^3.1.0" 1043 | which "^1.1.1" 1044 | wordwrap "^1.0.0" 1045 | 1046 | js-yaml@3.x: 1047 | version "3.8.4" 1048 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" 1049 | dependencies: 1050 | argparse "^1.0.7" 1051 | esprima "^3.1.1" 1052 | 1053 | jsbn@~0.1.0: 1054 | version "0.1.1" 1055 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1056 | 1057 | json-schema@0.2.3: 1058 | version "0.2.3" 1059 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1060 | 1061 | json-stable-stringify@^1.0.1: 1062 | version "1.0.1" 1063 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1064 | dependencies: 1065 | jsonify "~0.0.0" 1066 | 1067 | json-stringify-safe@~5.0.1: 1068 | version "5.0.1" 1069 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1070 | 1071 | json3@3.3.2: 1072 | version "3.3.2" 1073 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1074 | 1075 | jsonify@~0.0.0: 1076 | version "0.0.0" 1077 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1078 | 1079 | jsprim@^1.2.2: 1080 | version "1.4.0" 1081 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 1082 | dependencies: 1083 | assert-plus "1.0.0" 1084 | extsprintf "1.0.2" 1085 | json-schema "0.2.3" 1086 | verror "1.3.6" 1087 | 1088 | karma-chai@^0.1.0: 1089 | version "0.1.0" 1090 | resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a" 1091 | 1092 | karma-chrome-launcher@^2.2.0: 1093 | version "2.2.0" 1094 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" 1095 | dependencies: 1096 | fs-access "^1.0.0" 1097 | which "^1.2.1" 1098 | 1099 | karma-coverage@^1.1.1: 1100 | version "1.1.1" 1101 | resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6" 1102 | dependencies: 1103 | dateformat "^1.0.6" 1104 | istanbul "^0.4.0" 1105 | lodash "^3.8.0" 1106 | minimatch "^3.0.0" 1107 | source-map "^0.5.1" 1108 | 1109 | karma-firefox-launcher@^1.0.1: 1110 | version "1.0.1" 1111 | resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz#ce58f47c2013a88156d55a5d61337c099cf5bb51" 1112 | 1113 | karma-mocha@^1.3.0: 1114 | version "1.3.0" 1115 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" 1116 | dependencies: 1117 | minimist "1.2.0" 1118 | 1119 | karma-safari-launcher@^1.0.0: 1120 | version "1.0.0" 1121 | resolved "https://registry.yarnpkg.com/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz#96982a2cc47d066aae71c553babb28319115a2ce" 1122 | 1123 | karma@^1.7.0: 1124 | version "1.7.0" 1125 | resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269" 1126 | dependencies: 1127 | bluebird "^3.3.0" 1128 | body-parser "^1.16.1" 1129 | chokidar "^1.4.1" 1130 | colors "^1.1.0" 1131 | combine-lists "^1.0.0" 1132 | connect "^3.6.0" 1133 | core-js "^2.2.0" 1134 | di "^0.0.1" 1135 | dom-serialize "^2.2.0" 1136 | expand-braces "^0.1.1" 1137 | glob "^7.1.1" 1138 | graceful-fs "^4.1.2" 1139 | http-proxy "^1.13.0" 1140 | isbinaryfile "^3.0.0" 1141 | lodash "^3.8.0" 1142 | log4js "^0.6.31" 1143 | mime "^1.3.4" 1144 | minimatch "^3.0.2" 1145 | optimist "^0.6.1" 1146 | qjobs "^1.1.4" 1147 | range-parser "^1.2.0" 1148 | rimraf "^2.6.0" 1149 | safe-buffer "^5.0.1" 1150 | socket.io "1.7.3" 1151 | source-map "^0.5.3" 1152 | tmp "0.0.31" 1153 | useragent "^2.1.12" 1154 | 1155 | kind-of@^3.0.2: 1156 | version "3.2.2" 1157 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1158 | dependencies: 1159 | is-buffer "^1.1.5" 1160 | 1161 | kind-of@^4.0.0: 1162 | version "4.0.0" 1163 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1164 | dependencies: 1165 | is-buffer "^1.1.5" 1166 | 1167 | lazy-cache@^1.0.3: 1168 | version "1.0.4" 1169 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1170 | 1171 | levn@~0.3.0: 1172 | version "0.3.0" 1173 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1174 | dependencies: 1175 | prelude-ls "~1.1.2" 1176 | type-check "~0.3.2" 1177 | 1178 | load-json-file@^1.0.0: 1179 | version "1.1.0" 1180 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1181 | dependencies: 1182 | graceful-fs "^4.1.2" 1183 | parse-json "^2.2.0" 1184 | pify "^2.0.0" 1185 | pinkie-promise "^2.0.0" 1186 | strip-bom "^2.0.0" 1187 | 1188 | lodash._baseassign@^3.0.0: 1189 | version "3.2.0" 1190 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 1191 | dependencies: 1192 | lodash._basecopy "^3.0.0" 1193 | lodash.keys "^3.0.0" 1194 | 1195 | lodash._basecopy@^3.0.0: 1196 | version "3.0.1" 1197 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 1198 | 1199 | lodash._basecreate@^3.0.0: 1200 | version "3.0.3" 1201 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 1202 | 1203 | lodash._getnative@^3.0.0: 1204 | version "3.9.1" 1205 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 1206 | 1207 | lodash._isiterateecall@^3.0.0: 1208 | version "3.0.9" 1209 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 1210 | 1211 | lodash.create@3.1.1: 1212 | version "3.1.1" 1213 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 1214 | dependencies: 1215 | lodash._baseassign "^3.0.0" 1216 | lodash._basecreate "^3.0.0" 1217 | lodash._isiterateecall "^3.0.0" 1218 | 1219 | lodash.isarguments@^3.0.0: 1220 | version "3.1.0" 1221 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 1222 | 1223 | lodash.isarray@^3.0.0: 1224 | version "3.0.4" 1225 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 1226 | 1227 | lodash.keys@^3.0.0: 1228 | version "3.1.2" 1229 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 1230 | dependencies: 1231 | lodash._getnative "^3.0.0" 1232 | lodash.isarguments "^3.0.0" 1233 | lodash.isarray "^3.0.0" 1234 | 1235 | lodash@^3.8.0: 1236 | version "3.10.1" 1237 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" 1238 | 1239 | lodash@^4.5.0: 1240 | version "4.17.4" 1241 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1242 | 1243 | log4js@^0.6.31: 1244 | version "0.6.38" 1245 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" 1246 | dependencies: 1247 | readable-stream "~1.0.2" 1248 | semver "~4.3.3" 1249 | 1250 | longest@^1.0.1: 1251 | version "1.0.1" 1252 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1253 | 1254 | loud-rejection@^1.0.0: 1255 | version "1.6.0" 1256 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1257 | dependencies: 1258 | currently-unhandled "^0.4.1" 1259 | signal-exit "^3.0.0" 1260 | 1261 | lru-cache@2.2.x: 1262 | version "2.2.4" 1263 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" 1264 | 1265 | map-obj@^1.0.0, map-obj@^1.0.1: 1266 | version "1.0.1" 1267 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1268 | 1269 | media-typer@0.3.0: 1270 | version "0.3.0" 1271 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1272 | 1273 | meow@^3.3.0: 1274 | version "3.7.0" 1275 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1276 | dependencies: 1277 | camelcase-keys "^2.0.0" 1278 | decamelize "^1.1.2" 1279 | loud-rejection "^1.0.0" 1280 | map-obj "^1.0.1" 1281 | minimist "^1.1.3" 1282 | normalize-package-data "^2.3.4" 1283 | object-assign "^4.0.1" 1284 | read-pkg-up "^1.0.1" 1285 | redent "^1.0.0" 1286 | trim-newlines "^1.0.0" 1287 | 1288 | micromatch@^2.1.5: 1289 | version "2.3.11" 1290 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1291 | dependencies: 1292 | arr-diff "^2.0.0" 1293 | array-unique "^0.2.1" 1294 | braces "^1.8.2" 1295 | expand-brackets "^0.1.4" 1296 | extglob "^0.3.1" 1297 | filename-regex "^2.0.0" 1298 | is-extglob "^1.0.0" 1299 | is-glob "^2.0.1" 1300 | kind-of "^3.0.2" 1301 | normalize-path "^2.0.1" 1302 | object.omit "^2.0.0" 1303 | parse-glob "^3.0.4" 1304 | regex-cache "^0.4.2" 1305 | 1306 | mime-db@~1.27.0: 1307 | version "1.27.0" 1308 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1309 | 1310 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: 1311 | version "2.1.15" 1312 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 1313 | dependencies: 1314 | mime-db "~1.27.0" 1315 | 1316 | mime@^1.3.4: 1317 | version "1.3.6" 1318 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" 1319 | 1320 | "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: 1321 | version "3.0.4" 1322 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1323 | dependencies: 1324 | brace-expansion "^1.1.7" 1325 | 1326 | minimist@0.0.8, minimist@~0.0.1: 1327 | version "0.0.8" 1328 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1329 | 1330 | minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: 1331 | version "1.2.0" 1332 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1333 | 1334 | mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: 1335 | version "0.5.1" 1336 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1337 | dependencies: 1338 | minimist "0.0.8" 1339 | 1340 | mocha@^3.4.2: 1341 | version "3.4.2" 1342 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" 1343 | dependencies: 1344 | browser-stdout "1.3.0" 1345 | commander "2.9.0" 1346 | debug "2.6.0" 1347 | diff "3.2.0" 1348 | escape-string-regexp "1.0.5" 1349 | glob "7.1.1" 1350 | growl "1.9.2" 1351 | json3 "3.3.2" 1352 | lodash.create "3.1.1" 1353 | mkdirp "0.5.1" 1354 | supports-color "3.1.2" 1355 | 1356 | ms@0.7.1: 1357 | version "0.7.1" 1358 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1359 | 1360 | ms@0.7.2: 1361 | version "0.7.2" 1362 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1363 | 1364 | ms@2.0.0: 1365 | version "2.0.0" 1366 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1367 | 1368 | nan@^2.3.0: 1369 | version "2.6.2" 1370 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" 1371 | 1372 | negotiator@0.6.1: 1373 | version "0.6.1" 1374 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 1375 | 1376 | node-pre-gyp@^0.6.36: 1377 | version "0.6.36" 1378 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" 1379 | dependencies: 1380 | mkdirp "^0.5.1" 1381 | nopt "^4.0.1" 1382 | npmlog "^4.0.2" 1383 | rc "^1.1.7" 1384 | request "^2.81.0" 1385 | rimraf "^2.6.1" 1386 | semver "^5.3.0" 1387 | tar "^2.2.1" 1388 | tar-pack "^3.4.0" 1389 | 1390 | nopt@3.x: 1391 | version "3.0.6" 1392 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1393 | dependencies: 1394 | abbrev "1" 1395 | 1396 | nopt@^4.0.1: 1397 | version "4.0.1" 1398 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1399 | dependencies: 1400 | abbrev "1" 1401 | osenv "^0.1.4" 1402 | 1403 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 1404 | version "2.4.0" 1405 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1406 | dependencies: 1407 | hosted-git-info "^2.1.4" 1408 | is-builtin-module "^1.0.0" 1409 | semver "2 || 3 || 4 || 5" 1410 | validate-npm-package-license "^3.0.1" 1411 | 1412 | normalize-path@^2.0.1: 1413 | version "2.1.1" 1414 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1415 | dependencies: 1416 | remove-trailing-separator "^1.0.1" 1417 | 1418 | npmlog@^4.0.2: 1419 | version "4.1.2" 1420 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1421 | dependencies: 1422 | are-we-there-yet "~1.1.2" 1423 | console-control-strings "~1.1.0" 1424 | gauge "~2.7.3" 1425 | set-blocking "~2.0.0" 1426 | 1427 | null-check@^1.0.0: 1428 | version "1.0.0" 1429 | resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" 1430 | 1431 | number-is-nan@^1.0.0: 1432 | version "1.0.1" 1433 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1434 | 1435 | oauth-sign@~0.8.1: 1436 | version "0.8.2" 1437 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1438 | 1439 | object-assign@4.1.0, object-assign@^4.0.1, object-assign@^4.1.0: 1440 | version "4.1.0" 1441 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" 1442 | 1443 | object-component@0.0.3: 1444 | version "0.0.3" 1445 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" 1446 | 1447 | object.omit@^2.0.0: 1448 | version "2.0.1" 1449 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1450 | dependencies: 1451 | for-own "^0.1.4" 1452 | is-extendable "^0.1.1" 1453 | 1454 | on-finished@~2.3.0: 1455 | version "2.3.0" 1456 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1457 | dependencies: 1458 | ee-first "1.1.1" 1459 | 1460 | once@1.x, once@^1.3.0, once@^1.3.3: 1461 | version "1.4.0" 1462 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1463 | dependencies: 1464 | wrappy "1" 1465 | 1466 | optimist@^0.6.1: 1467 | version "0.6.1" 1468 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1469 | dependencies: 1470 | minimist "~0.0.1" 1471 | wordwrap "~0.0.2" 1472 | 1473 | optionator@^0.8.1: 1474 | version "0.8.2" 1475 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1476 | dependencies: 1477 | deep-is "~0.1.3" 1478 | fast-levenshtein "~2.0.4" 1479 | levn "~0.3.0" 1480 | prelude-ls "~1.1.2" 1481 | type-check "~0.3.2" 1482 | wordwrap "~1.0.0" 1483 | 1484 | options@>=0.0.5: 1485 | version "0.0.6" 1486 | resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" 1487 | 1488 | os-homedir@^1.0.0: 1489 | version "1.0.2" 1490 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1491 | 1492 | os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: 1493 | version "1.0.2" 1494 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1495 | 1496 | osenv@^0.1.4: 1497 | version "0.1.4" 1498 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 1499 | dependencies: 1500 | os-homedir "^1.0.0" 1501 | os-tmpdir "^1.0.0" 1502 | 1503 | parse-glob@^3.0.4: 1504 | version "3.0.4" 1505 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1506 | dependencies: 1507 | glob-base "^0.3.0" 1508 | is-dotfile "^1.0.0" 1509 | is-extglob "^1.0.0" 1510 | is-glob "^2.0.0" 1511 | 1512 | parse-json@^2.2.0: 1513 | version "2.2.0" 1514 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1515 | dependencies: 1516 | error-ex "^1.2.0" 1517 | 1518 | parsejson@0.0.3: 1519 | version "0.0.3" 1520 | resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" 1521 | dependencies: 1522 | better-assert "~1.0.0" 1523 | 1524 | parseqs@0.0.5: 1525 | version "0.0.5" 1526 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" 1527 | dependencies: 1528 | better-assert "~1.0.0" 1529 | 1530 | parseuri@0.0.5: 1531 | version "0.0.5" 1532 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" 1533 | dependencies: 1534 | better-assert "~1.0.0" 1535 | 1536 | parseurl@~1.3.1: 1537 | version "1.3.1" 1538 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 1539 | 1540 | path-exists@^2.0.0: 1541 | version "2.1.0" 1542 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1543 | dependencies: 1544 | pinkie-promise "^2.0.0" 1545 | 1546 | path-is-absolute@^1.0.0: 1547 | version "1.0.1" 1548 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1549 | 1550 | path-type@^1.0.0: 1551 | version "1.1.0" 1552 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1553 | dependencies: 1554 | graceful-fs "^4.1.2" 1555 | pify "^2.0.0" 1556 | pinkie-promise "^2.0.0" 1557 | 1558 | pathval@^1.0.0: 1559 | version "1.1.0" 1560 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1561 | 1562 | performance-now@^0.2.0: 1563 | version "0.2.0" 1564 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 1565 | 1566 | pify@^2.0.0: 1567 | version "2.3.0" 1568 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1569 | 1570 | pinkie-promise@^2.0.0: 1571 | version "2.0.1" 1572 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1573 | dependencies: 1574 | pinkie "^2.0.0" 1575 | 1576 | pinkie@^2.0.0: 1577 | version "2.0.4" 1578 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1579 | 1580 | prelude-ls@~1.1.2: 1581 | version "1.1.2" 1582 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1583 | 1584 | preserve@^0.2.0: 1585 | version "0.2.0" 1586 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1587 | 1588 | process-nextick-args@~1.0.6: 1589 | version "1.0.7" 1590 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1591 | 1592 | punycode@^1.4.1: 1593 | version "1.4.1" 1594 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1595 | 1596 | qjobs@^1.1.4: 1597 | version "1.1.5" 1598 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" 1599 | 1600 | qs@6.4.0, qs@~6.4.0: 1601 | version "6.4.0" 1602 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1603 | 1604 | randomatic@^1.1.3: 1605 | version "1.1.7" 1606 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" 1607 | dependencies: 1608 | is-number "^3.0.0" 1609 | kind-of "^4.0.0" 1610 | 1611 | range-parser@^1.2.0: 1612 | version "1.2.0" 1613 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 1614 | 1615 | raw-body@~2.2.0: 1616 | version "2.2.0" 1617 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" 1618 | dependencies: 1619 | bytes "2.4.0" 1620 | iconv-lite "0.4.15" 1621 | unpipe "1.0.0" 1622 | 1623 | rc@^1.1.7: 1624 | version "1.2.1" 1625 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 1626 | dependencies: 1627 | deep-extend "~0.4.0" 1628 | ini "~1.3.0" 1629 | minimist "^1.2.0" 1630 | strip-json-comments "~2.0.1" 1631 | 1632 | read-pkg-up@^1.0.1: 1633 | version "1.0.1" 1634 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1635 | dependencies: 1636 | find-up "^1.0.0" 1637 | read-pkg "^1.0.0" 1638 | 1639 | read-pkg@^1.0.0: 1640 | version "1.1.0" 1641 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1642 | dependencies: 1643 | load-json-file "^1.0.0" 1644 | normalize-package-data "^2.3.2" 1645 | path-type "^1.0.0" 1646 | 1647 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: 1648 | version "2.3.2" 1649 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.2.tgz#5a04df05e4f57fe3f0dc68fdd11dc5c97c7e6f4d" 1650 | dependencies: 1651 | core-util-is "~1.0.0" 1652 | inherits "~2.0.3" 1653 | isarray "~1.0.0" 1654 | process-nextick-args "~1.0.6" 1655 | safe-buffer "~5.1.0" 1656 | string_decoder "~1.0.0" 1657 | util-deprecate "~1.0.1" 1658 | 1659 | readable-stream@~1.0.2: 1660 | version "1.0.34" 1661 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 1662 | dependencies: 1663 | core-util-is "~1.0.0" 1664 | inherits "~2.0.1" 1665 | isarray "0.0.1" 1666 | string_decoder "~0.10.x" 1667 | 1668 | readdirp@^2.0.0: 1669 | version "2.1.0" 1670 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1671 | dependencies: 1672 | graceful-fs "^4.1.2" 1673 | minimatch "^3.0.2" 1674 | readable-stream "^2.0.2" 1675 | set-immediate-shim "^1.0.1" 1676 | 1677 | redent@^1.0.0: 1678 | version "1.0.0" 1679 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 1680 | dependencies: 1681 | indent-string "^2.1.0" 1682 | strip-indent "^1.0.1" 1683 | 1684 | regex-cache@^0.4.2: 1685 | version "0.4.3" 1686 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1687 | dependencies: 1688 | is-equal-shallow "^0.1.3" 1689 | is-primitive "^2.0.0" 1690 | 1691 | remove-trailing-separator@^1.0.1: 1692 | version "1.0.2" 1693 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" 1694 | 1695 | repeat-element@^1.1.2: 1696 | version "1.1.2" 1697 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1698 | 1699 | repeat-string@^0.2.2: 1700 | version "0.2.2" 1701 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" 1702 | 1703 | repeat-string@^1.5.2: 1704 | version "1.6.1" 1705 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1706 | 1707 | repeating@^2.0.0: 1708 | version "2.0.1" 1709 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1710 | dependencies: 1711 | is-finite "^1.0.0" 1712 | 1713 | request@^2.81.0: 1714 | version "2.81.0" 1715 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 1716 | dependencies: 1717 | aws-sign2 "~0.6.0" 1718 | aws4 "^1.2.1" 1719 | caseless "~0.12.0" 1720 | combined-stream "~1.0.5" 1721 | extend "~3.0.0" 1722 | forever-agent "~0.6.1" 1723 | form-data "~2.1.1" 1724 | har-validator "~4.2.1" 1725 | hawk "~3.1.3" 1726 | http-signature "~1.1.0" 1727 | is-typedarray "~1.0.0" 1728 | isstream "~0.1.2" 1729 | json-stringify-safe "~5.0.1" 1730 | mime-types "~2.1.7" 1731 | oauth-sign "~0.8.1" 1732 | performance-now "^0.2.0" 1733 | qs "~6.4.0" 1734 | safe-buffer "^5.0.1" 1735 | stringstream "~0.0.4" 1736 | tough-cookie "~2.3.0" 1737 | tunnel-agent "^0.6.0" 1738 | uuid "^3.0.0" 1739 | 1740 | requires-port@1.x.x: 1741 | version "1.0.0" 1742 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1743 | 1744 | resolve@1.1.x: 1745 | version "1.1.7" 1746 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 1747 | 1748 | right-align@^0.1.1: 1749 | version "0.1.3" 1750 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1751 | dependencies: 1752 | align-text "^0.1.1" 1753 | 1754 | rimraf@2, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1: 1755 | version "2.6.1" 1756 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 1757 | dependencies: 1758 | glob "^7.0.5" 1759 | 1760 | safe-buffer@^5.0.1, safe-buffer@~5.1.0: 1761 | version "5.1.1" 1762 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1763 | 1764 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 1765 | version "5.3.0" 1766 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1767 | 1768 | semver@~4.3.3: 1769 | version "4.3.6" 1770 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" 1771 | 1772 | set-blocking@~2.0.0: 1773 | version "2.0.0" 1774 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1775 | 1776 | set-immediate-shim@^1.0.1: 1777 | version "1.0.1" 1778 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1779 | 1780 | setprototypeof@1.0.3: 1781 | version "1.0.3" 1782 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 1783 | 1784 | signal-exit@^3.0.0: 1785 | version "3.0.2" 1786 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1787 | 1788 | sntp@1.x.x: 1789 | version "1.0.9" 1790 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 1791 | dependencies: 1792 | hoek "2.x.x" 1793 | 1794 | socket.io-adapter@0.5.0: 1795 | version "0.5.0" 1796 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" 1797 | dependencies: 1798 | debug "2.3.3" 1799 | socket.io-parser "2.3.1" 1800 | 1801 | socket.io-client@1.7.3: 1802 | version "1.7.3" 1803 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" 1804 | dependencies: 1805 | backo2 "1.0.2" 1806 | component-bind "1.0.0" 1807 | component-emitter "1.2.1" 1808 | debug "2.3.3" 1809 | engine.io-client "1.8.3" 1810 | has-binary "0.1.7" 1811 | indexof "0.0.1" 1812 | object-component "0.0.3" 1813 | parseuri "0.0.5" 1814 | socket.io-parser "2.3.1" 1815 | to-array "0.1.4" 1816 | 1817 | socket.io-parser@2.3.1: 1818 | version "2.3.1" 1819 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" 1820 | dependencies: 1821 | component-emitter "1.1.2" 1822 | debug "2.2.0" 1823 | isarray "0.0.1" 1824 | json3 "3.3.2" 1825 | 1826 | socket.io@1.7.3: 1827 | version "1.7.3" 1828 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" 1829 | dependencies: 1830 | debug "2.3.3" 1831 | engine.io "1.8.3" 1832 | has-binary "0.1.7" 1833 | object-assign "4.1.0" 1834 | socket.io-adapter "0.5.0" 1835 | socket.io-client "1.7.3" 1836 | socket.io-parser "2.3.1" 1837 | 1838 | source-map@^0.4.4: 1839 | version "0.4.4" 1840 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 1841 | dependencies: 1842 | amdefine ">=0.0.4" 1843 | 1844 | source-map@^0.5.1, source-map@^0.5.3, source-map@~0.5.1: 1845 | version "0.5.6" 1846 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 1847 | 1848 | source-map@~0.2.0: 1849 | version "0.2.0" 1850 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 1851 | dependencies: 1852 | amdefine ">=0.0.4" 1853 | 1854 | source-map@~0.6.1: 1855 | version "0.6.1" 1856 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1857 | 1858 | spdx-correct@~1.0.0: 1859 | version "1.0.2" 1860 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 1861 | dependencies: 1862 | spdx-license-ids "^1.0.2" 1863 | 1864 | spdx-expression-parse@~1.0.0: 1865 | version "1.0.4" 1866 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 1867 | 1868 | spdx-license-ids@^1.0.2: 1869 | version "1.2.2" 1870 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 1871 | 1872 | sprintf-js@~1.0.2: 1873 | version "1.0.3" 1874 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1875 | 1876 | sshpk@^1.7.0: 1877 | version "1.13.1" 1878 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 1879 | dependencies: 1880 | asn1 "~0.2.3" 1881 | assert-plus "^1.0.0" 1882 | dashdash "^1.12.0" 1883 | getpass "^0.1.1" 1884 | optionalDependencies: 1885 | bcrypt-pbkdf "^1.0.0" 1886 | ecc-jsbn "~0.1.1" 1887 | jsbn "~0.1.0" 1888 | tweetnacl "~0.14.0" 1889 | 1890 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: 1891 | version "1.3.1" 1892 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 1893 | 1894 | string-width@^1.0.1, string-width@^1.0.2: 1895 | version "1.0.2" 1896 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1897 | dependencies: 1898 | code-point-at "^1.0.0" 1899 | is-fullwidth-code-point "^1.0.0" 1900 | strip-ansi "^3.0.0" 1901 | 1902 | string_decoder@~0.10.x: 1903 | version "0.10.31" 1904 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1905 | 1906 | string_decoder@~1.0.0: 1907 | version "1.0.3" 1908 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 1909 | dependencies: 1910 | safe-buffer "~5.1.0" 1911 | 1912 | stringstream@~0.0.4: 1913 | version "0.0.5" 1914 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 1915 | 1916 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1917 | version "3.0.1" 1918 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1919 | dependencies: 1920 | ansi-regex "^2.0.0" 1921 | 1922 | strip-bom@^2.0.0: 1923 | version "2.0.0" 1924 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 1925 | dependencies: 1926 | is-utf8 "^0.2.0" 1927 | 1928 | strip-indent@^1.0.1: 1929 | version "1.0.1" 1930 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 1931 | dependencies: 1932 | get-stdin "^4.0.1" 1933 | 1934 | strip-json-comments@~2.0.1: 1935 | version "2.0.1" 1936 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1937 | 1938 | supports-color@3.1.2, supports-color@^3.1.0: 1939 | version "3.1.2" 1940 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 1941 | dependencies: 1942 | has-flag "^1.0.0" 1943 | 1944 | tar-pack@^3.4.0: 1945 | version "3.4.0" 1946 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 1947 | dependencies: 1948 | debug "^2.2.0" 1949 | fstream "^1.0.10" 1950 | fstream-ignore "^1.0.5" 1951 | once "^1.3.3" 1952 | readable-stream "^2.1.4" 1953 | rimraf "^2.5.1" 1954 | tar "^2.2.1" 1955 | uid-number "^0.0.6" 1956 | 1957 | tar@^2.2.1: 1958 | version "2.2.1" 1959 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 1960 | dependencies: 1961 | block-stream "*" 1962 | fstream "^1.0.2" 1963 | inherits "2" 1964 | 1965 | tmp@0.0.31, tmp@0.0.x: 1966 | version "0.0.31" 1967 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" 1968 | dependencies: 1969 | os-tmpdir "~1.0.1" 1970 | 1971 | to-array@0.1.4: 1972 | version "0.1.4" 1973 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" 1974 | 1975 | tough-cookie@~2.3.0: 1976 | version "2.3.2" 1977 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 1978 | dependencies: 1979 | punycode "^1.4.1" 1980 | 1981 | trim-newlines@^1.0.0: 1982 | version "1.0.0" 1983 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 1984 | 1985 | tunnel-agent@^0.6.0: 1986 | version "0.6.0" 1987 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1988 | dependencies: 1989 | safe-buffer "^5.0.1" 1990 | 1991 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1992 | version "0.14.5" 1993 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1994 | 1995 | type-check@~0.3.2: 1996 | version "0.3.2" 1997 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1998 | dependencies: 1999 | prelude-ls "~1.1.2" 2000 | 2001 | type-detect@^3.0.0: 2002 | version "3.0.0" 2003 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55" 2004 | 2005 | type-detect@^4.0.0: 2006 | version "4.0.3" 2007 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 2008 | 2009 | type-is@~1.6.15: 2010 | version "1.6.15" 2011 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 2012 | dependencies: 2013 | media-typer "0.3.0" 2014 | mime-types "~2.1.15" 2015 | 2016 | uglify-es@^3.3.9: 2017 | version "3.3.9" 2018 | resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" 2019 | dependencies: 2020 | commander "~2.13.0" 2021 | source-map "~0.6.1" 2022 | 2023 | uglify-js@^2.6: 2024 | version "2.8.29" 2025 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 2026 | dependencies: 2027 | source-map "~0.5.1" 2028 | yargs "~3.10.0" 2029 | optionalDependencies: 2030 | uglify-to-browserify "~1.0.0" 2031 | 2032 | uglify-to-browserify@~1.0.0: 2033 | version "1.0.2" 2034 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2035 | 2036 | uid-number@^0.0.6: 2037 | version "0.0.6" 2038 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2039 | 2040 | ultron@1.0.x: 2041 | version "1.0.2" 2042 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" 2043 | 2044 | unpipe@1.0.0, unpipe@~1.0.0: 2045 | version "1.0.0" 2046 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2047 | 2048 | useragent@^2.1.12: 2049 | version "2.1.13" 2050 | resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" 2051 | dependencies: 2052 | lru-cache "2.2.x" 2053 | tmp "0.0.x" 2054 | 2055 | util-deprecate@~1.0.1: 2056 | version "1.0.2" 2057 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2058 | 2059 | utils-merge@1.0.0: 2060 | version "1.0.0" 2061 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 2062 | 2063 | uuid@^3.0.0: 2064 | version "3.1.0" 2065 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 2066 | 2067 | validate-npm-package-license@^3.0.1: 2068 | version "3.0.1" 2069 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2070 | dependencies: 2071 | spdx-correct "~1.0.0" 2072 | spdx-expression-parse "~1.0.0" 2073 | 2074 | verror@1.3.6: 2075 | version "1.3.6" 2076 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 2077 | dependencies: 2078 | extsprintf "1.0.2" 2079 | 2080 | void-elements@^2.0.0: 2081 | version "2.0.1" 2082 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 2083 | 2084 | which@^1.1.1, which@^1.2.1: 2085 | version "1.2.14" 2086 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 2087 | dependencies: 2088 | isexe "^2.0.0" 2089 | 2090 | wide-align@^1.1.0: 2091 | version "1.1.2" 2092 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 2093 | dependencies: 2094 | string-width "^1.0.2" 2095 | 2096 | window-size@0.1.0: 2097 | version "0.1.0" 2098 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2099 | 2100 | wordwrap@0.0.2: 2101 | version "0.0.2" 2102 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2103 | 2104 | wordwrap@^1.0.0, wordwrap@~1.0.0: 2105 | version "1.0.0" 2106 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2107 | 2108 | wordwrap@~0.0.2: 2109 | version "0.0.3" 2110 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2111 | 2112 | wrappy@1: 2113 | version "1.0.2" 2114 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2115 | 2116 | ws@1.1.2: 2117 | version "1.1.2" 2118 | resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" 2119 | dependencies: 2120 | options ">=0.0.5" 2121 | ultron "1.0.x" 2122 | 2123 | wtf-8@1.0.0: 2124 | version "1.0.0" 2125 | resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" 2126 | 2127 | xmlhttprequest-ssl@1.5.3: 2128 | version "1.5.3" 2129 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" 2130 | 2131 | yargs@~3.10.0: 2132 | version "3.10.0" 2133 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2134 | dependencies: 2135 | camelcase "^1.0.2" 2136 | cliui "^2.1.0" 2137 | decamelize "^1.0.0" 2138 | window-size "0.1.0" 2139 | 2140 | yeast@0.1.2: 2141 | version "0.1.2" 2142 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 2143 | --------------------------------------------------------------------------------