├── .gitignore ├── LICENCE ├── README.md ├── bower.json ├── dist ├── smooth-parallax.js └── smooth-parallax.min.js ├── gulpfile.js ├── package-lock.json ├── package.json ├── src └── smooth-parallax-src.js └── test.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .sass-cache 3 | bower_components 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2 | 3 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Smooth Parallax 2 | 3 | [![npm version](https://badge.fury.io/js/smooth-parallax.svg)](https://badge.fury.io/js/smooth-parallax) 4 | [![DragsterJS gzip size](http://img.badgesize.io/https://raw.githubusercontent.com/diegoversiani/smooth-parallax/master/dist/smooth-parallax.min.js?compression=gzip 5 | )](https://raw.githubusercontent.com/diegoversiani/smooth-parallax/master/dist/smooth-parallax.min.js) 6 | 7 | Parallax that doesn't suck! No jQuery required, just plain 'ol javascript. 8 | 9 | Smooth Parallax makes it easy to move objects when you scroll, being it images, divs or what-have-you. Use it to add that background or foreground parallax effect to your website or create a [moving scene with a hippie van](https://diegoversiani.me/smooth-parallax/) :) 10 | 11 | 12 | __Enjoy using Smooth Parallax?__ 13 | 14 | If you enjoy using Smooth Parallax and want to say thanks, you can leave me a small tip. 15 | All payments are securely handled through [PayPal](https://paypal.com). 16 | 17 | Buy Me a Coffee at ko-fi.com 18 | 19 | ## Installation 20 | 21 | Setting up is pretty straight-forward. Just download the script from __dist__ folder and include it in your HTML: 22 | 23 | ```html 24 | 25 | ``` 26 | 27 | Smooth Parallax also supports AMD / CommonJS 28 | 29 | ```js 30 | // AMD 31 | require(["path/to/smooth-parallax"], function(SmoothParallax) {}); 32 | 33 | // CommonJS 34 | var SmoothParallax = require("smooth-parallax"); 35 | ``` 36 | 37 | ### NPM / Bower 38 | 39 | Smooth Parallax is also available on NPM and Bower: 40 | 41 | ```sh 42 | npm install smooth-parallax # npm 43 | bower install smooth-parallax # bower 44 | ``` 45 | 46 | ## Basic Usage 47 | 48 | __Init__ 49 | 50 | Just call `SmoothParallax.init()` to get objects moving and configure elements movement. 51 | 52 | ```html 53 | 58 | ``` 59 | 60 | Smooth Parallax will automatically look for all objects with the attribute `smooth-parallax` (ie.: ``). 61 | 62 | __Configure elements movement__ 63 | 64 | You'll also have to set at least one more attribute `start-position` or `end-position`, see options at [standard options](#standard-options). 65 | 66 | ## Standard Options 67 | 68 | __Global Options__ 69 | 70 | These options are passed to the `init` function when starting Smooth Parallax. 71 | 72 | - `basePercentageOn` Set how you want to track scroll percentage: 73 | - `containerVisibility` __default__: scroll percentage for each moving object is calculated only when the element's container is visible in the viewport. This prevents objects from moving while not visible. 74 | - `pageScroll`: scroll percentage is based on the page scroll and is the same for all moving objects. 75 | 76 | __Elements Options__ 77 | 78 | These options are passed as html attributes to the moving elements and define how that element movement behaves. 79 | 80 | All percentage values are in decimal form, ie.: `1 = 100%`. You can also set values greater than 1 and smaller than 0, ie.: `-0.5 = -50%` or `1.25 = 125%`. 81 | 82 | - `start-movement` - define at what scroll percentage to start moving the object. Default value is `0.0`; 83 | - `end-movement` - define at what scroll percentage to stop moving the object. Default value is `1.0`. 84 | - `start-position-x` - define the horizontal start position of the element in percentage of its the base-size (see option below). 85 | - `start-position-y` - define the vertical start position of the element in percentage of its the base-size (see option below). 86 | - `end-position-x` - define the horizontal end position of the element in percentage of its the base-size (see option below). 87 | - `end-position-y` - define the vertical end position of the element in percentage of its the base-size (see option below). 88 | - `container` - change the elements container element user to calculate its position, default is moving element's parent node. 89 | - `base-size` - define how to calculate the base size of the movement, used to calculate the target position. 90 | - `elementSize`: calculate based on the element size itself. 91 | - `containerSize`: calculate based on the elements container size. 92 | 93 | ## Contributing to Development 94 | 95 | This isn't a large project by any means, but I'm definitely welcome to any pull requests and contributions. 96 | 97 | You can get your copy up and running for development quickly by cloning the repo and running [npm](http://npmjs.org/): 98 | 99 | ``` 100 | $ npm install 101 | ``` 102 | 103 | This will install all the necessary tools for compiling minified files. 104 | 105 | ## Change Log 106 | 107 | __1.1.2__ 108 | 109 | - Improvement: Extend public method `getScrollPercent` to return scroll percentage for elements. 110 | - Fix: issue calculating element's size for SVG on Firefox 111 | - Fix: position calculation to 2 decimals precision for better performance. 112 | - Fix: scroll percent calculation based on `containerSize`. 113 | 114 | __1.1.1__ 115 | 116 | - Fix npm package.json info. 117 | 118 | __1.1.0__ 119 | 120 | __Upgrade Notice:__ This version changes how Smooth Parallax is initiated and how the elements options are set. 121 | 122 | - Converted script into a javascript plugin. 123 | - Renamed html attributes: 124 | - `data-smooth-parallax-element` > `smooth-parallax` 125 | - `data-start-percent` > `start-movement` 126 | - `data-end-percent` > `end-movement` 127 | - `data-start-x` > `start-position-x` 128 | - `data-start-y` > `start-position-y` 129 | - `data-end-x` > `end-position-x` 130 | - `data-end-y` > `end-position-y` 131 | - `data-smooth-parallax-element` > `smooth-parallax` 132 | - `data-container-id` > `container`. 133 | - Changed element option __container__ expected value to be a valid css selector instead of element id. 134 | - Added element option __base-size__. 135 | - Added global option __pageScroll__. 136 | 137 | __1.0.0__ 138 | 139 | - Initial release 140 | 141 | ## License 142 | 143 | Licensed under MIT. Enjoy. 144 | 145 | ## Acknowledgement 146 | 147 | Smooth Parallax was created by [Diego Versiani](https://diegoversiani.me) for a better Parallax Effect. 148 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "smooth-parallax", 3 | "version": "1.1.2", 4 | "homepage": "http://diegoversiani.me/smooth-parallax", 5 | "authors": [ 6 | "Diego Versiani " 7 | ], 8 | "description": "Smooth Parallax makes it a lot easier to move objects when the page scroll with ease.", 9 | "moduleType": "globals", 10 | "main": [ 11 | "src/smooth-parallax.js" 12 | ], 13 | "keywords": [ 14 | "parallax", 15 | "background image", 16 | "parallax effect", 17 | "moving objects" 18 | ], 19 | "license": "MIT", 20 | "ignore": [ 21 | "**/.*", 22 | "test", 23 | "tests" 24 | ], 25 | "dependencies": { 26 | }, 27 | "_source": "https://github.com/diegoversiani/smooth-parallax.git", 28 | "_target": "~1.1.2" 29 | } 30 | -------------------------------------------------------------------------------- /dist/smooth-parallax.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SmoothParallax 1.1.2 3 | * 4 | * File smooth-parallax.js. 5 | * 6 | * Yet another parallax script. Smooth parallax is intended to make it a lot easier to 7 | * make objects move vertically or horizontally when scroll, being it images, 8 | * divs or what-have-you. Use this script to add background or foreground parallax 9 | * effect to your website. 10 | * 11 | * Website: https://diegoversiani.me/smooth-parallax 12 | * Github: https://github.com/diegoversiani/smooth-parallax 13 | * 14 | * Author: Diego Versiani 15 | * Contact: https://diegoversiani.me/ 16 | * 17 | * Based on the work of: 18 | * Rachel Smith: https://codepen.io/rachsmith/post/how-to-move-elements-on-scroll-in-a-way-that-doesn-t-suck-too-bad 19 | */ 20 | (function (root, factory) { 21 | if ( typeof define === 'function' && define.amd ) { 22 | define([], factory(root)); 23 | } else if ( typeof exports === 'object' ) { 24 | module.exports = factory(root); 25 | } else { 26 | root.SmoothParallax = factory(root); 27 | } 28 | })(typeof global !== 'undefined' ? global : this.window || this.global, function (root) { 29 | 30 | 'use strict'; 31 | 32 | // 33 | // Variables 34 | // 35 | 36 | var window = root; // Map window to root to avoid confusion 37 | var _container; 38 | var _width, _height, _scrollHeight, _viewPortHeight; 39 | var _scrollPercent = 0; 40 | var _scrollOffset = 0; 41 | var _movingElements = []; 42 | var _positions = []; 43 | var _basePercentageOnOptions = [ 'containerVisibility', 'pageScroll' ]; 44 | var _settings; 45 | var publicMethods = {}; // Placeholder for public methods 46 | 47 | // Default settings 48 | var defaults = { 49 | basePercentageOn: 'containerVisibility', // See `_basePercentageOnOptions` for more options 50 | decimalPrecision: 2 51 | }; 52 | 53 | 54 | // 55 | // Methods 56 | // 57 | 58 | /** 59 | * Merge two or more objects. Returns a new object. 60 | * @private 61 | * @param {Boolean} deep If true, do a deep (or recursive) merge [optional] 62 | * @param {Object} objects The objects to merge together 63 | * @returns {Object} Merged values of defaults and options 64 | */ 65 | var extend = function () { 66 | // Variables 67 | var extended = {}; 68 | var deep = false; 69 | var i = 0; 70 | var length = arguments.length; 71 | 72 | // Check if a deep merge 73 | if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) { 74 | deep = arguments[0]; 75 | i++; 76 | } 77 | 78 | // Merge the object into the extended object 79 | var merge = function (obj) { 80 | for ( var prop in obj ) { 81 | if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) { 82 | // If deep merge and property is an object, merge properties 83 | if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) { 84 | extended[prop] = extend( true, extended[prop], obj[prop] ); 85 | } else { 86 | extended[prop] = obj[prop]; 87 | } 88 | } 89 | } 90 | }; 91 | 92 | // Loop through each object and conduct a merge 93 | for ( ; i < length; i++ ) { 94 | var obj = arguments[i]; 95 | merge(obj); 96 | } 97 | 98 | return extended; 99 | }; 100 | 101 | 102 | 103 | /** 104 | * Get movable element container 105 | * @private 106 | */ 107 | var getElementContainer = function ( element ) { 108 | var containerSelector = element.getAttribute( 'container' ); 109 | _container = element.parentNode; 110 | 111 | if ( containerSelector != '' && document.querySelector( containerSelector ) ) { 112 | _container = document.querySelector( containerSelector ); 113 | } 114 | 115 | return _container; 116 | }; 117 | 118 | 119 | 120 | /** 121 | * Calculate page percent scrolled. 122 | * @private 123 | */ 124 | var calculatePageScrollPercent = function () { 125 | var documentElement = document.documentElement || document.body; 126 | _height = documentElement.scrollHeight; 127 | _scrollOffset = window.pageYOffset || documentElement.scrollTop; 128 | return _scrollOffset / ( _height - documentElement.clientHeight ); 129 | }; 130 | 131 | 132 | 133 | /** 134 | * Calculate variables used to determine elements position 135 | * @private 136 | */ 137 | var calculatePercent = function ( positionData ) { 138 | _viewPortHeight = window.innerHeight; 139 | 140 | // Based on `containerVisibility` 141 | if ( _settings.basePercentageOn == 'containerVisibility' ) { 142 | _height = positionData.container.scrollHeight; 143 | _scrollOffset = _viewPortHeight - positionData.container.getBoundingClientRect().top; 144 | _scrollPercent = _scrollOffset / _height; 145 | } 146 | 147 | // Based on `pageScroll` 148 | if ( _settings.basePercentageOn == 'pageScroll' ) { 149 | _scrollPercent = calculatePageScrollPercent(); 150 | } 151 | 152 | // Normalize scrollPercentage from 0 to 1 153 | if ( _scrollPercent < 0 ) { 154 | _scrollPercent = 0; 155 | } 156 | else if ( _scrollPercent > 1 ) { 157 | _scrollPercent = 1; 158 | } 159 | }; 160 | 161 | 162 | 163 | /** 164 | * Get position data object for the element. 165 | * @returns {Object} Position data object for element or false if not found. 166 | */ 167 | var getPositionDataByElement = function ( el ) { 168 | for (var i = 0; i < _positions.length; i++) { 169 | if ( _positions[i].element == el ) { 170 | return _positions[i]; 171 | } 172 | } 173 | 174 | // Return false if not found 175 | return false; 176 | } 177 | 178 | 179 | 180 | /** 181 | * Initializes positions for each moving element. 182 | * @private 183 | */ 184 | var initializeMovingElementsPosition = function () { 185 | var startPercent, 186 | startX, 187 | startY, 188 | endPercent, 189 | endX, 190 | endY, 191 | baseSizeOn, 192 | baseSizeOnOptions = [ 'elementsize', 'containerSize' ]; 193 | 194 | _movingElements = document.querySelectorAll('[smooth-parallax]'); 195 | 196 | for (var i = 0; i < _movingElements.length; i++) { 197 | startPercent = parseFloat(_movingElements[i].getAttribute( 'start-movement' )) || 0; 198 | startX = parseFloat(_movingElements[i].getAttribute( 'start-position-x' )) || 0; 199 | startY = parseFloat(_movingElements[i].getAttribute( 'start-position-y' )) || 0; 200 | endPercent = parseFloat(_movingElements[i].getAttribute( 'end-movement' )) || 1; 201 | endX = parseFloat(_movingElements[i].getAttribute( 'end-position-x' )) || 0; 202 | endY = parseFloat(_movingElements[i].getAttribute( 'end-position-y' )) || 0; 203 | baseSizeOn = _movingElements[i].getAttribute( 'base-size' ); 204 | 205 | if ( baseSizeOnOptions.indexOf( baseSizeOn ) == -1 ) { 206 | baseSizeOn = 'elementSize'; // Default value 207 | } 208 | 209 | var elementPosition = { 210 | element: _movingElements[i], 211 | container: getElementContainer( _movingElements[i] ), 212 | baseSizeOn: baseSizeOn, 213 | start: { 214 | percent: startPercent, 215 | x: startX, 216 | y: startY 217 | }, 218 | end: { 219 | percent: endPercent, 220 | x: endX, 221 | y: endY 222 | }, 223 | diff: { 224 | percent: endPercent - startPercent, 225 | x: endX - startX, 226 | y: endY - startY, 227 | }, 228 | target: {}, 229 | current: {} 230 | }; 231 | 232 | _positions.push( elementPosition ); 233 | } 234 | }; 235 | 236 | /** 237 | * Updates moving elements position. 238 | * @private 239 | */ 240 | var updateElementsPosition = function () { 241 | for (var i = 0; i < _movingElements.length; i++) { 242 | var p = _positions[i], 243 | baseWidth, 244 | baseHeight, 245 | transformValue; 246 | 247 | // Try get element's size with `scrollWidth` and `scrollHeight` 248 | // otherwise use `getComputedStyle` which is more expensive 249 | if ( p.baseSizeOn == 'elementSize' ) { 250 | baseWidth = _movingElements[i].scrollWidth || parseFloat( window.getComputedStyle( _movingElements[i] ).width ); 251 | baseHeight = _movingElements[i].scrollHeight || parseFloat( window.getComputedStyle( _movingElements[i] ).height ); 252 | } 253 | else if ( p.baseSizeOn == 'containerSize' ) { 254 | baseWidth = p.container.scrollWidth - (_movingElements[i].scrollWidth || parseFloat( window.getComputedStyle( _movingElements[i] ).width ) ); 255 | baseHeight = p.container.scrollHeight - (_movingElements[i].scrollHeight || parseFloat( window.getComputedStyle( _movingElements[i] ).height ) ); 256 | } 257 | 258 | // Need to calculate percentage for each element 259 | // when based on `containerVisibility` 260 | calculatePercent( p ); 261 | 262 | // calculate target position 263 | if(_scrollPercent <= p.start.percent) { 264 | p.target.x = p.start.x * baseWidth; 265 | p.target.y = p.start.y * baseHeight; 266 | } 267 | else if(_scrollPercent >= p.end.percent) { 268 | p.target.x = p.end.x * baseWidth; 269 | p.target.y = p.end.y * baseHeight; 270 | } 271 | else { 272 | p.target.x = p.start.x * baseWidth + ( p.diff.x * ( _scrollPercent - p.start.percent ) / p.diff.percent * baseWidth ); 273 | p.target.y = p.start.y * baseHeight + ( p.diff.y * ( _scrollPercent - p.start.percent ) / p.diff.percent * baseHeight ); 274 | } 275 | 276 | // easing with linear interpolation 277 | if( !p.current.x || !p.current.y) { 278 | p.current.x = p.target.x; 279 | p.current.y = p.target.y; 280 | } else { 281 | p.current.x = p.current.x + (p.target.x - p.current.x) * 0.1; 282 | p.current.y = p.current.y + (p.target.y - p.current.y) * 0.1; 283 | } 284 | 285 | // Round to decimal precision to prevent 286 | // too many calculation trips 287 | p.current.x = parseFloat( p.current.x.toFixed( _settings.decimalPrecision ) ); 288 | p.current.y = parseFloat( p.current.y.toFixed( _settings.decimalPrecision ) ); 289 | 290 | // update element style 291 | _movingElements[i].style.transform = 'translate3d(' + p.current.x + 'px, ' + p.current.y + 'px, 0)'; 292 | } 293 | }; 294 | 295 | /** 296 | * Keep updating elements position infinitelly. 297 | * @private 298 | */ 299 | var loopUpdatePositions = function () { 300 | updateElementsPosition(); 301 | requestAnimationFrame( loopUpdatePositions ); 302 | }; 303 | 304 | /** 305 | * Keep updating elements position infinitelly. 306 | * @private 307 | */ 308 | var isSupported = function () { 309 | var supported = true; 310 | 311 | // Test basePercentageOn settings 312 | if ( _basePercentageOnOptions.indexOf( _settings.basePercentageOn ) == -1 ) { 313 | supported = false; 314 | console.error( 'Value not supported for setting basePercentageOn: ' + _settings.basePercentageOn ); 315 | } 316 | 317 | // TODO: ADD feature test for `querySelector` 318 | // TODO: ADD feature test for css property `translate3d` 319 | 320 | return supported; 321 | }; 322 | 323 | /** 324 | * Initializes plugin 325 | */ 326 | publicMethods.init = function ( options ) { 327 | // Merge user options with defaults 328 | _settings = extend( defaults, options || {} ); 329 | _settings.decimalPrecision = parseInt( _settings.decimalPrecision ) || defaults.decimalPrecision; 330 | 331 | // Bail early if not supported 332 | if ( !isSupported() ) { return; } 333 | 334 | // Initialize variables 335 | initializeMovingElementsPosition(); 336 | loopUpdatePositions(); 337 | }; 338 | 339 | /** 340 | * Get scroll percentage for the element or page. 341 | * @param {string} el Target element css selector. 342 | * @return {float} Scroll percentage for the element or the page. 343 | */ 344 | publicMethods.getScrollPercent = function ( selector ) { 345 | // Calculate page scroll if no selector was passed 346 | if ( selector == undefined ) { 347 | return calculatePageScrollPercent(); 348 | } 349 | 350 | // Find element 351 | // Return false if not found 352 | var el = document.querySelector( selector ); 353 | if ( el == null ) return false; 354 | 355 | // Calculate element scroll percent 356 | var positionData = getPositionDataByElement( el ); 357 | if ( positionData ) { 358 | calculatePercent( positionData ); 359 | return _scrollPercent; 360 | } 361 | 362 | // Return false otherwise 363 | return false; 364 | }; 365 | 366 | 367 | // 368 | // Public APIs 369 | // 370 | return publicMethods; 371 | 372 | }); 373 | -------------------------------------------------------------------------------- /dist/smooth-parallax.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"function"==typeof define&&define.amd?define([],t(e)):"object"==typeof exports?module.exports=t(e):e.SmoothParallax=t(e)}("undefined"!=typeof global?global:this.window||this.global,function(e){"use strict";var t,r,n,o,i=e,a=0,c=0,l=[],s=[],u=["containerVisibility","pageScroll"],g={},p={basePercentageOn:"containerVisibility",decimalPrecision:2},d=function(){var e={},t=!1,r=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],r++);for(;r1&&(a=1)},b=function(e){for(var t=0;t=n.end.percent?(n.target.x=n.end.x*t,n.target.y=n.end.y*r):(n.target.x=n.start.x*t+n.diff.x*(a-n.start.percent)/n.diff.percent*t,n.target.y=n.start.y*r+n.diff.y*(a-n.start.percent)/n.diff.percent*r),n.current.x&&n.current.y?(n.current.x=n.current.x+.1*(n.target.x-n.current.x),n.current.y=n.current.y+.1*(n.target.y-n.current.y)):(n.current.x=n.target.x,n.current.y=n.target.y),n.current.x=parseFloat(n.current.x.toFixed(o.decimalPrecision)),n.current.y=parseFloat(n.current.y.toFixed(o.decimalPrecision)),l[e].style.transform="translate3d("+n.current.x+"px, "+n.current.y+"px, 0)"}},S=function(){h(),requestAnimationFrame(S)},v=function(){var e=!0;return-1==u.indexOf(o.basePercentageOn)&&(e=!1,console.error("Value not supported for setting basePercentageOn: "+o.basePercentageOn)),e};return g.init=function(e){(o=d(p,e||{})).decimalPrecision=parseInt(o.decimalPrecision)||p.decimalPrecision,v()&&(x(),S())},g.getScrollPercent=function(e){if(void 0==e)return y();var t=document.querySelector(e);if(null==t)return!1;var r=b(t);return!!r&&(m(r),a)},g}); -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | // Defining base pathes 2 | var basePaths = { 3 | bower: './bower_components/', 4 | src: './src/' 5 | }; 6 | 7 | // Defining requirements 8 | var gulp = require('gulp'); 9 | var plumber = require('gulp-plumber'); 10 | var watch = require('gulp-watch'); 11 | var rename = require('gulp-rename'); 12 | var concat = require('gulp-concat'); 13 | var uglify = require('gulp-uglify'); 14 | var ignore = require('gulp-ignore'); 15 | var rimraf = require('gulp-rimraf'); 16 | 17 | // Run: 18 | // gulp watch 19 | // Starts watcher. Watcher runs appropriate tasks on file changes 20 | gulp.task('watch', function () { 21 | gulp.watch('./src/**/*.js', ['build-scripts']); 22 | }); 23 | 24 | // Run: 25 | // gulp 26 | // Defines gulp default task 27 | gulp.task('default', ['watch'], function () { }); 28 | 29 | // Run: 30 | // gulp build-scripts. 31 | // Uglifies and concat all JS files into one 32 | gulp.task('build-scripts', function() { 33 | var src = [ 34 | basePaths.src + 'smooth-parallax-src.js' 35 | ]; 36 | 37 | // compiled (.js) 38 | gulp.src(src) 39 | .pipe(concat('smooth-parallax.js')) 40 | .pipe(gulp.dest('./dist/')); 41 | 42 | // compiled (.min.js) 43 | gulp.src(src) 44 | .pipe(concat('smooth-parallax.min.js')) 45 | .pipe(uglify()) 46 | .pipe(gulp.dest('./dist/')); 47 | 48 | }); 49 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "smooth-parallax", 3 | "version": "1.1.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-regex": { 8 | "version": "2.1.1", 9 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 10 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 11 | "dev": true 12 | }, 13 | "ansi-styles": { 14 | "version": "2.2.1", 15 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 16 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 17 | "dev": true 18 | }, 19 | "anymatch": { 20 | "version": "1.3.0", 21 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 22 | "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", 23 | "dev": true, 24 | "requires": { 25 | "arrify": "1.0.1", 26 | "micromatch": "2.3.11" 27 | } 28 | }, 29 | "archy": { 30 | "version": "1.0.0", 31 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 32 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 33 | "dev": true 34 | }, 35 | "arr-diff": { 36 | "version": "2.0.0", 37 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 38 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 39 | "dev": true, 40 | "requires": { 41 | "arr-flatten": "1.1.0" 42 | } 43 | }, 44 | "arr-flatten": { 45 | "version": "1.1.0", 46 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 47 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 48 | "dev": true 49 | }, 50 | "array-differ": { 51 | "version": "1.0.0", 52 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 53 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 54 | "dev": true 55 | }, 56 | "array-each": { 57 | "version": "1.0.1", 58 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 59 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 60 | "dev": true 61 | }, 62 | "array-slice": { 63 | "version": "1.0.0", 64 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", 65 | "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", 66 | "dev": true 67 | }, 68 | "array-uniq": { 69 | "version": "1.0.3", 70 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 71 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 72 | "dev": true 73 | }, 74 | "array-unique": { 75 | "version": "0.2.1", 76 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 77 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 78 | "dev": true 79 | }, 80 | "arrify": { 81 | "version": "1.0.1", 82 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 83 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 84 | "dev": true 85 | }, 86 | "async-each": { 87 | "version": "1.0.1", 88 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 89 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 90 | "dev": true 91 | }, 92 | "balanced-match": { 93 | "version": "1.0.0", 94 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 95 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 96 | "dev": true 97 | }, 98 | "beeper": { 99 | "version": "1.1.1", 100 | "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 101 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", 102 | "dev": true 103 | }, 104 | "binary-extensions": { 105 | "version": "1.8.0", 106 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", 107 | "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", 108 | "dev": true 109 | }, 110 | "brace-expansion": { 111 | "version": "1.1.8", 112 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 113 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 114 | "dev": true, 115 | "requires": { 116 | "balanced-match": "1.0.0", 117 | "concat-map": "0.0.1" 118 | } 119 | }, 120 | "braces": { 121 | "version": "1.8.5", 122 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 123 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 124 | "dev": true, 125 | "requires": { 126 | "expand-range": "1.8.2", 127 | "preserve": "0.2.0", 128 | "repeat-element": "1.1.2" 129 | } 130 | }, 131 | "chalk": { 132 | "version": "1.1.3", 133 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 134 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 135 | "dev": true, 136 | "requires": { 137 | "ansi-styles": "2.2.1", 138 | "escape-string-regexp": "1.0.5", 139 | "has-ansi": "2.0.0", 140 | "strip-ansi": "3.0.1", 141 | "supports-color": "2.0.0" 142 | } 143 | }, 144 | "chokidar": { 145 | "version": "1.7.0", 146 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 147 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 148 | "dev": true, 149 | "requires": { 150 | "anymatch": "1.3.0", 151 | "async-each": "1.0.1", 152 | "fsevents": "1.1.2", 153 | "glob-parent": "2.0.0", 154 | "inherits": "2.0.3", 155 | "is-binary-path": "1.0.1", 156 | "is-glob": "2.0.1", 157 | "path-is-absolute": "1.0.1", 158 | "readdirp": "2.1.0" 159 | } 160 | }, 161 | "clone": { 162 | "version": "1.0.2", 163 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", 164 | "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", 165 | "dev": true 166 | }, 167 | "clone-buffer": { 168 | "version": "1.0.0", 169 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 170 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 171 | "dev": true 172 | }, 173 | "clone-stats": { 174 | "version": "0.0.1", 175 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 176 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 177 | "dev": true 178 | }, 179 | "cloneable-readable": { 180 | "version": "1.0.0", 181 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", 182 | "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", 183 | "dev": true, 184 | "requires": { 185 | "inherits": "2.0.3", 186 | "process-nextick-args": "1.0.7", 187 | "through2": "2.0.3" 188 | } 189 | }, 190 | "commander": { 191 | "version": "2.9.0", 192 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 193 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 194 | "dev": true, 195 | "requires": { 196 | "graceful-readlink": "1.0.1" 197 | } 198 | }, 199 | "concat-map": { 200 | "version": "0.0.1", 201 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 202 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 203 | "dev": true 204 | }, 205 | "concat-with-sourcemaps": { 206 | "version": "1.0.4", 207 | "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", 208 | "integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=", 209 | "dev": true, 210 | "requires": { 211 | "source-map": "0.5.6" 212 | } 213 | }, 214 | "core-util-is": { 215 | "version": "1.0.2", 216 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 217 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 218 | "dev": true 219 | }, 220 | "dateformat": { 221 | "version": "2.0.0", 222 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", 223 | "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", 224 | "dev": true 225 | }, 226 | "defaults": { 227 | "version": "1.0.3", 228 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 229 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 230 | "dev": true, 231 | "requires": { 232 | "clone": "1.0.2" 233 | } 234 | }, 235 | "deprecated": { 236 | "version": "0.0.1", 237 | "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", 238 | "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", 239 | "dev": true 240 | }, 241 | "detect-file": { 242 | "version": "0.1.0", 243 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", 244 | "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", 245 | "dev": true, 246 | "requires": { 247 | "fs-exists-sync": "0.1.0" 248 | } 249 | }, 250 | "duplexer2": { 251 | "version": "0.0.2", 252 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 253 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", 254 | "dev": true, 255 | "requires": { 256 | "readable-stream": "1.1.14" 257 | } 258 | }, 259 | "end-of-stream": { 260 | "version": "0.1.5", 261 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", 262 | "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", 263 | "dev": true, 264 | "requires": { 265 | "once": "1.3.3" 266 | } 267 | }, 268 | "escape-string-regexp": { 269 | "version": "1.0.5", 270 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 271 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 272 | "dev": true 273 | }, 274 | "expand-brackets": { 275 | "version": "0.1.5", 276 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 277 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 278 | "dev": true, 279 | "requires": { 280 | "is-posix-bracket": "0.1.1" 281 | } 282 | }, 283 | "expand-range": { 284 | "version": "1.8.2", 285 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 286 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 287 | "dev": true, 288 | "requires": { 289 | "fill-range": "2.2.3" 290 | } 291 | }, 292 | "expand-tilde": { 293 | "version": "1.2.2", 294 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", 295 | "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", 296 | "dev": true, 297 | "requires": { 298 | "os-homedir": "1.0.2" 299 | } 300 | }, 301 | "extend": { 302 | "version": "3.0.1", 303 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 304 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 305 | "dev": true 306 | }, 307 | "extglob": { 308 | "version": "0.3.2", 309 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 310 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 311 | "dev": true, 312 | "requires": { 313 | "is-extglob": "1.0.0" 314 | } 315 | }, 316 | "fancy-log": { 317 | "version": "1.3.0", 318 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", 319 | "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", 320 | "dev": true, 321 | "requires": { 322 | "chalk": "1.1.3", 323 | "time-stamp": "1.1.0" 324 | } 325 | }, 326 | "filename-regex": { 327 | "version": "2.0.1", 328 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 329 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 330 | "dev": true 331 | }, 332 | "fill-range": { 333 | "version": "2.2.3", 334 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 335 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 336 | "dev": true, 337 | "requires": { 338 | "is-number": "2.1.0", 339 | "isobject": "2.1.0", 340 | "randomatic": "1.1.7", 341 | "repeat-element": "1.1.2", 342 | "repeat-string": "1.6.1" 343 | } 344 | }, 345 | "find-index": { 346 | "version": "0.1.1", 347 | "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", 348 | "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", 349 | "dev": true 350 | }, 351 | "findup-sync": { 352 | "version": "0.4.3", 353 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", 354 | "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", 355 | "dev": true, 356 | "requires": { 357 | "detect-file": "0.1.0", 358 | "is-glob": "2.0.1", 359 | "micromatch": "2.3.11", 360 | "resolve-dir": "0.1.1" 361 | } 362 | }, 363 | "fined": { 364 | "version": "1.1.0", 365 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 366 | "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", 367 | "dev": true, 368 | "requires": { 369 | "expand-tilde": "2.0.2", 370 | "is-plain-object": "2.0.4", 371 | "object.defaults": "1.1.0", 372 | "object.pick": "1.2.0", 373 | "parse-filepath": "1.0.1" 374 | }, 375 | "dependencies": { 376 | "expand-tilde": { 377 | "version": "2.0.2", 378 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 379 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 380 | "dev": true, 381 | "requires": { 382 | "homedir-polyfill": "1.0.1" 383 | } 384 | } 385 | } 386 | }, 387 | "first-chunk-stream": { 388 | "version": "1.0.0", 389 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 390 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", 391 | "dev": true 392 | }, 393 | "flagged-respawn": { 394 | "version": "0.3.2", 395 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", 396 | "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", 397 | "dev": true 398 | }, 399 | "for-in": { 400 | "version": "1.0.2", 401 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 402 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 403 | "dev": true 404 | }, 405 | "for-own": { 406 | "version": "0.1.5", 407 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 408 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 409 | "dev": true, 410 | "requires": { 411 | "for-in": "1.0.2" 412 | } 413 | }, 414 | "fs-exists-sync": { 415 | "version": "0.1.0", 416 | "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", 417 | "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", 418 | "dev": true 419 | }, 420 | "fs.realpath": { 421 | "version": "1.0.0", 422 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 423 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 424 | "dev": true 425 | }, 426 | "fsevents": { 427 | "version": "1.1.2", 428 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", 429 | "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", 430 | "dev": true, 431 | "optional": true, 432 | "requires": { 433 | "nan": "2.6.2", 434 | "node-pre-gyp": "0.6.36" 435 | }, 436 | "dependencies": { 437 | "abbrev": { 438 | "version": "1.1.0", 439 | "bundled": true, 440 | "dev": true, 441 | "optional": true 442 | }, 443 | "ajv": { 444 | "version": "4.11.8", 445 | "bundled": true, 446 | "dev": true, 447 | "optional": true, 448 | "requires": { 449 | "co": "4.6.0", 450 | "json-stable-stringify": "1.0.1" 451 | } 452 | }, 453 | "ansi-regex": { 454 | "version": "2.1.1", 455 | "bundled": true, 456 | "dev": true 457 | }, 458 | "aproba": { 459 | "version": "1.1.1", 460 | "bundled": true, 461 | "dev": true, 462 | "optional": true 463 | }, 464 | "are-we-there-yet": { 465 | "version": "1.1.4", 466 | "bundled": true, 467 | "dev": true, 468 | "optional": true, 469 | "requires": { 470 | "delegates": "1.0.0", 471 | "readable-stream": "2.2.9" 472 | } 473 | }, 474 | "asn1": { 475 | "version": "0.2.3", 476 | "bundled": true, 477 | "dev": true, 478 | "optional": true 479 | }, 480 | "assert-plus": { 481 | "version": "0.2.0", 482 | "bundled": true, 483 | "dev": true, 484 | "optional": true 485 | }, 486 | "asynckit": { 487 | "version": "0.4.0", 488 | "bundled": true, 489 | "dev": true, 490 | "optional": true 491 | }, 492 | "aws-sign2": { 493 | "version": "0.6.0", 494 | "bundled": true, 495 | "dev": true, 496 | "optional": true 497 | }, 498 | "aws4": { 499 | "version": "1.6.0", 500 | "bundled": true, 501 | "dev": true, 502 | "optional": true 503 | }, 504 | "balanced-match": { 505 | "version": "0.4.2", 506 | "bundled": true, 507 | "dev": true 508 | }, 509 | "bcrypt-pbkdf": { 510 | "version": "1.0.1", 511 | "bundled": true, 512 | "dev": true, 513 | "optional": true, 514 | "requires": { 515 | "tweetnacl": "0.14.5" 516 | } 517 | }, 518 | "block-stream": { 519 | "version": "0.0.9", 520 | "bundled": true, 521 | "dev": true, 522 | "requires": { 523 | "inherits": "2.0.3" 524 | } 525 | }, 526 | "boom": { 527 | "version": "2.10.1", 528 | "bundled": true, 529 | "dev": true, 530 | "requires": { 531 | "hoek": "2.16.3" 532 | } 533 | }, 534 | "brace-expansion": { 535 | "version": "1.1.7", 536 | "bundled": true, 537 | "dev": true, 538 | "requires": { 539 | "balanced-match": "0.4.2", 540 | "concat-map": "0.0.1" 541 | } 542 | }, 543 | "buffer-shims": { 544 | "version": "1.0.0", 545 | "bundled": true, 546 | "dev": true 547 | }, 548 | "caseless": { 549 | "version": "0.12.0", 550 | "bundled": true, 551 | "dev": true, 552 | "optional": true 553 | }, 554 | "co": { 555 | "version": "4.6.0", 556 | "bundled": true, 557 | "dev": true, 558 | "optional": true 559 | }, 560 | "code-point-at": { 561 | "version": "1.1.0", 562 | "bundled": true, 563 | "dev": true 564 | }, 565 | "combined-stream": { 566 | "version": "1.0.5", 567 | "bundled": true, 568 | "dev": true, 569 | "requires": { 570 | "delayed-stream": "1.0.0" 571 | } 572 | }, 573 | "concat-map": { 574 | "version": "0.0.1", 575 | "bundled": true, 576 | "dev": true 577 | }, 578 | "console-control-strings": { 579 | "version": "1.1.0", 580 | "bundled": true, 581 | "dev": true 582 | }, 583 | "core-util-is": { 584 | "version": "1.0.2", 585 | "bundled": true, 586 | "dev": true 587 | }, 588 | "cryptiles": { 589 | "version": "2.0.5", 590 | "bundled": true, 591 | "dev": true, 592 | "optional": true, 593 | "requires": { 594 | "boom": "2.10.1" 595 | } 596 | }, 597 | "dashdash": { 598 | "version": "1.14.1", 599 | "bundled": true, 600 | "dev": true, 601 | "optional": true, 602 | "requires": { 603 | "assert-plus": "1.0.0" 604 | }, 605 | "dependencies": { 606 | "assert-plus": { 607 | "version": "1.0.0", 608 | "bundled": true, 609 | "dev": true, 610 | "optional": true 611 | } 612 | } 613 | }, 614 | "debug": { 615 | "version": "2.6.8", 616 | "bundled": true, 617 | "dev": true, 618 | "optional": true, 619 | "requires": { 620 | "ms": "2.0.0" 621 | } 622 | }, 623 | "deep-extend": { 624 | "version": "0.4.2", 625 | "bundled": true, 626 | "dev": true, 627 | "optional": true 628 | }, 629 | "delayed-stream": { 630 | "version": "1.0.0", 631 | "bundled": true, 632 | "dev": true 633 | }, 634 | "delegates": { 635 | "version": "1.0.0", 636 | "bundled": true, 637 | "dev": true, 638 | "optional": true 639 | }, 640 | "ecc-jsbn": { 641 | "version": "0.1.1", 642 | "bundled": true, 643 | "dev": true, 644 | "optional": true, 645 | "requires": { 646 | "jsbn": "0.1.1" 647 | } 648 | }, 649 | "extend": { 650 | "version": "3.0.1", 651 | "bundled": true, 652 | "dev": true, 653 | "optional": true 654 | }, 655 | "extsprintf": { 656 | "version": "1.0.2", 657 | "bundled": true, 658 | "dev": true 659 | }, 660 | "forever-agent": { 661 | "version": "0.6.1", 662 | "bundled": true, 663 | "dev": true, 664 | "optional": true 665 | }, 666 | "form-data": { 667 | "version": "2.1.4", 668 | "bundled": true, 669 | "dev": true, 670 | "optional": true, 671 | "requires": { 672 | "asynckit": "0.4.0", 673 | "combined-stream": "1.0.5", 674 | "mime-types": "2.1.15" 675 | } 676 | }, 677 | "fs.realpath": { 678 | "version": "1.0.0", 679 | "bundled": true, 680 | "dev": true 681 | }, 682 | "fstream": { 683 | "version": "1.0.11", 684 | "bundled": true, 685 | "dev": true, 686 | "requires": { 687 | "graceful-fs": "4.1.11", 688 | "inherits": "2.0.3", 689 | "mkdirp": "0.5.1", 690 | "rimraf": "2.6.1" 691 | } 692 | }, 693 | "fstream-ignore": { 694 | "version": "1.0.5", 695 | "bundled": true, 696 | "dev": true, 697 | "optional": true, 698 | "requires": { 699 | "fstream": "1.0.11", 700 | "inherits": "2.0.3", 701 | "minimatch": "3.0.4" 702 | } 703 | }, 704 | "gauge": { 705 | "version": "2.7.4", 706 | "bundled": true, 707 | "dev": true, 708 | "optional": true, 709 | "requires": { 710 | "aproba": "1.1.1", 711 | "console-control-strings": "1.1.0", 712 | "has-unicode": "2.0.1", 713 | "object-assign": "4.1.1", 714 | "signal-exit": "3.0.2", 715 | "string-width": "1.0.2", 716 | "strip-ansi": "3.0.1", 717 | "wide-align": "1.1.2" 718 | } 719 | }, 720 | "getpass": { 721 | "version": "0.1.7", 722 | "bundled": true, 723 | "dev": true, 724 | "optional": true, 725 | "requires": { 726 | "assert-plus": "1.0.0" 727 | }, 728 | "dependencies": { 729 | "assert-plus": { 730 | "version": "1.0.0", 731 | "bundled": true, 732 | "dev": true, 733 | "optional": true 734 | } 735 | } 736 | }, 737 | "glob": { 738 | "version": "7.1.2", 739 | "bundled": true, 740 | "dev": true, 741 | "requires": { 742 | "fs.realpath": "1.0.0", 743 | "inflight": "1.0.6", 744 | "inherits": "2.0.3", 745 | "minimatch": "3.0.4", 746 | "once": "1.4.0", 747 | "path-is-absolute": "1.0.1" 748 | } 749 | }, 750 | "graceful-fs": { 751 | "version": "4.1.11", 752 | "bundled": true, 753 | "dev": true 754 | }, 755 | "har-schema": { 756 | "version": "1.0.5", 757 | "bundled": true, 758 | "dev": true, 759 | "optional": true 760 | }, 761 | "har-validator": { 762 | "version": "4.2.1", 763 | "bundled": true, 764 | "dev": true, 765 | "optional": true, 766 | "requires": { 767 | "ajv": "4.11.8", 768 | "har-schema": "1.0.5" 769 | } 770 | }, 771 | "has-unicode": { 772 | "version": "2.0.1", 773 | "bundled": true, 774 | "dev": true, 775 | "optional": true 776 | }, 777 | "hawk": { 778 | "version": "3.1.3", 779 | "bundled": true, 780 | "dev": true, 781 | "optional": true, 782 | "requires": { 783 | "boom": "2.10.1", 784 | "cryptiles": "2.0.5", 785 | "hoek": "2.16.3", 786 | "sntp": "1.0.9" 787 | } 788 | }, 789 | "hoek": { 790 | "version": "2.16.3", 791 | "bundled": true, 792 | "dev": true 793 | }, 794 | "http-signature": { 795 | "version": "1.1.1", 796 | "bundled": true, 797 | "dev": true, 798 | "optional": true, 799 | "requires": { 800 | "assert-plus": "0.2.0", 801 | "jsprim": "1.4.0", 802 | "sshpk": "1.13.0" 803 | } 804 | }, 805 | "inflight": { 806 | "version": "1.0.6", 807 | "bundled": true, 808 | "dev": true, 809 | "requires": { 810 | "once": "1.4.0", 811 | "wrappy": "1.0.2" 812 | } 813 | }, 814 | "inherits": { 815 | "version": "2.0.3", 816 | "bundled": true, 817 | "dev": true 818 | }, 819 | "ini": { 820 | "version": "1.3.4", 821 | "bundled": true, 822 | "dev": true, 823 | "optional": true 824 | }, 825 | "is-fullwidth-code-point": { 826 | "version": "1.0.0", 827 | "bundled": true, 828 | "dev": true, 829 | "requires": { 830 | "number-is-nan": "1.0.1" 831 | } 832 | }, 833 | "is-typedarray": { 834 | "version": "1.0.0", 835 | "bundled": true, 836 | "dev": true, 837 | "optional": true 838 | }, 839 | "isarray": { 840 | "version": "1.0.0", 841 | "bundled": true, 842 | "dev": true 843 | }, 844 | "isstream": { 845 | "version": "0.1.2", 846 | "bundled": true, 847 | "dev": true, 848 | "optional": true 849 | }, 850 | "jodid25519": { 851 | "version": "1.0.2", 852 | "bundled": true, 853 | "dev": true, 854 | "optional": true, 855 | "requires": { 856 | "jsbn": "0.1.1" 857 | } 858 | }, 859 | "jsbn": { 860 | "version": "0.1.1", 861 | "bundled": true, 862 | "dev": true, 863 | "optional": true 864 | }, 865 | "json-schema": { 866 | "version": "0.2.3", 867 | "bundled": true, 868 | "dev": true, 869 | "optional": true 870 | }, 871 | "json-stable-stringify": { 872 | "version": "1.0.1", 873 | "bundled": true, 874 | "dev": true, 875 | "optional": true, 876 | "requires": { 877 | "jsonify": "0.0.0" 878 | } 879 | }, 880 | "json-stringify-safe": { 881 | "version": "5.0.1", 882 | "bundled": true, 883 | "dev": true, 884 | "optional": true 885 | }, 886 | "jsonify": { 887 | "version": "0.0.0", 888 | "bundled": true, 889 | "dev": true, 890 | "optional": true 891 | }, 892 | "jsprim": { 893 | "version": "1.4.0", 894 | "bundled": true, 895 | "dev": true, 896 | "optional": true, 897 | "requires": { 898 | "assert-plus": "1.0.0", 899 | "extsprintf": "1.0.2", 900 | "json-schema": "0.2.3", 901 | "verror": "1.3.6" 902 | }, 903 | "dependencies": { 904 | "assert-plus": { 905 | "version": "1.0.0", 906 | "bundled": true, 907 | "dev": true, 908 | "optional": true 909 | } 910 | } 911 | }, 912 | "mime-db": { 913 | "version": "1.27.0", 914 | "bundled": true, 915 | "dev": true 916 | }, 917 | "mime-types": { 918 | "version": "2.1.15", 919 | "bundled": true, 920 | "dev": true, 921 | "requires": { 922 | "mime-db": "1.27.0" 923 | } 924 | }, 925 | "minimatch": { 926 | "version": "3.0.4", 927 | "bundled": true, 928 | "dev": true, 929 | "requires": { 930 | "brace-expansion": "1.1.7" 931 | } 932 | }, 933 | "minimist": { 934 | "version": "0.0.8", 935 | "bundled": true, 936 | "dev": true 937 | }, 938 | "mkdirp": { 939 | "version": "0.5.1", 940 | "bundled": true, 941 | "dev": true, 942 | "requires": { 943 | "minimist": "0.0.8" 944 | } 945 | }, 946 | "ms": { 947 | "version": "2.0.0", 948 | "bundled": true, 949 | "dev": true, 950 | "optional": true 951 | }, 952 | "node-pre-gyp": { 953 | "version": "0.6.36", 954 | "bundled": true, 955 | "dev": true, 956 | "optional": true, 957 | "requires": { 958 | "mkdirp": "0.5.1", 959 | "nopt": "4.0.1", 960 | "npmlog": "4.1.0", 961 | "rc": "1.2.1", 962 | "request": "2.81.0", 963 | "rimraf": "2.6.1", 964 | "semver": "5.3.0", 965 | "tar": "2.2.1", 966 | "tar-pack": "3.4.0" 967 | } 968 | }, 969 | "nopt": { 970 | "version": "4.0.1", 971 | "bundled": true, 972 | "dev": true, 973 | "optional": true, 974 | "requires": { 975 | "abbrev": "1.1.0", 976 | "osenv": "0.1.4" 977 | } 978 | }, 979 | "npmlog": { 980 | "version": "4.1.0", 981 | "bundled": true, 982 | "dev": true, 983 | "optional": true, 984 | "requires": { 985 | "are-we-there-yet": "1.1.4", 986 | "console-control-strings": "1.1.0", 987 | "gauge": "2.7.4", 988 | "set-blocking": "2.0.0" 989 | } 990 | }, 991 | "number-is-nan": { 992 | "version": "1.0.1", 993 | "bundled": true, 994 | "dev": true 995 | }, 996 | "oauth-sign": { 997 | "version": "0.8.2", 998 | "bundled": true, 999 | "dev": true, 1000 | "optional": true 1001 | }, 1002 | "object-assign": { 1003 | "version": "4.1.1", 1004 | "bundled": true, 1005 | "dev": true, 1006 | "optional": true 1007 | }, 1008 | "once": { 1009 | "version": "1.4.0", 1010 | "bundled": true, 1011 | "dev": true, 1012 | "requires": { 1013 | "wrappy": "1.0.2" 1014 | } 1015 | }, 1016 | "os-homedir": { 1017 | "version": "1.0.2", 1018 | "bundled": true, 1019 | "dev": true, 1020 | "optional": true 1021 | }, 1022 | "os-tmpdir": { 1023 | "version": "1.0.2", 1024 | "bundled": true, 1025 | "dev": true, 1026 | "optional": true 1027 | }, 1028 | "osenv": { 1029 | "version": "0.1.4", 1030 | "bundled": true, 1031 | "dev": true, 1032 | "optional": true, 1033 | "requires": { 1034 | "os-homedir": "1.0.2", 1035 | "os-tmpdir": "1.0.2" 1036 | } 1037 | }, 1038 | "path-is-absolute": { 1039 | "version": "1.0.1", 1040 | "bundled": true, 1041 | "dev": true 1042 | }, 1043 | "performance-now": { 1044 | "version": "0.2.0", 1045 | "bundled": true, 1046 | "dev": true, 1047 | "optional": true 1048 | }, 1049 | "process-nextick-args": { 1050 | "version": "1.0.7", 1051 | "bundled": true, 1052 | "dev": true 1053 | }, 1054 | "punycode": { 1055 | "version": "1.4.1", 1056 | "bundled": true, 1057 | "dev": true, 1058 | "optional": true 1059 | }, 1060 | "qs": { 1061 | "version": "6.4.0", 1062 | "bundled": true, 1063 | "dev": true, 1064 | "optional": true 1065 | }, 1066 | "rc": { 1067 | "version": "1.2.1", 1068 | "bundled": true, 1069 | "dev": true, 1070 | "optional": true, 1071 | "requires": { 1072 | "deep-extend": "0.4.2", 1073 | "ini": "1.3.4", 1074 | "minimist": "1.2.0", 1075 | "strip-json-comments": "2.0.1" 1076 | }, 1077 | "dependencies": { 1078 | "minimist": { 1079 | "version": "1.2.0", 1080 | "bundled": true, 1081 | "dev": true, 1082 | "optional": true 1083 | } 1084 | } 1085 | }, 1086 | "readable-stream": { 1087 | "version": "2.2.9", 1088 | "bundled": true, 1089 | "dev": true, 1090 | "requires": { 1091 | "buffer-shims": "1.0.0", 1092 | "core-util-is": "1.0.2", 1093 | "inherits": "2.0.3", 1094 | "isarray": "1.0.0", 1095 | "process-nextick-args": "1.0.7", 1096 | "string_decoder": "1.0.1", 1097 | "util-deprecate": "1.0.2" 1098 | } 1099 | }, 1100 | "request": { 1101 | "version": "2.81.0", 1102 | "bundled": true, 1103 | "dev": true, 1104 | "optional": true, 1105 | "requires": { 1106 | "aws-sign2": "0.6.0", 1107 | "aws4": "1.6.0", 1108 | "caseless": "0.12.0", 1109 | "combined-stream": "1.0.5", 1110 | "extend": "3.0.1", 1111 | "forever-agent": "0.6.1", 1112 | "form-data": "2.1.4", 1113 | "har-validator": "4.2.1", 1114 | "hawk": "3.1.3", 1115 | "http-signature": "1.1.1", 1116 | "is-typedarray": "1.0.0", 1117 | "isstream": "0.1.2", 1118 | "json-stringify-safe": "5.0.1", 1119 | "mime-types": "2.1.15", 1120 | "oauth-sign": "0.8.2", 1121 | "performance-now": "0.2.0", 1122 | "qs": "6.4.0", 1123 | "safe-buffer": "5.0.1", 1124 | "stringstream": "0.0.5", 1125 | "tough-cookie": "2.3.2", 1126 | "tunnel-agent": "0.6.0", 1127 | "uuid": "3.0.1" 1128 | } 1129 | }, 1130 | "rimraf": { 1131 | "version": "2.6.1", 1132 | "bundled": true, 1133 | "dev": true, 1134 | "requires": { 1135 | "glob": "7.1.2" 1136 | } 1137 | }, 1138 | "safe-buffer": { 1139 | "version": "5.0.1", 1140 | "bundled": true, 1141 | "dev": true 1142 | }, 1143 | "semver": { 1144 | "version": "5.3.0", 1145 | "bundled": true, 1146 | "dev": true, 1147 | "optional": true 1148 | }, 1149 | "set-blocking": { 1150 | "version": "2.0.0", 1151 | "bundled": true, 1152 | "dev": true, 1153 | "optional": true 1154 | }, 1155 | "signal-exit": { 1156 | "version": "3.0.2", 1157 | "bundled": true, 1158 | "dev": true, 1159 | "optional": true 1160 | }, 1161 | "sntp": { 1162 | "version": "1.0.9", 1163 | "bundled": true, 1164 | "dev": true, 1165 | "optional": true, 1166 | "requires": { 1167 | "hoek": "2.16.3" 1168 | } 1169 | }, 1170 | "sshpk": { 1171 | "version": "1.13.0", 1172 | "bundled": true, 1173 | "dev": true, 1174 | "optional": true, 1175 | "requires": { 1176 | "asn1": "0.2.3", 1177 | "assert-plus": "1.0.0", 1178 | "bcrypt-pbkdf": "1.0.1", 1179 | "dashdash": "1.14.1", 1180 | "ecc-jsbn": "0.1.1", 1181 | "getpass": "0.1.7", 1182 | "jodid25519": "1.0.2", 1183 | "jsbn": "0.1.1", 1184 | "tweetnacl": "0.14.5" 1185 | }, 1186 | "dependencies": { 1187 | "assert-plus": { 1188 | "version": "1.0.0", 1189 | "bundled": true, 1190 | "dev": true, 1191 | "optional": true 1192 | } 1193 | } 1194 | }, 1195 | "string-width": { 1196 | "version": "1.0.2", 1197 | "bundled": true, 1198 | "dev": true, 1199 | "requires": { 1200 | "code-point-at": "1.1.0", 1201 | "is-fullwidth-code-point": "1.0.0", 1202 | "strip-ansi": "3.0.1" 1203 | } 1204 | }, 1205 | "string_decoder": { 1206 | "version": "1.0.1", 1207 | "bundled": true, 1208 | "dev": true, 1209 | "requires": { 1210 | "safe-buffer": "5.0.1" 1211 | } 1212 | }, 1213 | "stringstream": { 1214 | "version": "0.0.5", 1215 | "bundled": true, 1216 | "dev": true, 1217 | "optional": true 1218 | }, 1219 | "strip-ansi": { 1220 | "version": "3.0.1", 1221 | "bundled": true, 1222 | "dev": true, 1223 | "requires": { 1224 | "ansi-regex": "2.1.1" 1225 | } 1226 | }, 1227 | "strip-json-comments": { 1228 | "version": "2.0.1", 1229 | "bundled": true, 1230 | "dev": true, 1231 | "optional": true 1232 | }, 1233 | "tar": { 1234 | "version": "2.2.1", 1235 | "bundled": true, 1236 | "dev": true, 1237 | "requires": { 1238 | "block-stream": "0.0.9", 1239 | "fstream": "1.0.11", 1240 | "inherits": "2.0.3" 1241 | } 1242 | }, 1243 | "tar-pack": { 1244 | "version": "3.4.0", 1245 | "bundled": true, 1246 | "dev": true, 1247 | "optional": true, 1248 | "requires": { 1249 | "debug": "2.6.8", 1250 | "fstream": "1.0.11", 1251 | "fstream-ignore": "1.0.5", 1252 | "once": "1.4.0", 1253 | "readable-stream": "2.2.9", 1254 | "rimraf": "2.6.1", 1255 | "tar": "2.2.1", 1256 | "uid-number": "0.0.6" 1257 | } 1258 | }, 1259 | "tough-cookie": { 1260 | "version": "2.3.2", 1261 | "bundled": true, 1262 | "dev": true, 1263 | "optional": true, 1264 | "requires": { 1265 | "punycode": "1.4.1" 1266 | } 1267 | }, 1268 | "tunnel-agent": { 1269 | "version": "0.6.0", 1270 | "bundled": true, 1271 | "dev": true, 1272 | "optional": true, 1273 | "requires": { 1274 | "safe-buffer": "5.0.1" 1275 | } 1276 | }, 1277 | "tweetnacl": { 1278 | "version": "0.14.5", 1279 | "bundled": true, 1280 | "dev": true, 1281 | "optional": true 1282 | }, 1283 | "uid-number": { 1284 | "version": "0.0.6", 1285 | "bundled": true, 1286 | "dev": true, 1287 | "optional": true 1288 | }, 1289 | "util-deprecate": { 1290 | "version": "1.0.2", 1291 | "bundled": true, 1292 | "dev": true 1293 | }, 1294 | "uuid": { 1295 | "version": "3.0.1", 1296 | "bundled": true, 1297 | "dev": true, 1298 | "optional": true 1299 | }, 1300 | "verror": { 1301 | "version": "1.3.6", 1302 | "bundled": true, 1303 | "dev": true, 1304 | "optional": true, 1305 | "requires": { 1306 | "extsprintf": "1.0.2" 1307 | } 1308 | }, 1309 | "wide-align": { 1310 | "version": "1.1.2", 1311 | "bundled": true, 1312 | "dev": true, 1313 | "optional": true, 1314 | "requires": { 1315 | "string-width": "1.0.2" 1316 | } 1317 | }, 1318 | "wrappy": { 1319 | "version": "1.0.2", 1320 | "bundled": true, 1321 | "dev": true 1322 | } 1323 | } 1324 | }, 1325 | "gaze": { 1326 | "version": "0.5.2", 1327 | "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", 1328 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", 1329 | "dev": true, 1330 | "requires": { 1331 | "globule": "0.1.0" 1332 | } 1333 | }, 1334 | "glob": { 1335 | "version": "4.5.3", 1336 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 1337 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", 1338 | "dev": true, 1339 | "requires": { 1340 | "inflight": "1.0.6", 1341 | "inherits": "2.0.3", 1342 | "minimatch": "2.0.10", 1343 | "once": "1.3.3" 1344 | } 1345 | }, 1346 | "glob-base": { 1347 | "version": "0.3.0", 1348 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1349 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1350 | "dev": true, 1351 | "requires": { 1352 | "glob-parent": "2.0.0", 1353 | "is-glob": "2.0.1" 1354 | } 1355 | }, 1356 | "glob-parent": { 1357 | "version": "2.0.0", 1358 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1359 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1360 | "dev": true, 1361 | "requires": { 1362 | "is-glob": "2.0.1" 1363 | } 1364 | }, 1365 | "glob-stream": { 1366 | "version": "3.1.18", 1367 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", 1368 | "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", 1369 | "dev": true, 1370 | "requires": { 1371 | "glob": "4.5.3", 1372 | "glob2base": "0.0.12", 1373 | "minimatch": "2.0.10", 1374 | "ordered-read-streams": "0.1.0", 1375 | "through2": "0.6.5", 1376 | "unique-stream": "1.0.0" 1377 | }, 1378 | "dependencies": { 1379 | "readable-stream": { 1380 | "version": "1.0.34", 1381 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 1382 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 1383 | "dev": true, 1384 | "requires": { 1385 | "core-util-is": "1.0.2", 1386 | "inherits": "2.0.3", 1387 | "isarray": "0.0.1", 1388 | "string_decoder": "0.10.31" 1389 | } 1390 | }, 1391 | "through2": { 1392 | "version": "0.6.5", 1393 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 1394 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 1395 | "dev": true, 1396 | "requires": { 1397 | "readable-stream": "1.0.34", 1398 | "xtend": "4.0.1" 1399 | } 1400 | } 1401 | } 1402 | }, 1403 | "glob-watcher": { 1404 | "version": "0.0.6", 1405 | "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", 1406 | "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", 1407 | "dev": true, 1408 | "requires": { 1409 | "gaze": "0.5.2" 1410 | } 1411 | }, 1412 | "glob2base": { 1413 | "version": "0.0.12", 1414 | "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", 1415 | "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", 1416 | "dev": true, 1417 | "requires": { 1418 | "find-index": "0.1.1" 1419 | } 1420 | }, 1421 | "global-modules": { 1422 | "version": "0.2.3", 1423 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", 1424 | "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", 1425 | "dev": true, 1426 | "requires": { 1427 | "global-prefix": "0.1.5", 1428 | "is-windows": "0.2.0" 1429 | } 1430 | }, 1431 | "global-prefix": { 1432 | "version": "0.1.5", 1433 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", 1434 | "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", 1435 | "dev": true, 1436 | "requires": { 1437 | "homedir-polyfill": "1.0.1", 1438 | "ini": "1.3.4", 1439 | "is-windows": "0.2.0", 1440 | "which": "1.2.14" 1441 | } 1442 | }, 1443 | "globule": { 1444 | "version": "0.1.0", 1445 | "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", 1446 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", 1447 | "dev": true, 1448 | "requires": { 1449 | "glob": "3.1.21", 1450 | "lodash": "1.0.2", 1451 | "minimatch": "0.2.14" 1452 | }, 1453 | "dependencies": { 1454 | "glob": { 1455 | "version": "3.1.21", 1456 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 1457 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", 1458 | "dev": true, 1459 | "requires": { 1460 | "graceful-fs": "1.2.3", 1461 | "inherits": "1.0.2", 1462 | "minimatch": "0.2.14" 1463 | } 1464 | }, 1465 | "graceful-fs": { 1466 | "version": "1.2.3", 1467 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 1468 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", 1469 | "dev": true 1470 | }, 1471 | "inherits": { 1472 | "version": "1.0.2", 1473 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 1474 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", 1475 | "dev": true 1476 | }, 1477 | "minimatch": { 1478 | "version": "0.2.14", 1479 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 1480 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 1481 | "dev": true, 1482 | "requires": { 1483 | "lru-cache": "2.7.3", 1484 | "sigmund": "1.0.1" 1485 | } 1486 | } 1487 | } 1488 | }, 1489 | "glogg": { 1490 | "version": "1.0.0", 1491 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", 1492 | "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", 1493 | "dev": true, 1494 | "requires": { 1495 | "sparkles": "1.0.0" 1496 | } 1497 | }, 1498 | "graceful-fs": { 1499 | "version": "3.0.11", 1500 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", 1501 | "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", 1502 | "dev": true, 1503 | "requires": { 1504 | "natives": "1.1.0" 1505 | } 1506 | }, 1507 | "graceful-readlink": { 1508 | "version": "1.0.1", 1509 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 1510 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 1511 | "dev": true 1512 | }, 1513 | "gulp": { 1514 | "version": "3.9.1", 1515 | "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", 1516 | "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", 1517 | "dev": true, 1518 | "requires": { 1519 | "archy": "1.0.0", 1520 | "chalk": "1.1.3", 1521 | "deprecated": "0.0.1", 1522 | "gulp-util": "3.0.8", 1523 | "interpret": "1.0.3", 1524 | "liftoff": "2.3.0", 1525 | "minimist": "1.2.0", 1526 | "orchestrator": "0.3.8", 1527 | "pretty-hrtime": "1.0.3", 1528 | "semver": "4.3.6", 1529 | "tildify": "1.2.0", 1530 | "v8flags": "2.1.1", 1531 | "vinyl-fs": "0.3.14" 1532 | } 1533 | }, 1534 | "gulp-concat": { 1535 | "version": "2.6.1", 1536 | "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", 1537 | "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", 1538 | "dev": true, 1539 | "requires": { 1540 | "concat-with-sourcemaps": "1.0.4", 1541 | "through2": "2.0.3", 1542 | "vinyl": "2.1.0" 1543 | }, 1544 | "dependencies": { 1545 | "clone": { 1546 | "version": "2.1.1", 1547 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", 1548 | "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", 1549 | "dev": true 1550 | }, 1551 | "clone-stats": { 1552 | "version": "1.0.0", 1553 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 1554 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", 1555 | "dev": true 1556 | }, 1557 | "replace-ext": { 1558 | "version": "1.0.0", 1559 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", 1560 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", 1561 | "dev": true 1562 | }, 1563 | "vinyl": { 1564 | "version": "2.1.0", 1565 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", 1566 | "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", 1567 | "dev": true, 1568 | "requires": { 1569 | "clone": "2.1.1", 1570 | "clone-buffer": "1.0.0", 1571 | "clone-stats": "1.0.0", 1572 | "cloneable-readable": "1.0.0", 1573 | "remove-trailing-separator": "1.0.2", 1574 | "replace-ext": "1.0.0" 1575 | } 1576 | } 1577 | } 1578 | }, 1579 | "gulp-ignore": { 1580 | "version": "2.0.2", 1581 | "resolved": "https://registry.npmjs.org/gulp-ignore/-/gulp-ignore-2.0.2.tgz", 1582 | "integrity": "sha1-XC6ioKRALgq0orzRLv2SlTRNePI=", 1583 | "dev": true, 1584 | "requires": { 1585 | "gulp-match": "1.0.3", 1586 | "through2": "2.0.3" 1587 | } 1588 | }, 1589 | "gulp-match": { 1590 | "version": "1.0.3", 1591 | "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.0.3.tgz", 1592 | "integrity": "sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4=", 1593 | "dev": true, 1594 | "requires": { 1595 | "minimatch": "3.0.4" 1596 | }, 1597 | "dependencies": { 1598 | "minimatch": { 1599 | "version": "3.0.4", 1600 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1601 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1602 | "dev": true, 1603 | "requires": { 1604 | "brace-expansion": "1.1.8" 1605 | } 1606 | } 1607 | } 1608 | }, 1609 | "gulp-plumber": { 1610 | "version": "1.1.0", 1611 | "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.1.0.tgz", 1612 | "integrity": "sha1-8SF2wtBCL2AwbCQv/2oBo5T6ugk=", 1613 | "dev": true, 1614 | "requires": { 1615 | "gulp-util": "3.0.8", 1616 | "through2": "2.0.3" 1617 | } 1618 | }, 1619 | "gulp-rename": { 1620 | "version": "1.2.2", 1621 | "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", 1622 | "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", 1623 | "dev": true 1624 | }, 1625 | "gulp-rimraf": { 1626 | "version": "0.2.1", 1627 | "resolved": "https://registry.npmjs.org/gulp-rimraf/-/gulp-rimraf-0.2.1.tgz", 1628 | "integrity": "sha1-nxeDrcXUiQ2KG+34NLyYnipWUDA=", 1629 | "dev": true, 1630 | "requires": { 1631 | "gulp-util": "3.0.8", 1632 | "rimraf": "2.6.1", 1633 | "through2": "2.0.3" 1634 | } 1635 | }, 1636 | "gulp-uglify": { 1637 | "version": "3.0.0", 1638 | "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", 1639 | "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", 1640 | "dev": true, 1641 | "requires": { 1642 | "gulplog": "1.0.0", 1643 | "has-gulplog": "0.1.0", 1644 | "lodash": "4.17.4", 1645 | "make-error-cause": "1.2.2", 1646 | "through2": "2.0.3", 1647 | "uglify-js": "3.0.24", 1648 | "vinyl-sourcemaps-apply": "0.2.1" 1649 | }, 1650 | "dependencies": { 1651 | "lodash": { 1652 | "version": "4.17.4", 1653 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 1654 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 1655 | "dev": true 1656 | } 1657 | } 1658 | }, 1659 | "gulp-util": { 1660 | "version": "3.0.8", 1661 | "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 1662 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", 1663 | "dev": true, 1664 | "requires": { 1665 | "array-differ": "1.0.0", 1666 | "array-uniq": "1.0.3", 1667 | "beeper": "1.1.1", 1668 | "chalk": "1.1.3", 1669 | "dateformat": "2.0.0", 1670 | "fancy-log": "1.3.0", 1671 | "gulplog": "1.0.0", 1672 | "has-gulplog": "0.1.0", 1673 | "lodash._reescape": "3.0.0", 1674 | "lodash._reevaluate": "3.0.0", 1675 | "lodash._reinterpolate": "3.0.0", 1676 | "lodash.template": "3.6.2", 1677 | "minimist": "1.2.0", 1678 | "multipipe": "0.1.2", 1679 | "object-assign": "3.0.0", 1680 | "replace-ext": "0.0.1", 1681 | "through2": "2.0.3", 1682 | "vinyl": "0.5.3" 1683 | } 1684 | }, 1685 | "gulp-watch": { 1686 | "version": "4.3.11", 1687 | "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-4.3.11.tgz", 1688 | "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", 1689 | "dev": true, 1690 | "requires": { 1691 | "anymatch": "1.3.0", 1692 | "chokidar": "1.7.0", 1693 | "glob-parent": "3.1.0", 1694 | "gulp-util": "3.0.8", 1695 | "object-assign": "4.1.1", 1696 | "path-is-absolute": "1.0.1", 1697 | "readable-stream": "2.3.3", 1698 | "slash": "1.0.0", 1699 | "vinyl": "1.2.0", 1700 | "vinyl-file": "2.0.0" 1701 | }, 1702 | "dependencies": { 1703 | "glob-parent": { 1704 | "version": "3.1.0", 1705 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 1706 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 1707 | "dev": true, 1708 | "requires": { 1709 | "is-glob": "3.1.0", 1710 | "path-dirname": "1.0.2" 1711 | } 1712 | }, 1713 | "is-extglob": { 1714 | "version": "2.1.1", 1715 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1716 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1717 | "dev": true 1718 | }, 1719 | "is-glob": { 1720 | "version": "3.1.0", 1721 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1722 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1723 | "dev": true, 1724 | "requires": { 1725 | "is-extglob": "2.1.1" 1726 | } 1727 | }, 1728 | "isarray": { 1729 | "version": "1.0.0", 1730 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1731 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1732 | "dev": true 1733 | }, 1734 | "object-assign": { 1735 | "version": "4.1.1", 1736 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1737 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1738 | "dev": true 1739 | }, 1740 | "readable-stream": { 1741 | "version": "2.3.3", 1742 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1743 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1744 | "dev": true, 1745 | "requires": { 1746 | "core-util-is": "1.0.2", 1747 | "inherits": "2.0.3", 1748 | "isarray": "1.0.0", 1749 | "process-nextick-args": "1.0.7", 1750 | "safe-buffer": "5.1.1", 1751 | "string_decoder": "1.0.3", 1752 | "util-deprecate": "1.0.2" 1753 | } 1754 | }, 1755 | "string_decoder": { 1756 | "version": "1.0.3", 1757 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1758 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1759 | "dev": true, 1760 | "requires": { 1761 | "safe-buffer": "5.1.1" 1762 | } 1763 | }, 1764 | "vinyl": { 1765 | "version": "1.2.0", 1766 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 1767 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 1768 | "dev": true, 1769 | "requires": { 1770 | "clone": "1.0.2", 1771 | "clone-stats": "0.0.1", 1772 | "replace-ext": "0.0.1" 1773 | } 1774 | } 1775 | } 1776 | }, 1777 | "gulplog": { 1778 | "version": "1.0.0", 1779 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 1780 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 1781 | "dev": true, 1782 | "requires": { 1783 | "glogg": "1.0.0" 1784 | } 1785 | }, 1786 | "has-ansi": { 1787 | "version": "2.0.0", 1788 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1789 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1790 | "dev": true, 1791 | "requires": { 1792 | "ansi-regex": "2.1.1" 1793 | } 1794 | }, 1795 | "has-gulplog": { 1796 | "version": "0.1.0", 1797 | "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 1798 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", 1799 | "dev": true, 1800 | "requires": { 1801 | "sparkles": "1.0.0" 1802 | } 1803 | }, 1804 | "homedir-polyfill": { 1805 | "version": "1.0.1", 1806 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 1807 | "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", 1808 | "dev": true, 1809 | "requires": { 1810 | "parse-passwd": "1.0.0" 1811 | } 1812 | }, 1813 | "inflight": { 1814 | "version": "1.0.6", 1815 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1816 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1817 | "dev": true, 1818 | "requires": { 1819 | "once": "1.3.3", 1820 | "wrappy": "1.0.2" 1821 | } 1822 | }, 1823 | "inherits": { 1824 | "version": "2.0.3", 1825 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1826 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1827 | "dev": true 1828 | }, 1829 | "ini": { 1830 | "version": "1.3.4", 1831 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 1832 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 1833 | "dev": true 1834 | }, 1835 | "interpret": { 1836 | "version": "1.0.3", 1837 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", 1838 | "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", 1839 | "dev": true 1840 | }, 1841 | "is-absolute": { 1842 | "version": "0.2.6", 1843 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", 1844 | "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", 1845 | "dev": true, 1846 | "requires": { 1847 | "is-relative": "0.2.1", 1848 | "is-windows": "0.2.0" 1849 | } 1850 | }, 1851 | "is-binary-path": { 1852 | "version": "1.0.1", 1853 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1854 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1855 | "dev": true, 1856 | "requires": { 1857 | "binary-extensions": "1.8.0" 1858 | } 1859 | }, 1860 | "is-buffer": { 1861 | "version": "1.1.5", 1862 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 1863 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 1864 | "dev": true 1865 | }, 1866 | "is-dotfile": { 1867 | "version": "1.0.3", 1868 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1869 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1870 | "dev": true 1871 | }, 1872 | "is-equal-shallow": { 1873 | "version": "0.1.3", 1874 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1875 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1876 | "dev": true, 1877 | "requires": { 1878 | "is-primitive": "2.0.0" 1879 | } 1880 | }, 1881 | "is-extendable": { 1882 | "version": "0.1.1", 1883 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1884 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1885 | "dev": true 1886 | }, 1887 | "is-extglob": { 1888 | "version": "1.0.0", 1889 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1890 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1891 | "dev": true 1892 | }, 1893 | "is-glob": { 1894 | "version": "2.0.1", 1895 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1896 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1897 | "dev": true, 1898 | "requires": { 1899 | "is-extglob": "1.0.0" 1900 | } 1901 | }, 1902 | "is-number": { 1903 | "version": "2.1.0", 1904 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1905 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1906 | "dev": true, 1907 | "requires": { 1908 | "kind-of": "3.2.2" 1909 | } 1910 | }, 1911 | "is-plain-object": { 1912 | "version": "2.0.4", 1913 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1914 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1915 | "dev": true, 1916 | "requires": { 1917 | "isobject": "3.0.1" 1918 | }, 1919 | "dependencies": { 1920 | "isobject": { 1921 | "version": "3.0.1", 1922 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1923 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1924 | "dev": true 1925 | } 1926 | } 1927 | }, 1928 | "is-posix-bracket": { 1929 | "version": "0.1.1", 1930 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1931 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1932 | "dev": true 1933 | }, 1934 | "is-primitive": { 1935 | "version": "2.0.0", 1936 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1937 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1938 | "dev": true 1939 | }, 1940 | "is-relative": { 1941 | "version": "0.2.1", 1942 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", 1943 | "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", 1944 | "dev": true, 1945 | "requires": { 1946 | "is-unc-path": "0.1.2" 1947 | } 1948 | }, 1949 | "is-unc-path": { 1950 | "version": "0.1.2", 1951 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", 1952 | "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", 1953 | "dev": true, 1954 | "requires": { 1955 | "unc-path-regex": "0.1.2" 1956 | } 1957 | }, 1958 | "is-utf8": { 1959 | "version": "0.2.1", 1960 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1961 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1962 | "dev": true 1963 | }, 1964 | "is-windows": { 1965 | "version": "0.2.0", 1966 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", 1967 | "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", 1968 | "dev": true 1969 | }, 1970 | "isarray": { 1971 | "version": "0.0.1", 1972 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1973 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1974 | "dev": true 1975 | }, 1976 | "isexe": { 1977 | "version": "2.0.0", 1978 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1979 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1980 | "dev": true 1981 | }, 1982 | "isobject": { 1983 | "version": "2.1.0", 1984 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1985 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1986 | "dev": true, 1987 | "requires": { 1988 | "isarray": "1.0.0" 1989 | }, 1990 | "dependencies": { 1991 | "isarray": { 1992 | "version": "1.0.0", 1993 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1994 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1995 | "dev": true 1996 | } 1997 | } 1998 | }, 1999 | "kind-of": { 2000 | "version": "3.2.2", 2001 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2002 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2003 | "dev": true, 2004 | "requires": { 2005 | "is-buffer": "1.1.5" 2006 | } 2007 | }, 2008 | "liftoff": { 2009 | "version": "2.3.0", 2010 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", 2011 | "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", 2012 | "dev": true, 2013 | "requires": { 2014 | "extend": "3.0.1", 2015 | "findup-sync": "0.4.3", 2016 | "fined": "1.1.0", 2017 | "flagged-respawn": "0.3.2", 2018 | "lodash.isplainobject": "4.0.6", 2019 | "lodash.isstring": "4.0.1", 2020 | "lodash.mapvalues": "4.6.0", 2021 | "rechoir": "0.6.2", 2022 | "resolve": "1.3.3" 2023 | } 2024 | }, 2025 | "lodash": { 2026 | "version": "1.0.2", 2027 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 2028 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 2029 | "dev": true 2030 | }, 2031 | "lodash._basecopy": { 2032 | "version": "3.0.1", 2033 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 2034 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 2035 | "dev": true 2036 | }, 2037 | "lodash._basetostring": { 2038 | "version": "3.0.1", 2039 | "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", 2040 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", 2041 | "dev": true 2042 | }, 2043 | "lodash._basevalues": { 2044 | "version": "3.0.0", 2045 | "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", 2046 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", 2047 | "dev": true 2048 | }, 2049 | "lodash._getnative": { 2050 | "version": "3.9.1", 2051 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 2052 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 2053 | "dev": true 2054 | }, 2055 | "lodash._isiterateecall": { 2056 | "version": "3.0.9", 2057 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 2058 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 2059 | "dev": true 2060 | }, 2061 | "lodash._reescape": { 2062 | "version": "3.0.0", 2063 | "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", 2064 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", 2065 | "dev": true 2066 | }, 2067 | "lodash._reevaluate": { 2068 | "version": "3.0.0", 2069 | "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", 2070 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", 2071 | "dev": true 2072 | }, 2073 | "lodash._reinterpolate": { 2074 | "version": "3.0.0", 2075 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 2076 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", 2077 | "dev": true 2078 | }, 2079 | "lodash._root": { 2080 | "version": "3.0.1", 2081 | "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", 2082 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", 2083 | "dev": true 2084 | }, 2085 | "lodash.escape": { 2086 | "version": "3.2.0", 2087 | "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 2088 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", 2089 | "dev": true, 2090 | "requires": { 2091 | "lodash._root": "3.0.1" 2092 | } 2093 | }, 2094 | "lodash.isarguments": { 2095 | "version": "3.1.0", 2096 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 2097 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 2098 | "dev": true 2099 | }, 2100 | "lodash.isarray": { 2101 | "version": "3.0.4", 2102 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 2103 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 2104 | "dev": true 2105 | }, 2106 | "lodash.isplainobject": { 2107 | "version": "4.0.6", 2108 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 2109 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", 2110 | "dev": true 2111 | }, 2112 | "lodash.isstring": { 2113 | "version": "4.0.1", 2114 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 2115 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", 2116 | "dev": true 2117 | }, 2118 | "lodash.keys": { 2119 | "version": "3.1.2", 2120 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 2121 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 2122 | "dev": true, 2123 | "requires": { 2124 | "lodash._getnative": "3.9.1", 2125 | "lodash.isarguments": "3.1.0", 2126 | "lodash.isarray": "3.0.4" 2127 | } 2128 | }, 2129 | "lodash.mapvalues": { 2130 | "version": "4.6.0", 2131 | "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", 2132 | "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", 2133 | "dev": true 2134 | }, 2135 | "lodash.restparam": { 2136 | "version": "3.6.1", 2137 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 2138 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", 2139 | "dev": true 2140 | }, 2141 | "lodash.template": { 2142 | "version": "3.6.2", 2143 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 2144 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", 2145 | "dev": true, 2146 | "requires": { 2147 | "lodash._basecopy": "3.0.1", 2148 | "lodash._basetostring": "3.0.1", 2149 | "lodash._basevalues": "3.0.0", 2150 | "lodash._isiterateecall": "3.0.9", 2151 | "lodash._reinterpolate": "3.0.0", 2152 | "lodash.escape": "3.2.0", 2153 | "lodash.keys": "3.1.2", 2154 | "lodash.restparam": "3.6.1", 2155 | "lodash.templatesettings": "3.1.1" 2156 | } 2157 | }, 2158 | "lodash.templatesettings": { 2159 | "version": "3.1.1", 2160 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", 2161 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", 2162 | "dev": true, 2163 | "requires": { 2164 | "lodash._reinterpolate": "3.0.0", 2165 | "lodash.escape": "3.2.0" 2166 | } 2167 | }, 2168 | "lru-cache": { 2169 | "version": "2.7.3", 2170 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 2171 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 2172 | "dev": true 2173 | }, 2174 | "make-error": { 2175 | "version": "1.3.0", 2176 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", 2177 | "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", 2178 | "dev": true 2179 | }, 2180 | "make-error-cause": { 2181 | "version": "1.2.2", 2182 | "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", 2183 | "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", 2184 | "dev": true, 2185 | "requires": { 2186 | "make-error": "1.3.0" 2187 | } 2188 | }, 2189 | "map-cache": { 2190 | "version": "0.2.2", 2191 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2192 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2193 | "dev": true 2194 | }, 2195 | "micromatch": { 2196 | "version": "2.3.11", 2197 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 2198 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 2199 | "dev": true, 2200 | "requires": { 2201 | "arr-diff": "2.0.0", 2202 | "array-unique": "0.2.1", 2203 | "braces": "1.8.5", 2204 | "expand-brackets": "0.1.5", 2205 | "extglob": "0.3.2", 2206 | "filename-regex": "2.0.1", 2207 | "is-extglob": "1.0.0", 2208 | "is-glob": "2.0.1", 2209 | "kind-of": "3.2.2", 2210 | "normalize-path": "2.1.1", 2211 | "object.omit": "2.0.1", 2212 | "parse-glob": "3.0.4", 2213 | "regex-cache": "0.4.3" 2214 | } 2215 | }, 2216 | "minimatch": { 2217 | "version": "2.0.10", 2218 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 2219 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 2220 | "dev": true, 2221 | "requires": { 2222 | "brace-expansion": "1.1.8" 2223 | } 2224 | }, 2225 | "minimist": { 2226 | "version": "1.2.0", 2227 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2228 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2229 | "dev": true 2230 | }, 2231 | "mkdirp": { 2232 | "version": "0.5.1", 2233 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2234 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2235 | "dev": true, 2236 | "requires": { 2237 | "minimist": "0.0.8" 2238 | }, 2239 | "dependencies": { 2240 | "minimist": { 2241 | "version": "0.0.8", 2242 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2243 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2244 | "dev": true 2245 | } 2246 | } 2247 | }, 2248 | "multipipe": { 2249 | "version": "0.1.2", 2250 | "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 2251 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", 2252 | "dev": true, 2253 | "requires": { 2254 | "duplexer2": "0.0.2" 2255 | } 2256 | }, 2257 | "nan": { 2258 | "version": "2.6.2", 2259 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 2260 | "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", 2261 | "dev": true, 2262 | "optional": true 2263 | }, 2264 | "natives": { 2265 | "version": "1.1.0", 2266 | "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", 2267 | "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", 2268 | "dev": true 2269 | }, 2270 | "normalize-path": { 2271 | "version": "2.1.1", 2272 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2273 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2274 | "dev": true, 2275 | "requires": { 2276 | "remove-trailing-separator": "1.0.2" 2277 | } 2278 | }, 2279 | "object-assign": { 2280 | "version": "3.0.0", 2281 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 2282 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", 2283 | "dev": true 2284 | }, 2285 | "object.defaults": { 2286 | "version": "1.1.0", 2287 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 2288 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 2289 | "dev": true, 2290 | "requires": { 2291 | "array-each": "1.0.1", 2292 | "array-slice": "1.0.0", 2293 | "for-own": "1.0.0", 2294 | "isobject": "3.0.1" 2295 | }, 2296 | "dependencies": { 2297 | "for-own": { 2298 | "version": "1.0.0", 2299 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 2300 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 2301 | "dev": true, 2302 | "requires": { 2303 | "for-in": "1.0.2" 2304 | } 2305 | }, 2306 | "isobject": { 2307 | "version": "3.0.1", 2308 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2309 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2310 | "dev": true 2311 | } 2312 | } 2313 | }, 2314 | "object.omit": { 2315 | "version": "2.0.1", 2316 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2317 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2318 | "dev": true, 2319 | "requires": { 2320 | "for-own": "0.1.5", 2321 | "is-extendable": "0.1.1" 2322 | } 2323 | }, 2324 | "object.pick": { 2325 | "version": "1.2.0", 2326 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", 2327 | "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", 2328 | "dev": true, 2329 | "requires": { 2330 | "isobject": "2.1.0" 2331 | } 2332 | }, 2333 | "once": { 2334 | "version": "1.3.3", 2335 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 2336 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 2337 | "dev": true, 2338 | "requires": { 2339 | "wrappy": "1.0.2" 2340 | } 2341 | }, 2342 | "orchestrator": { 2343 | "version": "0.3.8", 2344 | "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", 2345 | "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", 2346 | "dev": true, 2347 | "requires": { 2348 | "end-of-stream": "0.1.5", 2349 | "sequencify": "0.0.7", 2350 | "stream-consume": "0.1.0" 2351 | } 2352 | }, 2353 | "ordered-read-streams": { 2354 | "version": "0.1.0", 2355 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", 2356 | "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", 2357 | "dev": true 2358 | }, 2359 | "os-homedir": { 2360 | "version": "1.0.2", 2361 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2362 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2363 | "dev": true 2364 | }, 2365 | "parse-filepath": { 2366 | "version": "1.0.1", 2367 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", 2368 | "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", 2369 | "dev": true, 2370 | "requires": { 2371 | "is-absolute": "0.2.6", 2372 | "map-cache": "0.2.2", 2373 | "path-root": "0.1.1" 2374 | } 2375 | }, 2376 | "parse-glob": { 2377 | "version": "3.0.4", 2378 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2379 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2380 | "dev": true, 2381 | "requires": { 2382 | "glob-base": "0.3.0", 2383 | "is-dotfile": "1.0.3", 2384 | "is-extglob": "1.0.0", 2385 | "is-glob": "2.0.1" 2386 | } 2387 | }, 2388 | "parse-passwd": { 2389 | "version": "1.0.0", 2390 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 2391 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 2392 | "dev": true 2393 | }, 2394 | "path-dirname": { 2395 | "version": "1.0.2", 2396 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2397 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2398 | "dev": true 2399 | }, 2400 | "path-is-absolute": { 2401 | "version": "1.0.1", 2402 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2403 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2404 | "dev": true 2405 | }, 2406 | "path-parse": { 2407 | "version": "1.0.5", 2408 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 2409 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 2410 | "dev": true 2411 | }, 2412 | "path-root": { 2413 | "version": "0.1.1", 2414 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 2415 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 2416 | "dev": true, 2417 | "requires": { 2418 | "path-root-regex": "0.1.2" 2419 | } 2420 | }, 2421 | "path-root-regex": { 2422 | "version": "0.1.2", 2423 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 2424 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 2425 | "dev": true 2426 | }, 2427 | "pify": { 2428 | "version": "2.3.0", 2429 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2430 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2431 | "dev": true 2432 | }, 2433 | "pinkie": { 2434 | "version": "2.0.4", 2435 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2436 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2437 | "dev": true 2438 | }, 2439 | "pinkie-promise": { 2440 | "version": "2.0.1", 2441 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2442 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2443 | "dev": true, 2444 | "requires": { 2445 | "pinkie": "2.0.4" 2446 | } 2447 | }, 2448 | "preserve": { 2449 | "version": "0.2.0", 2450 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2451 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2452 | "dev": true 2453 | }, 2454 | "pretty-hrtime": { 2455 | "version": "1.0.3", 2456 | "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 2457 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 2458 | "dev": true 2459 | }, 2460 | "process-nextick-args": { 2461 | "version": "1.0.7", 2462 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 2463 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 2464 | "dev": true 2465 | }, 2466 | "randomatic": { 2467 | "version": "1.1.7", 2468 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 2469 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 2470 | "dev": true, 2471 | "requires": { 2472 | "is-number": "3.0.0", 2473 | "kind-of": "4.0.0" 2474 | }, 2475 | "dependencies": { 2476 | "is-number": { 2477 | "version": "3.0.0", 2478 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2479 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2480 | "dev": true, 2481 | "requires": { 2482 | "kind-of": "3.2.2" 2483 | }, 2484 | "dependencies": { 2485 | "kind-of": { 2486 | "version": "3.2.2", 2487 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2488 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2489 | "dev": true, 2490 | "requires": { 2491 | "is-buffer": "1.1.5" 2492 | } 2493 | } 2494 | } 2495 | }, 2496 | "kind-of": { 2497 | "version": "4.0.0", 2498 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2499 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2500 | "dev": true, 2501 | "requires": { 2502 | "is-buffer": "1.1.5" 2503 | } 2504 | } 2505 | } 2506 | }, 2507 | "readable-stream": { 2508 | "version": "1.1.14", 2509 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2510 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 2511 | "dev": true, 2512 | "requires": { 2513 | "core-util-is": "1.0.2", 2514 | "inherits": "2.0.3", 2515 | "isarray": "0.0.1", 2516 | "string_decoder": "0.10.31" 2517 | } 2518 | }, 2519 | "readdirp": { 2520 | "version": "2.1.0", 2521 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2522 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2523 | "dev": true, 2524 | "requires": { 2525 | "graceful-fs": "4.1.11", 2526 | "minimatch": "3.0.4", 2527 | "readable-stream": "2.3.3", 2528 | "set-immediate-shim": "1.0.1" 2529 | }, 2530 | "dependencies": { 2531 | "graceful-fs": { 2532 | "version": "4.1.11", 2533 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 2534 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2535 | "dev": true 2536 | }, 2537 | "isarray": { 2538 | "version": "1.0.0", 2539 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2540 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2541 | "dev": true 2542 | }, 2543 | "minimatch": { 2544 | "version": "3.0.4", 2545 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2546 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2547 | "dev": true, 2548 | "requires": { 2549 | "brace-expansion": "1.1.8" 2550 | } 2551 | }, 2552 | "readable-stream": { 2553 | "version": "2.3.3", 2554 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2555 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2556 | "dev": true, 2557 | "requires": { 2558 | "core-util-is": "1.0.2", 2559 | "inherits": "2.0.3", 2560 | "isarray": "1.0.0", 2561 | "process-nextick-args": "1.0.7", 2562 | "safe-buffer": "5.1.1", 2563 | "string_decoder": "1.0.3", 2564 | "util-deprecate": "1.0.2" 2565 | } 2566 | }, 2567 | "string_decoder": { 2568 | "version": "1.0.3", 2569 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2570 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2571 | "dev": true, 2572 | "requires": { 2573 | "safe-buffer": "5.1.1" 2574 | } 2575 | } 2576 | } 2577 | }, 2578 | "rechoir": { 2579 | "version": "0.6.2", 2580 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 2581 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 2582 | "dev": true, 2583 | "requires": { 2584 | "resolve": "1.3.3" 2585 | } 2586 | }, 2587 | "regex-cache": { 2588 | "version": "0.4.3", 2589 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 2590 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 2591 | "dev": true, 2592 | "requires": { 2593 | "is-equal-shallow": "0.1.3", 2594 | "is-primitive": "2.0.0" 2595 | } 2596 | }, 2597 | "remove-trailing-separator": { 2598 | "version": "1.0.2", 2599 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", 2600 | "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", 2601 | "dev": true 2602 | }, 2603 | "repeat-element": { 2604 | "version": "1.1.2", 2605 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2606 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2607 | "dev": true 2608 | }, 2609 | "repeat-string": { 2610 | "version": "1.6.1", 2611 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2612 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2613 | "dev": true 2614 | }, 2615 | "replace-ext": { 2616 | "version": "0.0.1", 2617 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", 2618 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", 2619 | "dev": true 2620 | }, 2621 | "resolve": { 2622 | "version": "1.3.3", 2623 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", 2624 | "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", 2625 | "dev": true, 2626 | "requires": { 2627 | "path-parse": "1.0.5" 2628 | } 2629 | }, 2630 | "resolve-dir": { 2631 | "version": "0.1.1", 2632 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", 2633 | "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", 2634 | "dev": true, 2635 | "requires": { 2636 | "expand-tilde": "1.2.2", 2637 | "global-modules": "0.2.3" 2638 | } 2639 | }, 2640 | "rimraf": { 2641 | "version": "2.6.1", 2642 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 2643 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", 2644 | "dev": true, 2645 | "requires": { 2646 | "glob": "7.1.2" 2647 | }, 2648 | "dependencies": { 2649 | "glob": { 2650 | "version": "7.1.2", 2651 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2652 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2653 | "dev": true, 2654 | "requires": { 2655 | "fs.realpath": "1.0.0", 2656 | "inflight": "1.0.6", 2657 | "inherits": "2.0.3", 2658 | "minimatch": "3.0.4", 2659 | "once": "1.3.3", 2660 | "path-is-absolute": "1.0.1" 2661 | } 2662 | }, 2663 | "minimatch": { 2664 | "version": "3.0.4", 2665 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2666 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2667 | "dev": true, 2668 | "requires": { 2669 | "brace-expansion": "1.1.8" 2670 | } 2671 | } 2672 | } 2673 | }, 2674 | "safe-buffer": { 2675 | "version": "5.1.1", 2676 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2677 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 2678 | "dev": true 2679 | }, 2680 | "semver": { 2681 | "version": "4.3.6", 2682 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 2683 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", 2684 | "dev": true 2685 | }, 2686 | "sequencify": { 2687 | "version": "0.0.7", 2688 | "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", 2689 | "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", 2690 | "dev": true 2691 | }, 2692 | "set-immediate-shim": { 2693 | "version": "1.0.1", 2694 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2695 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2696 | "dev": true 2697 | }, 2698 | "sigmund": { 2699 | "version": "1.0.1", 2700 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2701 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 2702 | "dev": true 2703 | }, 2704 | "slash": { 2705 | "version": "1.0.0", 2706 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 2707 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 2708 | "dev": true 2709 | }, 2710 | "source-map": { 2711 | "version": "0.5.6", 2712 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 2713 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 2714 | "dev": true 2715 | }, 2716 | "sparkles": { 2717 | "version": "1.0.0", 2718 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", 2719 | "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", 2720 | "dev": true 2721 | }, 2722 | "stream-consume": { 2723 | "version": "0.1.0", 2724 | "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", 2725 | "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", 2726 | "dev": true 2727 | }, 2728 | "string_decoder": { 2729 | "version": "0.10.31", 2730 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2731 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2732 | "dev": true 2733 | }, 2734 | "strip-ansi": { 2735 | "version": "3.0.1", 2736 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2737 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2738 | "dev": true, 2739 | "requires": { 2740 | "ansi-regex": "2.1.1" 2741 | } 2742 | }, 2743 | "strip-bom": { 2744 | "version": "1.0.0", 2745 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", 2746 | "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", 2747 | "dev": true, 2748 | "requires": { 2749 | "first-chunk-stream": "1.0.0", 2750 | "is-utf8": "0.2.1" 2751 | } 2752 | }, 2753 | "strip-bom-stream": { 2754 | "version": "2.0.0", 2755 | "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", 2756 | "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", 2757 | "dev": true, 2758 | "requires": { 2759 | "first-chunk-stream": "2.0.0", 2760 | "strip-bom": "2.0.0" 2761 | }, 2762 | "dependencies": { 2763 | "first-chunk-stream": { 2764 | "version": "2.0.0", 2765 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", 2766 | "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", 2767 | "dev": true, 2768 | "requires": { 2769 | "readable-stream": "2.3.3" 2770 | } 2771 | }, 2772 | "isarray": { 2773 | "version": "1.0.0", 2774 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2775 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2776 | "dev": true 2777 | }, 2778 | "readable-stream": { 2779 | "version": "2.3.3", 2780 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2781 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2782 | "dev": true, 2783 | "requires": { 2784 | "core-util-is": "1.0.2", 2785 | "inherits": "2.0.3", 2786 | "isarray": "1.0.0", 2787 | "process-nextick-args": "1.0.7", 2788 | "safe-buffer": "5.1.1", 2789 | "string_decoder": "1.0.3", 2790 | "util-deprecate": "1.0.2" 2791 | } 2792 | }, 2793 | "string_decoder": { 2794 | "version": "1.0.3", 2795 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2796 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2797 | "dev": true, 2798 | "requires": { 2799 | "safe-buffer": "5.1.1" 2800 | } 2801 | }, 2802 | "strip-bom": { 2803 | "version": "2.0.0", 2804 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2805 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2806 | "dev": true, 2807 | "requires": { 2808 | "is-utf8": "0.2.1" 2809 | } 2810 | } 2811 | } 2812 | }, 2813 | "supports-color": { 2814 | "version": "2.0.0", 2815 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2816 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2817 | "dev": true 2818 | }, 2819 | "through2": { 2820 | "version": "2.0.3", 2821 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 2822 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 2823 | "dev": true, 2824 | "requires": { 2825 | "readable-stream": "2.3.3", 2826 | "xtend": "4.0.1" 2827 | }, 2828 | "dependencies": { 2829 | "isarray": { 2830 | "version": "1.0.0", 2831 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2832 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2833 | "dev": true 2834 | }, 2835 | "readable-stream": { 2836 | "version": "2.3.3", 2837 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2838 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2839 | "dev": true, 2840 | "requires": { 2841 | "core-util-is": "1.0.2", 2842 | "inherits": "2.0.3", 2843 | "isarray": "1.0.0", 2844 | "process-nextick-args": "1.0.7", 2845 | "safe-buffer": "5.1.1", 2846 | "string_decoder": "1.0.3", 2847 | "util-deprecate": "1.0.2" 2848 | } 2849 | }, 2850 | "string_decoder": { 2851 | "version": "1.0.3", 2852 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2853 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2854 | "dev": true, 2855 | "requires": { 2856 | "safe-buffer": "5.1.1" 2857 | } 2858 | } 2859 | } 2860 | }, 2861 | "tildify": { 2862 | "version": "1.2.0", 2863 | "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 2864 | "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 2865 | "dev": true, 2866 | "requires": { 2867 | "os-homedir": "1.0.2" 2868 | } 2869 | }, 2870 | "time-stamp": { 2871 | "version": "1.1.0", 2872 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 2873 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 2874 | "dev": true 2875 | }, 2876 | "uglify-js": { 2877 | "version": "3.0.24", 2878 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.24.tgz", 2879 | "integrity": "sha512-IZ7l7MU2j7LIuz6IAFWBOk1dbuQ0QVQsKLffpNPKXuL8NYcFBBQ5QkvMAtfL1+oaBW16344DY4sA26GI9cXzlA==", 2880 | "dev": true, 2881 | "requires": { 2882 | "commander": "2.9.0", 2883 | "source-map": "0.5.6" 2884 | } 2885 | }, 2886 | "unc-path-regex": { 2887 | "version": "0.1.2", 2888 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2889 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2890 | "dev": true 2891 | }, 2892 | "unique-stream": { 2893 | "version": "1.0.0", 2894 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", 2895 | "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", 2896 | "dev": true 2897 | }, 2898 | "user-home": { 2899 | "version": "1.1.1", 2900 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 2901 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2902 | "dev": true 2903 | }, 2904 | "util-deprecate": { 2905 | "version": "1.0.2", 2906 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2907 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2908 | "dev": true 2909 | }, 2910 | "v8flags": { 2911 | "version": "2.1.1", 2912 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 2913 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2914 | "dev": true, 2915 | "requires": { 2916 | "user-home": "1.1.1" 2917 | } 2918 | }, 2919 | "vinyl": { 2920 | "version": "0.5.3", 2921 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", 2922 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", 2923 | "dev": true, 2924 | "requires": { 2925 | "clone": "1.0.2", 2926 | "clone-stats": "0.0.1", 2927 | "replace-ext": "0.0.1" 2928 | } 2929 | }, 2930 | "vinyl-file": { 2931 | "version": "2.0.0", 2932 | "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", 2933 | "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", 2934 | "dev": true, 2935 | "requires": { 2936 | "graceful-fs": "4.1.11", 2937 | "pify": "2.3.0", 2938 | "pinkie-promise": "2.0.1", 2939 | "strip-bom": "2.0.0", 2940 | "strip-bom-stream": "2.0.0", 2941 | "vinyl": "1.2.0" 2942 | }, 2943 | "dependencies": { 2944 | "graceful-fs": { 2945 | "version": "4.1.11", 2946 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 2947 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2948 | "dev": true 2949 | }, 2950 | "strip-bom": { 2951 | "version": "2.0.0", 2952 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2953 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2954 | "dev": true, 2955 | "requires": { 2956 | "is-utf8": "0.2.1" 2957 | } 2958 | }, 2959 | "vinyl": { 2960 | "version": "1.2.0", 2961 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 2962 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 2963 | "dev": true, 2964 | "requires": { 2965 | "clone": "1.0.2", 2966 | "clone-stats": "0.0.1", 2967 | "replace-ext": "0.0.1" 2968 | } 2969 | } 2970 | } 2971 | }, 2972 | "vinyl-fs": { 2973 | "version": "0.3.14", 2974 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", 2975 | "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", 2976 | "dev": true, 2977 | "requires": { 2978 | "defaults": "1.0.3", 2979 | "glob-stream": "3.1.18", 2980 | "glob-watcher": "0.0.6", 2981 | "graceful-fs": "3.0.11", 2982 | "mkdirp": "0.5.1", 2983 | "strip-bom": "1.0.0", 2984 | "through2": "0.6.5", 2985 | "vinyl": "0.4.6" 2986 | }, 2987 | "dependencies": { 2988 | "clone": { 2989 | "version": "0.2.0", 2990 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", 2991 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", 2992 | "dev": true 2993 | }, 2994 | "readable-stream": { 2995 | "version": "1.0.34", 2996 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2997 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2998 | "dev": true, 2999 | "requires": { 3000 | "core-util-is": "1.0.2", 3001 | "inherits": "2.0.3", 3002 | "isarray": "0.0.1", 3003 | "string_decoder": "0.10.31" 3004 | } 3005 | }, 3006 | "through2": { 3007 | "version": "0.6.5", 3008 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 3009 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 3010 | "dev": true, 3011 | "requires": { 3012 | "readable-stream": "1.0.34", 3013 | "xtend": "4.0.1" 3014 | } 3015 | }, 3016 | "vinyl": { 3017 | "version": "0.4.6", 3018 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", 3019 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", 3020 | "dev": true, 3021 | "requires": { 3022 | "clone": "0.2.0", 3023 | "clone-stats": "0.0.1" 3024 | } 3025 | } 3026 | } 3027 | }, 3028 | "vinyl-sourcemaps-apply": { 3029 | "version": "0.2.1", 3030 | "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", 3031 | "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", 3032 | "dev": true, 3033 | "requires": { 3034 | "source-map": "0.5.6" 3035 | } 3036 | }, 3037 | "which": { 3038 | "version": "1.2.14", 3039 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", 3040 | "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", 3041 | "dev": true, 3042 | "requires": { 3043 | "isexe": "2.0.0" 3044 | } 3045 | }, 3046 | "wrappy": { 3047 | "version": "1.0.2", 3048 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3049 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3050 | "dev": true 3051 | }, 3052 | "xtend": { 3053 | "version": "4.0.1", 3054 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 3055 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 3056 | "dev": true 3057 | } 3058 | } 3059 | } 3060 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "smooth-parallax", 3 | "version": "1.1.2", 4 | "description": "Parallax that doesn't suck! No jQuery required, just plain 'ol javascript. Smooth Parallax makes it easy to move objects when you scroll, being it images, divs or what-have-you.", 5 | "keywords": [ 6 | "parallax", 7 | "parallax-scrolling", 8 | "parallax-javascript-library", 9 | "background-image", 10 | "smooth-animations", 11 | "smooth-scrolling", 12 | "elements-movement", 13 | "movement" 14 | ], 15 | "main": "dist/smooth-parallax.js", 16 | "scripts": { 17 | "test": "echo \"Error: no test specified\" && exit 1" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/diegoversiani/smooth-parallax.git" 22 | }, 23 | "author": "Diego Versiani", 24 | "license": "MIT", 25 | "bugs": { 26 | "url": "https://github.com/diegoversiani/smooth-parallax/issues" 27 | }, 28 | "homepage": "https://diegoversiani.me/smooth-parallax", 29 | "devDependencies": { 30 | "gulp": "^3.9.1", 31 | "gulp-concat": "^2.6.1", 32 | "gulp-ignore": "^2.0.2", 33 | "gulp-plumber": "^1.1.0", 34 | "gulp-rename": "^1.2.2", 35 | "gulp-rimraf": "^0.2.1", 36 | "gulp-uglify": "^3.0.0", 37 | "gulp-watch": "^4.3.11" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/smooth-parallax-src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SmoothParallax 1.1.2 3 | * 4 | * File smooth-parallax.js. 5 | * 6 | * Yet another parallax script. Smooth parallax is intended to make it a lot easier to 7 | * make objects move vertically or horizontally when scroll, being it images, 8 | * divs or what-have-you. Use this script to add background or foreground parallax 9 | * effect to your website. 10 | * 11 | * Website: https://diegoversiani.me/smooth-parallax 12 | * Github: https://github.com/diegoversiani/smooth-parallax 13 | * 14 | * Author: Diego Versiani 15 | * Contact: https://diegoversiani.me/ 16 | * 17 | * Based on the work of: 18 | * Rachel Smith: https://codepen.io/rachsmith/post/how-to-move-elements-on-scroll-in-a-way-that-doesn-t-suck-too-bad 19 | */ 20 | (function (root, factory) { 21 | if ( typeof define === 'function' && define.amd ) { 22 | define([], factory(root)); 23 | } else if ( typeof exports === 'object' ) { 24 | module.exports = factory(root); 25 | } else { 26 | root.SmoothParallax = factory(root); 27 | } 28 | })(typeof global !== 'undefined' ? global : this.window || this.global, function (root) { 29 | 30 | 'use strict'; 31 | 32 | // 33 | // Variables 34 | // 35 | 36 | var window = root; // Map window to root to avoid confusion 37 | var _container; 38 | var _width, _height, _scrollHeight, _viewPortHeight; 39 | var _scrollPercent = 0; 40 | var _scrollOffset = 0; 41 | var _movingElements = []; 42 | var _positions = []; 43 | var _basePercentageOnOptions = [ 'containerVisibility', 'pageScroll' ]; 44 | var _settings; 45 | var publicMethods = {}; // Placeholder for public methods 46 | 47 | // Default settings 48 | var defaults = { 49 | basePercentageOn: 'containerVisibility', // See `_basePercentageOnOptions` for more options 50 | decimalPrecision: 2 51 | }; 52 | 53 | 54 | // 55 | // Methods 56 | // 57 | 58 | /** 59 | * Merge two or more objects. Returns a new object. 60 | * @private 61 | * @param {Boolean} deep If true, do a deep (or recursive) merge [optional] 62 | * @param {Object} objects The objects to merge together 63 | * @returns {Object} Merged values of defaults and options 64 | */ 65 | var extend = function () { 66 | // Variables 67 | var extended = {}; 68 | var deep = false; 69 | var i = 0; 70 | var length = arguments.length; 71 | 72 | // Check if a deep merge 73 | if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) { 74 | deep = arguments[0]; 75 | i++; 76 | } 77 | 78 | // Merge the object into the extended object 79 | var merge = function (obj) { 80 | for ( var prop in obj ) { 81 | if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) { 82 | // If deep merge and property is an object, merge properties 83 | if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) { 84 | extended[prop] = extend( true, extended[prop], obj[prop] ); 85 | } else { 86 | extended[prop] = obj[prop]; 87 | } 88 | } 89 | } 90 | }; 91 | 92 | // Loop through each object and conduct a merge 93 | for ( ; i < length; i++ ) { 94 | var obj = arguments[i]; 95 | merge(obj); 96 | } 97 | 98 | return extended; 99 | }; 100 | 101 | 102 | 103 | /** 104 | * Get movable element container 105 | * @private 106 | */ 107 | var getElementContainer = function ( element ) { 108 | var containerSelector = element.getAttribute( 'container' ); 109 | _container = element.parentNode; 110 | 111 | if ( containerSelector != '' && document.querySelector( containerSelector ) ) { 112 | _container = document.querySelector( containerSelector ); 113 | } 114 | 115 | return _container; 116 | }; 117 | 118 | 119 | 120 | /** 121 | * Calculate page percent scrolled. 122 | * @private 123 | */ 124 | var calculatePageScrollPercent = function () { 125 | var documentElement = document.documentElement || document.body; 126 | _height = documentElement.scrollHeight; 127 | _scrollOffset = window.pageYOffset || documentElement.scrollTop; 128 | return _scrollOffset / ( _height - documentElement.clientHeight ); 129 | }; 130 | 131 | 132 | 133 | /** 134 | * Calculate variables used to determine elements position 135 | * @private 136 | */ 137 | var calculatePercent = function ( positionData ) { 138 | _viewPortHeight = window.innerHeight; 139 | 140 | // Based on `containerVisibility` 141 | if ( _settings.basePercentageOn == 'containerVisibility' ) { 142 | _height = positionData.container.scrollHeight; 143 | _scrollOffset = _viewPortHeight - positionData.container.getBoundingClientRect().top; 144 | _scrollPercent = _scrollOffset / _height; 145 | } 146 | 147 | // Based on `pageScroll` 148 | if ( _settings.basePercentageOn == 'pageScroll' ) { 149 | _scrollPercent = calculatePageScrollPercent(); 150 | } 151 | 152 | // Normalize scrollPercentage from 0 to 1 153 | if ( _scrollPercent < 0 ) { 154 | _scrollPercent = 0; 155 | } 156 | else if ( _scrollPercent > 1 ) { 157 | _scrollPercent = 1; 158 | } 159 | }; 160 | 161 | 162 | 163 | /** 164 | * Get position data object for the element. 165 | * @returns {Object} Position data object for element or false if not found. 166 | */ 167 | var getPositionDataByElement = function ( el ) { 168 | for (var i = 0; i < _positions.length; i++) { 169 | if ( _positions[i].element == el ) { 170 | return _positions[i]; 171 | } 172 | } 173 | 174 | // Return false if not found 175 | return false; 176 | } 177 | 178 | 179 | 180 | /** 181 | * Initializes positions for each moving element. 182 | * @private 183 | */ 184 | var initializeMovingElementsPosition = function () { 185 | var startPercent, 186 | startX, 187 | startY, 188 | endPercent, 189 | endX, 190 | endY, 191 | baseSizeOn, 192 | baseSizeOnOptions = [ 'elementsize', 'containerSize' ]; 193 | 194 | _movingElements = document.querySelectorAll('[smooth-parallax]'); 195 | 196 | for (var i = 0; i < _movingElements.length; i++) { 197 | startPercent = parseFloat(_movingElements[i].getAttribute( 'start-movement' )) || 0; 198 | startX = parseFloat(_movingElements[i].getAttribute( 'start-position-x' )) || 0; 199 | startY = parseFloat(_movingElements[i].getAttribute( 'start-position-y' )) || 0; 200 | endPercent = parseFloat(_movingElements[i].getAttribute( 'end-movement' )) || 1; 201 | endX = parseFloat(_movingElements[i].getAttribute( 'end-position-x' )) || 0; 202 | endY = parseFloat(_movingElements[i].getAttribute( 'end-position-y' )) || 0; 203 | baseSizeOn = _movingElements[i].getAttribute( 'base-size' ); 204 | 205 | if ( baseSizeOnOptions.indexOf( baseSizeOn ) == -1 ) { 206 | baseSizeOn = 'elementSize'; // Default value 207 | } 208 | 209 | var elementPosition = { 210 | element: _movingElements[i], 211 | container: getElementContainer( _movingElements[i] ), 212 | baseSizeOn: baseSizeOn, 213 | start: { 214 | percent: startPercent, 215 | x: startX, 216 | y: startY 217 | }, 218 | end: { 219 | percent: endPercent, 220 | x: endX, 221 | y: endY 222 | }, 223 | diff: { 224 | percent: endPercent - startPercent, 225 | x: endX - startX, 226 | y: endY - startY, 227 | }, 228 | target: {}, 229 | current: {} 230 | }; 231 | 232 | _positions.push( elementPosition ); 233 | } 234 | }; 235 | 236 | /** 237 | * Updates moving elements position. 238 | * @private 239 | */ 240 | var updateElementsPosition = function () { 241 | for (var i = 0; i < _movingElements.length; i++) { 242 | var p = _positions[i], 243 | baseWidth, 244 | baseHeight, 245 | transformValue; 246 | 247 | // Try get element's size with `scrollWidth` and `scrollHeight` 248 | // otherwise use `getComputedStyle` which is more expensive 249 | if ( p.baseSizeOn == 'elementSize' ) { 250 | baseWidth = _movingElements[i].scrollWidth || parseFloat( window.getComputedStyle( _movingElements[i] ).width ); 251 | baseHeight = _movingElements[i].scrollHeight || parseFloat( window.getComputedStyle( _movingElements[i] ).height ); 252 | } 253 | else if ( p.baseSizeOn == 'containerSize' ) { 254 | baseWidth = p.container.scrollWidth - (_movingElements[i].scrollWidth || parseFloat( window.getComputedStyle( _movingElements[i] ).width ) ); 255 | baseHeight = p.container.scrollHeight - (_movingElements[i].scrollHeight || parseFloat( window.getComputedStyle( _movingElements[i] ).height ) ); 256 | } 257 | 258 | // Need to calculate percentage for each element 259 | // when based on `containerVisibility` 260 | calculatePercent( p ); 261 | 262 | // calculate target position 263 | if(_scrollPercent <= p.start.percent) { 264 | p.target.x = p.start.x * baseWidth; 265 | p.target.y = p.start.y * baseHeight; 266 | } 267 | else if(_scrollPercent >= p.end.percent) { 268 | p.target.x = p.end.x * baseWidth; 269 | p.target.y = p.end.y * baseHeight; 270 | } 271 | else { 272 | p.target.x = p.start.x * baseWidth + ( p.diff.x * ( _scrollPercent - p.start.percent ) / p.diff.percent * baseWidth ); 273 | p.target.y = p.start.y * baseHeight + ( p.diff.y * ( _scrollPercent - p.start.percent ) / p.diff.percent * baseHeight ); 274 | } 275 | 276 | // easing with linear interpolation 277 | if( !p.current.x || !p.current.y) { 278 | p.current.x = p.target.x; 279 | p.current.y = p.target.y; 280 | } else { 281 | p.current.x = p.current.x + (p.target.x - p.current.x) * 0.1; 282 | p.current.y = p.current.y + (p.target.y - p.current.y) * 0.1; 283 | } 284 | 285 | // Round to decimal precision to prevent 286 | // too many calculation trips 287 | p.current.x = parseFloat( p.current.x.toFixed( _settings.decimalPrecision ) ); 288 | p.current.y = parseFloat( p.current.y.toFixed( _settings.decimalPrecision ) ); 289 | 290 | // update element style 291 | _movingElements[i].style.transform = 'translate3d(' + p.current.x + 'px, ' + p.current.y + 'px, 0)'; 292 | } 293 | }; 294 | 295 | /** 296 | * Keep updating elements position infinitelly. 297 | * @private 298 | */ 299 | var loopUpdatePositions = function () { 300 | updateElementsPosition(); 301 | requestAnimationFrame( loopUpdatePositions ); 302 | }; 303 | 304 | /** 305 | * Keep updating elements position infinitelly. 306 | * @private 307 | */ 308 | var isSupported = function () { 309 | var supported = true; 310 | 311 | // Test basePercentageOn settings 312 | if ( _basePercentageOnOptions.indexOf( _settings.basePercentageOn ) == -1 ) { 313 | supported = false; 314 | console.error( 'Value not supported for setting basePercentageOn: ' + _settings.basePercentageOn ); 315 | } 316 | 317 | // TODO: ADD feature test for `querySelector` 318 | // TODO: ADD feature test for css property `translate3d` 319 | 320 | return supported; 321 | }; 322 | 323 | /** 324 | * Initializes plugin 325 | */ 326 | publicMethods.init = function ( options ) { 327 | // Merge user options with defaults 328 | _settings = extend( defaults, options || {} ); 329 | _settings.decimalPrecision = parseInt( _settings.decimalPrecision ) || defaults.decimalPrecision; 330 | 331 | // Bail early if not supported 332 | if ( !isSupported() ) { return; } 333 | 334 | // Initialize variables 335 | initializeMovingElementsPosition(); 336 | loopUpdatePositions(); 337 | }; 338 | 339 | /** 340 | * Get scroll percentage for the element or page. 341 | * @param {string} el Target element css selector. 342 | * @return {float} Scroll percentage for the element or the page. 343 | */ 344 | publicMethods.getScrollPercent = function ( selector ) { 345 | // Calculate page scroll if no selector was passed 346 | if ( selector == undefined ) { 347 | return calculatePageScrollPercent(); 348 | } 349 | 350 | // Find element 351 | // Return false if not found 352 | var el = document.querySelector( selector ); 353 | if ( el == null ) return false; 354 | 355 | // Calculate element scroll percent 356 | var positionData = getPositionDataByElement( el ); 357 | if ( positionData ) { 358 | calculatePercent( positionData ); 359 | return _scrollPercent; 360 | } 361 | 362 | // Return false otherwise 363 | return false; 364 | }; 365 | 366 | 367 | // 368 | // Public APIs 369 | // 370 | return publicMethods; 371 | 372 | }); 373 | -------------------------------------------------------------------------------- /test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Smooth Parallax Test 5 | 43 | 44 | 56 | 57 | 58 |
59 |
spacer
60 |
61 |
67 | base-size: containerSize 68 |
69 |
74 |
75 |
80 |
81 | 82 | --------------------------------------------------------------------------------