From 399cf1c73712832788b324a4617bd55c780a18f5 Mon Sep 17 00:00:00 2001 From: Nicolas Turlais Date: Wed, 21 Nov 2018 20:09:20 +0100 Subject: [PATCH] Prettier --- .prettierrc.js | 10 + package.json | 17 +- src/js/jquery.chocolat.js | 925 ++++++++------- test/test.chocolat.js | 1291 ++++++++++++--------- yarn.lock | 2274 +++++++++++++++++++++++++++++++++++++ 5 files changed, 3477 insertions(+), 1040 deletions(-) create mode 100644 .prettierrc.js create mode 100644 yarn.lock diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..7a96cae --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,10 @@ +module.exports = { + trailingComma: 'es5', + tabWidth: 4, + bracketSpacing: true, + useTabs: false, + printWidth: 100, + semi: false, + arrowParens: 'always', + singleQuote: true +} \ No newline at end of file diff --git a/package.json b/package.json index 38e527b..11c0699 100644 --- a/package.json +++ b/package.json @@ -6,22 +6,25 @@ "directories": { "test": "test" }, + "scripts": { + "build": "gulp build", + "test": "./node_modules/.bin/mocha-phantomjs test/index.html", + "prettier": "./node_modules/.bin/prettier src/js/*.js test/*.js --write" + }, "dependencies": { "jquery": "^3.0" }, "devDependencies": { - "phantomjs": "^1.9.1", "chai": "^3.0.0", - "coffee-script": "^1.9.3", "gulp": "^3.9.0", "gulp-bump": "^0.3.1", - "gulp-coffee": "^2.3.1", - "gulp-jshint": "^1.11.2", - "mocha-phantomjs": "3.5.3", - "gulp-mocha-phantomjs": "^0.6.1", + "gulp-mocha-phantomjs": "^0.12.2", "gulp-rename": "^1.2.2", "gulp-uglify": "^1.2.0", - "gulp-util": "^3.0.6" + "gulp-util": "^3.0.6", + "mocha-phantomjs": "3.5.3", + "phantomjs": "^1.9.1", + "prettier": "1.15.2" }, "repository": { "type": "git", diff --git a/src/js/jquery.chocolat.js b/src/js/jquery.chocolat.js index a447002..a168feb 100644 --- a/src/js/jquery.chocolat.js +++ b/src/js/jquery.chocolat.js @@ -1,469 +1,443 @@ -(function (factory) { - if(typeof module === "object" && typeof module.exports === "object") { - module.exports = factory(require("jquery"), window, document); +;(function(factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = factory(require('jquery'), window, document) } else { - factory(jQuery, window, document); + factory(jQuery, window, document) } -}(function($, window, document, undefined) { - var calls = 0; +})(function($, window, document, undefined) { + var calls = 0 function Chocolat(element, settings) { - var that = this; + var that = this - this.settings = settings; - this.elems = {}; - this.element = element; + this.settings = settings + this.elems = {} + this.element = element this._cssClasses = [ 'chocolat-open', 'chocolat-in-container', 'chocolat-cover', 'chocolat-zoomable', - 'chocolat-zoomed' - ]; + 'chocolat-zoomed', + ] if (!this.settings.setTitle && element.data('chocolat-title')) { - this.settings.setTitle = element.data('chocolat-title'); + this.settings.setTitle = element.data('chocolat-title') } - this.element.find(this.settings.imageSelector).each(function () { + this.element.find(this.settings.imageSelector).each(function() { that.settings.images.push({ - title : $(this).attr('title'), - src : $(this).attr(that.settings.imageSource), - height : false, - width : false - }); - }); - - this.element.find(this.settings.imageSelector).each(function (i) { - $(this).off('click.chocolat').on('click.chocolat', function(e){ - that.init(i); - e.preventDefault(); - }); - }); - - return this; + title: $(this).attr('title'), + src: $(this).attr(that.settings.imageSource), + height: false, + width: false, + }) + }) + + this.element.find(this.settings.imageSelector).each(function(i) { + $(this) + .off('click.chocolat') + .on('click.chocolat', function(e) { + that.init(i) + e.preventDefault() + }) + }) + + return this } $.extend(Chocolat.prototype, { - - init : function(i) { + init: function(i) { if (!this.settings.initialized) { - this.setDomContainer(); - this.markup(); - this.events(); - this.settings.lastImage = this.settings.images.length - 1; - this.settings.initialized = true; + this.setDomContainer() + this.markup() + this.events() + this.settings.lastImage = this.settings.images.length - 1 + this.settings.initialized = true } - this.settings.afterInitialize.call(this); + this.settings.afterInitialize.call(this) - return this.load(i); + return this.load(i) }, - preload : function(i) { - var def = $.Deferred(); + preload: function(i) { + var def = $.Deferred() if (typeof this.settings.images[i] === 'undefined') { - return; + return } - var imgLoader = new Image(); - imgLoader.onload = function() { def.resolve(imgLoader); }; - imgLoader.src = this.settings.images[i].src; + var imgLoader = new Image() + imgLoader.onload = function() { + def.resolve(imgLoader) + } + imgLoader.src = this.settings.images[i].src - return def; + return def }, - load : function(i) { - var that = this; + load: function(i) { + var that = this if (this.settings.fullScreen) { - this.openFullScreen(); + this.openFullScreen() } if (this.settings.currentImage === i) { - return; + return } - this.elems.overlay.fadeIn(this.settings.duration); - this.elems.wrapper.fadeIn(this.settings.duration); - this.elems.domContainer.addClass('chocolat-open'); + this.elems.overlay.fadeIn(this.settings.duration) + this.elems.wrapper.fadeIn(this.settings.duration) + this.elems.domContainer.addClass('chocolat-open') - this.settings.timer = setTimeout(function(){ + this.settings.timer = setTimeout(function() { if (typeof that.elems != 'undefined') { - $.proxy(that.elems.loader.fadeIn(), that); + $.proxy(that.elems.loader.fadeIn(), that) } - }, this.settings.duration); + }, this.settings.duration) var deferred = this.preload(i) - .then(function (imgLoader) { - return that.place(i, imgLoader); + .then(function(imgLoader) { + return that.place(i, imgLoader) + }) + .then(function(imgLoader) { + return that.appear(i) }) - .then(function (imgLoader) { - return that.appear(i); + .then(function(imgLoader) { + that.zoomable() + that.settings.afterImageLoad.call(that) }) - .then(function (imgLoader) { - that.zoomable(); - that.settings.afterImageLoad.call(that); - }); - var nextIndex = i + 1; + var nextIndex = i + 1 if (typeof this.settings.images[nextIndex] != 'undefined') { - this.preload(nextIndex); + this.preload(nextIndex) } - return deferred; + return deferred }, - place : function(i, imgLoader) { - var that = this; - var fitting; + place: function(i, imgLoader) { + var that = this + var fitting - this.settings.currentImage = i; - this.description(); - this.pagination(); - this.arrows(); + this.settings.currentImage = i + this.description() + this.pagination() + this.arrows() - this.storeImgSize(imgLoader, i); - fitting = this.fit(i, that.elems.wrapper); + this.storeImgSize(imgLoader, i) + fitting = this.fit(i, that.elems.wrapper) - return this.center( - fitting.width, - fitting.height, - fitting.left, - fitting.top, - 0 - ); + return this.center(fitting.width, fitting.height, fitting.left, fitting.top, 0) }, - center : function(width, height, left, top, duration) { - + center: function(width, height, left, top, duration) { return this.elems.content .css('overflow', 'visible') - .animate({ - 'width' :width, - 'height' :height, - 'left' :left, - 'top' :top - }, duration) - .promise(); + .animate( + { + width: width, + height: height, + left: left, + top: top, + }, + duration + ) + .promise() }, - appear : function(i) { - var that = this; - clearTimeout(this.settings.timer); + appear: function(i) { + var that = this + clearTimeout(this.settings.timer) this.elems.loader.stop().fadeOut(300, function() { - that.elems.img - .attr('src', that.settings.images[i].src); - }); + that.elems.img.attr('src', that.settings.images[i].src) + }) }, - fit : function(i, container) { - var height; - var width; + fit: function(i, container) { + var height + var width - var imgHeight = this.settings.images[i].height; - var imgWidth = this.settings.images[i].width; - var holderHeight = $(container).height(); - var holderWidth = $(container).width(); - var holderOutMarginH = this.getOutMarginH(); - var holderOutMarginW = this.getOutMarginW(); + var imgHeight = this.settings.images[i].height + var imgWidth = this.settings.images[i].width + var holderHeight = $(container).height() + var holderWidth = $(container).width() + var holderOutMarginH = this.getOutMarginH() + var holderOutMarginW = this.getOutMarginW() - var holderGlobalWidth = holderWidth-holderOutMarginW; - var holderGlobalHeight = holderHeight-holderOutMarginH; - var holderGlobalRatio = (holderGlobalHeight / holderGlobalWidth); - var holderRatio = (holderHeight / holderWidth); - var imgRatio = (imgHeight / imgWidth); + var holderGlobalWidth = holderWidth - holderOutMarginW + var holderGlobalHeight = holderHeight - holderOutMarginH + var holderGlobalRatio = holderGlobalHeight / holderGlobalWidth + var holderRatio = holderHeight / holderWidth + var imgRatio = imgHeight / imgWidth if (this.settings.imageSize == 'cover') { if (imgRatio < holderRatio) { - height = holderHeight; - width = height / imgRatio; + height = holderHeight + width = height / imgRatio + } else { + width = holderWidth + height = width * imgRatio } - else { - width = holderWidth; - height = width * imgRatio; - } - } - else if (this.settings.imageSize == 'native') { - height = imgHeight; - width = imgWidth; - } - else { + } else if (this.settings.imageSize == 'native') { + height = imgHeight + width = imgWidth + } else { if (imgRatio > holderGlobalRatio) { - height = holderGlobalHeight; - width = height / imgRatio; - } - else { - width = holderGlobalWidth; - height = width * imgRatio; + height = holderGlobalHeight + width = height / imgRatio + } else { + width = holderGlobalWidth + height = width * imgRatio } - if (this.settings.imageSize === 'default' && (width >= imgWidth || height >= imgHeight)) { - width = imgWidth; - height = imgHeight; + if ( + this.settings.imageSize === 'default' && + (width >= imgWidth || height >= imgHeight) + ) { + width = imgWidth + height = imgHeight } } return { - 'height' : height, - 'width' : width, - 'top' : (holderHeight - height)/2, - 'left' : (holderWidth - width)/2 - }; + height: height, + width: width, + top: (holderHeight - height) / 2, + left: (holderWidth - width) / 2, + } }, - change : function(signe) { - this.zoomOut(0); - this.zoomable(); + change: function(signe) { + this.zoomOut(0) + this.zoomable() - var requestedImage = this.settings.currentImage + parseInt(signe); + var requestedImage = this.settings.currentImage + parseInt(signe) if (requestedImage > this.settings.lastImage) { if (this.settings.loop) { - return this.load(0); + return this.load(0) } - } - else if (requestedImage < 0) { + } else if (requestedImage < 0) { if (this.settings.loop) { - return this.load(this.settings.lastImage); + return this.load(this.settings.lastImage) } - } - else { - return this.load(requestedImage); + } else { + return this.load(requestedImage) } }, arrows: function() { if (this.settings.loop) { - $([this.elems.left[0],this.elems.right[0]]) - .addClass('active'); - } - else if (this.settings.linkImages) { + $([this.elems.left[0], this.elems.right[0]]).addClass('active') + } else if (this.settings.linkImages) { // right if (this.settings.currentImage == this.settings.lastImage) { - this.elems.right.removeClass('active'); - } - else { - this.elems.right.addClass('active'); + this.elems.right.removeClass('active') + } else { + this.elems.right.addClass('active') } // left if (this.settings.currentImage === 0) { - this.elems.left.removeClass('active'); + this.elems.left.removeClass('active') + } else { + this.elems.left.addClass('active') } - else { - this.elems.left.addClass('active'); - } - } - else { - $([this.elems.left[0],this.elems.right[0]]) - .removeClass('active'); + } else { + $([this.elems.left[0], this.elems.right[0]]).removeClass('active') } }, - description : function() { - var that = this; - this.elems.description - .html(that.settings.images[that.settings.currentImage].title); + description: function() { + var that = this + this.elems.description.html(that.settings.images[that.settings.currentImage].title) }, - pagination : function() { - var that = this; - var last = this.settings.lastImage + 1; - var position = this.settings.currentImage + 1; + pagination: function() { + var that = this + var last = this.settings.lastImage + 1 + var position = this.settings.currentImage + 1 - this.elems.pagination - .html(position + ' ' + that.settings.separator2 + last); + this.elems.pagination.html(position + ' ' + that.settings.separator2 + last) }, - storeImgSize : function(img, i) { + storeImgSize: function(img, i) { if (typeof img === 'undefined') { - return; + return } if (!this.settings.images[i].height || !this.settings.images[i].width) { - this.settings.images[i].height = img.height; - this.settings.images[i].width = img.width; + this.settings.images[i].height = img.height + this.settings.images[i].width = img.width } }, - close : function() { - + close: function() { if (this.settings.fullscreenOpen) { - this.exitFullScreen(); - return; + this.exitFullScreen() + return } - var els = [ - this.elems.overlay[0], - this.elems.loader[0], - this.elems.wrapper[0] - ]; - var that = this; - var def = $.when($(els).fadeOut(200)).done(function () { - that.elems.domContainer.removeClass('chocolat-open'); - }); - this.settings.currentImage = false; - - return def; + var els = [this.elems.overlay[0], this.elems.loader[0], this.elems.wrapper[0]] + var that = this + var def = $.when($(els).fadeOut(200)).done(function() { + that.elems.domContainer.removeClass('chocolat-open') + }) + this.settings.currentImage = false + + return def }, - destroy : function() { - this.element.removeData(); - this.element.find(this.settings.imageSelector).off('click.chocolat'); + destroy: function() { + this.element.removeData() + this.element.find(this.settings.imageSelector).off('click.chocolat') if (!this.settings.initialized) { - return; + return } if (this.settings.fullscreenOpen) { - this.exitFullScreen(); + this.exitFullScreen() } - this.settings.currentImage = false; - this.settings.initialized = false; - this.elems.domContainer.removeClass(this._cssClasses.join(' ')); - this.elems.wrapper.remove(); + this.settings.currentImage = false + this.settings.initialized = false + this.elems.domContainer.removeClass(this._cssClasses.join(' ')) + this.elems.wrapper.remove() }, - getOutMarginW : function() { - var left = this.elems.left.outerWidth(true); - var right = this.elems.right.outerWidth(true); - return left + right; + getOutMarginW: function() { + var left = this.elems.left.outerWidth(true) + var right = this.elems.right.outerWidth(true) + return left + right }, - getOutMarginH : function() { - return this.elems.top.outerHeight(true) + this.elems.bottom.outerHeight(true); + getOutMarginH: function() { + return this.elems.top.outerHeight(true) + this.elems.bottom.outerHeight(true) }, - markup : function() { - this.elems.domContainer.addClass('chocolat-open ' + this.settings.className); + markup: function() { + this.elems.domContainer.addClass('chocolat-open ' + this.settings.className) if (this.settings.imageSize == 'cover') { - this.elems.domContainer.addClass('chocolat-cover'); + this.elems.domContainer.addClass('chocolat-cover') } if (this.settings.container !== window) { - this.elems.domContainer.addClass('chocolat-in-container'); + this.elems.domContainer.addClass('chocolat-in-container') } this.elems.wrapper = $('
', { - 'class' : 'chocolat-wrapper', - 'id' : 'chocolat-content-' + this.settings.setIndex - }).appendTo(this.elems.domContainer); + class: 'chocolat-wrapper', + id: 'chocolat-content-' + this.settings.setIndex, + }).appendTo(this.elems.domContainer) this.elems.overlay = $('
', { - 'class' : 'chocolat-overlay' - }).appendTo(this.elems.wrapper); + class: 'chocolat-overlay', + }).appendTo(this.elems.wrapper) this.elems.loader = $('
', { - 'class' : 'chocolat-loader' - }).appendTo(this.elems.wrapper); + class: 'chocolat-loader', + }).appendTo(this.elems.wrapper) this.elems.content = $('
', { - 'class' : 'chocolat-content', - }).appendTo(this.elems.wrapper); + class: 'chocolat-content', + }).appendTo(this.elems.wrapper) this.elems.img = $('', { - 'class' : 'chocolat-img', - 'src' : '' - }).appendTo(this.elems.content); + class: 'chocolat-img', + src: '', + }).appendTo(this.elems.content) this.elems.top = $('
', { - 'class' : 'chocolat-top' - }).appendTo(this.elems.wrapper); + class: 'chocolat-top', + }).appendTo(this.elems.wrapper) this.elems.left = $('
', { - 'class' : 'chocolat-left' - }).appendTo(this.elems.wrapper); + class: 'chocolat-left', + }).appendTo(this.elems.wrapper) this.elems.right = $('
', { - 'class' : 'chocolat-right' - }).appendTo(this.elems.wrapper); + class: 'chocolat-right', + }).appendTo(this.elems.wrapper) this.elems.bottom = $('
', { - 'class' : 'chocolat-bottom' - }).appendTo(this.elems.wrapper); + class: 'chocolat-bottom', + }).appendTo(this.elems.wrapper) this.elems.close = $('', { - 'class' : 'chocolat-close' - }).appendTo(this.elems.top); + class: 'chocolat-close', + }).appendTo(this.elems.top) this.elems.fullscreen = $('', { - 'class' : 'chocolat-fullscreen' - }).appendTo(this.elems.bottom); + class: 'chocolat-fullscreen', + }).appendTo(this.elems.bottom) this.elems.description = $('', { - 'class' : 'chocolat-description' - }).appendTo(this.elems.bottom); + class: 'chocolat-description', + }).appendTo(this.elems.bottom) this.elems.pagination = $('', { - 'class' : 'chocolat-pagination' - }).appendTo(this.elems.bottom); + class: 'chocolat-pagination', + }).appendTo(this.elems.bottom) this.elems.setTitle = $('', { - 'class' : 'chocolat-set-title', - 'html' : this.settings.setTitle - }).appendTo(this.elems.bottom); + class: 'chocolat-set-title', + html: this.settings.setTitle, + }).appendTo(this.elems.bottom) - this.settings.afterMarkup.call(this); + this.settings.afterMarkup.call(this) }, - openFullScreen : function() { - var wrapper = this.elems.wrapper[0]; + openFullScreen: function() { + var wrapper = this.elems.wrapper[0] if (wrapper.requestFullscreen) { - this.settings.fullscreenOpen = true; - wrapper.requestFullscreen(); - } - else if (wrapper.mozRequestFullScreen) { - this.settings.fullscreenOpen = true; - wrapper.mozRequestFullScreen(); - } - else if (wrapper.webkitRequestFullscreen) { - this.settings.fullscreenOpen = true; - wrapper.webkitRequestFullscreen(); - } - else if (wrapper.msRequestFullscreen) { - wrapper.msRequestFullscreen(); - this.settings.fullscreenOpen = true; - } - else { - this.settings.fullscreenOpen = false; + this.settings.fullscreenOpen = true + wrapper.requestFullscreen() + } else if (wrapper.mozRequestFullScreen) { + this.settings.fullscreenOpen = true + wrapper.mozRequestFullScreen() + } else if (wrapper.webkitRequestFullscreen) { + this.settings.fullscreenOpen = true + wrapper.webkitRequestFullscreen() + } else if (wrapper.msRequestFullscreen) { + wrapper.msRequestFullscreen() + this.settings.fullscreenOpen = true + } else { + this.settings.fullscreenOpen = false } }, - exitFullScreen : function() { + exitFullScreen: function() { if (document.exitFullscreen) { - document.exitFullscreen(); - this.settings.fullscreenOpen = false; - } - else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - this.settings.fullscreenOpen = false; - } - else if (document.webkitExitFullscreen) { - document.webkitExitFullscreen(); - this.settings.fullscreenOpen = false; - } - else if (document.msExitFullscreen) { - document.msExitFullscreen(); - this.settings.fullscreenOpen = false; - } - else { - this.settings.fullscreenOpen = true; + document.exitFullscreen() + this.settings.fullscreenOpen = false + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + this.settings.fullscreenOpen = false + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen() + this.settings.fullscreenOpen = false + } else if (document.msExitFullscreen) { + document.msExitFullscreen() + this.settings.fullscreenOpen = false + } else { + this.settings.fullscreenOpen = true } }, - events : function() { - var that = this; - - $(document).off('keydown.chocolat').on('keydown.chocolat', function(e) { - if (that.settings.initialized) { - if (e.keyCode == 37) { - that.change(-1); - } - else if (e.keyCode == 39) { - that.change(1); + events: function() { + var that = this + + $(document) + .off('keydown.chocolat') + .on('keydown.chocolat', function(e) { + if (that.settings.initialized) { + if (e.keyCode == 37) { + that.change(-1) + } else if (e.keyCode == 39) { + that.change(1) + } else if (e.keyCode == 27) { + that.close() + } } - else if (e.keyCode == 27) { - that.close(); - } - } - }); + }) // this.elems.wrapper.find('.chocolat-img') // .off('click.chocolat') // .on('click.chocolat', function(e) { @@ -473,269 +447,282 @@ // } // }); - this.elems.wrapper.find('.chocolat-right') + this.elems.wrapper + .find('.chocolat-right') .off('click.chocolat') .on('click.chocolat', function() { - that.change(+1); - }); + that.change(+1) + }) - this.elems.wrapper.find('.chocolat-left') + this.elems.wrapper + .find('.chocolat-left') .off('click.chocolat') .on('click.chocolat', function() { - return that.change(-1); - }); + return that.change(-1) + }) $([this.elems.overlay[0], this.elems.close[0]]) .off('click.chocolat') .on('click.chocolat', function() { - return that.close(); - }); + return that.close() + }) - this.elems.fullscreen - .off('click.chocolat') - .on('click.chocolat', function() { - if (that.settings.fullscreenOpen) { - that.exitFullScreen(); - return; - } + this.elems.fullscreen.off('click.chocolat').on('click.chocolat', function() { + if (that.settings.fullscreenOpen) { + that.exitFullScreen() + return + } - that.openFullScreen(); - }); + that.openFullScreen() + }) if (that.settings.backgroundClose) { - this.elems.overlay - .off('click.chocolat') - .on('click.chocolat', function() { - return that.close(); - }); + this.elems.overlay.off('click.chocolat').on('click.chocolat', function() { + return that.close() + }) } - this.elems.wrapper - .off('click.chocolat') - .on('click.chocolat', function(e) { - return that.zoomOut(e); - }); + this.elems.wrapper.off('click.chocolat').on('click.chocolat', function(e) { + return that.zoomOut(e) + }) - this.elems.wrapper.find('.chocolat-img') + this.elems.wrapper + .find('.chocolat-img') .off('click.chocolat') .on('click.chocolat', function(e) { - if (that.settings.initialZoomState === null && that.elems.domContainer.hasClass('chocolat-zoomable')) { - e.stopPropagation(); - return that.zoomIn(e); + if ( + that.settings.initialZoomState === null && + that.elems.domContainer.hasClass('chocolat-zoomable') + ) { + e.stopPropagation() + return that.zoomIn(e) } - }); + }) - this.elems.wrapper.mousemove(function( e ) { + this.elems.wrapper.mousemove(function(e) { if (that.settings.initialZoomState === null) { - return; + return } if (that.elems.img.is(':animated')) { - return; + return } - var pos = $(this).offset(); - var height = $(this).height(); - var width = $(this).width(); + var pos = $(this).offset() + var height = $(this).height() + var width = $(this).width() - var currentImage = that.settings.images[that.settings.currentImage]; - var imgWidth = currentImage.width; - var imgHeight = currentImage.height; + var currentImage = that.settings.images[that.settings.currentImage] + var imgWidth = currentImage.width + var imgHeight = currentImage.height - var coord = [e.pageX - width/2 - pos.left, e.pageY - height/2 - pos.top]; + var coord = [e.pageX - width / 2 - pos.left, e.pageY - height / 2 - pos.top] - var mvtX = 0; + var mvtX = 0 if (imgWidth > width) { - var paddingX = that.settings.zoomedPaddingX(imgWidth, width); - mvtX = coord[0] / (width / 2); - mvtX = ((imgWidth - width)/ 2 + paddingX) * mvtX; + var paddingX = that.settings.zoomedPaddingX(imgWidth, width) + mvtX = coord[0] / (width / 2) + mvtX = ((imgWidth - width) / 2 + paddingX) * mvtX } - var mvtY = 0; + var mvtY = 0 if (imgHeight > height) { - var paddingY = that.settings.zoomedPaddingY(imgHeight, height); - mvtY = coord[1] / (height / 2); - mvtY = ((imgHeight - height) / 2 + paddingY) * mvtY; + var paddingY = that.settings.zoomedPaddingY(imgHeight, height) + mvtY = coord[1] / (height / 2) + mvtY = ((imgHeight - height) / 2 + paddingY) * mvtY } var animation = { - 'margin-left': - mvtX + 'px', - 'margin-top': - mvtY + 'px' - }; - if (typeof e.duration !== 'undefined') { - $(that.elems.img).stop(false, true).animate(animation, e.duration); + 'margin-left': -mvtX + 'px', + 'margin-top': -mvtY + 'px', } - else { - $(that.elems.img).stop(false, true).css(animation); + if (typeof e.duration !== 'undefined') { + $(that.elems.img) + .stop(false, true) + .animate(animation, e.duration) + } else { + $(that.elems.img) + .stop(false, true) + .css(animation) } - - }); + }) $(window).on('resize', function() { - if (!that.settings.initialized || that.settings.currentImage === false) { - return; + if (!that.settings.initialized || that.settings.currentImage === false) { + return } that.debounce(50, function() { - var fitting = that.fit(that.settings.currentImage, that.elems.wrapper); - that.center(fitting.width, fitting.height, fitting.left, fitting.top, 0); - that.zoomable(); - }); - }); + var fitting = that.fit(that.settings.currentImage, that.elems.wrapper) + that.center(fitting.width, fitting.height, fitting.left, fitting.top, 0) + that.zoomable() + }) + }) }, - zoomable : function () { - var currentImage = this.settings.images[this.settings.currentImage]; - var wrapperWidth = this.elems.wrapper.width(); - var wrapperHeight = this.elems.wrapper.height(); - - var isImageZoomable = ( this.settings.enableZoom && ( currentImage.width > wrapperWidth || currentImage.height > wrapperHeight)) ? true : false; - var isImageStretched = this.elems.img.width() > currentImage.width || this.elems.img.height() > currentImage.height; + zoomable: function() { + var currentImage = this.settings.images[this.settings.currentImage] + var wrapperWidth = this.elems.wrapper.width() + var wrapperHeight = this.elems.wrapper.height() + var isImageZoomable = + this.settings.enableZoom && + (currentImage.width > wrapperWidth || currentImage.height > wrapperHeight) + ? true + : false + var isImageStretched = + this.elems.img.width() > currentImage.width || + this.elems.img.height() > currentImage.height if (isImageZoomable && !isImageStretched) { - this.elems.domContainer.addClass('chocolat-zoomable'); - } - else { - this.elems.domContainer.removeClass('chocolat-zoomable'); + this.elems.domContainer.addClass('chocolat-zoomable') + } else { + this.elems.domContainer.removeClass('chocolat-zoomable') } }, - zoomIn : function (e) { - this.settings.initialZoomState = this.settings.imageSize; - this.settings.imageSize = 'native'; + zoomIn: function(e) { + this.settings.initialZoomState = this.settings.imageSize + this.settings.imageSize = 'native' - var event = $.Event('mousemove'); - event.pageX = e.pageX; - event.pageY = e.pageY; - event.duration = this.settings.duration; - this.elems.wrapper.trigger(event); + var event = $.Event('mousemove') + event.pageX = e.pageX + event.pageY = e.pageY + event.duration = this.settings.duration + this.elems.wrapper.trigger(event) - this.elems.domContainer.addClass('chocolat-zoomed'); - var fitting = this.fit(this.settings.currentImage, this.elems.wrapper); - return this.center(fitting.width, fitting.height, fitting.left, fitting.top, this.settings.duration); + this.elems.domContainer.addClass('chocolat-zoomed') + var fitting = this.fit(this.settings.currentImage, this.elems.wrapper) + return this.center( + fitting.width, + fitting.height, + fitting.left, + fitting.top, + this.settings.duration + ) }, - zoomOut : function (e, duration) { + zoomOut: function(e, duration) { if (this.settings.initialZoomState === null || this.settings.currentImage === false) { - return; + return } - duration = duration || this.settings.duration; + duration = duration || this.settings.duration - this.settings.imageSize = this.settings.initialZoomState; - this.settings.initialZoomState = null; - this.elems.img.animate({'margin': 0}, duration); + this.settings.imageSize = this.settings.initialZoomState + this.settings.initialZoomState = null + this.elems.img.animate({ margin: 0 }, duration) - this.elems.domContainer.removeClass('chocolat-zoomed'); - var fitting = this.fit(this.settings.currentImage, this.elems.wrapper); - return this.center(fitting.width, fitting.height, fitting.left, fitting.top, duration); + this.elems.domContainer.removeClass('chocolat-zoomed') + var fitting = this.fit(this.settings.currentImage, this.elems.wrapper) + return this.center(fitting.width, fitting.height, fitting.left, fitting.top, duration) }, - setDomContainer : function() { + setDomContainer: function() { // if container == window // domContainer = body - if ( this.settings.container === window) { - this.elems.domContainer = $('body'); - } - else { - this.elems.domContainer = $(this.settings.container); + if (this.settings.container === window) { + this.elems.domContainer = $('body') + } else { + this.elems.domContainer = $(this.settings.container) } }, debounce: function(duration, callback) { - clearTimeout(this.settings.timerDebounce); + clearTimeout(this.settings.timerDebounce) this.settings.timerDebounce = setTimeout(function() { - callback(); - }, duration); + callback() + }, duration) }, api: function() { - var that = this; + var that = this return { - open : function(i){ - i = parseInt(i) || 0; - return that.init(i); + open: function(i) { + i = parseInt(i) || 0 + return that.init(i) }, - close : function(){ - return that.close(); + close: function() { + return that.close() }, - next : function(){ - return that.change(1); + next: function() { + return that.change(1) }, - prev : function(){ - return that.change(-1); + prev: function() { + return that.change(-1) }, - goto : function(i){ // open alias - return that.open(i); + goto: function(i) { + // open alias + return that.open(i) }, - current : function(){ - return that.settings.currentImage; + current: function() { + return that.settings.currentImage }, - place : function(){ - return that.place(that.settings.currentImage, that.settings.duration); + place: function() { + return that.place(that.settings.currentImage, that.settings.duration) }, - destroy : function(){ - return that.destroy(); + destroy: function() { + return that.destroy() }, - set : function(property, value){ - that.settings[property] = value; - return value; + set: function(property, value) { + that.settings[property] = value + return value }, - get : function(property){ - return that.settings[property]; + get: function(property) { + return that.settings[property] }, - getElem : function(name){ - return that.elems[name]; + getElem: function(name) { + return that.elems[name] }, - }; - } - }); + } + }, + }) var defaults = { - container : window, // window or jquery object or jquery selector, or element - imageSelector : '.chocolat-image', - className : '', - imageSize : 'default', // 'default', 'contain', 'cover' or 'native' - initialZoomState : null, - fullScreen : false, - loop : false, - linkImages : true, - duration : 300, - setTitle : '', - separator2 : '/', - setIndex : 0, - firstImage : 0, - lastImage : false, - currentImage : false, - initialized : false, - timer : false, - timerDebounce : false, - images : [], - enableZoom : true, - imageSource : "href", - afterInitialize : function () {}, - afterMarkup : function () {}, - afterImageLoad : function () {}, - zoomedPaddingX : function (canvasWidth, imgWidth) { return 0; }, - zoomedPaddingY : function (canvasHeight, imgHeight) { return 0; }, - }; - - $.fn.Chocolat = function (options) { - return this.each(function() { + container: window, // window or jquery object or jquery selector, or element + imageSelector: '.chocolat-image', + className: '', + imageSize: 'default', // 'default', 'contain', 'cover' or 'native' + initialZoomState: null, + fullScreen: false, + loop: false, + linkImages: true, + duration: 300, + setTitle: '', + separator2: '/', + setIndex: 0, + firstImage: 0, + lastImage: false, + currentImage: false, + initialized: false, + timer: false, + timerDebounce: false, + images: [], + enableZoom: true, + imageSource: 'href', + afterInitialize: function() {}, + afterMarkup: function() {}, + afterImageLoad: function() {}, + zoomedPaddingX: function(canvasWidth, imgWidth) { + return 0 + }, + zoomedPaddingY: function(canvasHeight, imgHeight) { + return 0 + }, + } - calls++; - var settings = $.extend(true, {}, defaults, options, {setIndex:calls} ); + $.fn.Chocolat = function(options) { + return this.each(function() { + calls++ + var settings = $.extend(true, {}, defaults, options, { setIndex: calls }) if (!$.data(this, 'chocolat')) { - $.data(this, 'chocolat', - new Chocolat($(this), settings) - ); + $.data(this, 'chocolat', new Chocolat($(this), settings)) } - }); - }; -})); + }) + } +}) diff --git a/test/test.chocolat.js b/test/test.chocolat.js index f1f637c..d922576 100644 --- a/test/test.chocolat.js +++ b/test/test.chocolat.js @@ -1,627 +1,790 @@ -describe("Chocolat", function() { - describe("Opening", function() { +describe('Chocolat', function() { + describe('Opening', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); - return chocolat.api().destroy(); - }); - - it("should call markup function and create markup", function() { - var chocolat = $('#example0').Chocolat({ - loop : true, - container : $('#container'), - }).data('chocolat'); - - var spyMarkup = sinon.spy(chocolat, 'markup'); - - $('#example0').find('.chocolat-image').first().trigger('click'); - - expect(spyMarkup.calledOnce).to.be.true; - expect($('#container').find('.chocolat-wrapper').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-overlay').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-loader').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-content').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-top').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-bottom').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-left').length).to.equal(1); - expect($('#container .chocolat-wrapper').find('.chocolat-right').length).to.equal(1); - expect($('#container .chocolat-top').find('.chocolat-close').length).to.equal(1); - expect($('#container .chocolat-bottom').find('.chocolat-pagination').length).to.equal(1); - expect($('#container .chocolat-bottom').find('.chocolat-description').length).to.equal(1); - expect($('#container .chocolat-bottom').find('.chocolat-fullscreen').length).to.equal(1); - expect($('#container .chocolat-bottom').find('.chocolat-set-title').length).to.equal(1); - return expect($('#container .chocolat-content').find('.chocolat-img').length).to.equal(1); - }); - - it("should add css classes to parent when in container", function(done) { - var chocolat = $('#example0').Chocolat({ - container : $('#container'), - }).data('chocolat'); - - return chocolat.api().open().done( function() { - expect($('#container').hasClass('chocolat-in-container')).to.be.true; - expect($('#container').hasClass('chocolat-open')).to.be.true; - // expect($('#container').hasClass('chocolat-zoomable')).to.be.true - return done(); - }); - }); - - it("should add css classes to body when full window", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize : 'cover' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - expect($('body').hasClass('chocolat-open')).to.be.true; - expect($('body').hasClass('chocolat-' + chocolat.settings.imageSize)).to.be.true; - // expect($('#container').hasClass('chocolat-zoomable')).to.be.true - return done(); - }); - }); - - it("should add custom css classe", function(done) { - var chocolat = $('#example0').Chocolat({ - className : 'custom-class-name' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - expect($('body').hasClass('custom-class-name')).to.be.true; - return done(); - }); - }); - - it("should call init function", function() { - - var chocolat = $('#example0').Chocolat({ - loop : true, - container : $('#container'), - }).data('chocolat'); - - var spyInit = sinon.spy(chocolat, 'init'); - - $('#example0').find('.chocolat-image').first().trigger('click'); - - expect(spyInit.calledOnce).to.be.true; - return expect(spyInit.calledWithExactly(0)).to.be.true; - }); - - it("should call load function", function() { - - var chocolat = $('#example0').Chocolat({ - loop : true, - container : $('#container'), - }).data('chocolat'); - - var spyLoad = sinon.spy(chocolat, 'load'); - - $('#example0').find('.chocolat-image').first().trigger('click'); - - expect(spyLoad.calledOnce).to.be.true; - return expect(spyLoad.calledWithExactly(0)).to.be.true; - }); - - it("should call markup function", function() { - - var chocolat = $('#example0').Chocolat({ - loop : true, - container : $('#container'), - }).data('chocolat'); - - var spyMarkup = sinon.spy(chocolat, 'markup'); - - $('#example0').find('.chocolat-image').first().trigger('click'); - - return expect(spyMarkup.calledOnce).to.be.true; - }); - - return it("should append description element in top element (instead of bottom, the default behaviour)", function() { - + var chocolat = $('#example0').data('chocolat') + return chocolat.api().destroy() + }) + + it('should call markup function and create markup', function() { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + container: $('#container'), + }) + .data('chocolat') + + var spyMarkup = sinon.spy(chocolat, 'markup') + + $('#example0') + .find('.chocolat-image') + .first() + .trigger('click') + + expect(spyMarkup.calledOnce).to.be.true + expect($('#container').find('.chocolat-wrapper').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-overlay').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-loader').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-content').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-top').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-bottom').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-left').length).to.equal(1) + expect($('#container .chocolat-wrapper').find('.chocolat-right').length).to.equal(1) + expect($('#container .chocolat-top').find('.chocolat-close').length).to.equal(1) + expect($('#container .chocolat-bottom').find('.chocolat-pagination').length).to.equal(1) + expect($('#container .chocolat-bottom').find('.chocolat-description').length).to.equal( + 1 + ) + expect($('#container .chocolat-bottom').find('.chocolat-fullscreen').length).to.equal(1) + expect($('#container .chocolat-bottom').find('.chocolat-set-title').length).to.equal(1) + return expect($('#container .chocolat-content').find('.chocolat-img').length).to.equal( + 1 + ) + }) + + it('should add css classes to parent when in container', function(done) { + var chocolat = $('#example0') + .Chocolat({ + container: $('#container'), + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + expect($('#container').hasClass('chocolat-in-container')).to.be.true + expect($('#container').hasClass('chocolat-open')).to.be.true + // expect($('#container').hasClass('chocolat-zoomable')).to.be.true + return done() + }) + }) + + it('should add css classes to body when full window', function(done) { + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'cover', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + expect($('body').hasClass('chocolat-open')).to.be.true + expect($('body').hasClass('chocolat-' + chocolat.settings.imageSize)).to.be.true + // expect($('#container').hasClass('chocolat-zoomable')).to.be.true + return done() + }) + }) + + it('should add custom css classe', function(done) { + var chocolat = $('#example0') + .Chocolat({ + className: 'custom-class-name', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + expect($('body').hasClass('custom-class-name')).to.be.true + return done() + }) + }) + + it('should call init function', function() { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + container: $('#container'), + }) + .data('chocolat') + + var spyInit = sinon.spy(chocolat, 'init') + + $('#example0') + .find('.chocolat-image') + .first() + .trigger('click') + + expect(spyInit.calledOnce).to.be.true + return expect(spyInit.calledWithExactly(0)).to.be.true + }) + + it('should call load function', function() { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + container: $('#container'), + }) + .data('chocolat') + + var spyLoad = sinon.spy(chocolat, 'load') + + $('#example0') + .find('.chocolat-image') + .first() + .trigger('click') + + expect(spyLoad.calledOnce).to.be.true + return expect(spyLoad.calledWithExactly(0)).to.be.true + }) + + it('should call markup function', function() { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + container: $('#container'), + }) + .data('chocolat') + + var spyMarkup = sinon.spy(chocolat, 'markup') + + $('#example0') + .find('.chocolat-image') + .first() + .trigger('click') + + return expect(spyMarkup.calledOnce).to.be.true + }) + + return it('should append description element in top element (instead of bottom, the default behaviour)', function() { var afterMarkup = function() { - return this.elems.description.appendTo(this.elems.top); - }; - - var chocolat = $('#example0').Chocolat({ - loop : true, - container : $('#container'), - afterMarkup: afterMarkup - - }).data('chocolat'); - - $('#example0').find('.chocolat-image').first().trigger('click'); - - expect(chocolat.elems.top.find(chocolat.elems.description).length).to.equal(1); - return expect(chocolat.elems.bottom.find(chocolat.elems.description).length).to.equal(0); - }); - }); + return this.elems.description.appendTo(this.elems.top) + } - describe("Destroy method", function() { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + container: $('#container'), + afterMarkup: afterMarkup, + }) + .data('chocolat') + + $('#example0') + .find('.chocolat-image') + .first() + .trigger('click') + + expect(chocolat.elems.top.find(chocolat.elems.description).length).to.equal(1) + return expect(chocolat.elems.bottom.find(chocolat.elems.description).length).to.equal(0) + }) + }) + + describe('Destroy method', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); + var chocolat = $('#example0').data('chocolat') if (chocolat != null) { - return chocolat.api().destroy(); + return chocolat.api().destroy() } - }); - - it("should remove data from calling element", function() { + }) - var chocolat = $('#example0').Chocolat().data('chocolat'); + it('should remove data from calling element', function() { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') - var dataBefore = $('#example0').data('chocolat'); - expect(dataBefore).not.to.be.null; + var dataBefore = $('#example0').data('chocolat') + expect(dataBefore).not.to.be.null - chocolat.api().destroy(); + chocolat.api().destroy() - var dataAfter = $('#example0').data('chocolat'); - return expect(dataAfter).to.be.undefined; - }); + var dataAfter = $('#example0').data('chocolat') + return expect(dataAfter).to.be.undefined + }) - it("should remove wrapper element", function(done) { + it('should remove wrapper element', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') - var chocolat = $('#example0').Chocolat().data('chocolat'); + return chocolat + .api() + .open() + .done(function() { + var lengthBefore = $('.chocolat-wrapper').length + expect(lengthBefore).to.equal(1) - return chocolat.api().open().done( function() { - var lengthBefore = $('.chocolat-wrapper').length; - expect(lengthBefore).to.equal(1); + chocolat.api().destroy() - chocolat.api().destroy(); + var lengthAfter = $('.chocolat-wrapper').length + expect(lengthAfter).to.equal(0) + return done() + }) + }) - var lengthAfter = $('.chocolat-wrapper').length; - expect(lengthAfter).to.equal(0); - return done(); - }); - }); + return it('should unbind event handler of the links (triggering chocolat.open)', function() { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') + var imageSelector = chocolat.api().get('imageSelector') - return it("should unbind event handler of the links (triggering chocolat.open)", function() { + var links = chocolat.element.find(imageSelector) - var chocolat = $('#example0').Chocolat().data('chocolat'); - var imageSelector = chocolat.api().get('imageSelector'); + var eventBefore = $._data(links.first()[0], 'events') + expect(eventBefore.click[0].namespace).to.equal('chocolat') - var links = chocolat.element.find(imageSelector); + chocolat.api().destroy() - var eventBefore = $._data(links.first()[0], 'events'); - expect(eventBefore.click[0].namespace).to.equal('chocolat'); + var eventAfter = $._data(links.first()[0], 'events') + return expect(typeof eventAfter).to.equal('undefined') + }) + }) - chocolat.api().destroy(); - - var eventAfter = $._data(links.first()[0], 'events'); - return expect(typeof eventAfter).to.equal('undefined'); - }); - }); - - describe("FullScreen", function() { + describe('FullScreen', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); - return chocolat.api().destroy(); - }); - - it("should open fullscreen when clicking .fullscreen", function(done) { + var chocolat = $('#example0').data('chocolat') + return chocolat.api().destroy() + }) - var chocolat = $('#example0').Chocolat().data('chocolat'); + it('should open fullscreen when clicking .fullscreen', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') // test only if browser fullscreenAPI is available - if ((typeof Element.prototype.requestFullscreen === 'undefined') && - (typeof Element.prototype.mozRequestFullScreen === 'undefined') && - (typeof Element.prototype.webkitRequestFullscreen === 'undefined') && - (typeof Element.prototype.msRequestFullscreen === 'undefined')) { - return done(); + if ( + typeof Element.prototype.requestFullscreen === 'undefined' && + typeof Element.prototype.mozRequestFullScreen === 'undefined' && + typeof Element.prototype.webkitRequestFullscreen === 'undefined' && + typeof Element.prototype.msRequestFullscreen === 'undefined' + ) { + return done() } - var spyOpen = sinon.spy(chocolat, 'openFullScreen'); - - return chocolat.api().open().done( function() { - chocolat.elems.fullscreen.click(); - expect(spyOpen.calledOnce).to.be.true; - expect(chocolat.api().get('fullscreenOpen')).to.be.true; - chocolat.elems.fullscreen.click(); - expect(chocolat.api().get('fullscreenOpen')).to.be.false; - return done(); - }); - }); - - it("should close fullscreen when clicking .fullscreen twice", function(done) { - - var chocolat = $('#example0').Chocolat().data('chocolat'); + var spyOpen = sinon.spy(chocolat, 'openFullScreen') + + return chocolat + .api() + .open() + .done(function() { + chocolat.elems.fullscreen.click() + expect(spyOpen.calledOnce).to.be.true + expect(chocolat.api().get('fullscreenOpen')).to.be.true + chocolat.elems.fullscreen.click() + expect(chocolat.api().get('fullscreenOpen')).to.be.false + return done() + }) + }) + + it('should close fullscreen when clicking .fullscreen twice', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') // test only if browser fullscreenAPI is available - if ((typeof Element.prototype.requestFullscreen === 'undefined') && - (typeof Element.prototype.mozRequestFullScreen === 'undefined') && - (typeof Element.prototype.webkitRequestFullscreen === 'undefined') && - (typeof Element.prototype.msRequestFullscreen === 'undefined')) { - return done(); + if ( + typeof Element.prototype.requestFullscreen === 'undefined' && + typeof Element.prototype.mozRequestFullScreen === 'undefined' && + typeof Element.prototype.webkitRequestFullscreen === 'undefined' && + typeof Element.prototype.msRequestFullscreen === 'undefined' + ) { + return done() } - var spyClose = sinon.spy(chocolat, 'exitFullScreen'); + var spyClose = sinon.spy(chocolat, 'exitFullScreen') - return chocolat.api().open().done( function() { - chocolat.elems.fullscreen.click(); - chocolat.elems.fullscreen.click(); - expect(spyClose.calledOnce).to.be.true; + return chocolat + .api() + .open() + .done(function() { + chocolat.elems.fullscreen.click() + chocolat.elems.fullscreen.click() + expect(spyClose.calledOnce).to.be.true - return done(); - }); - }); + return done() + }) + }) - it("should close fullscreen when closing chocolat", function(done) { - - var chocolat = $('#example0').Chocolat().data('chocolat'); + it('should close fullscreen when closing chocolat', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') // test only if browser fullscreenAPI is available - if ((typeof Element.prototype.requestFullscreen === 'undefined') && - (typeof Element.prototype.mozRequestFullScreen === 'undefined') && - (typeof Element.prototype.webkitRequestFullscreen === 'undefined') && - (typeof Element.prototype.msRequestFullscreen === 'undefined')) { - return done(); + if ( + typeof Element.prototype.requestFullscreen === 'undefined' && + typeof Element.prototype.mozRequestFullScreen === 'undefined' && + typeof Element.prototype.webkitRequestFullscreen === 'undefined' && + typeof Element.prototype.msRequestFullscreen === 'undefined' + ) { + return done() } - var spyClose = sinon.spy(chocolat, 'exitFullScreen'); - - return chocolat.api().open().done( function() { - chocolat.elems.fullscreen.click(); - chocolat.elems.close.click(); - expect(spyClose.calledOnce).to.be.true; - return done(); - }); - }); - - return it("should open fullscreen directly", function(done) { - var chocolat = $('#example0').Chocolat({ - fullScreen: true - }).data('chocolat'); + var spyClose = sinon.spy(chocolat, 'exitFullScreen') + + return chocolat + .api() + .open() + .done(function() { + chocolat.elems.fullscreen.click() + chocolat.elems.close.click() + expect(spyClose.calledOnce).to.be.true + return done() + }) + }) + + return it('should open fullscreen directly', function(done) { + var chocolat = $('#example0') + .Chocolat({ + fullScreen: true, + }) + .data('chocolat') // test only if browser fullscreenAPI is available - if ((typeof Element.prototype.requestFullscreen === 'undefined') && - (typeof Element.prototype.mozRequestFullScreen === 'undefined') && - (typeof Element.prototype.webkitRequestFullscreen === 'undefined') && - (typeof Element.prototype.msRequestFullscreen === 'undefined')) { - return done(); + if ( + typeof Element.prototype.requestFullscreen === 'undefined' && + typeof Element.prototype.mozRequestFullScreen === 'undefined' && + typeof Element.prototype.webkitRequestFullscreen === 'undefined' && + typeof Element.prototype.msRequestFullscreen === 'undefined' + ) { + return done() } - var spyOpen = sinon.spy(chocolat, 'openFullScreen'); + var spyOpen = sinon.spy(chocolat, 'openFullScreen') - return chocolat.api().open().done( function() { - expect(spyOpen.calledOnce).to.be.true; - return done(); - }); - }); - }); + return chocolat + .api() + .open() + .done(function() { + expect(spyOpen.calledOnce).to.be.true + return done() + }) + }) + }) - describe("Change image", function() { + describe('Change image', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); - return chocolat.api().destroy(); - }); - - it("should go to next image", function(done) { - var chocolat = $('#example0').Chocolat().data('chocolat'); - - var spyLoad = sinon.spy(chocolat, 'load'); - var spyChange = sinon.spy(chocolat, 'change'); - - return chocolat.api().open().done( function() { - expect(spyLoad.calledWithExactly(0)).to.be.true; - - chocolat.elems.right.click(); - - expect(spyLoad.calledWithExactly(1)).to.be.true; - - expect(spyChange.calledOnce).to.be.true; - expect(spyChange.calledWithExactly(1)).to.be.true; - - return done(); - }); - }); - - it("should go to previous image", function(done) { - var chocolat = $('#example0').Chocolat().data('chocolat'); - - return chocolat.api().open().done( function() { - var spyLoad = sinon.spy(chocolat, 'load'); - - return chocolat.api().next().done( function() { - - expect(spyLoad.calledWithExactly(1)).to.be.true; - var spyChange = sinon.spy(chocolat, 'change'); - - return chocolat.api().prev().done( function() { - expect(spyLoad.calledWithExactly(0)).to.be.true; - - expect(spyChange.calledOnce).to.be.true; - expect(spyChange.calledWithExactly(-1)).to.be.true; - - expect(chocolat.api().current()).to.equal(0); - - return done(); - }); - }); - - }); - }); - - it("should loop and go to last image", function(done) { - var chocolat = $('#example0').Chocolat({ - loop : true - }).data('chocolat'); - - return chocolat.api().open().done( function() { - - var spyLoad = sinon.spy(chocolat, 'load'); - - return chocolat.api().prev().done( function() { - expect(spyLoad.calledWithExactly(chocolat.api().get('lastImage'))).to.be.true; - expect(chocolat.api().current()).to.equal(chocolat.api().get('lastImage')); - - return done(); - }); - - }); - }); - - return it("should loop and go to first image", function(done) { - var chocolat = $('#example0').Chocolat({ - loop : true - }).data('chocolat'); - - var lastImage = chocolat.settings.images.length - 1; - - return chocolat.api().open(lastImage).done( function() { - - var spyLoad = sinon.spy(chocolat, 'load'); - - return chocolat.api().next().done( function() { - expect(spyLoad.calledWithExactly(0)).to.be.true; - expect(chocolat.api().current()).to.equal(0); - - return done(); - }); - - }); - }); - }); - - describe("ImageSize cover", function() { + var chocolat = $('#example0').data('chocolat') + return chocolat.api().destroy() + }) + + it('should go to next image', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') + + var spyLoad = sinon.spy(chocolat, 'load') + var spyChange = sinon.spy(chocolat, 'change') + + return chocolat + .api() + .open() + .done(function() { + expect(spyLoad.calledWithExactly(0)).to.be.true + + chocolat.elems.right.click() + + expect(spyLoad.calledWithExactly(1)).to.be.true + + expect(spyChange.calledOnce).to.be.true + expect(spyChange.calledWithExactly(1)).to.be.true + + return done() + }) + }) + + it('should go to previous image', function(done) { + var chocolat = $('#example0') + .Chocolat() + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var spyLoad = sinon.spy(chocolat, 'load') + + return chocolat + .api() + .next() + .done(function() { + expect(spyLoad.calledWithExactly(1)).to.be.true + var spyChange = sinon.spy(chocolat, 'change') + + return chocolat + .api() + .prev() + .done(function() { + expect(spyLoad.calledWithExactly(0)).to.be.true + + expect(spyChange.calledOnce).to.be.true + expect(spyChange.calledWithExactly(-1)).to.be.true + + expect(chocolat.api().current()).to.equal(0) + + return done() + }) + }) + }) + }) + + it('should loop and go to last image', function(done) { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var spyLoad = sinon.spy(chocolat, 'load') + + return chocolat + .api() + .prev() + .done(function() { + expect( + spyLoad.calledWithExactly(chocolat.api().get('lastImage')) + ).to.be.true + expect(chocolat.api().current()).to.equal( + chocolat.api().get('lastImage') + ) + + return done() + }) + }) + }) + + return it('should loop and go to first image', function(done) { + var chocolat = $('#example0') + .Chocolat({ + loop: true, + }) + .data('chocolat') + + var lastImage = chocolat.settings.images.length - 1 + + return chocolat + .api() + .open(lastImage) + .done(function() { + var spyLoad = sinon.spy(chocolat, 'load') + + return chocolat + .api() + .next() + .done(function() { + expect(spyLoad.calledWithExactly(0)).to.be.true + expect(chocolat.api().current()).to.equal(0) + + return done() + }) + }) + }) + }) + + describe('ImageSize cover', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); - return chocolat.api().destroy(); - }); - - it("should add class chocolat-cover to parent", function(done) { - var chocolat = $('#example0').Chocolat({imageSize: 'cover'}).data('chocolat'); - - return chocolat.api().open().done( function() { - expect(chocolat.api().get('imageSize')).to.equal('cover'); - expect(chocolat.api().getElem('domContainer').hasClass('chocolat-cover')).to.be.true; - return done(); - }); - }); + var chocolat = $('#example0').data('chocolat') + return chocolat.api().destroy() + }) + + it('should add class chocolat-cover to parent', function(done) { + var chocolat = $('#example0') + .Chocolat({ imageSize: 'cover' }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + expect(chocolat.api().get('imageSize')).to.equal('cover') + expect( + chocolat + .api() + .getElem('domContainer') + .hasClass('chocolat-cover') + ).to.be.true + return done() + }) + }) it("should have 'shortest' side of the container equal to 'shortest' side to the image in container", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'cover', - container: '#container' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); - - if (dim.imgRatio < dim.containerRatio) { - var targetWidth = dim.imgHeight / dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetWidth, 1); - expect(dim.imgHeight).to.equal(dim.containerHeight); - } else { - var targetHeight = dim.imgWidth * dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetHeight, 1); - expect(dim.imgWidth).to.equal(dim.containerWidth); - } - - return done(); - }); - }); + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'cover', + container: '#container', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + if (dim.imgRatio < dim.containerRatio) { + var targetWidth = dim.imgHeight / dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetWidth, 1) + expect(dim.imgHeight).to.equal(dim.containerHeight) + } else { + var targetHeight = dim.imgWidth * dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetHeight, 1) + expect(dim.imgWidth).to.equal(dim.containerWidth) + } + + return done() + }) + }) it("should have 'shortest' side of the container equal to 'shortest' side to the image in window", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'cover' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'cover', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + if (dim.imgRatio < dim.containerRatio) { + var targetWidth = dim.imgHeight / dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetWidth, 1) + expect(dim.imgHeight).to.equal(dim.containerHeight) + } else { + var targetHeight = dim.imgWidth * dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetHeight, 1) + expect(dim.imgWidth).to.equal(dim.containerWidth) + } + + return done() + }) + }) + + return it('should center the image', function(done) { + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'cover', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + var $content = chocolat.api().getElem('content') + + var top = parseInt($content.css('top'), 10) + var left = parseInt($content.css('left'), 10) + + var targetTop = (dim.containerHeight - dim.imgHeight) / 2 + var targetLeft = (dim.containerWidth - dim.imgWidth) / 2 - if (dim.imgRatio < dim.containerRatio) { - var targetWidth = dim.imgHeight / dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetWidth, 1); - expect(dim.imgHeight).to.equal(dim.containerHeight); - } else { - var targetHeight = dim.imgWidth * dim.imgRatio; // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetHeight, 1); - expect(dim.imgWidth).to.equal(dim.containerWidth); - } - - return done(); - }); - }); - - return it("should center the image", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'cover' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); + expect(top).to.be.closeTo(targetTop, 1) + expect(left).to.be.closeTo(targetLeft, 1) - var $content = chocolat.api().getElem('content'); + return done() + }) + }) + }) - var top = parseInt($content.css('top'), 10); - var left = parseInt($content.css('left'), 10); - - var targetTop = (dim.containerHeight - dim.imgHeight) / 2; - var targetLeft = (dim.containerWidth - dim.imgWidth) / 2; - - // 1px delta, because of rounded values - expect(top).to.be.closeTo(targetTop , 1); - expect(left).to.be.closeTo(targetLeft, 1); - - return done(); - }); - }); - }); - - describe("ImageSize contain", function() { + describe('ImageSize contain', function() { afterEach(function() { - var chocolat = $('#example0').data('chocolat'); - return chocolat.api().destroy(); - }); + var chocolat = $('#example0').data('chocolat') + return chocolat.api().destroy() + }) it("should have 'longest' side of the container equal to 'longest' side to the image in container", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'contain', - container: '#container' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); - - if (dim.imgRatio > dim.containerPaddedRatio) { - var targetWidth = dim.containerPaddedHeight / dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetWidth, 1); - expect(dim.imgHeight).to.equal(dim.containerPaddedHeight); - } else { - var targetHeight = dim.containerPaddedWidth * dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgHeight).to.be.closeTo(targetHeight, 1); - expect(dim.imgWidth).to.equal(dim.containerPaddedWidth); - } - - return done(); - }); - }); + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'contain', + container: '#container', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + if (dim.imgRatio > dim.containerPaddedRatio) { + var targetWidth = dim.containerPaddedHeight / dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetWidth, 1) + expect(dim.imgHeight).to.equal(dim.containerPaddedHeight) + } else { + var targetHeight = dim.containerPaddedWidth * dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgHeight).to.be.closeTo(targetHeight, 1) + expect(dim.imgWidth).to.equal(dim.containerPaddedWidth) + } + + return done() + }) + }) it("should have 'longest' side of the container equal to 'longest' side to the image in window", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'contain' - }).data('chocolat'); + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'contain', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + if (dim.imgRatio > dim.containerPaddedRatio) { + var targetWidth = dim.containerPaddedHeight / dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgWidth).to.be.closeTo(targetWidth, 1) + expect(dim.imgHeight).to.equal(dim.containerPaddedHeight) + } else { + var targetHeight = dim.containerPaddedWidth * dim.imgRatio + // 1px delta, because of rounded values + expect(dim.imgHeight).to.be.closeTo(targetHeight, 1) + expect(dim.imgWidth).to.equal(dim.containerPaddedWidth) + } + + return done() + }) + }) + + return it('should center the image', function(done) { + var chocolat = $('#example0') + .Chocolat({ + imageSize: 'contain', + }) + .data('chocolat') + + return chocolat + .api() + .open() + .done(function() { + var dim = getExpectedDimensions(chocolat) + + var $content = chocolat.api().getElem('content') + + var top = parseInt($content.css('top'), 10) + var left = parseInt($content.css('left'), 10) + + var targetTop = (dim.containerHeight - dim.imgHeight) / 2 + var targetLeft = (dim.containerWidth - dim.imgWidth) / 2 - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); - - if (dim.imgRatio > dim.containerPaddedRatio) { - var targetWidth = dim.containerPaddedHeight / dim.imgRatio; - // 1px delta, because of rounded values - expect(dim.imgWidth).to.be.closeTo(targetWidth, 1); - expect(dim.imgHeight).to.equal(dim.containerPaddedHeight); - } else { - var targetHeight = dim.containerPaddedWidth * dim.imgRatio; // 1px delta, because of rounded values - expect(dim.imgHeight).to.be.closeTo(targetHeight, 1); - expect(dim.imgWidth).to.equal(dim.containerPaddedWidth); - } - - return done(); - }); - }); - - return it("should center the image", function(done) { - var chocolat = $('#example0').Chocolat({ - imageSize: 'contain' - }).data('chocolat'); - - return chocolat.api().open().done( function() { - var dim = getExpectedDimensions(chocolat); - - var $content = chocolat.api().getElem('content'); - - var top = parseInt($content.css('top'), 10); - var left = parseInt($content.css('left'), 10); - - var targetTop = (dim.containerHeight - dim.imgHeight) / 2; - var targetLeft = (dim.containerWidth - dim.imgWidth) / 2; - - // 1px delta, because of rounded values - expect(top).to.be.closeTo(targetTop , 1); - expect(left).to.be.closeTo(targetLeft, 1); - - return done(); - }); - }); - }); - - describe("API", function() { - - var chocolat = $('
').Chocolat({ - backgroundClose: false, - images : [ - {src : '../dist/demo-images/1.jpg', title : 'You can zoom in the image'}, - {src : '../dist/demo-images/2.jpg', title : 'You can zoom in the image'}, - {src : '../dist/demo-images/3.jpg', title : 'You can zoom in the image'}, - ], - }).data('chocolat'); - - it("should have a open method", function () { - expect(typeof chocolat.api().open).to.equal("function") - }); - - it("should have a close method", function () { - expect(typeof chocolat.api().close).to.equal("function") - }); - - it("should have a next method", function () { - expect(typeof chocolat.api().next).to.equal("function") - }); - - it("should have a prev method", function () { - expect(typeof chocolat.api().prev).to.equal("function") - }); - - it("should have a goto method", function () { - expect(typeof chocolat.api().goto).to.equal("function") - }); - - it("should have a current method", function () { - expect(typeof chocolat.api().current).to.equal("function") - }); - - it("should have a place method", function () { - expect(typeof chocolat.api().place).to.equal("function") - }); - - it("should have a destroy method", function () { - expect(typeof chocolat.api().destroy).to.equal("function") - }); - - it("should have a set method", function () { - expect(typeof chocolat.api().set).to.equal("function") - }); - - it("should have a get method", function () { - expect(typeof chocolat.api().get).to.equal("function") - }); - - it("should have a getElem method", function () { - expect(typeof chocolat.api().getElem).to.equal("function") - }); - }); -}); + expect(top).to.be.closeTo(targetTop, 1) + expect(left).to.be.closeTo(targetLeft, 1) + + return done() + }) + }) + }) + + describe('API', function() { + var chocolat = $('
') + .Chocolat({ + backgroundClose: false, + images: [ + { src: '../dist/demo-images/1.jpg', title: 'You can zoom in the image' }, + { src: '../dist/demo-images/2.jpg', title: 'You can zoom in the image' }, + { src: '../dist/demo-images/3.jpg', title: 'You can zoom in the image' }, + ], + }) + .data('chocolat') + + it('should have a open method', function() { + expect(typeof chocolat.api().open).to.equal('function') + }) + + it('should have a close method', function() { + expect(typeof chocolat.api().close).to.equal('function') + }) + + it('should have a next method', function() { + expect(typeof chocolat.api().next).to.equal('function') + }) + + it('should have a prev method', function() { + expect(typeof chocolat.api().prev).to.equal('function') + }) + + it('should have a goto method', function() { + expect(typeof chocolat.api().goto).to.equal('function') + }) + + it('should have a current method', function() { + expect(typeof chocolat.api().current).to.equal('function') + }) + + it('should have a place method', function() { + expect(typeof chocolat.api().place).to.equal('function') + }) + + it('should have a destroy method', function() { + expect(typeof chocolat.api().destroy).to.equal('function') + }) + + it('should have a set method', function() { + expect(typeof chocolat.api().set).to.equal('function') + }) + + it('should have a get method', function() { + expect(typeof chocolat.api().get).to.equal('function') + }) + + it('should have a getElem method', function() { + expect(typeof chocolat.api().getElem).to.equal('function') + }) + }) +}) // function used to calculate image dimensions // in order to be compared with what chocolat is really displaying -function getExpectedDimensions (chocolat) { - var imgWidth = chocolat.api().getElem('img').width(); - var imgHeight = chocolat.api().getElem('img').height(); - - var containerWidth = $(chocolat.api().get('container')).width(); - var containerHeight = $(chocolat.api().get('container')).height(); - - var containerOutMarginH = chocolat.api().getElem('top').outerHeight(true) + chocolat.api().getElem('bottom').outerHeight(true); - var containerOutMarginW = chocolat.api().getElem('left').outerWidth(true) + chocolat.api().getElem('right').outerWidth(true); - - var containerPaddedWidth = containerWidth - containerOutMarginW; - var containerPaddedHeight = containerHeight - containerOutMarginH; - - var imgRatio = imgHeight / imgWidth; - var containerRatio = containerHeight / containerWidth; - var containerPaddedRatio = containerPaddedHeight / containerPaddedWidth; +function getExpectedDimensions(chocolat) { + var imgWidth = chocolat + .api() + .getElem('img') + .width() + var imgHeight = chocolat + .api() + .getElem('img') + .height() + + var containerWidth = $(chocolat.api().get('container')).width() + var containerHeight = $(chocolat.api().get('container')).height() + + var containerOutMarginH = + chocolat + .api() + .getElem('top') + .outerHeight(true) + + chocolat + .api() + .getElem('bottom') + .outerHeight(true) + var containerOutMarginW = + chocolat + .api() + .getElem('left') + .outerWidth(true) + + chocolat + .api() + .getElem('right') + .outerWidth(true) + + var containerPaddedWidth = containerWidth - containerOutMarginW + var containerPaddedHeight = containerHeight - containerOutMarginH + + var imgRatio = imgHeight / imgWidth + var containerRatio = containerHeight / containerWidth + var containerPaddedRatio = containerPaddedHeight / containerPaddedWidth return { imgWidth: imgWidth, @@ -634,6 +797,6 @@ function getExpectedDimensions (chocolat) { containerPaddedHeight: containerPaddedHeight, imgRatio: imgRatio, containerRatio: containerRatio, - containerPaddedRatio: containerPaddedRatio - }; -}; \ No newline at end of file + containerPaddedRatio: containerPaddedRatio, + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..6a92c9c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2274 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +ajv@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +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" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assertion-error@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async@^2.0.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + +async@~0.2.6: + version "0.2.10" + resolved "http://registry.npmjs.org/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +bl@~1.0.0: + version "1.0.3" + resolved "http://registry.npmjs.org/bl/-/bl-1.0.3.tgz#fc5421a28fd4226036c3b3891a66a25bc64d226e" + dependencies: + readable-stream "~2.0.5" + +boom@2.x.x: + version "2.10.1" + resolved "http://registry.npmjs.org/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^3.0.0: + version "3.5.0" + resolved "http://registry.npmjs.org/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + +chalk@^1.0.0, chalk@^1.1.1: + version "1.1.3" + resolved "http://registry.npmjs.org/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" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + dependencies: + delayed-stream "~1.0.0" + +commander@0.6.1: + version "0.6.1" + resolved "http://registry.npmjs.org/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.0.0, commander@~2.0.0: + version "2.0.0" + resolved "http://registry.npmjs.org/commander/-/commander-2.0.0.tgz#d1b86f901f8b64bd941bdeadaf924530393be928" + +commander@^2.5.0, commander@^2.9.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@2.x.x: + version "2.0.5" + resolved "http://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +deap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz#0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb" + +debug@*: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + dependencies: + ms "^2.1.1" + +debug@0.7.4: + version "0.7.4" + resolved "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-eql@^0.1.3: + version "0.1.3" + resolved "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + +diff@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.0.7.tgz#24bbb001c4a7d5522169e7cabdb2c2814ed91cf4" + +dot-object@^0.6.0: + version "0.6.0" + resolved "http://registry.npmjs.org/dot-object/-/dot-object-0.6.0.tgz#2ad3cf75a714ed4fc819e4b63d349bec01c7a358" + dependencies: + commander "^2.5.0" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + dependencies: + once "~1.3.0" + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + +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" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-zip@^1.6.5: + version "1.6.7" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + dependencies: + concat-stream "1.6.2" + debug "2.6.9" + mkdirp "0.5.1" + yauzl "2.4.1" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fancy-log@^1.0.0, fancy-log@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~1.0.0-rc3: + version "1.0.1" + resolved "http://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "http://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@~0.26.4: + version "0.26.7" + resolved "http://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +generate-function@^2.0.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + dependencies: + is-property "^1.0.2" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "http://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" + dependencies: + graceful-fs "~2.0.0" + inherits "2" + minimatch "~0.2.11" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +graceful-fs@~2.0.0: + version "2.0.3" + resolved "http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" + +growl@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.7.0.tgz#de2d66136d002e112ba70f3f10c31cf7c350b2da" + +gulp-bump@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-0.3.1.tgz#8ac67f228915ab148779f16d3d375e5514a11c9a" + dependencies: + dot-object "^0.6.0" + gulp-util "^3.0.4" + semver "^4.3.1" + through2 "^0.5.1" + +gulp-mocha-phantomjs@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/gulp-mocha-phantomjs/-/gulp-mocha-phantomjs-0.12.2.tgz#41151598b86863c1a1445e90b603e3fd01197a3d" + dependencies: + gulp-util "^3.0.7" + mocha-phantomjs-core "^2.0.0" + phantomjs-prebuilt "^2.1.4" + through2 "^2.0.1" + +gulp-rename@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" + +gulp-uglify@^1.2.0: + version "1.5.4" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.5.4.tgz#524788d87666d09f9d0c21fb2177f90039a658c9" + dependencies: + deap "^1.0.0" + fancy-log "^1.0.0" + gulp-util "^3.0.0" + isobject "^2.0.0" + through2 "^2.0.0" + uglify-js "2.6.4" + uglify-save-license "^0.4.1" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-util@^3.0.0, gulp-util@^3.0.4, gulp-util@^3.0.6, gulp-util@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp@^3.9.0: + version "3.9.1" + resolved "http://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~2.0.2: + version "2.0.6" + resolved "http://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +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" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hasha@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@~3.1.0: + version "3.1.3" + resolved "http://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "http://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + +is-my-json-valid@^2.12.4: + version "2.19.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-property@^1.0.0, is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + dependencies: + is-unc-path "^1.0.0" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jade@0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" + dependencies: + commander "0.6.1" + mkdirp "0.3.0" + +jquery@^3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kew@^0.7.0, kew@~0.7.0: + version "0.7.0" + resolved "http://registry.npmjs.org/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +liftoff@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + dependencies: + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@^4.17.10: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + +lodash@~1.0.1: + version "1.0.2" + resolved "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +lru-cache@2: + version "2.7.3" + resolved "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + dependencies: + kind-of "^6.0.2" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +micromatch@^3.0.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.7: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + dependencies: + mime-db "~1.37.0" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0: + version "1.2.0" + resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.3.0: + version "0.3.0" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.3.5: + version "0.3.5" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + +mkdirp@0.5.0: + version "0.5.0" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.1, mkdirp@^0.5.0: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha-phantomjs-core@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/mocha-phantomjs-core/-/mocha-phantomjs-core-2.1.2.tgz#86ccc00daf4eb7013745aaec2f54997bd6b24bbd" + +mocha-phantomjs@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha-phantomjs/-/mocha-phantomjs-3.5.3.tgz#bc0e654972d883ce11367f3f011f9e88f0a8de14" + dependencies: + commander "~2.0.0" + mocha "~1.20.1" + +mocha@~1.20.1: + version "1.20.1" + resolved "http://registry.npmjs.org/mocha/-/mocha-1.20.1.tgz#f343832d9fe0c7d97c64fc70448f5136df9fed5b" + dependencies: + commander "2.0.0" + debug "*" + diff "1.0.7" + glob "3.2.3" + growl "1.7.x" + jade "0.26.3" + mkdirp "0.3.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natives@^1.1.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" + +node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +oauth-sign@~0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +phantomjs-prebuilt@^2.1.4: + version "2.1.16" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef" + dependencies: + es6-promise "^4.0.3" + extract-zip "^1.6.5" + fs-extra "^1.0.0" + hasha "^2.2.0" + kew "^0.7.0" + progress "^1.1.8" + request "^2.81.0" + request-progress "^2.0.1" + which "^1.2.10" + +phantomjs@^1.9.1: + version "1.9.20" + resolved "http://registry.npmjs.org/phantomjs/-/phantomjs-1.9.20.tgz#4424aca20e14d255c0b0889af6f6b8973da10e0d" + dependencies: + extract-zip "~1.5.0" + fs-extra "~0.26.4" + hasha "^2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.67.0" + request-progress "~2.0.1" + which "~1.2.2" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +prettier@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^1.1.8, progress@~1.1.8: + version "1.1.8" + resolved "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +qs@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17: + version "1.0.34" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.2.2, readable-stream@~2.3.6: + version "2.3.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.0, readable-stream@~2.0.5: + version "2.0.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +request-progress@^2.0.1, request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@^2.81.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +request@~2.67.0: + version "2.67.0" + resolved "http://registry.npmjs.org/request/-/request-2.67.0.tgz#8af74780e2bf11ea0ae9aa965c11f11afd272742" + dependencies: + aws-sign2 "~0.6.0" + bl "~1.0.0" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc3" + har-validator "~2.0.2" + hawk "~3.1.0" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.0" + qs "~5.2.0" + stringstream "~0.0.4" + tough-cookie "~2.2.0" + tunnel-agent "~0.4.1" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@^2.2.8: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +semver@^4.1.0, semver@^4.3.1: + version "4.3.6" + resolved "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "http://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sshpk@^1.7.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-consume@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz#d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through2@^0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + +through2@^0.6.1: + version "0.6.5" + resolved "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.2.2.tgz#c83a1830f4e5ef0b93ef2a3488e724f8de016ac7" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + +typedarray@^0.0.6, typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@2.6.4: + version "2.6.4" + resolved "http://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-save-license@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-sourcemaps-apply@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + dependencies: + source-map "^0.5.1" + +vinyl@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +which@^1.2.10, which@^1.2.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +which@~1.2.2: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + +yargs@~3.10.0: + version "3.10.0" + resolved "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1"