New version 2.5.19

This commit is contained in:
Chupurnov Valeriy 2018-03-21 21:23:38 +05:00
parent 7d945b6024
commit 2382196ce7
20 changed files with 5870 additions and 193 deletions

7
.travis.yml Normal file
View File

@ -0,0 +1,7 @@
language: node_js
node_js:
- "8"
before_script:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

30
karma.conf.js Normal file
View File

@ -0,0 +1,30 @@
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['mocha', 'chai'],
files: [
'jquery.datetimepicker.css',
'node_modules/php-date-formatter/js/php-date-formatter.js',
'jquery.js',
'jquery.datetimepicker.js',
'tests/bootstrap.js',
'tests/tests/*.js'
],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
browsers: ['Firefox'],
autoWatch: true,
singleRun: false, // Karma captures browsers, runs the tests and exits
concurrency: Infinity,
plugins: [
'karma-firefox-launcher',
'karma-mocha',
'karma-chai'
],
client: {
captureConsole: true
}
})
};

5408
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,16 @@
{
"name": "jquery-datetimepicker",
"version": "2.5.18",
"version": "2.5.19",
"description": "jQuery Plugin DateTimePicker it is DatePicker and TimePicker in one",
"main": "build/jquery.datetimepicker.full.min.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"test": "karma start --browsers Firefox karma.conf.js --single-run",
"concat": "concat-cli -f node_modules/php-date-formatter/js/php-date-formatter.min.js jquery.datetimepicker.js node_modules/jquery-mousewheel/jquery.mousewheel.js -o build/jquery.datetimepicker.full.js",
"minify": "uglifyjs jquery.datetimepicker.js -c -m -o build/jquery.datetimepicker.min.js && uglifycss jquery.datetimepicker.css > build/jquery.datetimepicker.min.css",
"minifyconcat": "uglifyjs build/jquery.datetimepicker.full.js -c -m -o build/jquery.datetimepicker.full.min.js",
"github": "git add --all && git commit -m \"New version %npm_package_version% \" && git tag %npm_package_version% && git push --tags origin HEAD:master && npm publish",
"build": "npm run minify && npm run concat && npm run minifyconcat",
"public": "npm version patch --no-git-tag-version && npm run build && npm run github"
"public": "npm run test && npm version patch --no-git-tag-version && npm run build && npm run github"
},
"repository": {
"type": "git",
@ -25,7 +25,7 @@
"datepicker",
"timepicker"
],
"author": "Chupurnov <chupurnov@gmail.com> (http://xdsoft.net/)",
"author": "Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/)",
"license": "MIT",
"bugs": {
"url": "https://github.com/xdan/datetimepicker/issues"
@ -37,8 +37,14 @@
"php-date-formatter": "^1.3.4"
},
"devDependencies": {
"chai": "^4.1.2",
"concat": "azer/concat",
"concat-cli": "^4.0.0",
"karma": "^2.0.0",
"karma-chai": "^0.1.0",
"karma-firefox-launcher": "^1.1.0",
"karma-mocha": "^1.3.0",
"mocha": "^5.0.4",
"uglifycss": "^0.0.27",
"uglifyjs": "^2.4.10"
}

0
tests/app.css Normal file
View File

45
tests/index.html Normal file
View File

@ -0,0 +1,45 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>jQuery DateTimepicker Tests </title>
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
<script>
mocha.ui('bdd');
mocha.reporter('html');
</script>
<link rel="stylesheet" href="./app.css" />
<link rel="stylesheet" href="../jquery.datetimepicker.css" />
<script src="../jquery.js"></script>
<script src="../node_modules/php-date-formatter/js/php-date-formatter.js"></script>
<script src="../jquery.datetimepicker.js"></script>
<script src="./tests/bootstrap.js"></script>
<script src="./tests/init.js"></script>
<script src="./tests/destroy.js"></script>
<script src="./tests/options.js"></script>
<script src="./tests/methods.js"></script>
<script src="./tests/events.js"></script>
<script>
window.onload = function() {
if (window.mochaPhantomJS) {
mochaPhantomJS.run();
} else {
mocha.run();
}
};
</script>
</body>
</html>

View File

@ -98,7 +98,7 @@
</div>
</footer>
<script src="../bower_components/jquery/dist/jquery.min.js"></script>
<script src="../jquery.js"></script>
<script src="../build/jquery.datetimepicker.full.js"></script>
<script>

View File

@ -98,7 +98,7 @@
</div>
</footer>
<script src="../bower_components/jquery/dist/jquery.min.js"></script>
<script src="../jquery.js"></script>
<script src="../build/jquery.datetimepicker.full.js"></script>
<script>

