From 6019c7a776ebd366f3d64e35fddbe619cd9bb022 Mon Sep 17 00:00:00 2001 From: cubiq Date: Mon, 2 Jun 2014 12:19:56 +0200 Subject: [PATCH] clean up --- build/iscroll-infinite.js | 28 ++++++++++++++++++------ build/iscroll-lite.js | 28 ++++++++++++++++++------ build/iscroll-probe.js | 46 +++++++++++++++++++++++++++------------ build/iscroll-zoom.js | 46 +++++++++++++++++++++++++++------------ build/iscroll.js | 46 +++++++++++++++++++++++++++------------ package.json | 6 ++--- 6 files changed, 141 insertions(+), 59 deletions(-) diff --git a/build/iscroll-infinite.js b/build/iscroll-infinite.js index f524f405..0c22c7e6 100644 --- a/build/iscroll-infinite.js +++ b/build/iscroll-infinite.js @@ -1,4 +1,4 @@ -/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ +/*! iScroll v5.1.2 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ (function (window, document, Math) { var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || @@ -47,6 +47,12 @@ var utils = (function () { el.removeEventListener(type, fn, !!capture); }; + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10): + pointerEvent; + }; + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, @@ -80,7 +86,7 @@ var utils = (function () { hasTransform: _transform !== false, hasPerspective: _prefixStyle('perspective') in _elementStyle, hasTouch: 'ontouchstart' in window, - hasPointer: navigator.msPointerEnabled, + hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed hasTransition: _prefixStyle('transition') in _elementStyle }); @@ -155,6 +161,10 @@ var utils = (function () { mousemove: 2, mouseup: 2, + pointerdown: 3, + pointermove: 3, + pointerup: 3, + MSPointerDown: 3, MSPointerMove: 3, MSPointerUp: 3 @@ -327,7 +337,7 @@ function IScroll (el, options) { } IScroll.prototype = { - version: '5.1.1', + version: '5.1.2', _init: function () { this._initEvents(); @@ -860,10 +870,10 @@ IScroll.prototype = { } if ( utils.hasPointer && !this.options.disablePointer ) { - eventType(this.wrapper, 'MSPointerDown', this); - eventType(target, 'MSPointerMove', this); - eventType(target, 'MSPointerCancel', this); - eventType(target, 'MSPointerUp', this); + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); } if ( utils.hasTouch && !this.options.disableTouch ) { @@ -1510,19 +1520,23 @@ IScroll.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); diff --git a/build/iscroll-lite.js b/build/iscroll-lite.js index 5a0ab353..749cc01c 100644 --- a/build/iscroll-lite.js +++ b/build/iscroll-lite.js @@ -1,4 +1,4 @@ -/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ +/*! iScroll v5.1.2 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ (function (window, document, Math) { var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || @@ -47,6 +47,12 @@ var utils = (function () { el.removeEventListener(type, fn, !!capture); }; + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10): + pointerEvent; + }; + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, @@ -80,7 +86,7 @@ var utils = (function () { hasTransform: _transform !== false, hasPerspective: _prefixStyle('perspective') in _elementStyle, hasTouch: 'ontouchstart' in window, - hasPointer: navigator.msPointerEnabled, + hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed hasTransition: _prefixStyle('transition') in _elementStyle }); @@ -155,6 +161,10 @@ var utils = (function () { mousemove: 2, mouseup: 2, + pointerdown: 3, + pointermove: 3, + pointerup: 3, + MSPointerDown: 3, MSPointerMove: 3, MSPointerUp: 3 @@ -310,7 +320,7 @@ function IScroll (el, options) { } IScroll.prototype = { - version: '5.1.1', + version: '5.1.2', _init: function () { this._initEvents(); @@ -800,10 +810,10 @@ IScroll.prototype = { } if ( utils.hasPointer && !this.options.disablePointer ) { - eventType(this.wrapper, 'MSPointerDown', this); - eventType(target, 'MSPointerMove', this); - eventType(target, 'MSPointerCancel', this); - eventType(target, 'MSPointerUp', this); + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); } if ( utils.hasTouch && !this.options.disableTouch ) { @@ -875,19 +885,23 @@ IScroll.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); diff --git a/build/iscroll-probe.js b/build/iscroll-probe.js index 9a145f08..76456c40 100644 --- a/build/iscroll-probe.js +++ b/build/iscroll-probe.js @@ -1,4 +1,4 @@ -/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ +/*! iScroll v5.1.2 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ (function (window, document, Math) { var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || @@ -47,6 +47,12 @@ var utils = (function () { el.removeEventListener(type, fn, !!capture); }; + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10): + pointerEvent; + }; + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, @@ -80,7 +86,7 @@ var utils = (function () { hasTransform: _transform !== false, hasPerspective: _prefixStyle('perspective') in _elementStyle, hasTouch: 'ontouchstart' in window, - hasPointer: navigator.msPointerEnabled, + hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed hasTransition: _prefixStyle('transition') in _elementStyle }); @@ -155,6 +161,10 @@ var utils = (function () { mousemove: 2, mouseup: 2, + pointerdown: 3, + pointermove: 3, + pointerup: 3, + MSPointerDown: 3, MSPointerMove: 3, MSPointerUp: 3 @@ -325,7 +335,7 @@ function IScroll (el, options) { } IScroll.prototype = { - version: '5.1.1', + version: '5.1.2', _init: function () { this._initEvents(); @@ -878,10 +888,10 @@ IScroll.prototype = { } if ( utils.hasPointer && !this.options.disablePointer ) { - eventType(this.wrapper, 'MSPointerDown', this); - eventType(target, 'MSPointerMove', this); - eventType(target, 'MSPointerCancel', this); - eventType(target, 'MSPointerUp', this); + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); } if ( utils.hasTouch && !this.options.disableTouch ) { @@ -1534,19 +1544,23 @@ IScroll.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); @@ -1648,8 +1662,8 @@ function Indicator (scroller, options) { utils.addEvent(window, 'touchend', this); } if ( !this.options.disablePointer ) { - utils.addEvent(this.indicator, 'MSPointerDown', this); - utils.addEvent(window, 'MSPointerUp', this); + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); } if ( !this.options.disableMouse ) { utils.addEvent(this.indicator, 'mousedown', this); @@ -1668,19 +1682,23 @@ Indicator.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); @@ -1691,15 +1709,15 @@ Indicator.prototype = { destroy: function () { if ( this.options.interactive ) { utils.removeEvent(this.indicator, 'touchstart', this); - utils.removeEvent(this.indicator, 'MSPointerDown', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); utils.removeEvent(this.indicator, 'mousedown', this); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); utils.removeEvent(window, 'touchend', this); - utils.removeEvent(window, 'MSPointerUp', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); utils.removeEvent(window, 'mouseup', this); } @@ -1727,7 +1745,7 @@ Indicator.prototype = { utils.addEvent(window, 'touchmove', this); } if ( !this.options.disablePointer ) { - utils.addEvent(window, 'MSPointerMove', this); + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); } if ( !this.options.disableMouse ) { utils.addEvent(window, 'mousemove', this); @@ -1785,7 +1803,7 @@ Indicator.prototype = { e.stopPropagation(); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); if ( this.scroller.options.snap ) { diff --git a/build/iscroll-zoom.js b/build/iscroll-zoom.js index 4a440551..bd803c6c 100644 --- a/build/iscroll-zoom.js +++ b/build/iscroll-zoom.js @@ -1,4 +1,4 @@ -/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ +/*! iScroll v5.1.2 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ (function (window, document, Math) { var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || @@ -47,6 +47,12 @@ var utils = (function () { el.removeEventListener(type, fn, !!capture); }; + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10): + pointerEvent; + }; + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, @@ -80,7 +86,7 @@ var utils = (function () { hasTransform: _transform !== false, hasPerspective: _prefixStyle('perspective') in _elementStyle, hasTouch: 'ontouchstart' in window, - hasPointer: navigator.msPointerEnabled, + hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed hasTransition: _prefixStyle('transition') in _elementStyle }); @@ -155,6 +161,10 @@ var utils = (function () { mousemove: 2, mouseup: 2, + pointerdown: 3, + pointermove: 3, + pointerup: 3, + MSPointerDown: 3, MSPointerMove: 3, MSPointerUp: 3 @@ -327,7 +337,7 @@ function IScroll (el, options) { } IScroll.prototype = { - version: '5.1.1', + version: '5.1.2', _init: function () { this._initEvents(); @@ -872,10 +882,10 @@ IScroll.prototype = { } if ( utils.hasPointer && !this.options.disablePointer ) { - eventType(this.wrapper, 'MSPointerDown', this); - eventType(target, 'MSPointerMove', this); - eventType(target, 'MSPointerCancel', this); - eventType(target, 'MSPointerUp', this); + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); } if ( utils.hasTouch && !this.options.disableTouch ) { @@ -1689,6 +1699,7 @@ IScroll.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); @@ -1698,6 +1709,7 @@ IScroll.prototype = { } break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': if ( this.options.zoom && e.touches && e.touches[1] ) { @@ -1707,9 +1719,11 @@ IScroll.prototype = { this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': if ( this.scaled ) { @@ -1814,8 +1828,8 @@ function Indicator (scroller, options) { utils.addEvent(window, 'touchend', this); } if ( !this.options.disablePointer ) { - utils.addEvent(this.indicator, 'MSPointerDown', this); - utils.addEvent(window, 'MSPointerUp', this); + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); } if ( !this.options.disableMouse ) { utils.addEvent(this.indicator, 'mousedown', this); @@ -1834,19 +1848,23 @@ Indicator.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); @@ -1857,15 +1875,15 @@ Indicator.prototype = { destroy: function () { if ( this.options.interactive ) { utils.removeEvent(this.indicator, 'touchstart', this); - utils.removeEvent(this.indicator, 'MSPointerDown', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); utils.removeEvent(this.indicator, 'mousedown', this); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); utils.removeEvent(window, 'touchend', this); - utils.removeEvent(window, 'MSPointerUp', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); utils.removeEvent(window, 'mouseup', this); } @@ -1893,7 +1911,7 @@ Indicator.prototype = { utils.addEvent(window, 'touchmove', this); } if ( !this.options.disablePointer ) { - utils.addEvent(window, 'MSPointerMove', this); + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); } if ( !this.options.disableMouse ) { utils.addEvent(window, 'mousemove', this); @@ -1942,7 +1960,7 @@ Indicator.prototype = { e.stopPropagation(); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); if ( this.scroller.options.snap ) { diff --git a/build/iscroll.js b/build/iscroll.js index 6ccf0e22..32b1ad5b 100644 --- a/build/iscroll.js +++ b/build/iscroll.js @@ -1,4 +1,4 @@ -/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ +/*! iScroll v5.1.2 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */ (function (window, document, Math) { var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || @@ -47,6 +47,12 @@ var utils = (function () { el.removeEventListener(type, fn, !!capture); }; + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10): + pointerEvent; + }; + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, @@ -80,7 +86,7 @@ var utils = (function () { hasTransform: _transform !== false, hasPerspective: _prefixStyle('perspective') in _elementStyle, hasTouch: 'ontouchstart' in window, - hasPointer: navigator.msPointerEnabled, + hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed hasTransition: _prefixStyle('transition') in _elementStyle }); @@ -155,6 +161,10 @@ var utils = (function () { mousemove: 2, mouseup: 2, + pointerdown: 3, + pointermove: 3, + pointerup: 3, + MSPointerDown: 3, MSPointerMove: 3, MSPointerUp: 3 @@ -322,7 +332,7 @@ function IScroll (el, options) { } IScroll.prototype = { - version: '5.1.1', + version: '5.1.2', _init: function () { this._initEvents(); @@ -869,10 +879,10 @@ IScroll.prototype = { } if ( utils.hasPointer && !this.options.disablePointer ) { - eventType(this.wrapper, 'MSPointerDown', this); - eventType(target, 'MSPointerMove', this); - eventType(target, 'MSPointerCancel', this); - eventType(target, 'MSPointerUp', this); + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); } if ( utils.hasTouch && !this.options.disableTouch ) { @@ -1516,19 +1526,23 @@ IScroll.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); @@ -1630,8 +1644,8 @@ function Indicator (scroller, options) { utils.addEvent(window, 'touchend', this); } if ( !this.options.disablePointer ) { - utils.addEvent(this.indicator, 'MSPointerDown', this); - utils.addEvent(window, 'MSPointerUp', this); + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); } if ( !this.options.disableMouse ) { utils.addEvent(this.indicator, 'mousedown', this); @@ -1650,19 +1664,23 @@ Indicator.prototype = { handleEvent: function (e) { switch ( e.type ) { case 'touchstart': + case 'pointerdown': case 'MSPointerDown': case 'mousedown': this._start(e); break; case 'touchmove': + case 'pointermove': case 'MSPointerMove': case 'mousemove': this._move(e); break; case 'touchend': + case 'pointerup': case 'MSPointerUp': case 'mouseup': case 'touchcancel': + case 'pointercancel': case 'MSPointerCancel': case 'mousecancel': this._end(e); @@ -1673,15 +1691,15 @@ Indicator.prototype = { destroy: function () { if ( this.options.interactive ) { utils.removeEvent(this.indicator, 'touchstart', this); - utils.removeEvent(this.indicator, 'MSPointerDown', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); utils.removeEvent(this.indicator, 'mousedown', this); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); utils.removeEvent(window, 'touchend', this); - utils.removeEvent(window, 'MSPointerUp', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); utils.removeEvent(window, 'mouseup', this); } @@ -1709,7 +1727,7 @@ Indicator.prototype = { utils.addEvent(window, 'touchmove', this); } if ( !this.options.disablePointer ) { - utils.addEvent(window, 'MSPointerMove', this); + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); } if ( !this.options.disableMouse ) { utils.addEvent(window, 'mousemove', this); @@ -1758,7 +1776,7 @@ Indicator.prototype = { e.stopPropagation(); utils.removeEvent(window, 'touchmove', this); - utils.removeEvent(window, 'MSPointerMove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); utils.removeEvent(window, 'mousemove', this); if ( this.scroller.options.snap ) { diff --git a/package.json b/package.json index 32d26a36..f74fa114 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "iscroll", "description": "Smooth scrolling for the web", - "version": "5.1.1", + "version": "5.1.2", "homepage": "http://cubiq.org/iscroll-4", "author": "Matteo Spinelli (http://cubiq.org)", "keywords": [ @@ -15,8 +15,8 @@ ], "main": "build/iscroll.js", "devDependencies": { - "jshint": "~2.3.0", - "uglify-js": "~2.4.7" + "jshint": "~2.5.1", + "uglify-js": "~2.4.13" }, "repository": { "type": "git",