tag wrappers
+ $.moogle.contextmenu.replaceFirstTextNodeChild($("div", item), title);
+ }
}
});
-}(jQuery, window, document));
+}));
diff --git a/jquery.ui-contextmenu.min.js b/jquery.ui-contextmenu.min.js
index d71d585..4436aaa 100644
--- a/jquery.ui-contextmenu.min.js
+++ b/jquery.ui-contextmenu.min.js
@@ -1,2 +1,4 @@
-/*! jQuery UI context menu plugin - v1.3.0-1 - 2013-12-27 | https://github.com/mar10/jquery-ui-contextmenu | Copyright (c) 2013 Martin Wendt; Licensed MIT */
-!function(a,b,c,d){"use strict";function e(a){return a&&a.match(/^#/)?a.substring(1):a||""}var f="onselectstart"in c.createElement("div");a.widget("moogle.contextmenu",{version:"1.3.0-1",options:{delegate:null,hide:{effect:"fadeOut",duration:"fast"},ignoreParentSelect:!0,menu:null,position:null,preventSelect:!1,show:{effect:"slideDown",duration:"fast"},taphold:!1,beforeOpen:a.noop,blur:a.noop,close:a.noop,create:a.noop,createMenu:a.noop,focus:a.noop,open:a.noop,select:a.noop},_create:function(){var b,d,e,g=this.options;if(this.$headStyle=null,this.$menu=null,this.menuIsTemp=!1,this.currentTarget=null,g.preventSelect){e=(a(this.element).is(c)?a("body"):this.element).uniqueId().attr("id"),b="#"+e+" "+g.delegate+" { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }",this.$headStyle=a("").prop("type","text/css").appendTo("head");try{this.$headStyle.html(b)}catch(h){this.$headStyle[0].styleSheet.cssText=b}f&&this.element.delegate(g.delegate,"selectstart"+this.eventNamespace,function(a){a.preventDefault()})}this._createUiMenu(g.menu),d="contextmenu"+this.eventNamespace,g.taphold&&(d+=" taphold"+this.eventNamespace),this.element.delegate(g.delegate,d,a.proxy(this._openMenu,this))},_destroy:function(){this.element.undelegate(this.eventNamespace),this._createUiMenu(null),this.$headStyle&&(this.$headStyle.remove(),this.$headStyle=null)},_createUiMenu:function(b){this.isOpen()&&this._closeMenu(!0),this.menuIsTemp?this.$menu.remove():this.$menu&&this.$menu.menu("destroy").hide(),this.$menu=null,this.menuIsTemp=!1,b&&(a.isArray(b)?(this.$menu=a.moogle.contextmenu.createMenuMarkup(b),this.menuIsTemp=!0):this.$menu="string"==typeof b?a(b):b,this.$menu.hide().menu({blur:a.proxy(this.options.blur,this),create:a.proxy(this.options.createMenu,this),focus:a.proxy(this.options.focus,this),select:a.proxy(function(b,c){var d,f=c.item.has(">a[aria-haspopup='true']").length>0,g=c.item.find(">a"),h=g.data("actionHandler");c.cmd=e(g.attr("href")),c.target=a(this.currentTarget),f&&this.options.ignoreParentSelect||(d=this._trigger.call(this,"select",b,c),h&&(d=h.call(this,b,c)),d!==!1&&this._closeMenu.call(this),b.preventDefault())},this)}))},_openMenu:function(b){var e=this.options,f=e.position,g=this,h={menu:this.$menu,target:a(b.target),extraData:b.extraData};return this.currentTarget=b.target,b.preventDefault(),this._trigger("beforeOpen",b,h)===!1?(this.currentTarget=null,!1):(h.menu=this.$menu,a(c).bind("keydown"+this.eventNamespace,function(b){b.which===a.ui.keyCode.ESCAPE&&g._closeMenu()}).bind("mousedown"+this.eventNamespace+" touchstart"+this.eventNamespace,function(b){a(b.target).closest(".ui-menu-item").length||g._closeMenu()}),a.isFunction(f)&&(f=f(b,h)),f=a.extend({my:"left top",at:"left bottom",of:b.pageX===d?b.target:b,collision:"fit"},f),this.$menu.show().css({position:"absolute",left:0,top:0}).position(f).hide(),this._show(this.$menu,this.options.show,function(){g._trigger.call(g,"open",b,h)}),void 0)},_closeMenu:function(b){var d=this,e=b?!1:this.options.hide;a(c).unbind("mousedown"+this.eventNamespace).unbind("touchstart"+this.eventNamespace).unbind("keydown"+this.eventNamespace),d.currentTarget=null,this._hide(this.$menu,e,function(){d._trigger("close")})},_setOption:function(b,c){switch(b){case"menu":this.replaceMenu(c)}a.Widget.prototype._setOption.apply(this,arguments)},_getMenuEntry:function(a,b){var c=this.$menu.find("li a[href=#"+e(a)+"]");return b?c.closest("li"):c},close:function(){this.isOpen()&&this._closeMenu()},enableEntry:function(a,b){this._getMenuEntry(a,!0).toggleClass("ui-state-disabled",b===!1)},getMenu:function(){return this.$menu},isOpen:function(){return!!this.$menu&&!!this.currentTarget},open:function(a,b){b=b||{};var c=jQuery.Event("contextmenu",{target:a.get(0),extraData:b});return this.element.trigger(c)},replaceMenu:function(a){this._createUiMenu(a)},setEntry:function(b,c){var d,e=this._getMenuEntry(b,!1);"string"==typeof c?e.children("span").length?e.contents().filter(function(){return 3===this.nodeType}).first().replaceWith(c):e.text(c):(d=e.closest("li").empty(),c.cmd=c.cmd||b,a.moogle.contextmenu.createEntryMarkup(c,d))},showEntry:function(a,b){this._getMenuEntry(a,!0).toggle(b!==!1)}}),a.extend(a.moogle.contextmenu,{createEntryMarkup:function(b,c){var d=null;return/[^\-\u2014\u2013\s]/.test(b.title)?(d=a("
",{text:""+b.title,href:"#"+e(b.cmd)}).appendTo(c),a.isFunction(b.action)&&d.data("actionHandler",b.action),b.uiIcon&&d.append(a("
").addClass(b.uiIcon)),b.disabled&&c.addClass("ui-state-disabled"),a.isPlainObject(b.data)&&d.data(b.data)):c.text(b.title),d},createMenuMarkup:function(b,c){var d,e,f,g;for(null==c&&(c=a("
").appendTo("body")),d=0;d
").appendTo(c),a.moogle.contextmenu.createEntryMarkup(e,g),a.isArray(e.children)&&(f=a("
").appendTo(g),a.moogle.contextmenu.createMenuMarkup(e.children,f));return c}})}(jQuery,window,document);
\ No newline at end of file
+/*! jQuery UI context menu plugin - v1.18.2-0 - 2019-01-28 | https://github.com/mar10/jquery-ui-contextmenu | Copyright (c) 2013 -2019 Martin Wendt; Licensed MIT */
+
+!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widgets/menu"],a):a(jQuery)}(function(a){"use strict";var b="onselectstart"in document.createElement("div"),c=a.ui.menu.version.match(/^(\d)\.(\d+)/),d={major:parseInt(c[1],10),minor:parseInt(c[2],10)},e=d.major<2&&d.minor<=10,f=d.major<2&&d.minor<=11;a.widget("moogle.contextmenu",{version:"@VERSION",options:{addClass:"ui-contextmenu",closeOnWindowBlur:!0,appendTo:"body",autoFocus:!1,autoTrigger:!0,delegate:null,hide:{effect:"fadeOut",duration:"fast"},ignoreParentSelect:!0,menu:null,position:null,preventContextMenuForPopup:!1,preventSelect:!1,show:{effect:"slideDown",duration:"fast"},taphold:!1,uiMenuOptions:{},beforeOpen:a.noop,blur:a.noop,close:a.noop,create:a.noop,createMenu:a.noop,focus:a.noop,open:a.noop,select:a.noop},_create:function(){var c,d,e,f=this.options;if(this.$headStyle=null,this.$menu=null,this.menuIsTemp=!1,this.currentTarget=null,this.extraData={},this.previousFocus=null,null==f.delegate&&a.error("ui-contextmenu: Missing required option `delegate`."),f.preventSelect){e=(a(this.element).is(document)?a("body"):this.element).uniqueId().attr("id"),c="#"+e+" "+f.delegate+" { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }",this.$headStyle=a("").prop("type","text/css").appendTo("head");try{this.$headStyle.html(c)}catch(g){this.$headStyle[0].styleSheet.cssText=c}b&&this.element.on("selectstart"+this.eventNamespace,f.delegate,function(a){a.preventDefault()})}this._createUiMenu(f.menu),d="contextmenu"+this.eventNamespace,f.taphold&&(d+=" taphold"+this.eventNamespace),this.element.on(d,f.delegate,a.proxy(this._openMenu,this))},_destroy:function(){this.element.off(this.eventNamespace),this._createUiMenu(null),this.$headStyle&&(this.$headStyle.remove(),this.$headStyle=null)},_createUiMenu:function(b){var c,d,e=this.options;this.isOpen()&&(c=this.currentTarget,d=this.extraData,this._closeMenu(!0),this.currentTarget=c,this.extraData=d),this.menuIsTemp?this.$menu.remove():this.$menu&&this.$menu.menu("destroy").removeClass(e.addClass).hide(),this.$menu=null,this.menuIsTemp=!1,b&&(a.isArray(b)?(this.$menu=a.moogle.contextmenu.createMenuMarkup(b,null,e),this.menuIsTemp=!0):"string"==typeof b?this.$menu=a(b):this.$menu=b,this.$menu.hide().addClass(e.addClass).menu(a.extend(!0,{},e.uiMenuOptions,{items:"> :not(.ui-widget-header)",blur:a.proxy(e.blur,this),create:a.proxy(e.createMenu,this),focus:a.proxy(e.focus,this),select:a.proxy(function(b,c){var d,f=a.moogle.contextmenu.isMenu(c.item),g=c.item.data("actionHandler");c.cmd=c.item.attr("data-command"),c.target=a(this.currentTarget),c.extraData=this.extraData,f&&e.ignoreParentSelect||(d=this._trigger.call(this,"select",b,c),g&&(d=g.call(this,b,c)),d!==!1&&this._closeMenu.call(this),b.preventDefault())},this)})))},_openMenu:function(b,c){var d,e,f,g=this.options,h=g.position,i=this,j=!!b.isTrigger;if(g.autoTrigger||j){if(b.preventDefault(),this.currentTarget=b.target,this.extraData=b._extraData||{},f={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData,originalEvent:b,result:null},!c){if(d=this._trigger("beforeOpen",b,f),e=f.result&&a.isFunction(f.result.promise)?f.result:null,f.result=null,d===!1)return this.currentTarget=null,!1;if(e)return e.done(function(){i._openMenu(b,!0)}),this.currentTarget=null,!1;f.menu=this.$menu}a(document).on("keydown"+this.eventNamespace,function(b){b.which===a.ui.keyCode.ESCAPE&&i._closeMenu()}).on("mousedown"+this.eventNamespace+" touchstart"+this.eventNamespace,function(b){a(b.target).closest(".ui-menu-item").length||i._closeMenu()}),a(window).on("blur"+this.eventNamespace,function(a){g.closeOnWindowBlur&&i._closeMenu()}),a.isFunction(h)&&(h=h(b,f)),h=a.extend({my:"left top",at:"left bottom",of:void 0===b.pageX?b.target:b,collision:"fit"},h),this._updateEntries(this.$menu),this.$menu.show().css({position:"absolute",left:0,top:0}).position(h).hide(),g.preventContextMenuForPopup&&this.$menu.on("contextmenu"+this.eventNamespace,function(a){a.preventDefault()}),this._show(this.$menu,g.show,function(){var c;g.autoFocus&&(i.previousFocus=a(b.target),c=i.$menu.children("li.ui-menu-item").not(".ui-state-disabled").first(),i.$menu.menu("focus",null,c).focus()),i._trigger.call(i,"open",b,f)})}},_closeMenu:function(b){var c=this,d=!b&&this.options.hide,e={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData};a(document).off("mousedown"+this.eventNamespace).off("touchstart"+this.eventNamespace).off("keydown"+this.eventNamespace),a(window).off("blur"+this.eventNamespace),c.currentTarget=null,c.extraData={},this.$menu?(this.$menu.off("contextmenu"+this.eventNamespace),this._hide(this.$menu,d,function(){c.previousFocus&&(c.previousFocus.focus(),c.previousFocus=null),c._trigger("close",null,e)})):c._trigger("close",null,e)},_setOption:function(b,c){switch(b){case"menu":this.replaceMenu(c)}a.Widget.prototype._setOption.apply(this,arguments)},_getMenuEntry:function(a){return this.$menu.find("li[data-command="+a+"]")},close:function(){this.isOpen()&&this._closeMenu()},_updateEntries:function(){var b=this,c={menu:this.$menu,target:a(this.currentTarget),extraData:this.extraData};a.each(this.$menu.find(".ui-menu-item"),function(d,e){var f=a(e),g=f.data("disabledHandler"),h=g?g({type:"disabled"},c):null;c.item=f,c.cmd=f.attr("data-command"),null!=h&&(b.enableEntry(c.cmd,!h),b.showEntry(c.cmd,"hide"!==h)),g=f.data("titleHandler"),h=g?g({type:"title"},c):null,null!=h&&b.setTitle(c.cmd,""+h),g=f.data("tooltipHandler"),h=g?g({type:"tooltip"},c):null,null!=h&&f.attr("title",""+h)})},enableEntry:function(a,b){this._getMenuEntry(a).toggleClass("ui-state-disabled",b===!1)},getEntry:function(a){return this._getMenuEntry(a)},getEntryWrapper:function(a){return this._getMenuEntry(a).find(">[role=menuitem]").addBack("[role=menuitem]")},getMenu:function(){return this.$menu},isOpen:function(){return!!this.$menu&&!!this.currentTarget},open:function(b,c){c=c||{};var d=b&&b.type&&b.target,e=d?b:{},f=d?b.target:b,g=jQuery.Event("contextmenu",{target:a(f).get(0),pageX:e.pageX,pageY:e.pageY,originalEvent:d?b:void 0,_extraData:c});return this.element.trigger(g)},replaceMenu:function(a){this._createUiMenu(a)},setEntry:function(b,c){var d,e=this._getMenuEntry(b);return"string"==typeof c?(window.console&&window.console.warn("setEntry(cmd, t) with a plain string title is deprecated since v1.18.Use setTitle(cmd, '"+c+"') instead."),this.setTitle(b,c)):(e.empty(),c.cmd=c.cmd||b,a.moogle.contextmenu.createEntryMarkup(c,e),a.isArray(c.children)&&(d=a("
").appendTo(e),a.moogle.contextmenu.createMenuMarkup(c.children,d)),e.removeClass("ui-menu-item"),void this.getMenu().menu("refresh"))},setIcon:function(a,b){return this.updateEntry(a,{uiIcon:b})},setTitle:function(a,b){return this.updateEntry(a,{title:b})},showEntry:function(a,b){this._getMenuEntry(a).toggle(b!==!1)},updateEntry:function(b,c){var d,e,f=this._getMenuEntry(b);void 0!==c.title&&a.moogle.contextmenu.updateTitle(f,""+c.title),void 0!==c.tooltip&&(null===c.tooltip?f.removeAttr("title"):f.attr("title",c.tooltip)),void 0!==c.uiIcon&&(e=this.getEntryWrapper(b),d=e.find("span.ui-icon").not(".ui-menu-icon"),d.remove(),c.uiIcon&&e.append(a("
").addClass(c.uiIcon))),void 0!==c.hide?f.toggle(!c.hide):void 0!==c.show&&f.toggle(!!c.show),void 0!==c.data&&f.data(c.data),void 0===c.disabled&&(c.disabled=f.hasClass("ui-state-disabled")),c.setClass?(f.hasClass("ui-menu-item")&&(c.setClass+=" ui-menu-item"),f.removeClass(),f.addClass(c.setClass)):c.addClass&&f.addClass(c.addClass),f.toggleClass("ui-state-disabled",!!c.disabled)}}),a.extend(a.moogle.contextmenu,{createEntryMarkup:function(b,c){var d=null;c.attr("data-command",b.cmd),/[^\-\u2014\u2013\s]/.test(b.title)?(e?d=a("
",{html:""+b.title,href:"#"}).appendTo(c):f?(c.html(""+b.title),d=c):d=a("
",{html:""+b.title}).appendTo(c),b.uiIcon&&d.append(a("
").addClass(b.uiIcon)),a.each(["action","disabled","title","tooltip"],function(d,e){a.isFunction(b[e])&&c.data(e+"Handler",b[e])}),b.disabled===!0&&c.addClass("ui-state-disabled"),b.isHeader&&c.addClass("ui-widget-header"),b.addClass&&c.addClass(b.addClass),a.isPlainObject(b.data)&&c.data(b.data),"string"==typeof b.tooltip&&c.attr("title",b.tooltip)):c.text(b.title)},createMenuMarkup:function(b,c,d){var e,f,g,h,i=d&&d.appendTo?d.appendTo:"body";for(null==c&&(c=a("
").appendTo(i)),e=0;e
").appendTo(c),a.moogle.contextmenu.createEntryMarkup(f,h),a.isArray(f.children)&&(g=a("
").appendTo(h),a.moogle.contextmenu.createMenuMarkup(f.children,g));return c},isMenu:function(a){return e?a.has(">a[aria-haspopup='true']").length>0:f?a.is("[aria-haspopup='true']"):a.has(">div[aria-haspopup='true']").length>0},replaceFirstTextNodeChild:function(a,b){var c=a.find(">span.ui-icon,>ul.ui-menu").detach();a.empty().html(b).append(c)},updateTitle:function(b,c){e?a.moogle.contextmenu.replaceFirstTextNodeChild(a("a",b),c):f?a.moogle.contextmenu.replaceFirstTextNodeChild(b,c):a.moogle.contextmenu.replaceFirstTextNodeChild(a("div",b),c)}})});
+//# sourceMappingURL=jquery.ui-contextmenu.min.js.map
\ No newline at end of file
diff --git a/jquery.ui-contextmenu.min.js.map b/jquery.ui-contextmenu.min.js.map
new file mode 100644
index 0000000..28dfb80
--- /dev/null
+++ b/jquery.ui-contextmenu.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.ui-contextmenu.js"],"names":["factory","define","amd","jQuery","$","supportSelectstart","document","createElement","match","ui","menu","version","uiVersion","major","parseInt","minor","isLTE110","isLTE111","widget","options","addClass","closeOnWindowBlur","appendTo","autoFocus","autoTrigger","delegate","hide","effect","duration","ignoreParentSelect","position","preventContextMenuForPopup","preventSelect","show","taphold","uiMenuOptions","beforeOpen","noop","blur","close","create","createMenu","focus","open","select","_create","cssText","eventNames","targetId","opts","this","$headStyle","$menu","menuIsTemp","currentTarget","extraData","previousFocus","error","element","is","uniqueId","attr","prop","html","e","styleSheet","on","eventNamespace","event","preventDefault","_createUiMenu","proxy","_openMenu","_destroy","off","remove","menuDef","ct","ed","isOpen","_closeMenu","removeClass","isArray","moogle","contextmenu","createMenuMarkup","extend","items","retval","isParent","isMenu","item","actionHandler","data","cmd","target","_trigger","call","recursive","res","promise","posOption","self","manualTrigger","isTrigger","_extraData","originalEvent","result","isFunction","done","which","keyCode","ESCAPE","closest","length","window","my","at","of","undefined","pageX","collision","_updateEntries","css","left","top","_show","$first","children","not","first","immediately","hideOpts","_hide","_setOption","key","value","replaceMenu","Widget","prototype","apply","arguments","_getMenuEntry","find","each","i","o","$entry","fn","type","enableEntry","showEntry","setTitle","flag","toggleClass","getEntry","getEntryWrapper","addBack","getMenu","targetOrEvent","isEvent","Event","get","pageY","trigger","setEntry","entry","$ul","$entryLi","console","warn","empty","createEntryMarkup","setIcon","icon","updateEntry","uiIcon","title","toggle","$icon","$wrapper","updateTitle","tooltip","removeAttr","append","disabled","hasClass","setClass","$parentLi","test","href","isHeader","isPlainObject","text","$parentUl","$li","has","replaceFirstTextNodeChild","elem","$icons","detach"],"mappings":"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","file":"jquery.ui-contextmenu.min.js"}
\ No newline at end of file
diff --git a/lib/Super-Theme-Switcher/images/theme_90_base.png b/lib/Super-Theme-Switcher/images/theme_90_base.png
new file mode 100644
index 0000000..2917342
Binary files /dev/null and b/lib/Super-Theme-Switcher/images/theme_90_base.png differ
diff --git a/lib/Super-Theme-Switcher/jquery.themeswitcher.js b/lib/Super-Theme-Switcher/jquery.themeswitcher.js
index e2d8945..af72534 100644
--- a/lib/Super-Theme-Switcher/jquery.themeswitcher.js
+++ b/lib/Super-Theme-Switcher/jquery.themeswitcher.js
@@ -50,6 +50,11 @@
name: "black-tie",
icon: "theme_90_black_tie.png"
},
+ {
+ title: "Base",
+ name: "base",
+ icon: "theme_90_base.png"
+ },
{
title: "Blitzer",
name: "blitzer",
diff --git a/demo/jquery-taphold/LICENSE b/lib/jquery-taphold/LICENSE
similarity index 100%
rename from demo/jquery-taphold/LICENSE
rename to lib/jquery-taphold/LICENSE
diff --git a/demo/jquery-taphold/taphold.js b/lib/jquery-taphold/taphold.js
similarity index 85%
rename from demo/jquery-taphold/taphold.js
rename to lib/jquery-taphold/taphold.js
index babebe1..d9a6035 100644
--- a/demo/jquery-taphold/taphold.js
+++ b/lib/jquery-taphold/taphold.js
@@ -97,21 +97,21 @@
// Determine if touch events are supported.
var touchSupported = ("ontouchstart" in window) // Most browsers
- || ("onmsgesturechange" in window); // Mircosoft
+ || ("onmsgesturechange" in window); // Microsoft
var taphold = $.event.special.taphold =
{
setup: function(data)
{
- $(this).bind((touchSupported ? "touchstart" : "mousedown"), data, startHandler)
- .bind((touchSupported ? "touchend" : "mouseup"), stopHandler)
- .bind((touchSupported ? "touchmove" : "mouseleave"), leaveHandler);
+ $(this).bind((touchSupported ? "touchstart" : "mousedown"), data, startHandler)
+ .bind((touchSupported ? "touchend" : "mouseup"), stopHandler)
+ .bind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
},
teardown: function(namespaces)
{
- $(this).unbind((touchSupported ? "touchstart" : "mousedown"), startHandler)
- .unbind((touchSupported ? "touchend" : "mouseup"), stopHandler)
- .unbind((touchSupported ? "touchmove" : "mouseleave"), leaveHandler);
+ $(this).unbind((touchSupported ? "touchstart" : "mousedown"), startHandler)
+ .unbind((touchSupported ? "touchend" : "mouseup"), stopHandler)
+ .unbind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
}
};
})(jQuery);
diff --git a/lib/qunit-composite.css b/lib/qunit-composite.css
new file mode 100644
index 0000000..a69fcf8
--- /dev/null
+++ b/lib/qunit-composite.css
@@ -0,0 +1,47 @@
+.qunit-composite-suite {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+
+ margin: 0;
+ padding: 0;
+ border-width: 1px 0 0;
+ height: 45%;
+ width: 100%;
+
+ background: #fff;
+}
+
+#qunit-testsuites {
+ margin: 0;
+ padding: 0.5em 1.0em;
+ font-family: "Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial,sans-serif;
+ font-size: small;
+ background-color: #d2e0e6;
+ border-bottom: 1px solid #fff;
+}
+
+#qunit-testsuites a {
+ color: #00c;
+ text-decoration: none;
+}
+
+#qunit-testsuites a:hover {
+ text-decoration: underline;
+}
+
+#qunit-testsuites > li {
+ display: inline-block;
+}
+
+#qunit-testsuites > li:first-child::before {
+ content: "Suites: ";
+}
+
+#qunit-testsuites > li + li::before {
+ content: "|\a0";
+}
+
+#qunit-testsuites > li::after {
+ content: "\a0";
+}
diff --git a/lib/qunit-composite.js b/lib/qunit-composite.js
new file mode 100644
index 0000000..c68852b
--- /dev/null
+++ b/lib/qunit-composite.js
@@ -0,0 +1,228 @@
+/**
+ * QUnit Composite
+ *
+ * https://github.com/JamesMGreene/qunit-composite
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * https://jquery.org/license/
+ */
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( [ "qunit" ], factory );
+ } else {
+ factory( QUnit );
+ }
+}(function( QUnit ) {
+var iframe, hasBound, resumeTests, suiteAssert,
+ modules = 1,
+ executingComposite = false;
+
+function hasClass( elem, name ) {
+ return ( " " + elem.className + " " ).indexOf( " " + name + " " ) > -1;
+}
+
+function addClass( elem, name ) {
+ if ( !hasClass( elem, name ) ) {
+ elem.className += ( elem.className ? " " : "" ) + name;
+ }
+}
+
+function addEvent( elem, type, fn ) {
+ if ( elem.addEventListener ) {
+ // Standards-based browsers
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ // support: IE <9
+ elem.attachEvent( "on" + type, fn );
+ }
+}
+
+function runSuite( suite ) {
+ var path;
+
+ if ( QUnit.is( "object", suite ) ) {
+ path = suite.path;
+ suite = suite.name;
+ } else {
+ path = suite;
+ }
+
+ QUnit.test( suite, function( assert ) {
+ resumeTests = assert.async();
+ suiteAssert = assert;
+ iframe.setAttribute( "src", path );
+ // QUnit.start is called from the child iframe's QUnit.done hook.
+ });
+}
+
+function initIframe() {
+ var iframeWin,
+ body = document.body;
+
+ function onIframeLoad() {
+ var moduleName, testName,
+ count = 0;
+
+ if ( !iframe.src ) {
+ return;
+ }
+
+ // Deal with QUnit being loaded asynchronously via AMD
+ if ( !iframeWin.QUnit && iframeWin.define && iframeWin.define.amd ) {
+ return iframeWin.require( [ "qunit" ], onIframeLoad );
+ }
+
+ iframeWin.QUnit.moduleStart(function( data ) {
+ // Capture module name for messages
+ moduleName = data.name;
+ });
+
+ iframeWin.QUnit.testStart(function( data ) {
+ // Capture test name for messages
+ testName = data.name;
+ });
+ iframeWin.QUnit.testDone(function() {
+ testName = undefined;
+ });
+
+ iframeWin.QUnit.log(function( data ) {
+ if (testName === undefined) {
+ return;
+ }
+ // Pass all test details through to the main page
+ var message = ( moduleName ? moduleName + ": " : "" ) + testName + ": " + ( data.message || ( data.result ? "okay" : "failed" ) );
+ suiteAssert.expect( ++count );
+ suiteAssert.push( data.result, data.actual, data.expected, message );
+ });
+
+ // Continue the outer test when the iframe's test is done
+ iframeWin.QUnit.done(function() {
+ resumeTests();
+ });
+ }
+
+ iframe = document.createElement( "iframe" );
+ iframe.className = "qunit-composite-suite";
+ body.appendChild( iframe );
+
+ addEvent( iframe, "load", onIframeLoad );
+
+ iframeWin = iframe.contentWindow;
+}
+
+function appendSuitesToHeader( suites ) {
+ var i, suitesLen, suite, path, name, suitesEl, testResultEl,
+ newSuiteListItemEl, newSuiteLinkEl;
+
+ suitesEl = document.getElementById("qunit-testsuites");
+
+ if (!suitesEl) {
+ testResultEl = document.getElementById("qunit-testresult");
+
+ if (!testResultEl) {
+ // QUnit has not been set up yet. Defer until QUnit is ready.
+ QUnit.begin(function () {
+ appendSuitesToHeader(suites);
+ });
+ return;
+ }
+
+ suitesEl = document.createElement("ul");
+ suitesEl.id = "qunit-testsuites";
+ testResultEl.parentNode.insertBefore(suitesEl, testResultEl);
+ }
+
+ for (i = 0, suitesLen = suites.length; i < suitesLen; ++i) {
+ suite = suites[i];
+ newSuiteLinkEl = document.createElement("a");
+ newSuiteLinkEl.innerHTML = suite.name || suite;
+ newSuiteLinkEl.href = suite.path || suite;
+
+ newSuiteListItemEl = document.createElement("li");
+ newSuiteListItemEl.appendChild(newSuiteLinkEl);
+
+ suitesEl.appendChild(newSuiteListItemEl);
+ }
+}
+
+/**
+ * @param {string} [name] Module name to group these test suites.
+ * @param {Array} suites List of suites where each suite
+ * may either be a string (path to the html test page),
+ * or an object with a path and name property.
+ */
+QUnit.testSuites = function( name, suites ) {
+ var i, suitesLen;
+
+ if ( arguments.length === 1 ) {
+ suites = name;
+ name = "Composition #" + modules++;
+ }
+ suitesLen = suites.length;
+
+ appendSuitesToHeader(suites);
+
+ if ( !hasBound ) {
+ hasBound = true;
+ QUnit.begin( initIframe );
+
+ // TODO: Would be better to use something like QUnit.once( 'moduleDone' )
+ // after the last test suite.
+ QUnit.moduleDone( function () {
+ executingComposite = false;
+ } );
+
+ QUnit.done(function() {
+ iframe.style.display = "none";
+ });
+ }
+
+ QUnit.module( name, {
+ beforeEach: function () {
+ executingComposite = true;
+ }
+ });
+
+ for ( i = 0; i < suitesLen; i++ ) {
+ runSuite( suites[ i ] );
+ }
+};
+
+QUnit.testDone(function( data ) {
+ if ( !executingComposite ) {
+ return;
+ }
+
+ var i, len,
+ testId = data.testId,
+ current = document.getElementById( "qunit-test-output-" + testId ),
+ children = current && current.children,
+ src = iframe.src;
+
+ if (!(current && children)) {
+ return;
+ }
+
+ addEvent( current, "dblclick", function( e ) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = src;
+ }
+ });
+
+ // Undo QUnit's auto-expansion for bad tests
+ for ( i = 0, len = children.length; i < len; i++ ) {
+ if ( children[ i ].nodeName.toLowerCase() === "ol" ) {
+ addClass( children[ i ], "qunit-collapsed" );
+ }
+ }
+
+ // Update Rerun link to point to the standalone test suite page
+ current.getElementsByTagName( "a" )[ 0 ].href = src;
+});
+
+}));
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..4429318
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3418 @@
+{
+ "name": "ui-contextmenu",
+ "version": "1.18.2-0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "JSV": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
+ "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
+ "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.16",
+ "negotiator": "0.6.1"
+ }
+ },
+ "agent-base": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
+ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+ "dev": true,
+ "requires": {
+ "extend": "~3.0.0",
+ "semver": "~5.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
+ "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
+ "dev": true
+ }
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "applause": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/applause/-/applause-1.2.2.tgz",
+ "integrity": "sha1-qEaFeegfZzl7tWNMKZU77c0PVsA=",
+ "dev": true,
+ "requires": {
+ "cson-parser": "^1.1.0",
+ "js-yaml": "^3.3.0",
+ "lodash": "^3.10.0"
+ }
+ },
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "body": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
+ "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
+ "dev": true,
+ "requires": {
+ "continuable-cache": "^0.3.1",
+ "error": "^7.0.0",
+ "raw-body": "~1.1.0",
+ "safe-json-parse": "~1.0.1"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "dev": true,
+ "requires": {
+ "pako": "~0.2.0"
+ }
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
+ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cli": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
+ "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
+ "dev": true,
+ "requires": {
+ "exit": "0.1.2",
+ "glob": "^7.1.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "cli-table": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
+ "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
+ "dev": true,
+ "requires": {
+ "colors": "1.0.3"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "coffeescript": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz",
+ "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
+ "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+ "dev": true,
+ "requires": {
+ "graceful-readlink": ">= 1.0.0"
+ }
+ },
+ "comment-parser": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.3.2.tgz",
+ "integrity": "sha1-PAPwd2uGo239mgosl8YwfzMggv4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.4"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.0.3",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "connect": {
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+ "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.0",
+ "parseurl": "~1.3.2",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.3.1",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ }
+ }
+ },
+ "connect-livereload": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
+ "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "continuable-cache": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
+ "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
+ "dev": true
+ },
+ "cookiejar": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
+ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cson-parser": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz",
+ "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=",
+ "dev": true,
+ "requires": {
+ "coffee-script": "^1.10.0"
+ },
+ "dependencies": {
+ "coffee-script": {
+ "version": "1.12.7",
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
+ "dev": true
+ }
+ }
+ },
+ "cst": {
+ "version": "0.4.10",
+ "resolved": "https://registry.npmjs.org/cst/-/cst-0.4.10.tgz",
+ "integrity": "sha512-U5ETe1IOjq2h56ZcBE3oe9rT7XryCH6IKgPMv0L7sSk6w29yR3p5egCK0T3BDNHHV95OoUBgXsqiVG+3a900Ag==",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.9.2",
+ "babylon": "^6.8.1",
+ "source-map-support": "^0.4.0"
+ }
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1",
+ "meow": "^3.3.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "~1.1.1",
+ "entities": "~1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ }
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
+ "dev": true
+ },
+ "error": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
+ "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=",
+ "dev": true,
+ "requires": {
+ "string-template": "~0.2.1",
+ "xtend": "~4.0.0"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz",
+ "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "extract-zip": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
+ "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.0",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.0",
+ "yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "fg-lodash": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/fg-lodash/-/fg-lodash-0.0.2.tgz",
+ "integrity": "sha1-mINSU39CfaavIiEpu2OsyknmL6M=",
+ "dev": true,
+ "requires": {
+ "lodash": "^2.4.1",
+ "underscore.string": "~2.3.3"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ }
+ }
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "formidable": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
+ "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.2",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globule": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
+ "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+ "dev": true,
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+ "dev": true
+ },
+ "grunt": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.3.tgz",
+ "integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==",
+ "dev": true,
+ "requires": {
+ "coffeescript": "~1.10.0",
+ "dateformat": "~1.0.12",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.1",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.0.0",
+ "grunt-cli": "~1.2.0",
+ "grunt-known-options": "~1.1.0",
+ "grunt-legacy-log": "~2.0.0",
+ "grunt-legacy-util": "~1.1.1",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.5.2",
+ "minimatch": "~3.0.2",
+ "mkdirp": "~0.5.1",
+ "nopt": "~3.0.6",
+ "path-is-absolute": "~1.0.0",
+ "rimraf": "~2.6.2"
+ },
+ "dependencies": {
+ "grunt-cli": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
+ "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
+ "dev": true,
+ "requires": {
+ "findup-sync": "~0.3.0",
+ "grunt-known-options": "~1.1.0",
+ "nopt": "~3.0.6",
+ "resolve": "~1.1.0"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ }
+ }
+ },
+ "grunt-contrib-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz",
+ "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0",
+ "source-map": "^0.5.3"
+ }
+ },
+ "grunt-contrib-connect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
+ "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=",
+ "dev": true,
+ "requires": {
+ "async": "^1.5.2",
+ "connect": "^3.4.0",
+ "connect-livereload": "^0.5.0",
+ "http2": "^3.3.4",
+ "morgan": "^1.6.1",
+ "opn": "^4.0.0",
+ "portscanner": "^1.0.0",
+ "serve-index": "^1.7.1",
+ "serve-static": "^1.10.0"
+ }
+ },
+ "grunt-contrib-jshint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz",
+ "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "hooker": "^0.2.3",
+ "jshint": "~2.9.4"
+ }
+ },
+ "grunt-contrib-qunit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-1.3.0.tgz",
+ "integrity": "sha1-naxijP1OyBWZhjPbc7Ur2z3byZ4=",
+ "dev": true,
+ "requires": {
+ "grunt-lib-phantomjs": "^1.0.0"
+ }
+ },
+ "grunt-contrib-uglify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-1.0.2.tgz",
+ "integrity": "sha1-rmekb5FT7dTLEYE6Vetpxw19svs=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0",
+ "lodash": "^4.0.1",
+ "maxmin": "^1.1.0",
+ "uglify-js": "~2.6.2",
+ "uri-path": "^1.0.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ }
+ }
+ },
+ "grunt-contrib-watch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz",
+ "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.0",
+ "gaze": "^1.1.0",
+ "lodash": "^4.17.10",
+ "tiny-lr": "^1.1.1"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ }
+ }
+ },
+ "grunt-exec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-1.0.1.tgz",
+ "integrity": "sha1-5dU6OcXzRpATBe3uXIfbDyr5mcQ=",
+ "dev": true
+ },
+ "grunt-jscs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-jscs/-/grunt-jscs-3.0.1.tgz",
+ "integrity": "sha1-H65Q4+lV3546nZQlrsIqzK4AgJI=",
+ "dev": true,
+ "requires": {
+ "hooker": "~0.2.3",
+ "jscs": "~3.0.5",
+ "lodash": "~4.6.1",
+ "vow": "~0.4.1"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.6.1.tgz",
+ "integrity": "sha1-3wDBFkrSNrGDz8OIel6NOMxjy7w=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-known-options": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz",
+ "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=",
+ "dev": true
+ },
+ "grunt-legacy-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
+ "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
+ "dev": true,
+ "requires": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.0.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.5"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz",
+ "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
+ "dev": true,
+ "requires": {
+ "chalk": "~2.4.1",
+ "lodash": "~4.17.10"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz",
+ "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
+ "dev": true,
+ "requires": {
+ "async": "~1.5.2",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.10",
+ "underscore.string": "~3.3.4",
+ "which": "~1.3.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "grunt-lib-phantomjs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-lib-phantomjs/-/grunt-lib-phantomjs-1.1.0.tgz",
+ "integrity": "sha1-np7c3Z/S3UDgwYHJQ3HVcqpe6tI=",
+ "dev": true,
+ "requires": {
+ "eventemitter2": "^0.4.9",
+ "phantomjs-prebuilt": "^2.1.3",
+ "rimraf": "^2.5.2",
+ "semver": "^5.1.0",
+ "temporary": "^0.0.8"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ }
+ }
+ },
+ "grunt-saucelabs": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-9.0.0.tgz",
+ "integrity": "sha1-1ogCWgVQHeysCp4SndTk9QpCAUo=",
+ "dev": true,
+ "requires": {
+ "colors": "~1.1.2",
+ "lodash": "~4.13.1",
+ "q": "~1.4.1",
+ "requestretry": "~1.9.0",
+ "sauce-tunnel": "~2.5.0",
+ "saucelabs": "~1.2.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz",
+ "integrity": "sha1-g+SxCRP0hJbU0W/sSlYK8u50S2g=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-yabs": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/grunt-yabs/-/grunt-yabs-1.1.4.tgz",
+ "integrity": "sha512-fmYU9BM+mEMXBaRjdK6U2AykjXmX2lT657Slisr6Ho1SfTeD1OD/ivszATOkCHM0EYIQTVBjTkxlHSJ0M/95Eg==",
+ "dev": true,
+ "requires": {
+ "applause": "^1.2.2",
+ "grunt": "^1.0.3",
+ "lodash": "^4.17.10",
+ "q": "^1.4.1",
+ "semver": "^5.3.0",
+ "shelljs": "^0.7.3",
+ "superagent": "^3.8.3"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ }
+ }
+ },
+ "gzip-size": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
+ "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=",
+ "dev": true,
+ "requires": {
+ "browserify-zlib": "^0.1.4",
+ "concat-stream": "^1.4.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "hasha": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
+ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
+ "dev": true,
+ "requires": {
+ "is-stream": "^1.0.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
+ }
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "dev": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "http-parser-js": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+ "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=",
+ "dev": true
+ },
+ "http2": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.6.tgz",
+ "integrity": "sha1-ffBiJ+ArW1pYQd7qCCObMZjQS+w=",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
+ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+ "dev": true,
+ "requires": {
+ "agent-base": "2",
+ "debug": "2",
+ "extend": "3"
+ }
+ },
+ "i": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
+ "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz",
+ "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherit": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz",
+ "integrity": "sha1-8WFLBshUToEo5CKchjR9tzrZeI0=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "jquery": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz",
+ "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c="
+ },
+ "jquery-ui-dist": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.12.1.tgz",
+ "integrity": "sha1-XAgV08xvkP9fqvWyaKbiO0ypBPo=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz",
+ "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.2",
+ "esprima": "^2.6.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jscs": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/jscs/-/jscs-3.0.7.tgz",
+ "integrity": "sha1-cUG03/W4bjLQ6Z12S4NnZ8MNIBo=",
+ "dev": true,
+ "requires": {
+ "chalk": "~1.1.0",
+ "cli-table": "~0.3.1",
+ "commander": "~2.9.0",
+ "cst": "^0.4.3",
+ "estraverse": "^4.1.0",
+ "exit": "~0.1.2",
+ "glob": "^5.0.1",
+ "htmlparser2": "3.8.3",
+ "js-yaml": "~3.4.0",
+ "jscs-jsdoc": "^2.0.0",
+ "jscs-preset-wikimedia": "~1.0.0",
+ "jsonlint": "~1.6.2",
+ "lodash": "~3.10.0",
+ "minimatch": "~3.0.0",
+ "natural-compare": "~1.2.2",
+ "pathval": "~0.1.1",
+ "prompt": "~0.2.14",
+ "reserved-words": "^0.1.1",
+ "resolve": "^1.1.6",
+ "strip-bom": "^2.0.0",
+ "strip-json-comments": "~1.0.2",
+ "to-double-quotes": "^2.0.0",
+ "to-single-quotes": "^2.0.0",
+ "vow": "~0.4.8",
+ "vow-fs": "~0.3.4",
+ "xmlbuilder": "^3.1.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "js-yaml": {
+ "version": "3.4.6",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz",
+ "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.2",
+ "esprima": "^2.6.0",
+ "inherit": "^2.2.2"
+ }
+ }
+ }
+ },
+ "jscs-jsdoc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jscs-jsdoc/-/jscs-jsdoc-2.0.0.tgz",
+ "integrity": "sha1-9T684CmqMSW9iCkLpQ1k1FEKSHE=",
+ "dev": true,
+ "requires": {
+ "comment-parser": "^0.3.1",
+ "jsdoctypeparser": "~1.2.0"
+ }
+ },
+ "jscs-preset-wikimedia": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/jscs-preset-wikimedia/-/jscs-preset-wikimedia-1.0.1.tgz",
+ "integrity": "sha512-RWqu6IYSUlnYuCRCF0obCOHjJV0vhpLcvKbauwxmLQoZ0PiXDTWBYlfpsEfdhg7pmREAEwrARfDRz5qWD6qknA==",
+ "dev": true
+ },
+ "jsdoctypeparser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz",
+ "integrity": "sha1-597cFToRhJ/8UUEUSuhqfvDCU5I=",
+ "dev": true,
+ "requires": {
+ "lodash": "^3.7.0"
+ }
+ },
+ "jshint": {
+ "version": "2.9.5",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
+ "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
+ "dev": true,
+ "requires": {
+ "cli": "~1.0.0",
+ "console-browserify": "1.1.x",
+ "exit": "0.1.x",
+ "htmlparser2": "3.8.x",
+ "lodash": "3.7.x",
+ "minimatch": "~3.0.2",
+ "shelljs": "0.3.x",
+ "strip-json-comments": "1.0.x"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
+ "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=",
+ "dev": true
+ }
+ }
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonlint": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz",
+ "integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==",
+ "dev": true,
+ "requires": {
+ "JSV": "^4.0.x",
+ "nomnom": "^1.5.x"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "kew": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true
+ },
+ "livereload-js": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
+ "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "maxmin": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
+ "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0",
+ "figures": "^1.0.1",
+ "gzip-size": "^1.0.0",
+ "pretty-bytes": "^1.0.0"
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz",
+ "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz",
+ "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.29.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "morgan": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz",
+ "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=",
+ "dev": true,
+ "requires": {
+ "basic-auth": "~2.0.0",
+ "debug": "2.6.9",
+ "depd": "~1.1.1",
+ "on-finished": "~2.3.0",
+ "on-headers": "~1.0.1"
+ },
+ "dependencies": {
+ "basic-auth": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
+ "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.2.2.tgz",
+ "integrity": "sha1-H5bWDjFBysG20FZTzg2urHY69qo=",
+ "dev": true
+ },
+ "ncp": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
+ "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "nomnom": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
+ "dev": true,
+ "requires": {
+ "chalk": "~0.4.0",
+ "underscore": "~1.6.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "~1.0.0",
+ "has-color": "~0.1.0",
+ "strip-ansi": "~0.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "package": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz",
+ "integrity": "sha1-0lofmeJQbcsn1nBLg9yooxLk7cw=",
+ "dev": true
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pathval": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-0.1.1.tgz",
+ "integrity": "sha1-CPkRzcqczllCiA2ngXvAtyO2bYI=",
+ "dev": true
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "phantomjs-prebuilt": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
+ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
+ "dev": true,
+ "requires": {
+ "es6-promise": "^4.0.3",
+ "extract-zip": "^1.6.5",
+ "fs-extra": "^1.0.0",
+ "hasha": "^2.2.0",
+ "kew": "^0.7.0",
+ "progress": "^1.1.8",
+ "request": "^2.81.0",
+ "request-progress": "^2.0.1",
+ "which": "^1.2.10"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkginfo": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
+ "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=",
+ "dev": true
+ },
+ "portscanner": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
+ "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2"
+ }
+ },
+ "pretty-bytes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
+ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1",
+ "meow": "^3.1.0"
+ }
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "dev": true
+ },
+ "prompt": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
+ "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=",
+ "dev": true,
+ "requires": {
+ "pkginfo": "0.x.x",
+ "read": "1.0.x",
+ "revalidator": "0.1.x",
+ "utile": "0.2.x",
+ "winston": "0.8.x"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
+ "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+ "dev": true
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
+ "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
+ "dev": true,
+ "requires": {
+ "bytes": "1",
+ "string_decoder": "0.10"
+ }
+ },
+ "read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "dev": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "request": {
+ "version": "2.87.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+ "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "dependencies": {
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.1.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "request-progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+ "dev": true,
+ "requires": {
+ "throttleit": "^1.0.0"
+ }
+ },
+ "requestretry": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.9.1.tgz",
+ "integrity": "sha1-CioATq8hGWnEzCz+vz/p5XuSx04=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "fg-lodash": "0.0.2",
+ "request": "^2.74.x",
+ "when": "~3.7.5"
+ }
+ },
+ "reserved-words": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
+ "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "revalidator": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
+ "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "safe-json-parse": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
+ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
+ "dev": true
+ },
+ "sauce-tunnel": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.5.0.tgz",
+ "integrity": "sha1-DuTE/5tH4BPosHLL+sSVt/7Y6Os=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "request": "^2.72.0",
+ "split": "^1.0.0"
+ }
+ },
+ "saucelabs": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.2.0.tgz",
+ "integrity": "sha1-XoBHazbaG0LRDzlwfprypTsD2Io=",
+ "dev": true,
+ "requires": {
+ "https-proxy-agent": "^1.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.2",
+ "send": "0.16.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.5.6"
+ }
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "^1.0.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ },
+ "string-template": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
+ "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
+ "dev": true
+ },
+ "superagent": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
+ "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
+ "dev": true,
+ "requires": {
+ "component-emitter": "^1.2.0",
+ "cookiejar": "^2.1.0",
+ "debug": "^3.1.0",
+ "extend": "^3.0.0",
+ "form-data": "^2.3.1",
+ "formidable": "^1.2.0",
+ "methods": "^1.1.1",
+ "mime": "^1.4.1",
+ "qs": "^6.5.1",
+ "readable-stream": "^2.3.5"
+ },
+ "dependencies": {
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "temporary": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/temporary/-/temporary-0.0.8.tgz",
+ "integrity": "sha1-oYqYHSi6jKNgJ/s8MFOMPst0CsA=",
+ "dev": true,
+ "requires": {
+ "package": ">= 1.0.0 < 1.2.0"
+ }
+ },
+ "throttleit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tiny-lr": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
+ "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==",
+ "dev": true,
+ "requires": {
+ "body": "^5.1.0",
+ "debug": "^3.1.0",
+ "faye-websocket": "~0.10.0",
+ "livereload-js": "^2.3.0",
+ "object-assign": "^4.1.0",
+ "qs": "^6.4.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "to-double-quotes": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-double-quotes/-/to-double-quotes-2.0.0.tgz",
+ "integrity": "sha1-qvIx1vqUiUn4GTAburRITYWI5Kc=",
+ "dev": true
+ },
+ "to-single-quotes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/to-single-quotes/-/to-single-quotes-2.0.1.tgz",
+ "integrity": "sha1-fMKRUfD18sQZRvEZ9ZMv5VQXASU=",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz",
+ "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=",
+ "dev": true,
+ "requires": {
+ "async": "~0.2.6",
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
+ "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "uri-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz",
+ "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "utile": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
+ "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=",
+ "dev": true,
+ "requires": {
+ "async": "~0.2.9",
+ "deep-equal": "*",
+ "i": "0.3.x",
+ "mkdirp": "0.x.x",
+ "ncp": "0.4.x",
+ "rimraf": "2.x.x"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ }
+ }
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "~1.0.0",
+ "spdx-expression-parse": "~1.0.0"
+ }
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "vow": {
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.17.tgz",
+ "integrity": "sha512-A3/9bWFqf6gT0jLR4/+bT+IPTe1mQf+tdsW6+WI5geP9smAp8Kbbu4R6QQCDKZN/8TSCqTlXVQm12QliB4rHfg==",
+ "dev": true
+ },
+ "vow-fs": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.6.tgz",
+ "integrity": "sha1-LUxZviLivyYY3fWXq0uqkjvnIA0=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5",
+ "uuid": "^2.0.2",
+ "vow": "^0.4.7",
+ "vow-queue": "^0.4.1"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "vow-queue": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.3.tgz",
+ "integrity": "sha512-/poAKDTFL3zYbeQg7cl4BGcfP4sGgXKrHnRFSKj97dteUFu8oyXMwIcdwu8NSx/RmPGIuYx1Bik/y5vU4H/VKw==",
+ "dev": true,
+ "requires": {
+ "vow": "^0.4.17"
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "dev": true,
+ "requires": {
+ "http-parser-js": ">=0.4.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+ "dev": true
+ },
+ "when": {
+ "version": "3.7.8",
+ "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
+ "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true
+ },
+ "winston": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
+ "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.x",
+ "colors": "0.6.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "pkginfo": "0.3.x",
+ "stack-trace": "0.0.x"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "pkginfo": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
+ "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=",
+ "dev": true
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xmlbuilder": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz",
+ "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=",
+ "dev": true,
+ "requires": {
+ "lodash": "^3.5.0"
+ }
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true
+ }
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "dev": true,
+ "requires": {
+ "fd-slicer": "~1.0.1"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 09d5081..00b3ce0 100644
--- a/package.json
+++ b/package.json
@@ -1,52 +1,72 @@
{
"name": "ui-contextmenu",
- "version": "1.3.0-1",
+ "filename": "jquery.ui-contextmenu.min.js",
+ "main": "jquery.ui-contextmenu.js",
+ "version": "1.18.2-0",
"title": "jQuery UI context menu plugin",
"description": "Turn a jQuery UI Menu widget into a contextmenu.",
"keywords": [
- "context-menu",
- "contextmenu",
- "delegate",
- "jquery-ui-menu",
- "menu",
- "navigation",
- "popup",
- "right-click",
- "right-click-menu"
+ "context-menu",
+ "contextmenu",
+ "delegate",
+ "ecosystem:jquery",
+ "jquery-plugin",
+ "jquery-ui-menu",
+ "menu",
+ "navigation",
+ "popup",
+ "right-click",
+ "right-click-menu"
],
"author": {
- "name": "Martin Wendt",
- "email": "jquery@wwwendt.de",
- "url": "http://careers.stackoverflow.com/martin-wendt"
+ "name": "Martin Wendt",
+ "email": "jquery@wwwendt.de",
+ "url": "http://careers.stackoverflow.com/martin-wendt"
},
"repository": {
- "type": "git",
- "url": "https://github.com/mar10/jquery-ui-contextmenu"
+ "type": "git",
+ "url": "https://github.com/mar10/jquery-ui-contextmenu"
},
"homepage": "https://github.com/mar10/jquery-ui-contextmenu",
"demo": "http://wwwendt.de/tech/demo/jquery-contextmenu/demo/",
"docs": "https://github.com/mar10/jquery-ui-contextmenu/blob/master/README.md",
"bugs": "https://github.com/mar10/jquery-ui-contextmenu/issues",
+ "license": "MIT",
"licenses": [
- {
- "type": "MIT",
- "url": "https://github.com/mar10/jquery-ui-contextmenu/blob/master/MIT-LICENSE.txt"
- }
+ {
+ "type": "MIT",
+ "url": "https://raw.githubusercontent.com/mar10/jquery-ui-contextmenu/master/LICENSE.txt"
+ }
],
"dependencies": {
- "jquery": ">=1.7"
+ "jquery": ">=1.7"
},
"devDependencies": {
- "grunt": "~0.4.1",
- "grunt-contrib-concat": "~0.1.3",
- "grunt-contrib-connect": "~0.3.0",
- "grunt-contrib-jshint": "~0.3.0",
- "grunt-contrib-qunit": "~0.2.0",
- "grunt-contrib-uglify": "~0.2.0",
- "grunt-exec": "~0.4.0",
- "grunt-saucelabs": "~4.1.2"
+ "grunt": "^1.0.3",
+ "grunt-contrib-concat": "^1.0.0",
+ "grunt-contrib-connect": "^1.0.0",
+ "grunt-contrib-jshint": "^1.0.0",
+ "grunt-contrib-qunit": "^1.3.0",
+ "grunt-contrib-uglify": "^1.0.0",
+ "grunt-contrib-watch": "^1.1.0",
+ "grunt-exec": "^1.0.0",
+ "grunt-jscs": "^3.0.1",
+ "grunt-saucelabs": "^9.0.0",
+ "grunt-yabs": "^1.1.4",
+ "jquery-ui-dist": "^1.12.1"
},
"scripts": {
- "test": "grunt ci --verbose"
- }
+ "test": "grunt ci --verbose"
+ },
+ "npmName": "ui-contextmenu",
+ "npmFileMap": [
+ {
+ "basePath": "/",
+ "files": [
+ "jquery.ui-contextmenu.js",
+ "jquery.ui-contextmenu.min.js",
+ "jquery.ui-contextmenu.min.js.map"
+ ]
+ }
+ ]
}
diff --git a/test/index.html b/test/index.html
index ef48ae8..bb79db7 100644
--- a/test/index.html
+++ b/test/index.html
@@ -1,44 +1,33 @@
-
+
-
-
jquery.ui-contextmenu Test Suite
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Sample Markup
-
-
-
-
-
+
+
QUnit Composite Test Suite
+
+
+
-
+
+
+
-
+
+
+
+
+
+
diff --git a/test/issue-33.html b/test/issue-33.html
deleted file mode 100644
index ef9c1cc..0000000
--- a/test/issue-33.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Id
- File Name
-
-
-
-
-
-
-
diff --git a/test/test-jquery-1.11-ui-1.11.html b/test/test-jquery-1.11-ui-1.11.html
new file mode 100644
index 0000000..cfa13a1
--- /dev/null
+++ b/test/test-jquery-1.11-ui-1.11.html
@@ -0,0 +1,43 @@
+
+
+
+
+
jquery.ui-contextmenu Test Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sample Markup
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/test-jquery-1.12-ui-1.12.html b/test/test-jquery-1.12-ui-1.12.html
new file mode 100644
index 0000000..f317313
--- /dev/null
+++ b/test/test-jquery-1.12-ui-1.12.html
@@ -0,0 +1,44 @@
+
+
+
+
+
jquery.ui-contextmenu Test Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sample Markup
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/test-jquery-1.9-ui-1.10.html b/test/test-jquery-1.9-ui-1.10.html
new file mode 100644
index 0000000..90de77a
--- /dev/null
+++ b/test/test-jquery-1.9-ui-1.10.html
@@ -0,0 +1,43 @@
+
+
+
+
+
jquery.ui-contextmenu Test Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sample Markup
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/test-jquery-3-ui-1.12.html b/test/test-jquery-3-ui-1.12.html
new file mode 100644
index 0000000..efc8ea7
--- /dev/null
+++ b/test/test-jquery-3-ui-1.12.html
@@ -0,0 +1,44 @@
+
+
+
+
+
jquery.ui-contextmenu Test Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sample Markup
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/tests.js b/test/tests.js
index 983eaa6..da98756 100644
--- a/test/tests.js
+++ b/test/tests.js
@@ -1,7 +1,8 @@
// jQUnit defines:
- // asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,ok,QUnit,raises,start,stop,strictEqual,test
+ // asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,
+ // ok,QUnit,raises,start,stop,strictEqual,test
- /*globals asyncTest,equal,expect,module,ok,QUnit,start,test */
+ /*globals QUnit */
/**
* Tools inspired by https://github.com/jquery/jquery-ui/blob/master/tests/unit/menu/
@@ -10,7 +11,33 @@ function TestHelpers() {
var lastItem = "",
log = [],
- $ = jQuery;
+ $ = jQuery,
+ match = $.ui.menu.version.match(/^(\d)\.(\d+)/),
+ uiVersion = {
+ major: parseInt(match[1], 10),
+ minor: parseInt(match[2], 10)
+ },
+ uiVersionBefore11 = ( uiVersion.major < 2 && uiVersion.minor < 11 ),
+ uiVersionBefore12 = ( uiVersion.major < 2 && uiVersion.minor < 12 ),
+ findEntry = function( menu, indexOrCommand ) {
+ if ( typeof indexOrCommand === "number" ) {
+ return menu.children( ":eq(" + indexOrCommand + ")" );
+ }
+ return menu.find("li[data-command=" + indexOrCommand + "]");
+ },
+ findEntryInner = function( menu, indexOrCommand ) {
+ if ( uiVersionBefore11 ) {
+ // jQuery UI <= 1.10 used `
` tags
+ return findEntry(menu, indexOrCommand).find( "a:first" );
+ } else if ( uiVersionBefore12 ) {
+ // jQuery UI == 1.11 prefered to avoid ` ` tags
+ return findEntry(menu, indexOrCommand);
+ } else {
+ // jQuery UI 1.12+ introduced `` wrappers
+ return findEntry(menu, indexOrCommand).find( ">div:first" );
+ // return findEntry(menu, indexOrCommand).children( ".ui-menu-item-wrapper" );
+ }
+ };
return {
log: function( message, clear ) {
@@ -31,264 +58,304 @@ function TestHelpers() {
},
entryEvent: function( menu, item, type ) {
lastItem = item;
-// window.console.log(type + ": ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length);
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( type );
+ findEntryInner(menu, item).trigger( type );
},
click: function( menu, item ) {
lastItem = item;
-// window.console.log("clck: ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length);
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" );
+ // console.log("click", menu, item, findEntryInner(menu, item));
+ findEntryInner(menu, item).trigger( "click" );
},
- entry: function( menu, item ) {
- return menu.children( ":eq(" + item + ")" );
+ entry: findEntry,
+ entryTitle: function( menu, item ) {
+ // return the plain text (without sub-elements)
+ var ei = findEntryInner(menu, item);
+ if ( !ei || !ei.length ) { return null; }
+ return ei.contents().filter(function() {
+ return this.nodeType === 3;
+ })[0].nodeValue;
}
};
}
-
// ****************************************************************************
-
-jQuery(document).ready(function(){
+jQuery(document).ready(function() {
/*******************************************************************************
* QUnit setup
*/
-QUnit.log(function(data) {
- if (window.console && window.console.log) {
-// window.console.log(data.result + " :: " + data.message);
- }
-});
QUnit.config.requireExpects = true;
-
var th = new TestHelpers(),
+ $ = jQuery,
log = th.log,
logOutput = th.logOutput,
click = th.click,
entryEvent = th.entryEvent,
+ entryTitle = th.entryTitle,
entry = th.entry,
lifecycle = {
- setup: function () {
+ setup: function() {
th.clearLog();
// Always create a fresh copy of the menu
definition
$("#sampleMenuTemplate").clone().attr("id", "sampleMenu").appendTo("body");
},
- teardown: function () {
+ teardown: function() {
$(":moogle-contextmenu").contextmenu("destroy");
$("#sampleMenu").remove();
}
},
SAMPLE_MENU = [
- {title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors"},
- {title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
- {title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
- {title: "----"},
- {title: "More", children: [
- {title: "Sub Item 1", cmd: "sub1"},
- {title: "Sub Item 2", cmd: "sub2" }
- ]}
+ { title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors" },
+ { title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy" },
+ { title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true },
+ { title: "----" },
+ { title: "More", children: [
+ { title: "Sub Item 1", cmd: "sub1" },
+ { title: "Sub Item 2", cmd: "sub2" }
+ ] }
],
- $ = jQuery;
-
+ sauceLabsLog = [];
+
+// SauceLabs integration
+QUnit.testStart(function(testDetails) {
+ QUnit.log(function(details) {
+ if (!details.result) {
+ details.name = testDetails.name;
+ sauceLabsLog.push(details);
+ }
+ });
+});
+QUnit.done(function(testResults) {
+ var tests = [],
+ i, len, details;
+ for (i = 0, len = sauceLabsLog.length; i < len; i++) {
+ details = sauceLabsLog[i];
+ tests.push({
+ name: details.name,
+ result: details.result,
+ expected: details.expected,
+ actual: details.actual,
+ source: details.source
+ });
+ }
+ testResults.tests = tests;
+ /*jshint camelcase:false*/ // jscs: disable
+ window.global_test_results = testResults; // used by saucelabs
+ /*jshint camelcase:true*/ // jscs: enable
+});
//---------------------------------------------------------------------------
-module("prototype", lifecycle);
+QUnit.module("prototype", lifecycle);
-test("globals", function(){
- expect(2);
- ok( !!$.moogle.contextmenu, "exists in ui namnespace");
- ok( !!$.moogle.contextmenu.version, "has version number");
+QUnit.test("globals", function(assert) {
+ assert.expect(2);
+ assert.ok( !!$.moogle.contextmenu, "exists in ui namnespace");
+ assert.ok( !!$.moogle.contextmenu.version, "has version number");
});
-
// ---------------------------------------------------------------------------
-module("create", lifecycle);
+QUnit.module("create", lifecycle);
-function _createTest(menu){
+function _createTest(menu, assert) {
var $ctx;
- expect(5);
+ assert.expect(5);
log( "constructor");
$("#container").contextmenu({
delegate: ".hasmenu",
menu: menu,
preventSelect: true,
- create: function(){
+ create: function() {
log("create");
},
- createMenu: function(){
+ createMenu: function() {
log("createMenu");
}
});
log( "afterConstructor");
$ctx = $(":moogle-contextmenu");
- equal( $ctx.length, 1, "widget created");
-// ok($("#sampleMenu").hasClass( "moogle-contextmenu" ), "Class set to menu definition");
- equal( $("head style.moogle-contextmenu-style").length, 1, "global stylesheet created");
+ assert.equal( $ctx.length, 1, "widget created");
+ // equal( $("#sampleMenu").hasClass( "ui-contextmenu" ), true,
+ // "Class set to menu definition");
+ assert.equal( $("head style.moogle-contextmenu-style").length, 1, "global stylesheet created");
$ctx.contextmenu("destroy");
- equal( $(":moogle-contextmenu").length, 0, "widget destroyed");
-// ok( ! $("#sampleMenu").hasClass( "moogle-contextmenu" ), "Class removed from menu definition");
- equal( $("head style.moogle-contextmenu-style").length, 0, "global stylesheet removed");
+ assert.equal( $(":moogle-contextmenu").length, 0, "widget destroyed");
+ // equal( $("#sampleMenu").hasClass("ui-contextmenu"), false,
+ // "Class removed from menu definition");
+ assert.equal( $("head style.moogle-contextmenu-style").length, 0, "global stylesheet removed");
- equal(logOutput(), "constructor,createMenu,create,afterConstructor",
+ assert.equal(logOutput(), "constructor,createMenu,create,afterConstructor",
"Event sequence OK." );
}
-
-test("create from UL", function(){
- _createTest("ul#sampleMenu");
+QUnit.test("create from UL", function(assert) {
+ _createTest("ul#sampleMenu", assert);
});
-
-test("create from array", function(){
- _createTest(SAMPLE_MENU);
+QUnit.test("create from array", function(assert) {
+ _createTest(SAMPLE_MENU, assert);
});
-
//---------------------------------------------------------------------------
-module("open", lifecycle);
+QUnit.module("open", lifecycle);
-function _openTest(menu){
- var $ctx, $popup;
+function _openTest(menu, assert) {
+ var $ctx, $popup,
+ done = assert.async();
- expect(18);
+ assert.expect(19);
$("#container").contextmenu({
delegate: ".hasmenu",
menu: menu,
- beforeOpen: function(event, ui){
+ beforeOpen: function(event, ui) {
log("beforeOpen");
- equal( event.type, "contextmenubeforeopen",
+ assert.equal( event.type, "contextmenubeforeopen",
"beforeOpen: Got contextmenubeforeopen event" );
- equal( ui.target.text(), "AAA",
+ assert.equal( ui.target.text(), "AAA",
"beforeOpen: ui.target is set" );
- ok( $popup.is(":hidden"),
+ assert.ok( $popup.is(":hidden"),
"beforeOpen: Menu is hidden" );
- ok( ! entry($popup, 0).hasClass("ui-state-disabled"),
+ assert.ok( !entry($popup, 0).hasClass("ui-state-disabled"),
"beforeOpen: Entry 0 is enabled" );
- ok( entry($popup, 2).hasClass("ui-state-disabled"),
+ assert.ok( entry($popup, 2).hasClass("ui-state-disabled"),
"beforeOpen: Entry 2 is disabled" );
- ok($ctx.contextmenu("isOpen"), "isOpen() false in beforeOpen event");
+ assert.ok($ctx.contextmenu("isOpen"), "isOpen() false in beforeOpen event");
$("#container").contextmenu("enableEntry", "cut", false);
$("#container").contextmenu("showEntry", "copy", false);
},
- open: function(event){
+ open: function(event) {
log("open");
- ok( $popup.is(":visible"),
+ assert.ok( $popup.is(":visible"),
"open: Menu is visible" );
- ok( entry($popup, 2).hasClass("ui-state-disabled"),
+ assert.ok( $popup.hasClass("ui-contextmenu"),
+ "Class removed from menu definition");
+ assert.ok( entry($popup, 2).hasClass("ui-state-disabled"),
"open: Entry is disabled" );
- ok( $ctx.contextmenu("isOpen"),
+ assert.ok( $ctx.contextmenu("isOpen"),
"isOpen() true in open event");
- ok( entry($popup, 0).is(":visible"),
+ assert.ok( entry($popup, 0).is(":visible"),
"beforeOpen: Entry 0 is visible" );
- ok( entry($popup, 0).hasClass("ui-state-disabled"),
+ assert.ok( entry($popup, 0).hasClass("ui-state-disabled"),
"beforeOpen: Entry 0 is disabled: enableEntry(false) worked" );
- ok( entry($popup, 1).is(":hidden"),
+ assert.ok( entry($popup, 1).is(":hidden"),
"beforeOpen: Entry 1 is hidden: showEntry(false) worked" );
- ok( !entry($popup, 1).hasClass("ui-state-disabled"),
+ assert.ok( !entry($popup, 1).hasClass("ui-state-disabled"),
"beforeOpen: Entry 1 is enabled" );
- equal(logOutput(), "open(),beforeOpen,after open(),open",
+ assert.equal(logOutput(), "open(),beforeOpen,after open(),open",
"Event sequence OK.");
- start();
+ done();
}
});
$ctx = $(":moogle-contextmenu");
$popup = $ctx.contextmenu("getMenu");
- ok($popup, "getMenu() works");
- ok(!$ctx.contextmenu("isOpen"), "menu initially closed");
+ assert.ok($popup, "getMenu() works");
+ assert.ok(!$ctx.contextmenu("isOpen"), "menu initially closed");
- equal( $ctx.length, 1, "widget created");
- ok($popup.is(":hidden"), "Menu is hidden");
+ assert.equal( $ctx.length, 1, "widget created");
+ assert.ok($popup.is(":hidden"), "Menu is hidden");
log("open()");
$ctx.contextmenu("open", $("span.hasmenu:first"));
log("after open()");
}
-
-asyncTest("UL menu", function(){
- _openTest("ul#sampleMenu");
+QUnit.test("UL menu", function(assert) {
+ _openTest("ul#sampleMenu", assert);
});
-
-asyncTest("Array menu", function(){
- _openTest(SAMPLE_MENU);
+QUnit.test("Array menu", function(assert) {
+ _openTest(SAMPLE_MENU, assert);
});
-
//---------------------------------------------------------------------------
-module("click event sequence", lifecycle);
+QUnit.module("click event sequence", lifecycle);
-function _clickTest(menu){
- var $ctx, $popup;
+function _clickTest(menu, assert) {
+ var $ctx, $popup,
+ done = assert.async();
- expect(3);
+ assert.expect(13);
$("#container").contextmenu({
delegate: ".hasmenu",
menu: menu,
// show: false,
// hide: false,
- beforeOpen: function(event, ui){
+ beforeOpen: function(event, ui) {
log("beforeOpen(" + ui.target.text() + ")");
+ assert.equal( ui.target.text(), "AAA", "beforeOpen: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "beforeOpen: ui.extraData is set" );
+ ui.extraData.helloFromBO = true;
},
- create: function(event, ui){
+ create: function(event, ui) {
log("create");
},
- createMenu: function(event, ui){
+ createMenu: function(event, ui) {
log("createMenu");
},
- /*TODO: Seems that focus gets called twice in Safary, but nod PhantomJS */
-// focus: function(event, ui){
+ /*TODO: Seems that focus gets called twice in Safary, but not PhantomJS */
+// focus: function(event, ui) {
// var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
// log("focus(" + t + ")");
//// equal( ui.cmd, "cut", "focus: ui.cmd is set" );
//// ok( !ui.target || ui.target.text() === "AAA", "focus: ui.target is set" );
// },
// /* blur seems always to have ui.item === null. Also called twice in Safari? */
-// blur: function(event, ui){
+// blur: function(event, ui) {
// var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
// log("blur(" + t + ")");
//// equal( ui.cmd, "cut", "blur: ui.cmd is set" );
//// equal( ui.target && ui.target.text(), "AAA", "blur: ui.target is set" );
// },
- select: function(event, ui){
+ select: function(event, ui) {
// window.console.log("select");
- var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
+ var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
log("select(" + t + ")");
- equal( ui.cmd, "cut", "select: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.cmd, "cut", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "select: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "select: ui.extraData is maintained" );
},
- open: function(event){
+ open: function(event, ui) {
log("open");
- setTimeout(function(){
+ assert.equal( ui.target.text(), "AAA", "open: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "open: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "open: ui.extraData is maintained" );
+ setTimeout(function() {
entryEvent($popup, 0, "mouseenter");
click($popup, 0);
}, 10);
},
- close: function(event){
+ close: function(event, ui) {
log("close");
+ assert.equal( ui.target.text(), "AAA", "close: ui.target is set" );
+ assert.equal( ui.extraData.foo, "bar", "close: ui.extraData is set" );
+ assert.equal( ui.extraData.helloFromBO, true, "close: ui.extraData is maintained" );
+ assert.equal(logOutput(),
+ "createMenu,create,open(),beforeOpen(AAA),after open(),open,select(cut),close",
+ "Event sequence OK.");
+ done();
}
});
@@ -296,66 +363,66 @@ function _clickTest(menu){
$popup = $ctx.contextmenu("getMenu");
log("open()");
- $ctx.contextmenu("open", $("span.hasmenu:first"));
+ $ctx.contextmenu("open", $("span.hasmenu:first"), { foo: "bar" });
log("after open()");
-
- setTimeout(function(){
- // TODO: why is focus() called twice?
- equal(logOutput(), "createMenu,create,open(),beforeOpen(AAA),after open(),open,select(#cut),close",
- "Event sequence OK.");
- start();
- }, 1000);
}
-
-asyncTest("Array menu", function(){
- _clickTest(SAMPLE_MENU);
+QUnit.test("Array menu", function(assert) {
+ _clickTest(SAMPLE_MENU, assert);
});
-
-asyncTest("UL menu", function(){
- _clickTest("ul#sampleMenu");
+QUnit.test("UL menu", function(assert) {
+ _clickTest("ul#sampleMenu", assert);
});
-
// ****************************************************************************
+QUnit.module("Dynmic options", lifecycle);
-module("'action' option", lifecycle);
-
-asyncTest("Array menu", function(){
+QUnit.test("'action' option", function(assert) {
var $ctx, $popup,
menu = [
- {title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors",
- action: function(event, ui) {
- log("cut action");
- equal( ui.cmd, "cut", "action: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "action: ui.target is set" );
- }
- },
- {title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy"},
- {title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true }
- ];
+ { title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors",
+ data: { foo: "bar" }, addClass: "custom-class-1",
+ action: function(event, ui) {
+ log("cut action");
+ assert.equal( ui.cmd, "cut", "action: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "action: ui.target is set" );
+ assert.equal( ui.item.data().foo, "bar", "action: ui.item.data() is set" );
+ assert.ok( ui.item.hasClass("custom-class-1"),
+ "action: addClass property works" );
+ }
+ },
+ { title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy" },
+ { title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true }
+ ],
+ done = assert.async();
- expect(5);
+ assert.expect(9);
$("#container").contextmenu({
delegate: ".hasmenu",
menu: menu,
- open: function(event){
+ open: function(event) {
log("open");
- setTimeout(function(){
+ setTimeout(function() {
click($popup, 0);
}, 10);
},
- select: function(event, ui){
- var t = ui.item ? $(ui.item).find("a:first").attr("href") : ui.item;
+ select: function(event, ui) {
+ var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
log("select(" + t + ")");
- equal( ui.cmd, "cut", "select: ui.cmd is set" );
- equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.cmd, "cut", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ assert.equal( ui.item.data().foo, "bar", "ui.item.data() is set" );
+ assert.ok( ui.item.hasClass("custom-class-1"), "addClass property works" );
},
- close: function(event){
+ close: function(event) {
log("close");
+ assert.equal(logOutput(),
+ "open(),after open(),open,select(cut),cut action,close",
+ "Event sequence OK.");
+ done();
}
});
@@ -365,13 +432,235 @@ asyncTest("Array menu", function(){
log("open()");
$ctx.contextmenu("open", $("span.hasmenu:first"));
log("after open()");
+});
- setTimeout(function(){
- equal(logOutput(), "open(),after open(),open,select(#cut),cut action,close",
- "Event sequence OK.");
- start();
- }, 500);
+QUnit.test("'tooltip' / 'disabled' options", function(assert) {
+ var $ctx, $popup,
+ menu = [ {
+ title: "Cut", cmd: "cut", tooltip: function(event, ui) {
+ log("tooltip(cut)");
+ assert.equal( ui.cmd, "cut", "ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "ui.target is set" );
+ assert.equal( ui.item.text(), "Cut", "ui.item is set" );
+ return "dynamic tt";
+ }
+ },
+ { title: "Copy", cmd: "copy", tooltip: "static tt" },
+ { title: "Paste", cmd: "paste", disabled: true },
+ { title: "Delete", cmd: "delete", disabled: function(event, ui) {
+ log("disabled(delete)");
+ return false;
+ }
+ },
+ { title: "Edit", cmd: "edit", disabled: function(event, ui) {
+ log("disabled(edit)");
+ return true; }
+ },
+ { title: "Hidden", cmd: "hidden", disabled: function(event, ui) {
+ log("disabled(hidden)");
+ return "hide";
+ }
+ }
+ ],
+ done = assert.async();
+
+ assert.expect(12);
+
+ $("#container").contextmenu({
+ delegate: ".hasmenu",
+ menu: menu,
+ open: function(event) {
+ log("open");
+ assert.equal(entry($popup, "cut").attr("title"), "dynamic tt",
+ "tooltip callback result was used");
+ assert.equal(entry($popup, "copy").attr("title"), "static tt",
+ "static tooltip value was used");
+
+ assert.equal(entry($popup, "paste").hasClass("ui-state-disabled"), true,
+ "static disabled value was used");
+ assert.equal(entry($popup, "delete").hasClass("ui-state-disabled"), false,
+ "dynamic disabled value 'false' was used");
+ assert.ok(entry($popup, "delete").is(":visible"),
+ "dynamic disabled value 'false' does not hide");
+ assert.equal(entry($popup, "paste").hasClass("ui-state-disabled"), true,
+ "dynamic disabled value 'true' was used");
+ assert.ok(entry($popup, "delete").is(":visible"),
+ "dynamic disabled value 'true' does not hide");
+ assert.ok(entry($popup, "hidden").is(":hidden"),
+ "dynamic disabled value 'hide' was used");
+
+ // Click s.th. to close the menu
+ setTimeout(function() {
+ click($popup, 0);
+ }, 10);
+ },
+ close: function(event) {
+ log("close");
+ assert.equal(logOutput(),
+ "open(),tooltip(cut),disabled(delete),disabled(edit),disabled(hidden)," +
+ "after open(),open,close",
+ "Event sequence OK.");
+ done();
+ }
});
+ $ctx = $(":moogle-contextmenu");
+ $popup = $ctx.contextmenu("getMenu");
+
+ log("open()");
+ $ctx.contextmenu("open", $("span.hasmenu:first"));
+ log("after open()");
+});
+
+// ****************************************************************************
+
+QUnit.module("'beforeOpen' event", lifecycle);
+
+QUnit.test("modify on open", function(assert) {
+ var $ctx, $popup,
+ menu = [
+ { title: "Entry 1", cmd: "e1", uiIcon: "ui-icon-copy" },
+ { title: "Entry 2", cmd: "e2", uiIcon: "ui-icon-copy" },
+ { title: "Entry 3", cmd: "e3", uiIcon: "ui-icon-copy" },
+ { title: "Entry 4", cmd: "e4", uiIcon: "ui-icon-copy" },
+ { title: "Entry 5", cmd: "e5", uiIcon: "ui-icon-copy" },
+ { title: "Entry 6", cmd: "e6", uiIcon: "ui-icon-copy" },
+ { title: "Entry 7", cmd: "e7", uiIcon: "ui-icon-copy" },
+ { title: "Entry 8", cmd: "e8", uiIcon: "ui-icon-copy" },
+ { title: "Entry 9", cmd: "e9", uiIcon: "ui-icon-copy" }
+ ],
+ done = assert.async();
+
+ assert.expect(29);
+
+ $("#container").contextmenu({
+ delegate: ".hasmenu",
+ menu: menu,
+ beforeOpen: function(event, ui) {
+ log("beforeOpen");
+ $ctx
+ .contextmenu("setTitle", "e1", "Entry 1 - changed")
+ .contextmenu("setEntry", "e2", { uiIcon: "ui-icon-changed" })
+ .contextmenu("setEntry", "e3", {
+ title: "Entry 3 - changed", cmd: "e3",
+ children: [
+ { title: "Sub 1", cmd: "e3_1" },
+ { title: "Sub 2", cmd: "e3_2", disabled: true }
+ ]
+ } )
+ .contextmenu("setEntry", "e4", { title: "Entry 4 - changed", cmd: "e4_changed" })
+ .contextmenu("updateEntry", "e5", { uiIcon: "ui-icon-changed" });
+ },
+ open: function(event) {
+ log("open");
+ // setTitle()
+ assert.equal(entryTitle($popup, "e1"), "Entry 1 - changed",
+ "setTitle(string) changed title");
+ assert.equal(entry($popup, "e1").find("span.ui-icon").length, 1,
+ "setTitle(string) keeps existing icon");
+
+ // setEntry() with icon
+ assert.equal(entry($popup, "e2").find("span.ui-icon-changed").length, 1,
+ "setEntry() sets icon");
+ assert.equal(entryTitle($popup, "e2"), "undefined",
+ "setEntry() resets title");
+
+ // setEntry() with new sub-elements
+ assert.equal(entryTitle($popup, "e3"), "Entry 3 - changed",
+ "setEntry(object) set nested title");
+ assert.ok( !entry($popup, "e3").hasClass("ui-state-disabled"),
+ "setEntry(object) has reset 'disabled' attribute");
+ assert.equal(entryTitle($popup, "e3_1"), "Sub 1",
+ "setEntry(object) created nested entry");
+ assert.ok(entry($popup, "e3_2").hasClass("ui-state-disabled"),
+ "setEntry(object) created nested disabled entry");
+
+ // setEntry() with different CMD
+ assert.equal(entry($popup, "e4").length, 0,
+ "setEntry(object) change command id (old is gone)");
+ assert.equal(entry($popup, "e4_changed").length, 1,
+ "setEntry(object) change command id (new is set)");
+ assert.equal(entryTitle($popup, "e4_changed"), "Entry 4 - changed",
+ "setEntry(object) set title");
+
+ // updateEntry() with icon
+ assert.equal(entry($popup, "e5").find("span.ui-icon-changed").length, 1,
+ "updateEntry() sets icon");
+ assert.equal(entryTitle($popup, "e5"), "Entry 5",
+ "updateEntry() keeps title");
+
+ // Some more on-the-fly modifications
+
+ assert.ok( !entry($popup, "e9").is(":hidden"),
+ "Entry 9 is visible" );
+ assert.ok( !entry($popup, "e9").hasClass("ui-state-disabled"),
+ "Entry 9 is enabled" );
+
+ $ctx.contextmenu("enableEntry", "e9", false);
+ assert.ok( entry($popup, "e9").hasClass("ui-state-disabled"),
+ "enableEntry(false)" );
+
+ $ctx.contextmenu("setIcon", "e9", "ui-icon-changed");
+ assert.equal(entry($popup, "e9").find("span.ui-icon-changed").length, 1,
+ "setIcon()");
+
+ $ctx.contextmenu("setTitle", "e9", "Entry 9 - changed");
+ assert.equal(entryTitle($popup, "e9"), "Entry 9 - changed",
+ "setTitle()");
+
+ $ctx.contextmenu("showEntry", "e9", false);
+ assert.ok( entry($popup, "e9").is(":hidden"),
+ "showEntry(false)" );
+
+ // Use updateEntry()
+ $ctx.contextmenu("updateEntry", "e9", {
+ title: "Entry 9 - updated",
+ uiIcon: "ui-icon-updated",
+ tooltip: "tooltip updated",
+ disabled: false,
+ hide: false,
+ data: { foo: "bar" },
+ setClass: "custom-class"
+ });
+ assert.ok( !entry($popup, "e9").hasClass("ui-state-disabled"),
+ "updateEntry(disabled: false)" );
+ assert.equal(entry($popup, "e9").find("span.ui-icon-updated").length, 1,
+ "updateEntry(icon)");
+ assert.ok( !entry($popup, "e9").is(":hidden"),
+ "updateEntry(hide: false)" );
+ assert.equal(entryTitle($popup, "e9"), "Entry 9 - updated",
+ "updateEntry(title)");
+ assert.equal(entry($popup, "e9").attr("title"), "tooltip updated",
+ "updateEntry(tooltip)");
+ assert.equal(entry($popup, "e9").data().foo, "bar",
+ "updateEntry(data)");
+ assert.ok(entry($popup, "e9").is(".ui-menu-item.custom-class"),
+ "updateEntry(setClass)");
+
+ setTimeout(function() {
+ click($popup, "e1");
+ }, 10);
+ },
+ select: function(event, ui) {
+ var t = ui.item ? $(ui.item).attr("data-command") : ui.item;
+ log("select(" + t + ")");
+ assert.equal( ui.cmd, "e1", "select: ui.cmd is set" );
+ assert.equal( ui.target.text(), "AAA", "select: ui.target is set" );
+ },
+ close: function(event) {
+ log("close");
+ assert.equal(logOutput(), "open(),beforeOpen,after open(),open,select(e1),close",
+ "Event sequence OK.");
+ done();
+ }
+ });
+
+ $ctx = $(":moogle-contextmenu");
+ $popup = $ctx.contextmenu("getMenu");
+
+ log("open()");
+ $ctx.contextmenu("open", $("span.hasmenu:first"));
+ log("after open()");
+});
});
diff --git a/test/tests2.js b/test/tests2.js
deleted file mode 100644
index 57d1b1e..0000000
--- a/test/tests2.js
+++ /dev/null
@@ -1,234 +0,0 @@
- // jQUnit defines:
- // asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,ok,QUnit,raises,start,stop,strictEqual,test
-
- /*globals asyncTest,equal,expect,module,ok,QUnit,start,test */
-
-/**
- * Tools inspired by https://github.com/jquery/jquery-ui/blob/master/tests/unit/menu/
- */
-function TestHelpers() {
-
- var lastItem = "",
- log = [],
- $ = jQuery;
-
- return {
- log: function( message, clear ) {
- if ( clear ) {
- log.length = 0;
- }
- if ( message === undefined ) {
- message = lastItem;
- }
-// window.console.log(message);
- log.push( $.trim( message ) );
- },
- logOutput: function() {
- return log.join( "," );
- },
- clearLog: function() {
- log.length = 0;
- },
- click: function( menu, item ) {
- lastItem = item;
- window.console.log("click: ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length);
- menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" );
- },
- entry: function( menu, item ) {
- return menu.children( ":eq(" + item + ")" );
- }
- };
-}
-
-// ****************************************************************************
-
-jQuery(document).ready(function(){
-
-/*******************************************************************************
- * QUnit setup
- */
-QUnit.log(function(data) {
- if (window.console && window.console.log) {
-// window.console.log(data.result + " :: " + data.message);
- }
-});
-QUnit.config.requireExpects = true;
-
-var th = new TestHelpers(),
- log = th.log,
- logOutput = th.logOutput,
- click = th.click,
- entry = th.entry,
- lifecycle = {
- setup: function () {
- th.clearLog();
- // Always create a fresh copy of the menu