55
tests/tests/bootstrap.js vendored Normal file
View File

@ -0,0 +1,55 @@
var inputs = [];
var box = document.createElement('div');
document.body.appendChild(box);
var getInput = function () {
var input = document.createElement('input');
input.setAttribute('type', 'text');
inputs.push(input);
box.appendChild(input);
return input;
};
var clear = function() {
inputs.forEach(function (inp) {
$(inp).datetimepicker('destroy');
inp.parentNode && inp.parentNode.removeChild(inp)
});
};
var PICKER = 'xdsoft_datetimepicker';
var simulateEvent = function (type, element, keyCodeArg, options) {
if (!keyCodeArg) {
keyCodeArg = 0;
}
if (element instanceof jQuery) {
element = element[0];
}
var evt = (element.ownerDocument || document).createEvent('HTMLEvents')
evt.initEvent(type, true, true);
evt.keyCode = keyCodeArg;
evt.which = keyCodeArg;
if (options) {
options(evt);
}
if (type.match(/^mouse/)) {
['pageX', 'pageY', 'clientX', 'clientY'].forEach(function (key) {
if (evt[key] === undefined) {
evt[key] = 0;
}
})
}
element.dispatchEvent(evt);
};
afterEach(clear);
var expect = chai.expect;
chai.config.includeStack = true

22
tests/tests/destroy.js Normal file
View File

@ -0,0 +1,22 @@
describe('Check destructor', function () {
describe('Init picker and after this init again with command destroy', function () {
it('Should remove picker from DOM and remove all listeners from original input', function (done) {
var input = getInput();
$(input).datetimepicker();
var dtp = $(input).data('xdsoft_datetimepicker');
expect(dtp).to.be.not.equal(null);
expect(dtp[0].tagName).to.be.equal('DIV');
expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true;
expect(dtp.is(':hidden')).to.be.true;
$(input).datetimepicker('destroy');
expect($(input).data('xdsoft_datetimepicker')).to.be.equal(null);
$(input).trigger('mousedown')
setTimeout(function () {
expect(dtp.is(':hidden')).to.be.true;
done();
}, 150)
});
});
});

26
tests/tests/events.js Normal file
View File

@ -0,0 +1,26 @@
describe('Test events', function () {
describe('onSelectDate', function () {
it('Should fired after user selected day', function (done) {
var input= $(getInput()).val('2011/04/15');
var picker = input.datetimepicker({
onSelectDate: function (time, inp, evt) {
expect(picker).to.be.equal(this);
expect(time.getDate()).to.be.equal(17);
expect(time.getMonth()).to.be.equal(3);
expect(time.getFullYear()).to.be.equal(2011);
expect(inp[0]).to.be.equal(input[0]);
expect(evt.type).to.be.equal('click');
done();
},
format: 'Y/m/d'
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]');
expect(select.length).to.be.equal(1);
select.trigger('click');
}, 100);
});
});
});

83
tests/tests/init.js Normal file
View File

@ -0,0 +1,83 @@
describe('Init', function () {
describe('jQuery.fn', function () {
it('Should have datetimepicker method', function () {
expect(typeof jQuery.fn.datetimepicker).to.be.equal('function');
expect(typeof $.fn.datetimepicker).to.be.equal('function');
});
});
describe('jQuery.fn.datetimepicker', function () {
it('Should have `defaults` property', function () {
expect(typeof jQuery.fn.datetimepicker.defaults).to.be.equal('object');
expect(jQuery.fn.datetimepicker.defaults.format).to.be.equal('Y/m/d H:i');
});
});
describe('Create datetimepicker', function () {
describe('Without parameters', function () {
it('Should create plugin with default options', function (done) {
var input = getInput();
$(input).datetimepicker();
var dtp = $(input).data('xdsoft_datetimepicker');
expect(dtp).to.be.not.equal(null);
expect(dtp[0].tagName).to.be.equal('DIV');
expect(dtp[0].classList.contains('xdsoft_datetimepicker')).to.be.true;
expect(dtp.is(':hidden')).to.be.true;
$(input).trigger('mousedown')
setTimeout(function () {
expect(dtp.is(':hidden')).to.be.false;
done();
}, 150)
});
});
describe('In inline mode', function () {
it('Should create picker and replace original input', function () {
var input = getInput();
$(input).datetimepicker({
inline: true
});
var dtp = $(input).data('xdsoft_datetimepicker');
expect(dtp.is(':hidden')).to.be.false;
expect($(input).is(':hidden')).to.be.true;
});
});
});
describe('Set locale', function () {
describe('Change locale', function () {
it('Should create different pickers fro all locales', function (done) {
$.datetimepicker.setLocale('en');
var $input = $(getInput());
$input.datetimepicker({inline: true});
setTimeout(function () {
var text = $input.data('xdsoft_datetimepicker').text();
$input.datetimepicker('destroy');
$.datetimepicker.setLocale('ru');
$input.datetimepicker({inline: true});
setTimeout(function () {
expect($input.data('xdsoft_datetimepicker').text()).to.be.not.equal(text);
done();
}, 100)
}, 100)
});
});
});
describe('Select day', function () {
it('Should set selected date to input by format', function (done) {
var input= $(getInput()).val('2011/04/15');
var picker = input.datetimepicker({
format: 'Y/m/d'
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]');
expect(start.length).to.be.equal(1);
expect(start.hasClass('xdsoft_disabled')).to.be.false;
expect(start.hasClass('xdsoft_current')).to.be.true;
var select = picker.find('td[data-date="17"][data-month="3"][data-year="2011"]');
expect(start.length).to.be.equal(1);
select.trigger('click');
expect(input.val()).to.be.equal('2011/04/17')
done();
}, 100);
});
});
});

62
tests/tests/methods.js Normal file
View File

@ -0,0 +1,62 @@
describe('Test methods', function () {
describe('Show', function () {
it('Should show picker', function () {
var input= $(getInput());
var picker = input
.datetimepicker()
.datetimepicker('show')
.data(PICKER);
expect(picker.is(':hidden')).to.be.false;
});
});
describe('Hide', function () {
it('Should hide picker', function () {
var input= $(getInput());
var picker = input
.datetimepicker()
.datetimepicker('show')
.data(PICKER);
expect(picker.is(':hidden')).to.be.false;
input.datetimepicker('hide')
expect(picker.is(':hidden')).to.be.true;
});
});
describe('Toggle', function () {
it('Should hide/show picker', function () {
var input= $(getInput());
var picker = input
.datetimepicker()
.datetimepicker('show')
.data(PICKER);
expect(picker.is(':hidden')).to.be.false;
input.datetimepicker('toggle')
expect(picker.is(':hidden')).to.be.true;
input.datetimepicker('toggle')
expect(picker.is(':hidden')).to.be.false;
});
});
describe('Reset', function () {
it('Should restore default value', function (done) {
var input= $('<input type="text" value="15.12.2008"/>').appendTo(document.body);
var picker = input
.datetimepicker({format: 'd.m.Y'})
.datetimepicker('show')
.data(PICKER);
setTimeout(function () {
var select = picker.find('td[data-date="16"][data-month="11"][data-year="2008"]');
expect(select.length).to.be.equal(1);
select.trigger('click');
expect(input.val()).to.be.equal('16.12.2008');
input.datetimepicker('reset');
expect(input.val()).to.be.equal('15.12.2008');
input.datetimepicker('destroy').remove();
done();
}, 100)
});
});
});

102
tests/tests/options.js Normal file
View File

@ -0,0 +1,102 @@
describe('Test options', function () {
describe('dayOfWeekStart', function () {
it('Should change default start of week', function (done) {
$.datetimepicker.setLocale('en');
var input = $(getInput());
var picker = input.datetimepicker({inline: true}).trigger('mousedown').data('xdsoft_datetimepicker');
setTimeout(function () {
var day = picker.find('th').eq(0).text();
var date = picker.find('td').eq(0).text();
input.datetimepicker('destroy');
var picker2 = $(getInput()).datetimepicker({
inline: true,
dayOfWeekStart: 2
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
expect(picker2.find('th').eq(0).text()).to.be.not.equal(day);
expect(picker2.find('td').eq(0).text()).to.be.not.equal(date);
done();
}, 100);
}, 100);
});
});
describe('disabledDates and startDate', function () {
it('Should disable some dates in picker and picker should be open on startDate', function (done) {
var input= $(getInput());
var picker = input.datetimepicker({
disabledDates:['1986/01/08','1986/01/09','1986/01/10'],
startDate: '1986/01/05'
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var day = picker.find('td[data-date="8"][data-month="0"][data-year="1986"]');
expect(day.hasClass('xdsoft_disabled')).to.be.true;
var start = picker.find('td[data-date="5"][data-month="0"][data-year="1986"]');
expect(start.length).to.be.equal(1);
expect(start.hasClass('xdsoft_disabled')).to.be.false;
done();
}, 100);
});
});
describe('defaultDate', function () {
it('Should open picker on some date', function (done) {
var input= $(getInput());
var picker = input.datetimepicker({formatDate:'d.m.Y', defaultDate: '+03.01.1970'}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var now = new Date();
now.setDate(now.getDate() + 2)
var start = picker.find('td[data-date="' + now.getDate() + '"][data-month="' + now.getMonth() + '"][data-year="' + now.getFullYear() + '"]');
expect(start.length).to.be.equal(1);
expect(start.hasClass('xdsoft_disabled')).to.be.false;
expect(start.hasClass('xdsoft_current xdsoft_today')).to.be.true;
done();
}, 100);
});
});
describe('Value', function () {
it('Should set value to plugin', function (done) {
var input= $(getInput());
var picker = input.datetimepicker({value: '2011/04/15 05:03'}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var start = picker.find('td[data-date="15"][data-month="3"][data-year="2011"]');
expect(start.length).to.be.equal(1);
expect(start.hasClass('xdsoft_disabled')).to.be.false;
done();
}, 100);
});
});
describe('timepicker = false', function () {
it('Should create only datepicker', function (done) {
var input= $(getInput());
var picker = input.datetimepicker({
timepicker: false
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var timepicker = picker.find('.xdsoft_timepicker');
expect(timepicker.length).to.be.equal(1);
expect(timepicker.is(':hidden')).to.be.true;
done();
}, 100);
});
});
describe('datepicker = false', function () {
it('Should create only timepicker', function (done) {
var input= $(getInput());
var picker = input.datetimepicker({
datepicker: false
}).trigger('mousedown').data(PICKER);
setTimeout(function () {
var datepicker = picker.find('.xdsoft_datepicker');
expect(datepicker.length).to.be.equal(1);
expect(datepicker.is(':hidden')).to.be.true;
done();
}, 100);
});
});
});

175
yarn.lock
View File

@ -1,175 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
camelcase@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
chalk@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
ansi-styles "^2.2.1"
escape-string-regexp "^1.0.2"
has-ansi "^2.0.0"
strip-ansi "^3.0.0"
supports-color "^2.0.0"
cliui@^3.0.3:
version "3.2.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
dependencies:
string-width "^1.0.1"
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
commander@^2.9.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
concat-cli@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/concat-cli/-/concat-cli-4.0.0.tgz#a73a0fb0d18b25804ebe703bcc35922324dbf74d"
dependencies:
chalk "^1.1.1"
concat "^1.0.0"
yargs "^3.30.0"
concat@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/concat/-/concat-1.0.3.tgz#40f3353089d65467695cb1886b45edd637d8cca8"
dependencies:
commander "^2.9.0"
concat@azer/concat:
version "1.0.0"
resolved "https://codeload.github.com/azer/concat/tar.gz/c64c5cbc2e60b0bc1a8f4bceafed661f66f19dcf"
dependencies:
parallel-loop azer/parallel-loop
serial-loop azer/serial-loop
decamelize@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
escape-string-regexp@^1.0.2:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
dependencies:
ansi-regex "^2.0.0"
invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
dependencies:
number-is-nan "^1.0.0"
"jquery-mousewheel@>= 3.1.13":
version "3.1.13"
resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5"
"jquery@>= 1.7.2":
version "3.2.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
dependencies:
invert-kv "^1.0.0"
number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
os-locale@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
dependencies:
lcid "^1.0.0"
parallel-loop@azer/parallel-loop:
version "0.0.2"
resolved "https://codeload.github.com/azer/parallel-loop/tar.gz/054b0d3fe633483a3a6b94104c8343473208d5fb"
php-date-formatter@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/php-date-formatter/-/php-date-formatter-1.3.4.tgz#09a15ae0766ba0beb1900c27c1ec319ef2e4563e"
serial-loop@azer/serial-loop:
version "0.0.1"
resolved "https://codeload.github.com/azer/serial-loop/tar.gz/99c6271f80f075b7db089a1aadc7178a310a4570"
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
dependencies:
code-point-at "^1.0.0"
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
dependencies:
ansi-regex "^2.0.0"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
uglifycss@^0.0.27:
version "0.0.27"
resolved "https://registry.yarnpkg.com/uglifycss/-/uglifycss-0.0.27.tgz#53553b8115de26dce57b42ba0b34e88dd80d0cde"
uglifyjs@^2.4.10:
version "2.4.11"
resolved "https://registry.yarnpkg.com/uglifyjs/-/uglifyjs-2.4.11.tgz#3440d64e045759589524418eb641c68bb90d113e"
window-size@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
dependencies:
string-width "^1.0.1"
strip-ansi "^3.0.1"
y18n@^3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
yargs@^3.30.0:
version "3.32.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
dependencies:
camelcase "^2.0.1"
cliui "^3.0.3"
decamelize "^1.1.1"
os-locale "^1.4.0"
string-width "^1.0.1"
window-size "^0.1.4"
y18n "^3.2.0"