GUI: Added ESLint to gulp tasks. ONOS-6521
Commented out gulp tasks making this change uneffective
Fixed an error in the build script
Change-Id: I4f4f9762aa1a66304aa74b3ab208095b9c1d4515
diff --git a/tools/gui/gulp-tasks/bundles/bundle-js/index.js b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
index 212034a..2292775 100644
--- a/tools/gui/gulp-tasks/bundles/bundle-js/index.js
+++ b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
@@ -4,6 +4,7 @@
import uglyfy from 'gulp-uglify';
import sourceMaps from 'gulp-sourcemaps';
import BundleResources from '../helpers/bundleResources';
+import { reload } from '../../dev-server';
const GUI_BASE = '../../web/gui/src/main/webapp/';
@@ -34,6 +35,18 @@
];
function bundle(files, exportName) {
+
+ // TODO: Use util.noop once npm issues have been resolved
+ if (process.argv.indexOf('--development') > -1) {
+ return gulp.src(BundleResources(GUI_BASE, files))
+ .pipe(sourceMaps.init())
+ .on('error', (e, file, line) => console.error(e))
+ .pipe(concat(exportName))
+ .pipe(sourceMaps.write('source-map'))
+ .pipe(gulp.dest(GUI_BASE + '/dist/'))
+ .on('end', () => { reload(); })
+ }
+
return gulp.src(BundleResources(GUI_BASE, files))
.pipe(sourceMaps.init())
.pipe(strip())
@@ -45,8 +58,13 @@
}
const tasks = function () {
- gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js'));
+ // gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js'));
gulp.task('bundle-js', () => bundle(bundleFiles, 'onos.js'));
+ gulp.task('watch-js', () => {
+ gulp.watch([GUI_BASE + '**/*.js', `!${GUI_BASE}/dist/**/*`], ['bundle-js']);
+ }).on('change', (event) => {
+ console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
+ });
};
export default tasks();
\ No newline at end of file
diff --git a/tools/gui/gulp-tasks/dev-server/index.js b/tools/gui/gulp-tasks/dev-server/index.js
new file mode 100644
index 0000000..119c3f2
--- /dev/null
+++ b/tools/gui/gulp-tasks/dev-server/index.js
@@ -0,0 +1,73 @@
+import gulp from 'gulp';
+import browserSync from 'browser-sync';
+import fs from 'fs';
+import webserver from 'gulp-webserver';
+import proxy from 'http-proxy-middleware';
+
+let external_apps;
+let bs = null;
+
+const files = ['../../web/gui/src/main/webapp/**/*.js'];
+const defaultViews = fs.readdirSync('../../web/gui/src/main/webapp/app/view/');
+const viewNameMatcher = new RegExp(/\/onos\/ui\/app\/view\/(.+)\/.+\.(?:js|css|html)/);
+
+if (process.env.ONOS_EXTERNAL_APP_DIRS) {
+ let external_apps = process.env.ONOS_EXTERNAL_APP_DIRS.replace(/\s/,'').split(',');
+
+ external_apps = external_apps.reduce(function (dict, app) {
+ const pieces = app.split(':');
+ const appName = pieces[0];
+ const appPath = pieces[1];
+ dict[appName] = appPath;
+ return dict;
+ }, {});
+}
+
+const checkExternalApp = (url) => {
+ if(external_apps){
+ for(let i = 0; i < Object.keys(external_apps).length; i++){
+ const key = Object.keys(external_apps)[i];
+ if (url.indexOf(key) !== -1) {
+ return key;
+ }
+ }
+ }
+ return false;
+};
+
+const serve = () => {
+ bs = browserSync.init({
+ proxy: {
+ target: 'http://localhost:8181',
+ ws: true,
+ middleware: [
+ proxy(['**/*.js', '!/onos/ui/onos.js'], { target: 'http://localhost:8189' }),
+ proxy('**/*.js.map', {
+ target: 'http://localhost:8189',
+ changeOrigin: true,
+ logLevel: 'debug'
+ })
+ ]
+ }
+ });
+};
+
+const tasks = () => {
+ gulp.task('serve', ['bundle-js', 'proxy-server'], serve);
+ gulp.task('proxy-server', function () {
+ gulp.src('../../web/gui/src/main/webapp')
+ .pipe(webserver({
+ port: 8189,
+ path: '/onos/ui/'
+ }));
+ });
+};
+
+export default tasks();
+
+export function reload() {
+ if (bs) {
+ bs.reload();
+ }
+}
+
diff --git a/tools/gui/gulp-tasks/index.js b/tools/gui/gulp-tasks/index.js
index 3bef084..3a31432 100644
--- a/tools/gui/gulp-tasks/index.js
+++ b/tools/gui/gulp-tasks/index.js
@@ -1,2 +1,7 @@
export { default as BundleJS } from './bundles/bundle-js';
-export { default as BundleCSS } from './bundles/bundle-css';
\ No newline at end of file
+export { default as BundleCSS } from './bundles/bundle-css';
+
+// TODO: These are commented out because of npm issues with BUCK.
+// export { default as Lint } from './lint';
+// export { default as DevServer } from './dev-server';
+// export { default as Tests } from './unit-tests';
\ No newline at end of file
diff --git a/tools/gui/gulp-tasks/lint/esconfig.json b/tools/gui/gulp-tasks/lint/esconfig.json
new file mode 100644
index 0000000..670a48d
--- /dev/null
+++ b/tools/gui/gulp-tasks/lint/esconfig.json
@@ -0,0 +1,28 @@
+{
+ "extends": "google",
+ "globals": {
+ "angular": true,
+ "d3": true,
+ "_": true
+ },
+ "rules": {
+ "prefer-spread": 0,
+ "prefer-rest-params": 0,
+ "no-var": 0,
+ "comma-dangle": 1,
+ "brace-style": 0,
+ "no-void": 0,
+ "require-jsdoc": 0,
+ "padded-blocks": 0,
+ "quote-props": 0,
+ "no-warning-comments": 0,
+ "object-curly-spacing": ["error", "always"],
+ "indent": 0,
+ "one-var": 0,
+ "block-spacing": ["error", "always"],
+ "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }],
+ "max-len": ["error", 120],
+ "no-invalid-this": 0,
+ "switch-colon-spacing": ["error", { "after": true, "before": false }]
+ }
+}
diff --git a/tools/gui/gulp-tasks/lint/index.js b/tools/gui/gulp-tasks/lint/index.js
new file mode 100644
index 0000000..f864c6b
--- /dev/null
+++ b/tools/gui/gulp-tasks/lint/index.js
@@ -0,0 +1,33 @@
+import gulp from 'gulp';
+import eslint from 'gulp-eslint';
+import gulpIf from 'gulp-if';
+import path from 'path';
+
+const files = [
+ '../../web/gui/src/main/webapp/app/**/*.js'
+];
+
+function isFixed(file) {
+ // Has ESLint fixed the file contents?
+ return file.eslint != null && file.eslint.fixed;
+}
+
+const lint = () => {
+ return gulp.src(files)
+ .pipe(eslint({
+ configFile: path.join(__dirname, 'esconfig.json'),
+ useEslintrc: false,
+ // Automatically fix trivial issues
+ // fix: true,
+ }))
+ .pipe(eslint.format())
+ .pipe(gulpIf(isFixed,
+ gulp.dest('../../web/gui/src/main/webapp/app')
+ ));
+};
+
+const tasks = () => {
+ gulp.task('lint', () => lint());
+};
+
+export default tasks();
\ No newline at end of file
diff --git a/tools/gui/gulpfile.babel.js b/tools/gui/gulpfile.babel.js
index 7c5056d..2705872 100644
--- a/tools/gui/gulpfile.babel.js
+++ b/tools/gui/gulpfile.babel.js
@@ -1,9 +1,10 @@
import gulp from 'gulp';
import * as Tasks from './gulp-tasks/';
-gulp.task('build', ['bundle-css', 'bundle-vendor', 'bundle-js']);
+gulp.task('build', ['bundle-css', 'bundle-js']);
gulp.task('tests', ['test']);
-gulp.task('default', function() {
- // Do stuff
-});
\ No newline at end of file
+gulp.task('default', []);
+
+// TODO: Uncomment once npm and buck issues are resolved.
+// gulp.task('default', ['bundle-js', 'serve', 'watch-js']);
\ No newline at end of file
diff --git a/tools/gui/package.json b/tools/gui/package.json
index 4c2aeb0..304cd54 100644
--- a/tools/gui/package.json
+++ b/tools/gui/package.json
@@ -5,7 +5,8 @@
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
- "build": "./node_modules/gulp/bin/gulp.js build"
+ "build": "./node_modules/gulp/bin/gulp.js build",
+ "dev": "./node_modules/gulp/bin/gulp.js --development"
},
"author": "",
"license": "ISC",
@@ -14,11 +15,18 @@
"babel": "^6.23.0",
"babel-core": "^6.25.0",
"babel-preset-es2015": "^6.24.1",
+ "browser-sync": "^2.18.12",
+ "eslint": "^4.2.0",
+ "eslint-config-google": "^0.9.1",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.1",
+ "gulp-eslint": "3.0.1",
+ "gulp-if": "^2.0.2",
"gulp-sourcemaps": "^2.6.0",
"gulp-strip-comments": "^2.4.5",
"gulp-uglify": "^3.0.0",
+ "gulp-webserver": "^0.9.1",
+ "http-proxy-middleware": "^0.17.4",
"jasmine-core": "^2.6.4",
"karma": "^1.7.0",
"karma-babel-preprocessor": "^6.0.1",
diff --git a/web/gui/onos-gui-build b/web/gui/onos-gui-build
index 8f6a2cb..98b5623 100755
--- a/web/gui/onos-gui-build
+++ b/web/gui/onos-gui-build
@@ -3,7 +3,7 @@
ONOS_INSTALL_LOCATION=$2
echo ${ONOS_INSTALL_LOCATION}
-export NODEJS_HOME=${ONOS_INSTALL_LOCATION}/
+export NODEJS_HOME=${ONOS_INSTALL_LOCATION}
export PATH=$NODEJS_HOME/bin:$PATH
cd $ONOS_ROOT/tools/gui
diff --git a/web/gui/src/main/webapp/app/directives.js b/web/gui/src/main/webapp/app/directives.js
index 8135a96..1cb188f 100644
--- a/web/gui/src/main/webapp/app/directives.js
+++ b/web/gui/src/main/webapp/app/directives.js
@@ -30,14 +30,14 @@
scope: {
offsetHeight: '@',
offsetWidth: '@',
- notifier: '&'
+ notifier: '&',
},
link: function (scope, element) {
var elem = d3.select(element[0]);
scope.$watchCollection(function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
var offH = scope.offsetHeight || 0,
@@ -46,7 +46,7 @@
elem.style({
height: wsz.height + 'px',
- width: wsz.width + 'px'
+ width: wsz.width + 'px',
});
if (fs.isF(scope.notifier)) {
@@ -57,7 +57,7 @@
angular.element($window).bind('resize', function () {
scope.$apply();
});
- }
+ },
};
}])
diff --git a/web/gui/src/main/webapp/app/fw/layer/dialog.js b/web/gui/src/main/webapp/app/fw/layer/dialog.js
index 6b6f5df..0b165a8 100644
--- a/web/gui/src/main/webapp/app/fw/layer/dialog.js
+++ b/web/gui/src/main/webapp/app/fw/layer/dialog.js
@@ -23,12 +23,12 @@
'use strict';
// injected refs
- var $log, $window, fs, ps, bns, ks;
+ var $log, fs, ps, ks;
// configuration
var defaultSettings = {
width: 300,
- edge: 'left'
+ edge: 'left',
};
// internal state
@@ -92,7 +92,7 @@
appendHeader: hAppend,
appendBody: bAppend,
appendFooter: fAppend,
- destroy: destroy
+ destroy: destroy,
};
}
@@ -141,7 +141,7 @@
function _addOk(cb, text, chained) {
return addButton(cb, text || 'OK', 'enter', chained);
}
-
+
function addOk(cb, text) {
return _addOk(cb, text, false);
}
@@ -178,7 +178,7 @@
addCancel: addCancel,
bindKeys: function () {
ks.dialogKeys(keyBindings);
- }
+ },
};
return dApi;
}
@@ -207,25 +207,21 @@
angular.module('onosLayer')
.factory('DialogService',
- ['$log', '$window', 'FnService', 'PanelService', 'ButtonService',
- 'KeyService',
+ ['$log', 'FnService', 'PanelService', 'KeyService',
- // TODO: for now, $window is not used, but we should provide an option
- // to center the dialog on the window.
+ // TODO: use $window to provide an option to center the
+ // dialog on the window.
- function (_$log_, _$window_, _fs_, _ps_, _bns_, _ks_) {
+ function (_$log_, _fs_, _ps_, _ks_) {
$log = _$log_;
- $window = _$window_;
fs = _fs_;
ps = _ps_;
- bns = _bns_;
ks = _ks_;
return {
openDialog: openDialog,
closeDialog: closeDialog,
- createDiv: createDiv
+ createDiv: createDiv,
};
}]);
-
}());
diff --git a/web/gui/src/main/webapp/app/fw/layer/flash.js b/web/gui/src/main/webapp/app/fw/layer/flash.js
index 375c3ba..641da31 100644
--- a/web/gui/src/main/webapp/app/fw/layer/flash.js
+++ b/web/gui/src/main/webapp/app/fw/layer/flash.js
@@ -24,12 +24,12 @@
'use strict';
// injected references
- var $log, $timeout;
+ var $timeout;
// configuration
var defaultSettings = {
fade: 200,
- showFor: 1200
+ showFor: 1200,
},
w = '100%',
h = 200,
@@ -70,7 +70,7 @@
svg = flashDiv.append('svg').attr({
width: w,
height: h,
- viewBox: vbox
+ viewBox: vbox,
});
}
@@ -93,7 +93,7 @@
.append('g')
.attr({
class: 'flashItem',
- opacity: 0
+ opacity: 0,
})
.transition()
.duration(settings.fade)
@@ -151,9 +151,8 @@
}
angular.module('onosLayer')
- .factory('FlashService', ['$log', '$timeout',
- function (_$log_, _$timeout_) {
- $log = _$log_;
+ .factory('FlashService', ['$timeout',
+ function (_$timeout_) {
$timeout = _$timeout_;
function initFlash(opts) {
@@ -166,7 +165,7 @@
initFlash: initFlash,
flash: flash,
enable: enable,
- tempDiv: tempDiv
+ tempDiv: tempDiv,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/layer/loading.js b/web/gui/src/main/webapp/app/fw/layer/loading.js
index b8bfc2e..9f02e84 100644
--- a/web/gui/src/main/webapp/app/fw/layer/loading.js
+++ b/web/gui/src/main/webapp/app/fw/layer/loading.js
@@ -23,7 +23,7 @@
'use strict';
// injected references
- var $log, $timeout, ts, fs;
+ var $timeout, ts, fs;
// constants
var id = 'loading-anim',
@@ -122,10 +122,9 @@
angular.module('onosLayer')
.factory('LoadingService',
- ['$log', '$timeout', 'ThemeService', 'FnService', 'WebSocketService',
+ ['$timeout', 'ThemeService', 'FnService', 'WebSocketService',
- function (_$log_, _$timeout_, _ts_, _fs_, wss) {
- $log = _$log_;
+ function (_$timeout_, _ts_, _fs_, wss) {
$timeout = _$timeout_;
ts = _ts_;
fs = _fs_;
@@ -135,10 +134,10 @@
var self = {
start: start,
stop: stop,
- waiting: waiting
+ waiting: waiting,
};
wss._setLoadingDelegate(self);
return self;
}]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/fw/layer/panel.js b/web/gui/src/main/webapp/app/fw/layer/panel.js
index 2005cfd..91682aa 100644
--- a/web/gui/src/main/webapp/app/fw/layer/panel.js
+++ b/web/gui/src/main/webapp/app/fw/layer/panel.js
@@ -28,7 +28,7 @@
margin: 20,
hideMargin: 20,
xtnTime: 750,
- fade: true
+ fade: true,
};
var panels,
@@ -71,7 +71,7 @@
id: id,
settings: settings,
on: false,
- el: null
+ el: null,
},
api = {
show: showPanel,
@@ -84,7 +84,7 @@
bbox: panelBBox,
isVisible: panelIsVisible,
classed: classed,
- el: panelEl
+ el: panelEl,
};
p.el = panelLayer.append('div')
@@ -215,7 +215,7 @@
return {
init: init,
createPanel: createPanel,
- destroyPanel: destroyPanel
+ destroyPanel: destroyPanel,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
index 8d47dde..46a5c79 100644
--- a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
+++ b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
@@ -27,7 +27,7 @@
// configuration
var defaultSettings = {
- fade: 500
+ fade: 500,
},
w = '100%',
h = '80%',
@@ -56,12 +56,12 @@
leftArrow: 'L-arrow',
upArrow: 'U-arrow',
rightArrow: 'R-arrow',
- downArrow: 'D-arrow'
+ downArrow: 'D-arrow',
};
// list of needed bindings to use in aggregateData
var neededBindings = [
- 'globalKeys', 'globalFormat', 'viewKeys', 'viewGestures'
+ 'globalKeys', 'globalFormat', 'viewKeys', 'viewGestures',
];
// ===========================================
@@ -88,7 +88,7 @@
aggKey = el.append('g').attr('visibility', 'hidden'),
gcol = el.append('g').attr({
'class': cls,
- transform: sus.translate(xCount, 0)
+ transform: sus.translate(xCount, 0),
});
c.forEach(function (j) {
@@ -101,12 +101,12 @@
gcol.append('text').text(k)
.attr({
'class': 'key',
- y: oy
+ y: oy,
});
gcol.append('text').text(v)
.attr({
'class': 'desc',
- y: oy
+ y: oy,
});
}
@@ -140,7 +140,7 @@
var entering = rows.enter()
.append('g')
.attr({
- 'class': 'qhrow'
+ 'class': 'qhrow',
});
entering.each(function (r, i) {
@@ -169,7 +169,7 @@
rect.attr({
width: paneW,
height: paneH,
- transform: sus.translate(-paneW/2-pad, 0)
+ transform: sus.translate(-paneW/2-pad, 0),
});
}
@@ -279,7 +279,7 @@
pane = svg.append('g')
.attr({
class: 'help',
- opacity: 0
+ opacity: 0,
});
rect = pane.append('rect')
@@ -290,7 +290,7 @@
.attr({
class: 'title',
dy: '1.2em',
- transform: sus.translate(-pad,0)
+ transform: sus.translate(-pad, 0),
});
items = pane.append('g');
@@ -316,7 +316,7 @@
.attr({
width: w,
height: h,
- viewBox: vbox
+ viewBox: vbox,
});
}
@@ -338,7 +338,7 @@
'needed bindings for help panel not provided:',
neededBindings
);
- return false
+ return false;
}
return true;
}
@@ -387,7 +387,7 @@
return {
initQuickHelp: initQuickHelp,
showQuickHelp: showQuickHelp,
- hideQuickHelp: hideQuickHelp
+ hideQuickHelp: hideQuickHelp,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/layer/veil.js b/web/gui/src/main/webapp/app/fw/layer/veil.js
index b38c333..677ffc4 100644
--- a/web/gui/src/main/webapp/app/fw/layer/veil.js
+++ b/web/gui/src/main/webapp/app/fw/layer/veil.js
@@ -41,7 +41,7 @@
svg = veil.select('svg').attr({
width: ww,
- height: wh
+ height: wh,
}).style('opacity', 0.2);
gs.addGlyph(svg, 'bird', birdDim, false, [birdCenter, shrink/2]);
@@ -71,7 +71,7 @@
function lostServer(ctrlName, msg) {
if ($route.current.$$route.controller === ctrlName) {
$log.debug('VEIL-service: ', ctrlName);
- show(msg)
+ show(msg);
} else {
$log.debug('VEIL-service: IGNORING ', ctrlName);
}
@@ -92,7 +92,7 @@
init: init,
show: show,
hide: hide,
- lostServer: lostServer
+ lostServer: lostServer,
};
wss._setVeilDelegate(self);
return self;
diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.js b/web/gui/src/main/webapp/app/fw/mast/mast.js
index 7686540..e305a02 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.js
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.js
@@ -24,7 +24,7 @@
var mastHeight = 48,
padMobile = 16,
dialogOpts = {
- edge: 'left'
+ edge: 'left',
};
var ls;
@@ -83,8 +83,8 @@
}
wss.bindHandlers({
- 'guiAdded': function () { triggerRefresh('add') },
- 'guiRemoved': function () { triggerRefresh('rem') }
+ 'guiAdded': function () { triggerRefresh('add'); },
+ 'guiRemoved': function () { triggerRefresh('rem'); },
});
// delegate to NavService
@@ -120,8 +120,8 @@
return {
mastHeight: function () {
return fs.isMobile() ? mastHeight + padMobile : mastHeight;
- }
- }
+ },
+ };
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.js b/web/gui/src/main/webapp/app/fw/nav/nav.js
index c707b71..671fa91 100644
--- a/web/gui/src/main/webapp/app/fw/nav/nav.js
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.js
@@ -79,7 +79,7 @@
self.hideNav = hideNav;
$log.log('NavCtrl has been created');
- }
+ },
])
.factory('NavService',
['$log', '$location', '$window', 'FnService',
@@ -95,7 +95,7 @@
hideNav: hideNav,
toggleNav: toggleNav,
hideIfShown: hideIfShown,
- navTo: navTo
+ navTo: navTo,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/remote/rest.js b/web/gui/src/main/webapp/app/fw/remote/rest.js
index 3114faf..8c281d4 100644
--- a/web/gui/src/main/webapp/app/fw/remote/rest.js
+++ b/web/gui/src/main/webapp/app/fw/remote/rest.js
@@ -66,7 +66,7 @@
return {
get: get,
- post: post
+ post: post,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/remote/urlfn.js b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
index d6b6cfb..be2fc1f 100644
--- a/web/gui/src/main/webapp/app/fw/remote/urlfn.js
+++ b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
@@ -68,7 +68,7 @@
return {
rsUrl: rsUrl,
- wsUrl: wsUrl
+ wsUrl: wsUrl,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/remote/websocket.js b/web/gui/src/main/webapp/app/fw/remote/websocket.js
index 18f4ea1..ff6c063 100644
--- a/web/gui/src/main/webapp/app/fw/remote/websocket.js
+++ b/web/gui/src/main/webapp/app/fw/remote/websocket.js
@@ -24,19 +24,19 @@
var $log, $loc, fs, ufs, wsock, vs, ls;
// internal state
- var webSockOpts, // web socket options
- ws = null, // web socket reference
- wsUp = false, // web socket is good to go
- handlers = {}, // event handler bindings
- pendingEvents = [], // events TX'd while socket not up
- host, // web socket host
- url, // web socket URL
- clusterNodes = [], // ONOS instances data for failover
- clusterIndex = -1, // the instance to which we are connected
- connectRetries = 0, // limit our attempts at reconnecting
- openListeners = {}, // registered listeners for websocket open()
- nextListenerId = 1, // internal ID for open listeners
- loggedInUser = null; // name of logged-in user
+ var webSockOpts, // web socket options
+ ws = null, // web socket reference
+ wsUp = false, // web socket is good to go
+ handlers = {}, // event handler bindings
+ pendingEvents = [], // events TX'd while socket not up
+ host, // web socket host
+ url, // web socket URL
+ clusterNodes = [], // ONOS instances data for failover
+ clusterIndex = -1, // the instance to which we are connected
+ connectRetries = 0, // limit our attempts at reconnecting
+ openListeners = {}, // registered listeners for websocket open()
+ nextListenerId = 1, // internal ID for open listeners
+ loggedInUser = null; // name of logged-in user
// built-in handlers
var builtinHandlers = {
@@ -62,9 +62,9 @@
vs && vs.show([
'Oops!',
'Server reports error...',
- m
+ m,
]);
- }
+ },
};
@@ -129,7 +129,7 @@
vs && vs.show([
'Oops!',
'Web-socket connection to server closed...',
- 'Try refreshing the page.'
+ 'Try refreshing the page.',
]);
}
}
@@ -210,7 +210,7 @@
ws.onmessage = handleMessage;
ws.onclose = handleClose;
- sendEvent('authentication', {token: onosAuth});
+ sendEvent('authentication', { token: onosAuth });
}
// Note: Wsock logs an error if the new WebSocket call fails
return url;
@@ -299,7 +299,7 @@
function sendEvent(evType, payload) {
var ev = {
event: evType,
- payload: payload || {}
+ payload: payload || {},
};
if (wsUp) {
@@ -347,9 +347,9 @@
loggedInUser: function () { return loggedInUser || '(no-one)'; },
_setVeilDelegate: setVeilDelegate,
- _setLoadingDelegate: setLoadingDelegate
+ _setLoadingDelegate: setLoadingDelegate,
};
- }
+ },
]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/remote/wsock.js b/web/gui/src/main/webapp/app/fw/remote/wsock.js
index b0168c8..fe76be4 100644
--- a/web/gui/src/main/webapp/app/fw/remote/wsock.js
+++ b/web/gui/src/main/webapp/app/fw/remote/wsock.js
@@ -36,7 +36,7 @@
}
return {
- newWebSocket: newWebSocket
+ newWebSocket: newWebSocket,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/svg/geodata.js b/web/gui/src/main/webapp/app/fw/svg/geodata.js
index 31bef50..5270e00 100644
--- a/web/gui/src/main/webapp/app/fw/svg/geodata.js
+++ b/web/gui/src/main/webapp/app/fw/svg/geodata.js
@@ -93,7 +93,7 @@
promise.meta = {
id: id,
url: url,
- wasCached: false
+ wasCached: false,
};
promise.then(function (response) {
@@ -118,7 +118,7 @@
objectTag: 'states',
projection: d3.geo.mercator(),
logicalSize: 1000,
- mapFillScale: .95
+ mapFillScale: .95,
};
// converts given TopoJSON-format data into corresponding GeoJSON
@@ -138,7 +138,7 @@
return {
geodata: geoData,
pathgen: path,
- settings: settings
+ settings: settings,
};
}
@@ -181,7 +181,7 @@
clearCache: clearCache,
fetchTopoData: fetchTopoData,
createPathGenerator: createPathGenerator,
- rescaleProjection: rescaleProjection
+ rescaleProjection: rescaleProjection,
};
}]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/fw/svg/glyph.js b/web/gui/src/main/webapp/app/fw/svg/glyph.js
index e029f12..a333929 100644
--- a/web/gui/src/main/webapp/app/fw/svg/glyph.js
+++ b/web/gui/src/main/webapp/app/fw/svg/glyph.js
@@ -29,8 +29,8 @@
// constants
var msgGS = 'GlyphService.',
- rg = "registerGlyphs(): ",
- rgs = "registerGlyphSet(): ";
+ rg = 'registerGlyphs(): ',
+ rgs = 'registerGlyphSet(): ';
// ----------------------------------------------------------------------
@@ -42,7 +42,7 @@
if (!overwrite && glyphs.get(key)) {
dups.push(key);
} else {
- glyphs.set(key, {id: key, vb: vbox, d: value});
+ glyphs.set(key, { id: key, vb: vbox, d: value });
}
}
@@ -166,7 +166,7 @@
width: sz,
height: sz,
'class': 'glyph',
- 'xlink:href': '#' + glyphId
+ 'xlink:href': '#' + glyphId,
};
if (xns) {
@@ -196,7 +196,7 @@
glyph: glyph,
glyphDefined: glyphDefined,
loadDefs: loadDefs,
- addGlyph: addGlyph
+ addGlyph: addGlyph,
};
return api;
}]
diff --git a/web/gui/src/main/webapp/app/fw/svg/glyphData.js b/web/gui/src/main/webapp/app/fw/svg/glyphData.js
index 3c80974..4d2cfbc 100644
--- a/web/gui/src/main/webapp/app/fw/svg/glyphData.js
+++ b/web/gui/src/main/webapp/app/fw/svg/glyphData.js
@@ -60,7 +60,7 @@
'm-0.6,7.4a21.3,21.3,0,0,0,5.9,11.7l5.7,5.7' +
'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2L34.3,88.1Z' +
'm3.5-12.4a16.6,16.6,0,0,0-2.3,3.6L57,100.8' +
- 'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2Z'
+ 'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2Z',
},
@@ -521,7 +521,7 @@
'L22,23.7z M97.9,46.5H77.2L88,23.7L97.9,46.5z',
xClose: 'M20,8l35,35,35-35,12,12-35,35,35,35-12,12-35-35-35,35' +
- '-12-12,35-35-35-35,12-12Z'
+ '-12-12,35-35-35-35,12-12Z',
},
badgeDataSet = {
@@ -545,7 +545,7 @@
play: 'M3,1.5l3.5,3.5l-3.5,3.5z',
- stop: 'M2.5,2.5h5v5h-5z'
+ stop: 'M2.5,2.5h5v5h-5z',
},
spriteData = {
@@ -560,7 +560,7 @@
'M93.6,74.7c10.2-2,10.7-14,5.8-18.3' +
'M71.1,79.3c11.2,7.6,24.6,6.4,22.1-11.7' +
'M36.4,76.8c3.4,13.3,35.4,11.6,36.1-1.4' +
- 'M70.4,31c11.8-10.4,26.2-5.2,24.7,10.1'
+ 'M70.4,31c11.8-10.4,26.2-5.2,24.7,10.1',
},
@@ -1282,7 +1282,7 @@
'M81.7,80.8H17.9a1.8,1.8,0,0,1-1.6-2.7l9.2-16.8' +
'a1.8,1.8,0,0,1,1.6-1h9.5a1.8,1.8,0,1,1,0,3.7H28.2L21,77.1H78.6' +
'L71.4,64H61.9a1.8,1.8,0,1,1,0-3.7H72.5a1.8,1.8,0,0,1,1.6,1' +
- 'l9.2,16.8A1.8,1.8,0,0,1,81.7,80.8Z'
+ 'l9.2,16.8A1.8,1.8,0,0,1,81.7,80.8Z',
},
extraGlyphs = {
@@ -1295,7 +1295,7 @@
'a175.5,175.5,0,0,0,58.6-10l3.9-1.4,3.9-1.5,3.9-1.7h0' +
'l3.9-1.7,2.8-1.3,2.7-1.4a175.6,175.6,0,0,0,95.9-155.1' +
'C372.4,226.7,358,290.1,286.5,289.9ZM110.1,237.7' +
- 'A33.6,33.6,0,1,1,143.7,204,33.6,33.6,0,0,1,110.1,237.7Z'
+ 'A33.6,33.6,0,1,1,143.7,204,33.6,33.6,0,0,1,110.1,237.7Z',
};
@@ -1317,7 +1317,7 @@
.factory('GlyphDataService',
[function () {
return {
- registerCoreGlyphs: registerCoreGlyphs
+ registerCoreGlyphs: registerCoreGlyphs,
};
}]
);
diff --git a/web/gui/src/main/webapp/app/fw/svg/icon.js b/web/gui/src/main/webapp/app/fw/svg/icon.js
index 67a557b..aabbc17 100644
--- a/web/gui/src/main/webapp/app/fw/svg/icon.js
+++ b/web/gui/src/main/webapp/app/fw/svg/icon.js
@@ -20,7 +20,7 @@
(function () {
'use strict';
- var $log, fs, gs, sus;
+ var $log, gs, sus;
var vboxSize = 50,
cornerSize = vboxSize / 10,
@@ -39,7 +39,6 @@
delta: 'delta',
nonzero: 'nonzero',
-
close: 'xClose',
topo: 'topo',
@@ -79,8 +78,8 @@
nav_links: 'ports',
nav_hosts: 'endstation',
nav_intents: 'relatedIntents',
- nav_tunnels: 'ports', // TODO: use tunnel glyph, when available
- nav_yang: 'yang'
+ nav_tunnels: 'ports', // TODO: use tunnel glyph, when available
+ nav_yang: 'yang',
};
function ensureIconLibDefs() {
@@ -115,24 +114,24 @@
'class': svgCls,
width: dim,
height: dim,
- viewBox: viewBox
+ viewBox: viewBox,
});
g = svg.append('g').attr({
- 'class': 'icon'
+ 'class': 'icon',
});
g.append('rect').attr({
width: vboxSize,
height: vboxSize,
- rx: cornerSize
+ rx: cornerSize,
});
g.append('use').attr({
width: vboxSize,
height: vboxSize,
'class': 'glyph',
- 'xlink:href': '#' + gid
+ 'xlink:href': '#' + gid,
});
}
@@ -159,7 +158,7 @@
return elem.append('use').attr({
'xlink:href': '#' + gid,
width: iconDim,
- height: iconDim
+ height: iconDim,
});
}
@@ -175,7 +174,7 @@
'xlink:href': '#' + glyphId,
width: dim,
height: dim,
- transform: sus.translate(xlate,xlate)
+ transform: sus.translate(xlate, xlate),
});
return g;
}
@@ -190,7 +189,7 @@
return {
asc: function (div) { _s(div, 'upArrow'); },
desc: function (div) { _s(div, 'downArrow'); },
- none: function (div) { div.remove(); }
+ none: function (div) { div.remove(); },
};
}
@@ -218,16 +217,15 @@
div.selectAll('*').remove();
is.loadEmbeddedIcon(div, attrs.iconId, attrs.iconSize);
});
- }
+ },
};
}])
- .factory('IconService', ['$log', 'FnService', 'GlyphService',
+ .factory('IconService', ['$log', 'GlyphService',
'SvgUtilService',
- function (_$log_, _fs_, _gs_, _sus_) {
+ function (_$log_, _gs_, _sus_) {
$log = _$log_;
- fs = _fs_;
gs = _gs_;
sus = _sus_;
@@ -238,7 +236,7 @@
addDeviceIcon: addDeviceIcon,
addHostIcon: addHostIcon,
sortIcons: sortIcons,
- registerIconMapping: registerIconMapping
+ registerIconMapping: registerIconMapping,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/svg/map.js b/web/gui/src/main/webapp/app/fw/svg/map.js
index ea67428..3d79d64 100644
--- a/web/gui/src/main/webapp/app/fw/svg/map.js
+++ b/web/gui/src/main/webapp/app/fw/svg/map.js
@@ -35,7 +35,7 @@
'use strict';
// injected references
- var $log, $q, fs, gds;
+ var $log, $q, gds;
// NOTE: This method assumes the datafile has exactly the map data
// that you want to load; for example id="*continental_us"
@@ -87,7 +87,7 @@
// });
function loadMapRegionInto(mapLayer, opts) {
- var promise = gds.fetchTopoData("*countries"),
+ var promise = gds.fetchTopoData('*countries'),
deferredProjection = $q.defer();
if (!promise) {
@@ -105,7 +105,7 @@
country = features.filter(opts.countryFilter),
countryFeature = {
type: 'FeatureCollection',
- features: country
+ features: country,
},
path = d3.geo.path().projection(proj);
@@ -137,7 +137,7 @@
svg.style('background-color', bg);
paths.attr({
stroke: stroke,
- fill: fill
+ fill: fill,
});
} else {
svg.style('background-color', null);
@@ -145,17 +145,16 @@
}
angular.module('onosSvg')
- .factory('MapService', ['$log', '$q', 'FnService', 'GeoDataService',
- function (_$log_, _$q_, _fs_, _gds_) {
+ .factory('MapService', ['$log', '$q', 'GeoDataService',
+ function (_$log_, _$q_, _gds_) {
$log = _$log_;
$q = _$q_;
- fs = _fs_;
gds = _gds_;
return {
loadMapRegionInto: loadMapRegionInto,
loadMapInto: loadMapInto,
- reshade: reshade
+ reshade: reshade,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/svg/sprite.js b/web/gui/src/main/webapp/app/fw/svg/sprite.js
index 3d088e1..edf1839 100644
--- a/web/gui/src/main/webapp/app/fw/svg/sprite.js
+++ b/web/gui/src/main/webapp/app/fw/svg/sprite.js
@@ -32,30 +32,30 @@
},
addRect: {
fill: 'gray1',
- stroke: 'none'
+ stroke: 'none',
},
addPath: {
fill: 'none',
- stroke: 'gray1'
- }
+ stroke: 'gray1',
+ },
},
layout: {
builder: {
- grid: 10 // grid square size (in layout coord-space)
+ grid: 10, // grid square size (in layout coord-space)
},
addSprite: {
- anchor: 'topleft' // topleft, center
+ anchor: 'topleft', // topleft, center
},
addLabel: {
- anchor: 'center', // center, left, right
- fontStyle: 'normal' // normal, italic, bold
- }
- }
+ anchor: 'center', // center, left, right
+ fontStyle: 'normal', // normal, italic, bold
+ },
+ },
};
// internal state
- var sprites, // sprite cache
- layouts, // layout cache
+ var sprites, // sprite cache
+ layouts, // layout cache
api;
// ----------------------------------------------------------------------
@@ -81,7 +81,7 @@
var o = angular.extend({}, optDefaults.sprite.addRect, opts);
rects.push({
- x: x, y: y, w: w, h: h, o: o
+ x: x, y: y, w: w, h: h, o: o,
});
return builder;
}
@@ -90,9 +90,9 @@
var o = angular.extend({}, optDefaults.sprite.addPath, opts);
if (fs.isS(d)) {
- paths.push({d: d, o: o});
+ paths.push({ d: d, o: o });
} else if (fs.isA(d)) {
- paths.push({d: d.join(''), o: o});
+ paths.push({ d: d.join(''), o: o });
} else {
$log.warn('addPath: path not a string or array', d);
}
@@ -110,7 +110,7 @@
id: id,
w: w,
h: h,
- opts: o
+ opts: o,
},
paths: paths,
rects: rects,
@@ -118,7 +118,7 @@
// builder API
addRect: addRect,
addPath: addPath,
- register: register
+ register: register,
};
return builder;
@@ -153,7 +153,7 @@
}
sprs.push({
- sprite: s, x: x, y: y, w: w, anchor: o.anchor
+ sprite: s, x: x, y: y, w: w, anchor: o.anchor,
});
return builder;
}
@@ -162,7 +162,7 @@
var o = angular.extend({}, optDefaults.layout.addLabel, opts);
labs.push({
- text: text, x: x, y: y, anchor: o.anchor, style: o.fontStyle
+ text: text, x: x, y: y, anchor: o.anchor, style: o.fontStyle,
});
return builder;
}
@@ -178,7 +178,7 @@
id: id,
w: w,
h: h,
- opts: o
+ opts: o,
},
sprites: sprs,
labels: labs,
@@ -186,7 +186,7 @@
// builder API
addSprite: addSprite,
addLabel: addLabel,
- register: register
+ register: register,
};
return builder;
@@ -246,7 +246,7 @@
function count() {
return {
sprites: sprites.size(),
- layouts: layouts.size()
+ layouts: layouts.size(),
};
}
@@ -278,7 +278,7 @@
sprite: sprite,
layout: layout,
count: count,
- dump: dump
+ dump: dump,
};
return api;
}]
diff --git a/web/gui/src/main/webapp/app/fw/svg/spriteData.js b/web/gui/src/main/webapp/app/fw/svg/spriteData.js
index 367baa7..30221c8 100644
--- a/web/gui/src/main/webapp/app/fw/svg/spriteData.js
+++ b/web/gui/src/main/webapp/app/fw/svg/spriteData.js
@@ -28,18 +28,18 @@
// TODO: define cloud sprite...
vbox: '0 0 305 186',
d: [
- "M91.2,48.4C121.2,6.3,187.9-13.4,219,45.6",
- "M43.1,139.6C21.8,142.9-15.6,108.4,26.1,79",
- "M103.7,150C89,205.2-11.2,167.4,30.5,138",
- "M192.3,147.3c-33.5,48-82.1,32.3-94.5-8.2",
- "M267.1,115c27.9,67.8-77.6,74.3-83.1,41",
- "M34.3,89.9C10.8,79,59.5,10.7,97.2,39.6",
- "M211.9,34.2c51.9-38.8,118,57.4,59,94.5"
+ 'M91.2,48.4C121.2,6.3,187.9-13.4,219,45.6',
+ 'M43.1,139.6C21.8,142.9-15.6,108.4,26.1,79',
+ 'M103.7,150C89,205.2-11.2,167.4,30.5,138',
+ 'M192.3,147.3c-33.5,48-82.1,32.3-94.5-8.2',
+ 'M267.1,115c27.9,67.8-77.6,74.3-83.1,41',
+ 'M34.3,89.9C10.8,79,59.5,10.7,97.2,39.6',
+ 'M211.9,34.2c51.9-38.8,118,57.4,59,94.5',
],
style: {
fill: 'none',
- 'stroke-miterlimit': 10
- }
+ 'stroke-miterlimit': 10,
+ },
};
// TODO: define other core sprites here...
@@ -55,12 +55,12 @@
// ----------------------------------------------------------$$$
// This following code is for initial development of Topo2 sprite layer
ssApi.createSprite('rack', 40, 50)
- .addRect(0, 0, 40, 50, {fill: 'gold1'})
+ .addRect(0, 0, 40, 50, { fill: 'gold1' })
.addPath([
'M5,20h30v5h-30z',
'M5,30h30v5h-30z',
- 'M5,40h30v5h-30z'
- ], {stroke: 'gray1'})
+ 'M5,40h30v5h-30z',
+ ], { stroke: 'gray1' })
.register();
ssApi.createLayout('segmentRouting', 130, 75)
@@ -68,13 +68,13 @@
.addSprite('rack', 40, 40, 20)
.addSprite('rack', 70, 40, 20)
.addSprite('rack', 100, 40, 20)
- .addLabel('Segment Routing', 120, 10, {anchor: 'right'})
+ .addLabel('Segment Routing', 120, 10, { anchor: 'right' })
.register();
ssApi.createLayout('segmentRoutingTwo', 70, 75)
.addSprite('rack', 10, 40, 20)
.addSprite('rack', 40, 40, 20)
- .addLabel('Segment Routing 2', 120, 10, {anchor: 'right'})
+ .addLabel('Segment Routing 2', 120, 10, { anchor: 'right' })
.register();
ssApi.createLayout('plain', 80, 60)
@@ -90,9 +90,9 @@
.factory('SpriteDataService', [
function () {
return {
- registerCoreSprites: registerCoreSprites
+ registerCoreSprites: registerCoreSprites,
};
- }
+ },
]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
index 84b6408..1bdb96b 100644
--- a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
+++ b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
@@ -82,8 +82,8 @@
}
drag = d3.behavior.drag()
- .origin(function(d) { return d; })
- .on('dragstart', function(d) {
+ .origin(function (d) { return d; })
+ .on('dragstart', function (d) {
if (clickEnabled() || dragEnabled()) {
d.oldX = d.x;
d.oldY = d.y;
@@ -92,7 +92,7 @@
d.dragStarted = true;
}
})
- .on('drag', function(d) {
+ .on('drag', function (d) {
if (dragEnabled()) {
d.px = d3.event.x;
d.py = d3.event.y;
@@ -103,7 +103,7 @@
}
}
})
- .on('dragend', function(d) {
+ .on('dragend', function (d) {
d3.event.sourceEvent.stopPropagation();
if (d.dragStarted) {
@@ -170,22 +170,22 @@
// Colors per Mojo-Design's color palette.. (version two)
// blue lt blue red green brown teal lime
- var lightNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00' ],
- lightMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d' ],
+ var lightNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00'],
+ lightMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d'],
- darkNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00' ],
- darkMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d' ];
+ darkNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00'],
+ darkMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d'];
var colors= {
light: {
norm: d3.scale.ordinal().range(lightNorm),
- mute: d3.scale.ordinal().range(lightMute)
+ mute: d3.scale.ordinal().range(lightMute),
},
dark: {
norm: d3.scale.ordinal().range(darkNorm),
- mute: d3.scale.ordinal().range(darkMute)
- }
+ mute: d3.scale.ordinal().range(darkMute),
+ },
};
function cat7() {
@@ -231,7 +231,7 @@
cx: x,
cy: y,
r: 5,
- fill: f
+ fill: f,
});
});
g.append('rect').attr({
@@ -240,13 +240,13 @@
width: 32,
height: 10,
rx: 2,
- fill: '#888'
+ fill: '#888',
});
g.append('text').text(theme + what)
.attr({
x: 142,
y: k * 20 + 2,
- fill: 'white'
+ fill: 'white',
})
.style('font-size', '4pt');
}
@@ -255,7 +255,7 @@
return {
testCard: testCard,
- getColor: getColor
+ getColor: getColor,
};
}
@@ -279,7 +279,7 @@
}
function stripPx(s) {
- return s.replace(/px$/,'');
+ return s.replace(/px$/, '');
}
function safeId(s) {
@@ -318,7 +318,7 @@
rotate: rotate,
stripPx: stripPx,
safeId: safeId,
- visible: visible
+ visible: visible,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/svg/zoom.js b/web/gui/src/main/webapp/app/fw/svg/zoom.js
index 00487ec..587cf6a 100644
--- a/web/gui/src/main/webapp/app/fw/svg/zoom.js
+++ b/web/gui/src/main/webapp/app/fw/svg/zoom.js
@@ -25,7 +25,7 @@
zoomMin: 0.05,
zoomMax: 50,
zoomEnabled: function (ev) { return true; },
- zoomCallback: function () {}
+ zoomCallback: function () {},
};
// injected references to services
@@ -95,7 +95,7 @@
settings.zoomLayer.transition()
.duration(transition || 0)
- .attr("transform",
+ .attr('transform',
'translate(' + translate + ')scale(' + scale + ')');
settings.zoomCallback(translate, scale);
@@ -109,7 +109,7 @@
},
reset: function () {
- zoomer.panZoom([0,0], 1);
+ zoomer.panZoom([0, 0], 1);
},
translate: function () {
@@ -122,7 +122,7 @@
scaleExtent: function () {
return zoom.scaleExtent();
- }
+ },
};
// apply the zoom behavior to the SVG element
@@ -130,12 +130,12 @@
// Remove zoom on double click (prevents a
// false zoom navigating regions)
- settings.svg.on("dblclick.zoom", null);
+ settings.svg.on('dblclick.zoom', null);
return zoomer;
}
return {
- createZoomer: createZoomer
+ createZoomer: createZoomer,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/util/ee.js b/web/gui/src/main/webapp/app/fw/util/ee.js
index ef89f9d..6b0f7ce 100644
--- a/web/gui/src/main/webapp/app/fw/util/ee.js
+++ b/web/gui/src/main/webapp/app/fw/util/ee.js
@@ -39,7 +39,7 @@
'fmfv',
'hwdoc',
'acxefcsdgt',
- 'pmmn'
+ 'pmmn',
// Add more beans...
];
@@ -56,7 +56,7 @@
i;
for (i = 0; i<n; i+=2)
- w.push(fcc(Number(d.slice(i, i+2))));
+ { w.push(fcc(Number(d.slice(i, i+2)))); }
return fs.eecode(h, w.join(''));
}
@@ -98,7 +98,7 @@
return {
genMap: genMap,
- cluck: cluck
- }
+ cluck: cluck,
+ };
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/util/fn.js b/web/gui/src/main/webapp/app/fw/util/fn.js
index e204afc..2a9129a 100644
--- a/web/gui/src/main/webapp/app/fw/util/fn.js
+++ b/web/gui/src/main/webapp/app/fw/util/fn.js
@@ -31,7 +31,7 @@
cca = String.prototype.charCodeAt;
function _parseDebugFlags(dbgstr) {
- var bits = dbgstr ? dbgstr.split(",") : [];
+ var bits = dbgstr ? dbgstr.split(',') : [];
bits.forEach(function (key) {
debugFlags[key] = true;
});
@@ -114,7 +114,7 @@
ow = offW || 0;
return {
height: $window.innerHeight - oh,
- width: $window.innerWidth - ow
+ width: $window.innerWidth - ow,
};
}
@@ -129,10 +129,10 @@
function isChrome() {
var isChromium = $window.chrome,
vendorName = $window.navigator.vendor,
- isOpera = $window.navigator.userAgent.indexOf("OPR") > -1;
+ isOpera = $window.navigator.userAgent.indexOf('OPR') > -1;
return (isChromium !== null &&
isChromium !== undefined &&
- vendorName === "Google Inc." &&
+ vendorName === 'Google Inc.' &&
isOpera == false);
}
@@ -247,7 +247,7 @@
return {
o: w,
d: o.join(''),
- e: fcc.apply(o, o)
+ e: fcc.apply(o, o),
};
}
@@ -301,7 +301,7 @@
np = c.p[q];
x = 1;
}
- return { p: np, s: c.s }
+ return { p: np, s: c.s };
}
function probe(c) {
@@ -309,12 +309,12 @@
k = Object.keys(c.p).length,
np = c.p[q];
- t.push({ q:q, k:k, p:c.p });
+ t.push({ q: q, k: k, p: c.p });
if (!np) {
t = [];
return { s: [] };
}
- return { p: np, s: c.s }
+ return { p: np, s: c.s };
}
function insert() {
@@ -382,7 +382,7 @@
var hasOwn = {}.hasOwnProperty;
- function classNames () {
+ function classNames() {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
@@ -453,7 +453,7 @@
while ((match = matcher.exec(html)) !== null) {
matches.push({
full: match[0],
- name: match[1]
+ name: match[1],
// NOTE: ignoring attributes {match[2].split(' ')} for now
});
}
@@ -527,7 +527,7 @@
trieLookup: trieLookup,
classNames: classNames,
extend: extend,
- sanitize: sanitize
+ sanitize: sanitize,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index 3c9e660..45ba410 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -21,7 +21,7 @@
'use strict';
// references to injected services
- var $log, $timeout, fs, ts, ns, ee, qhs, ls;
+ var $log, fs, ts, ns, ee, qhs, ls;
// internal state
var enabled = true,
@@ -32,7 +32,7 @@
dialogKeys: {},
viewKeys: {},
viewFn: null,
- viewGestures: []
+ viewGestures: [],
},
seq = {},
matching = false,
@@ -96,7 +96,7 @@
var textFieldDoesNotBlock = {
enter: 1,
- esc: 1
+ esc: 1,
};
function textFieldInput() {
@@ -134,7 +134,7 @@
vk = kh.viewKeys[key],
kl = fs.isF(kh.viewKeys._keyListener),
vcb = fs.isF(vk) || (fs.isA(vk) && fs.isF(vk[0])) || fs.isF(kh.viewFn),
- token = 'keyev'; // indicate this was a key-pressed event
+ token = 'keyev'; // indicate this was a key-pressed event
event.stopPropagation();
@@ -185,7 +185,7 @@
backSlash: [quickHelp, qhlion_show_hide],
slash: [quickHelp, qhlion_show_hide],
esc: [escapeKey, qhlion_hint_esc],
- T: [toggleTheme, qhlion_hint_t]
+ T: [toggleTheme, qhlion_hint_t],
},
globalFormat: ['backSlash', 'slash', 'esc', 'T'],
@@ -194,8 +194,8 @@
maskedKeys: {
slash: 1,
backSlash: 1,
- T: 1
- }
+ T: 1,
+ },
});
}
@@ -244,7 +244,7 @@
}
function unexParam(fname, x) {
- $log.warn(fname, ": unexpected parameter-- ", x);
+ $log.warn(fname, ': unexpected parameter-- ', x);
}
function setKeyBindings(keyArg) {
@@ -273,7 +273,7 @@
globalKeys: gkeys,
maskedKeys: masked,
viewKeys: vkeys,
- viewFunction: vfn
+ viewFunction: vfn,
};
}
@@ -318,12 +318,11 @@
angular.module('onosUtil')
.factory('KeyService',
- ['$log', '$timeout', 'FnService', 'ThemeService', 'NavService',
+ ['$log', 'FnService', 'ThemeService', 'NavService',
'EeService', 'LionService',
- function (_$log_, _$timeout_, _fs_, _ts_, _ns_, _ee_, _ls_) {
+ function (_$log_, _fs_, _ts_, _ns_, _ee_, _ls_) {
$log = _$log_;
- $timeout = _$timeout_;
fs = _fs_;
ts = _ts_;
ns = _ns_;
@@ -372,7 +371,7 @@
enableGlobalKeys: function (b) {
globalEnabled = b;
},
- checkNotGlobal: checkNotGlobal
+ checkNotGlobal: checkNotGlobal,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/util/lion.js b/web/gui/src/main/webapp/app/fw/util/lion.js
index a8bb7c8..387c95b 100644
--- a/web/gui/src/main/webapp/app/fw/util/lion.js
+++ b/web/gui/src/main/webapp/app/fw/util/lion.js
@@ -22,11 +22,11 @@
'use strict';
// injected services
- var $log, fs, wss;
+ var $log, wss;
// private state
var handlers = {
- uberlion: uberlion
+ uberlion: uberlion,
},
ubercache = {};
@@ -65,16 +65,15 @@
}
angular.module('onosUtil')
- .factory('LionService', ['$log', 'FnService', 'WebSocketService',
+ .factory('LionService', ['$log', 'WebSocketService',
- function (_$log_, _fs_, _wss_) {
+ function (_$log_, _wss_) {
$log = _$log_;
- fs = _fs_;
wss = _wss_;
return {
init: init,
- bundle: bundle
+ bundle: bundle,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/util/prefs.js b/web/gui/src/main/webapp/app/fw/util/prefs.js
index 08bc6f6..fe4201d 100644
--- a/web/gui/src/main/webapp/app/fw/util/prefs.js
+++ b/web/gui/src/main/webapp/app/fw/util/prefs.js
@@ -21,10 +21,10 @@
'use strict';
// injected refs
- var $log, fs, wss;
+ var fs, wss;
// internal state
- var cache = {},
+ var cache = {},
listeners = [];
// returns the preference settings for the specified key
@@ -98,26 +98,25 @@
}
function removeListener(listener) {
- listeners = listeners.filter(function(obj) { return obj === listener; });
+ listeners = listeners.filter(function (obj) { return obj === listener; });
}
angular.module('onosUtil')
- .factory('PrefsService', ['$log', 'FnService', 'WebSocketService',
- function (_$log_, _fs_, _wss_) {
- $log = _$log_;
+ .factory('PrefsService', ['FnService', 'WebSocketService',
+ function (_fs_, _wss_) {
fs = _fs_;
wss = _wss_;
try {
cache = angular.isDefined(userPrefs) ? userPrefs : {};
}
- catch(e){
+ catch (e) {
// browser throws error for non-existing globals
- cache = {}
+ cache = {};
}
wss.bindHandlers({
- updatePrefs: updatePrefs
+ updatePrefs: updatePrefs,
});
return {
@@ -126,7 +125,7 @@
setPrefs: setPrefs,
mergePrefs: mergePrefs,
addListener: addListener,
- removeListener: removeListener
+ removeListener: removeListener,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/util/random.js b/web/gui/src/main/webapp/app/fw/util/random.js
index 4c773dc..04063d0 100644
--- a/web/gui/src/main/webapp/app/fw/util/random.js
+++ b/web/gui/src/main/webapp/app/fw/util/random.js
@@ -20,8 +20,6 @@
(function () {
'use strict';
- var $log, fs;
-
var halfRoot2 = 0.7071;
// given some value, s, returns an integer between -s/2 and s/2
@@ -39,13 +37,10 @@
angular.module('onosUtil')
.factory('RandomService', ['$log', 'FnService',
- function (_$log_, _fs_) {
- $log = _$log_;
- fs = _fs_;
-
+ function () {
return {
spread: spread,
- randDim: randDim
+ randDim: randDim,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/util/theme.js b/web/gui/src/main/webapp/app/fw/util/theme.js
index 66e1c41..db03701 100644
--- a/web/gui/src/main/webapp/app/fw/util/theme.js
+++ b/web/gui/src/main/webapp/app/fw/util/theme.js
@@ -21,7 +21,7 @@
'use strict';
// injected refs
- var $log, fs, ps;
+ var $log, ps;
// configuration
var themes = ['light', 'dark'],
@@ -36,33 +36,33 @@
gray1: {
fill: {
light: '#eeeeee',
- dark: '#222222'
+ dark: '#222222',
},
stroke: {
light: '#cccccc',
- dark: '#333333'
- }
+ dark: '#333333',
+ },
},
gold1: {
fill: {
light: '#eeddaa',
- dark: '#544714'
+ dark: '#544714',
},
stroke: {
light: '#ffddaa',
- dark: '#645724'
- }
+ dark: '#645724',
+ },
},
blue1: {
fill: {
light: '#a2b9ee',
- dark: '#273059'
+ dark: '#273059',
},
stroke: {
light: '#92a9de',
- dark: '#273a63'
- }
- }
+ dark: '#273a63',
+ },
+ },
};
function init() {
@@ -109,8 +109,8 @@
m = 'Theme-Change-(' + w + '): ' + t;
$log.debug(m);
- listeners.forEach(function (lsnr) {
- lsnr({event: 'themeChange', value: t});
+ listeners.forEach(function (lsnr) {
+ lsnr({ event: 'themeChange', value: t });
});
}
@@ -119,7 +119,7 @@
}
function removeListener(lsnr) {
- listeners = listeners.filter(function(obj) { return obj !== lsnr; });
+ listeners = listeners.filter(function (obj) { return obj !== lsnr; });
}
// color = logical color name
@@ -133,10 +133,9 @@
}
angular.module('onosUtil')
- .factory('ThemeService', ['$log', 'FnService', 'PrefsService',
- function (_$log_, _fs_, _ps_) {
+ .factory('ThemeService', ['$log', 'PrefsService',
+ function (_$log_, _ps_) {
$log = _$log_;
- fs = _fs_;
ps = _ps_;
ps.addListener(applyTheme);
@@ -153,7 +152,7 @@
toggleTheme: toggleTheme,
addListener: addListener,
removeListener: removeListener,
- spriteColor: spriteColor
+ spriteColor: spriteColor,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/widget/button.js b/web/gui/src/main/webapp/app/fw/widget/button.js
index 85202c6..a72732f 100644
--- a/web/gui/src/main/webapp/app/fw/widget/button.js
+++ b/web/gui/src/main/webapp/app/fw/widget/button.js
@@ -69,8 +69,8 @@
return {
id: id,
- width: buttonWidth
- }
+ width: buttonWidth,
+ };
}
@@ -111,8 +111,8 @@
width: buttonWidth,
selected: function () { return sel; },
toggle: _toggle,
- toggleNoCb: toggleNoCb
- }
+ toggleNoCb: toggleNoCb,
+ };
}
@@ -186,7 +186,7 @@
el: rbdiv,
id: rid,
cb: fs.isF(btn.cb) || noop,
- index: index
+ index: index,
});
if (btn.key) {
@@ -241,8 +241,8 @@
width: rsetWidth,
selected: selected,
selectedIndex: selectedIndex,
- size: function () { return rads.length; }
- }
+ size: function () { return rads.length; },
+ };
}
@@ -259,7 +259,7 @@
return {
button: button,
toggle: toggle,
- radioSet: radioSet
+ radioSet: radioSet,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js b/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
index af5a028..dc8e2ba 100644
--- a/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
@@ -24,7 +24,7 @@
// fs -> FnService
// wss -> WebSocketService
// ls -> LoadingService
- var $log, $interval, $timeout, fs, wss, ls;
+ var $log, $interval, fs, wss, ls;
// constants
var refreshInterval = 2000;
@@ -129,19 +129,18 @@
angular.module('onosWidget')
.factory('ChartBuilderService',
- ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+ ['$log', '$interval', 'FnService', 'WebSocketService',
'LoadingService',
- function (_$log_, _$interval_, _$timeout_, _fs_, _wss_, _ls_) {
+ function (_$log_, _$interval_, _fs_, _wss_, _ls_) {
$log = _$log_;
$interval = _$interval_;
- $timeout = _$timeout_;
fs = _fs_;
wss = _wss_;
ls = _ls_;
return {
- buildChart: buildChart
+ buildChart: buildChart,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/widget/listBuilder.js b/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
index 8c1c17e..8dc5053 100644
--- a/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
@@ -56,7 +56,7 @@
.factory('ListService', [
function () {
return {
- listProps: listProps
+ listProps: listProps,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/widget/table.js b/web/gui/src/main/webapp/app/fw/widget/table.js
index 91dbe89..1e52017 100644
--- a/web/gui/src/main/webapp/app/fw/widget/table.js
+++ b/web/gui/src/main/webapp/app/fw/widget/table.js
@@ -94,7 +94,7 @@
s: {
first: null,
second: null,
- touched: null
+ touched: null,
},
reset: function () {
@@ -132,7 +132,7 @@
s2 = s.second;
api[s1.dir](s1.adiv);
s2 && api.none(s2.adiv);
- }
+ },
};
// Functions for sorting table rows by header
@@ -157,12 +157,12 @@
firstCol: s1.id,
firstDir: s1.dir,
secondCol: id2,
- secondDir: dir2
+ secondDir: dir2,
};
}
angular.module('onosWidget')
- .directive('onosTableResize', ['$log','$window', 'FnService', 'MastService',
+ .directive('onosTableResize', ['$log', '$window', 'FnService', 'MastService',
function (_$log_, _$window_, _fs_, _mast_) {
return function (scope, element) {
@@ -175,7 +175,7 @@
tableElems = {
table: table,
thead: table.select('.table-header').select('table'),
- tbody: table.select('.table-body').select('table')
+ tbody: table.select('.table-body').select('table'),
},
wsz;
@@ -185,7 +185,7 @@
scope.$watchCollection(function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
wsz = fs.windowSize(0, 30);
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
index fa4300a..62faa89 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
@@ -21,7 +21,7 @@
'use strict';
// injected refs
- var $log, $interval, $timeout, fs, wss, ls;
+ var $log, $interval, fs, wss, ls;
// constants
var refreshInterval = 2000;
@@ -154,25 +154,24 @@
startRefresh();
return {
- forceRefesh : requestTableData
+ forceRefesh: requestTableData,
};
}
angular.module('onosWidget')
.factory('TableBuilderService',
- ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+ ['$log', '$interval', 'FnService', 'WebSocketService',
'LoadingService',
- function (_$log_, _$interval_, _$timeout_, _fs_, _wss_, _ls_) {
+ function (_$log_, _$interval_, _fs_, _wss_, _ls_) {
$log = _$log_;
$interval = _$interval_;
- $timeout = _$timeout_;
fs = _fs_;
wss = _wss_;
ls = _ls_;
return {
- buildTable: buildTable
+ buildTable: buildTable,
};
}]);
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
index dad053b..466b08c 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
@@ -21,7 +21,7 @@
'use strict';
// injected refs
- var $log, $interval, $timeout, fs, wss;
+ var $log, fs;
// constants
// var refreshInterval = 2000;
@@ -50,17 +50,14 @@
// TODO: add ref to PanelService
angular.module('onosWidget')
.factory('TableDetailService',
- ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+ ['$log', 'FnService',
- function (_$log_, _$interval_, _$timeout_, _fs_, _wss_) {
+ function (_$log_, _fs_) {
$log = _$log_;
- $interval = _$interval_;
- $timeout = _$timeout_;
fs = _fs_;
- wss = _wss_;
return {
- buildBasePanel: buildBasePanel
+ buildBasePanel: buildBasePanel,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/widget/toolbar.js b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
index 42d865d..d199797 100644
--- a/web/gui/src/main/webapp/app/fw/widget/toolbar.js
+++ b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
@@ -38,7 +38,7 @@
top: 'auto',
bottom: '10px',
fade: false,
- shown: false
+ shown: false,
};
// internal state
@@ -81,8 +81,8 @@
panel = ps.createPanel(tbid, settings),
arrowDiv = createArrow(panel),
currentRow = panel.append('div').classed('tbar-row', true),
- rowButtonIds = [], // for removable buttons
- tbWidth = arrowSize + 2, // empty toolbar width
+ rowButtonIds = [], // for removable buttons
+ tbWidth = arrowSize + 2, // empty toolbar width
maxWidth = panel.width();
arrowDiv.on('click', toggle);
@@ -92,7 +92,7 @@
settings: settings,
items: items,
panel: panel,
- panelId: tbid
+ panelId: tbid,
};
panel.classed('toolbar', true)
@@ -171,7 +171,7 @@
clear: rowClear,
setText: rowSetText,
addButton: rowAddButton,
- classed: rowClassed
+ classed: rowClassed,
};
}
}
@@ -234,7 +234,7 @@
show: show,
hide: hide,
toggle: toggle,
- isVisible: isVisible
+ isVisible: isVisible,
};
}
@@ -268,7 +268,7 @@
return {
init: init,
createToolbar: createToolbar,
- destroyToolbar: destroyToolbar
+ destroyToolbar: destroyToolbar,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/fw/widget/tooltip.js b/web/gui/src/main/webapp/app/fw/widget/tooltip.js
index b337476..54e40c7 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tooltip.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tooltip.js
@@ -22,7 +22,7 @@
'use strict';
// injected references
- var $log, $rootScope, fs;
+ var $rootScope, fs;
// constants
var hoverHeight = 35,
@@ -45,7 +45,7 @@
style = {
display: 'inline-block',
left: 'auto',
- right: 'auto'
+ right: 'auto',
};
if (mouseX <= (winWidth / 2)) {
@@ -108,7 +108,7 @@
tooltip.transition()
.delay(exitDelay)
.style({
- display: 'none'
+ display: 'none',
})
.text('');
}
@@ -127,13 +127,12 @@
restrict: 'A',
link: function (scope, elem, attrs) {
addTooltip(d3.select(elem[0]), scope[attrs.ttMsg]);
- }
+ },
};
}])
- .factory('TooltipService', ['$log', '$rootScope', 'FnService',
- function (_$log_, _$rootScope_, _fs_) {
- $log = _$log_;
+ .factory('TooltipService', ['$rootScope', 'FnService',
+ function (_$rootScope_, _fs_) {
$rootScope = _$rootScope_;
fs = _fs_;
@@ -142,7 +141,7 @@
return {
addTooltip: addTooltip,
showTooltip: showTooltip,
- cancelTooltip: cancelTooltip
+ cancelTooltip: cancelTooltip,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/app/app.js b/web/gui/src/main/webapp/app/view/app/app.js
index f4e44ed..67b6040 100644
--- a/web/gui/src/main/webapp/app/view/app/app.js
+++ b/web/gui/src/main/webapp/app/view/app/app.js
@@ -50,10 +50,10 @@
dialogId = 'app-dialog',
dialogOpts = {
edge: 'right',
- width: 400
+ width: 400,
},
strongWarning = {
- 'org.onosproject.drivers': true
+ 'org.onosproject.drivers': true,
},
propOrder = ['id', 'state', 'category', 'version', 'origin', 'role'];
// note: url is handled separately
@@ -72,7 +72,7 @@
friendlyProps = [
lion('app_id'), lion('state'), lion('category'), lion('version'),
- lion('origin'), lion('role')
+ lion('origin'), lion('role'),
];
}
@@ -80,11 +80,11 @@
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
$scope.hidePanel = function () { detailsPanel.hide(); };
detailsPanel.hide();
@@ -119,7 +119,7 @@
div = top.append('div').classed('top-content', true);
function ndiv(cls, tcls) {
- var d = div.append('div').classed(cls, true);
+ var d = div.append('div').classed(cls, true);
if (tcls) {
d.append('table').classed(tcls, true);
}
@@ -262,7 +262,7 @@
// $scope.selId is set by code in tableBuilder
$scope.ctrlBtnState.selection = !!$scope.selId;
refreshCtrls();
- ds.closeDialog(); // don't want dialog from previous selection
+ ds.closeDialog(); // don't want dialog from previous selection
if ($scope.selId) {
wss.sendEvent(detailsReq, { id: row.id });
@@ -295,18 +295,18 @@
firstCol: 'state',
firstDir: 'desc',
secondCol: 'title',
- secondDir: 'asc'
+ secondDir: 'asc',
},
- lion_toggle_auto_refresh: lion('tt_ctl_auto_refresh')
+ lion_toggle_auto_refresh: lion('tt_ctl_auto_refresh'),
});
ks.keyBindings({
esc: [$scope.selectCallback, lion('qh_hint_esc')],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
[lion('click_row'), lion('qh_hint_click_row')],
- [lion('scroll_down'), lion('qh_hint_scroll_down')]
+ [lion('scroll_down'), lion('qh_hint_scroll_down')],
]);
function createConfirmationText(action, itemId) {
@@ -332,12 +332,12 @@
action: action,
name: itemId,
sortCol: spar.sortCol,
- sortDir: spar.sortDir
+ sortDir: spar.sortDir,
});
if (action === 'uninstall') {
detailsPanel.hide();
} else {
- wss.sendEvent(detailsReq, {id: itemId});
+ wss.sendEvent(detailsReq, { id: itemId });
}
}
@@ -370,8 +370,8 @@
$http.post(ufs.rsUrl(url), formData, {
transformRequest: angular.identity,
headers: {
- 'Content-Type': undefined
- }
+ 'Content-Type': undefined,
+ },
})
.finally(function () {
activateImmediately = '';
@@ -382,7 +382,7 @@
}
});
- $scope.appDropped = function() {
+ $scope.appDropped = function () {
activateImmediately = activateOption;
$scope.$emit('FileChanged');
$scope.appFile = null;
@@ -406,7 +406,7 @@
document.getElementById('uploadFile')
.dispatchEvent(new MouseEvent('click'));
});
- }
+ },
};
})
@@ -426,13 +426,13 @@
});
scope.$emit('FileChanged');
});
- }
+ },
};
}])
- .directive("filedrop", ['$parse', '$document', function ($parse, $document) {
+ .directive('filedrop', ['$parse', '$document', function ($parse, $document) {
return {
- restrict: "A",
+ restrict: 'A',
link: function (scope, element, attrs) {
var onAppDrop = $parse(attrs.onFileDrop);
@@ -455,16 +455,16 @@
};
// Dragging begins on the document
- $document.bind("dragover", onDragOver);
+ $document.bind('dragover', onDragOver);
// Dragging ends on the overlay, which takes the whole window
- element.bind("dragleave", onDragEnd)
- .bind("drop", function (e) {
+ element.bind('dragleave', onDragEnd)
+ .bind('drop', function (e) {
$log.info('Drag leave', e);
loadFile(e.dataTransfer.files[0]);
onDragEnd(e);
});
- }
+ },
};
}])
@@ -497,13 +497,13 @@
// create key bindings to handle panel
ks.keyBindings({
esc: [closePanel, lion('qh_hint_close_detail')],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
// TODO: Review - why are we doing this in the detail panel...?
ks.gestureNotes([
[lion('click_row'), lion('qh_hint_click_row')],
- [lion('scroll_down'), lion('qh_hint_scroll_down')]
+ [lion('scroll_down'), lion('qh_hint_scroll_down')],
]);
// if the panelData changes
@@ -519,7 +519,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.js b/web/gui/src/main/webapp/app/view/cluster/cluster.js
index a0eb9f8..abed580 100644
--- a/web/gui/src/main/webapp/app/view/cluster/cluster.js
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.js
@@ -22,7 +22,7 @@
'use strict';
// injected references
- var $log, $scope, fs, ns, mast, ps, is, wss;
+ var $log, $scope, fs, mast, ps, is, wss;
// internal state
var detailsPanel,
@@ -44,11 +44,11 @@
detailsReq = 'clusterDetailsRequest',
detailsResp = 'clusterDetailsResponse',
propOrder = [
- 'id', 'ip'
+ 'id', 'ip',
],
deviceCols = [
'id', 'type', 'chassisid', 'mfr',
- 'hw', 'sw', 'protocol', 'serial'
+ 'hw', 'sw', 'protocol', 'serial',
];
// deferred fetching of user-visible strings, so that lion context is set
@@ -56,7 +56,7 @@
var l = $scope.lion;
return [
l('node_id'),
- l('ip_address')
+ l('ip_address'),
];
}
@@ -70,7 +70,7 @@
l('hw_version'),
l('sw_version'),
l('protocol'),
- l('serial_number')
+ l('serial_number'),
];
}
@@ -110,7 +110,7 @@
bottom = container.append('div').classed('bottom', true);
bottom.append('h2').classed('devices-title', true).text('Devices');
bottom.append('table');
- //TODO: add more details
+ // TODO: add more details
}
function addProp(tbody, label, value) {
@@ -169,7 +169,7 @@
height: tbHeight + 'px',
width: tbWidth + 'px',
overflow: 'auto',
- display: 'block'
+ display: 'block',
});
detailsPanel.width(tbWidth + ctnrPdg);
@@ -179,11 +179,11 @@
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
$scope.hidePanel = function () { detailsPanel.hide(); };
detailsPanel.hide();
@@ -205,17 +205,16 @@
angular.module('ovCluster', [])
.controller('OvClusterCtrl',
- ['$log', '$scope', 'FnService', 'NavService', 'MastService',
- 'PanelService', 'IconService','WebSocketService',
+ ['$log', '$scope', 'FnService', 'MastService',
+ 'PanelService', 'IconService', 'WebSocketService',
'LionService', 'TableBuilderService',
- function (_$log_, _$scope_, _fs_, _ns_, _mast_, _ps_, _is_, _wss_, lion, tbs) {
+ function (_$log_, _$scope_, _fs_, _mast_, _ps_, _is_, _wss_, lion, tbs) {
var handlers = {};
$log = _$log_;
$scope = _$scope_;
fs = _fs_;
- ns = _ns_;
mast = _mast_;
ps = _ps_;
is = _is_;
@@ -227,7 +226,7 @@
tbs.buildTable({
scope: $scope,
selCb: selCb,
- tag: 'cluster'
+ tag: 'cluster',
});
// details panel handlers
@@ -236,7 +235,7 @@
function selCb($event, row) {
if ($scope.selId) {
- wss.sendEvent(detailsReq, {id: row.id});
+ wss.sendEvent(detailsReq, { id: row.id });
} else {
$scope.hidePanel();
}
@@ -279,11 +278,11 @@
// create key bindings to handle panel
ks.keyBindings({
esc: [handleEscape, lion('qh_hint_close_detail')],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
[lion('click'), lion('qh_hint_click')],
- [lion('scroll_down'), lion('qh_hint_scroll_down')]
+ [lion('scroll_down'), lion('qh_hint_scroll_down')],
]);
// if the panelData changes
scope.$watch('panelData', function () {
@@ -298,7 +297,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/device/device.js b/web/gui/src/main/webapp/app/view/device/device.js
index 9bc6082..75bcee3 100644
--- a/web/gui/src/main/webapp/app/view/device/device.js
+++ b/web/gui/src/main/webapp/app/view/device/device.js
@@ -46,21 +46,15 @@
detailsResp = 'deviceDetailsResponse',
nameChangeReq = 'deviceNameChangeRequest',
nameChangeResp = 'deviceNameChangeResponse',
-
- propSplit = 4,
- propOrder = [
- 'id', 'type', 'masterid', 'chassisid',
- 'mfr', 'hw', 'sw', 'protocol', 'serial'
- ],
friendlyProps = [
'URI', 'Type', 'Master ID', 'Chassis ID',
- 'Vendor', 'H/W Version', 'S/W Version', 'Protocol', 'Serial #'
+ 'Vendor', 'H/W Version', 'S/W Version', 'Protocol', 'Serial #',
],
portCols = [
- 'enabled', 'id', 'speed', 'type', 'elinks_dest', 'name'
+ 'enabled', 'id', 'speed', 'type', 'elinks_dest', 'name',
],
friendlyPortCols = [
- 'Enabled', 'ID', 'Speed', 'Type', 'Egress Links', 'Name'
+ 'Enabled', 'ID', 'Speed', 'Type', 'Egress Links', 'Name',
];
function closePanel() {
@@ -175,20 +169,15 @@
top.select('h2').text(details.name);
// === demonstrate use of JsonCodec object see ONOS-5976
- addProp(leftTbl, 0, device.id);
- addProp(leftTbl, 1, device.type);
- addProp(leftTbl, 2, details['masterid']);
- addProp(leftTbl, 3, details['chassid']);
+ addProp(leftTbl, 0, device.id);
+ addProp(leftTbl, 1, device.type);
+ addProp(leftTbl, 2, details['masterid']);
+ addProp(leftTbl, 3, details['chassid']);
addProp(rightTbl, 4, device.mfr);
addProp(rightTbl, 5, device.hw);
addProp(rightTbl, 6, device.sw);
addProp(rightTbl, 7, details['protocol']);
addProp(rightTbl, 8, device.serial);
-
- // propOrder.forEach(function (prop, i) {
- // // properties are split into two tables
- // addProp(i < propSplit ? leftTbl : rightTbl, i, details[prop]);
- // });
}
function addPortRow(tbody, port) {
@@ -223,7 +212,7 @@
height: tbHeight + 'px',
width: tbWidth + 'px',
overflow: 'auto',
- display: 'block'
+ display: 'block',
});
detailsPanel.width(tbWidth + ctnrPdg);
@@ -261,11 +250,11 @@
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
$scope.hidePanel = function () { detailsPanel.hide(); };
detailsPanel.hide();
@@ -339,7 +328,7 @@
tbs.buildTable({
scope: $scope,
tag: 'device',
- selCb: selCb
+ selCb: selCb,
});
@@ -347,7 +336,7 @@
// TODO: more than just an example
tds.buildBasePanel({
popTop: popTop,
- popMid: popMid
+ popMid: popMid,
});
// ==================== for testing for now ===============
@@ -394,11 +383,11 @@
ks.keyBindings({
enter: editNameSave,
esc: [handleEscape, 'Close the details panel'],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
['click', 'Select a row to show device details'],
- ['scroll down', 'See more devices']
+ ['scroll down', 'See more devices'],
]);
// if the panelData changes
@@ -414,7 +403,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/flow/flow.js b/web/gui/src/main/webapp/app/view/flow/flow.js
index 7b2391b..cca29db 100644
--- a/web/gui/src/main/webapp/app/view/flow/flow.js
+++ b/web/gui/src/main/webapp/app/view/flow/flow.js
@@ -67,7 +67,7 @@
'groupId',
'timeout',
- 'permanent'
+ 'permanent',
],
friendlyProps = [
'Flow ID',
@@ -84,7 +84,7 @@
'Group ID',
'Timeout',
- 'Permanent'
+ 'Permanent',
];
function closePanel() {
@@ -202,11 +202,11 @@
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
$scope.hidePanel = function () { detailsPanel.hide(); };
detailsPanel.hide();
@@ -216,157 +216,157 @@
setUpPanel();
populateTop(details);
- //ToDo add more details
+ // ToDo add more details
detailsPanel.height(pHeight);
detailsPanel.width(wtPdg);
}
function respDetailsCb(data) {
- $log.debug("Got response from server :", data);
+ $log.debug('Got response from server :', data);
$scope.panelData = data.details;
$scope.$apply();
}
angular.module('ovFlow', [])
- .controller('OvFlowCtrl',
- ['$log', '$scope', '$location',
- 'FnService', 'TableBuilderService', 'NavService',
- 'MastService', 'PanelService', 'KeyService', 'IconService',
- 'WebSocketService',
+ .controller('OvFlowCtrl',
+ ['$log', '$scope', '$location',
+ 'FnService', 'TableBuilderService', 'NavService',
+ 'MastService', 'PanelService', 'KeyService', 'IconService',
+ 'WebSocketService',
- function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_,
- _mast_, _ps_, _ks_, _is_, _wss_) {
- var params,
- handlers = {};
+ function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_,
+ _mast_, _ps_, _ks_, _is_, _wss_) {
+ var params,
+ handlers = {};
- $log = _$log_;
- $scope = _$scope_;
- $location = _$location_;
- fs = _fs_;
- tbs = _tbs_;
- ns = _ns_;
- is = _is_;
- wss = _wss_;
- mast = _mast_;
- ps = _ps_;
- $scope.deviceTip = 'Show device table';
- $scope.portTip = 'Show port view for this device';
- $scope.groupTip = 'Show group view for this device';
- $scope.meterTip = 'Show meter view for selected device';
- $scope.briefTip = 'Switch to brief view';
- $scope.detailTip = 'Switch to detailed view';
- $scope.brief = true;
- params = $location.search();
- if (params.hasOwnProperty('devId')) {
- $scope.devId = params['devId'];
- }
-
- tbs.buildTable({
- scope: $scope,
- tag: 'flow',
- selCb: selCb,
- query: params
- });
-
- $scope.nav = function (path) {
- if ($scope.devId) {
- ns.navTo(path, { devId: $scope.devId });
- }
- };
-
- // details panel handlers
- handlers[detailsResp] = respDetailsCb;
- wss.bindHandlers(handlers);
-
- function selCb($event, row) {
- if ($scope.selId) {
- wss.sendEvent(detailsReq, {flowId: row.id, appId: row.appId});
- } else {
- $scope.hidePanel();
- }
- $log.debug('Got a click on:', row);
- }
-
- $scope.$on('$destroy', function () {
- wss.unbindHandlers(handlers);
- });
-
- $scope.briefToggle = function () {
- $scope.brief = !$scope.brief;
- };
-
- Object.defineProperty($scope, "queryFilter", {
- get: function() {
- var out = {};
- out[$scope.queryBy || "$"] = $scope.queryTxt;
- return out;
- }
- });
-
- $log.log('OvFlowCtrl has been created');
- }])
-
- .directive('flowDetailsPanel',
- ['$rootScope', '$window', '$timeout', 'KeyService',
- function ($rootScope, $window, $timeout, ks) {
- return function (scope) {
- var unbindWatch;
-
- function heightCalc() {
- pStartY = fs.noPxStyle(d3.select('.tabular-header'), 'height')
- + mast.mastHeight() + topPdg;
- wSize = fs.windowSize(pStartY);
- pHeight = wSize.height;
- }
-
- function initPanel() {
- heightCalc();
- createDetailsPane();
- }
-
- // Safari has a bug where it renders the fixed-layout table wrong
- // if you ask for the window's size too early
- if (scope.onos.browser === 'safari') {
- $timeout(initPanel);
- } else {
- initPanel();
- }
- // create key bindings to handle panel
- ks.keyBindings({
- esc: [handleEscape, 'Close the details panel'],
- _helpFormat: ['esc']
- });
- ks.gestureNotes([
- ['click', 'Select a row to show cluster node details'],
- ['scroll down', 'See available cluster nodes']
- ]);
- // if the panelData changes
- scope.$watch('panelData', function () {
- if (!fs.isEmptyObject(scope.panelData)) {
- populateDetails(scope.panelData);
- detailsPanel.show();
- }
- });
- // if the window size changes
- unbindWatch = $rootScope.$watchCollection(
- function () {
- return {
- h: $window.innerHeight,
- w: $window.innerWidth
- };
- }, function () {
- if (!fs.isEmptyObject(scope.panelData)) {
- heightCalc();
- populateDetails(scope.panelData);
+ $log = _$log_;
+ $scope = _$scope_;
+ $location = _$location_;
+ fs = _fs_;
+ tbs = _tbs_;
+ ns = _ns_;
+ is = _is_;
+ wss = _wss_;
+ mast = _mast_;
+ ps = _ps_;
+ $scope.deviceTip = 'Show device table';
+ $scope.portTip = 'Show port view for this device';
+ $scope.groupTip = 'Show group view for this device';
+ $scope.meterTip = 'Show meter view for selected device';
+ $scope.briefTip = 'Switch to brief view';
+ $scope.detailTip = 'Switch to detailed view';
+ $scope.brief = true;
+ params = $location.search();
+ if (params.hasOwnProperty('devId')) {
+ $scope.devId = params['devId'];
}
- }
- );
- scope.$on('$destroy', function () {
- unbindWatch();
- ps.destroyPanel(pName);
- });
- };
- }]);
+ tbs.buildTable({
+ scope: $scope,
+ tag: 'flow',
+ selCb: selCb,
+ query: params,
+ });
+
+ $scope.nav = function (path) {
+ if ($scope.devId) {
+ ns.navTo(path, { devId: $scope.devId });
+ }
+ };
+
+ // details panel handlers
+ handlers[detailsResp] = respDetailsCb;
+ wss.bindHandlers(handlers);
+
+ function selCb($event, row) {
+ if ($scope.selId) {
+ wss.sendEvent(detailsReq, { flowId: row.id, appId: row.appId });
+ } else {
+ $scope.hidePanel();
+ }
+ $log.debug('Got a click on:', row);
+ }
+
+ $scope.$on('$destroy', function () {
+ wss.unbindHandlers(handlers);
+ });
+
+ $scope.briefToggle = function () {
+ $scope.brief = !$scope.brief;
+ };
+
+ Object.defineProperty($scope, 'queryFilter', {
+ get: function () {
+ var out = {};
+ out[$scope.queryBy || '$'] = $scope.queryTxt;
+ return out;
+ },
+ });
+
+ $log.log('OvFlowCtrl has been created');
+ }])
+
+ .directive('flowDetailsPanel',
+ ['$rootScope', '$window', '$timeout', 'KeyService',
+ function ($rootScope, $window, $timeout, ks) {
+ return function (scope) {
+ var unbindWatch;
+
+ function heightCalc() {
+ pStartY = fs.noPxStyle(d3.select('.tabular-header'), 'height')
+ + mast.mastHeight() + topPdg;
+ wSize = fs.windowSize(pStartY);
+ pHeight = wSize.height;
+ }
+
+ function initPanel() {
+ heightCalc();
+ createDetailsPane();
+ }
+
+ // Safari has a bug where it renders the fixed-layout table wrong
+ // if you ask for the window's size too early
+ if (scope.onos.browser === 'safari') {
+ $timeout(initPanel);
+ } else {
+ initPanel();
+ }
+ // create key bindings to handle panel
+ ks.keyBindings({
+ esc: [handleEscape, 'Close the details panel'],
+ _helpFormat: ['esc'],
+ });
+ ks.gestureNotes([
+ ['click', 'Select a row to show cluster node details'],
+ ['scroll down', 'See available cluster nodes'],
+ ]);
+ // if the panelData changes
+ scope.$watch('panelData', function () {
+ if (!fs.isEmptyObject(scope.panelData)) {
+ populateDetails(scope.panelData);
+ detailsPanel.show();
+ }
+ });
+ // if the window size changes
+ unbindWatch = $rootScope.$watchCollection(
+ function () {
+ return {
+ h: $window.innerHeight,
+ w: $window.innerWidth,
+ };
+ }, function () {
+ if (!fs.isEmptyObject(scope.panelData)) {
+ heightCalc();
+ populateDetails(scope.panelData);
+ }
+ }
+ );
+
+ scope.$on('$destroy', function () {
+ unbindWatch();
+ ps.destroyPanel(pName);
+ });
+ };
+ }]);
}());
diff --git a/web/gui/src/main/webapp/app/view/group/group.js b/web/gui/src/main/webapp/app/view/group/group.js
index 25438ee..063daef 100644
--- a/web/gui/src/main/webapp/app/view/group/group.js
+++ b/web/gui/src/main/webapp/app/view/group/group.js
@@ -52,7 +52,7 @@
tbs.buildTable({
scope: $scope,
tag: 'group',
- query: params
+ query: params,
});
$scope.$watch('tableData', function () {
@@ -72,12 +72,12 @@
$scope.brief = !$scope.brief;
};
- Object.defineProperty($scope, "queryFilter", {
- get: function() {
+ Object.defineProperty($scope, 'queryFilter', {
+ get: function () {
var out = {};
- out[$scope.queryBy || "$"] = $scope.query;
+ out[$scope.queryBy || '$'] = $scope.query;
return out;
- }
+ },
});
diff --git a/web/gui/src/main/webapp/app/view/host/host.js b/web/gui/src/main/webapp/app/view/host/host.js
index 55b29d1..9cb674c 100644
--- a/web/gui/src/main/webapp/app/view/host/host.js
+++ b/web/gui/src/main/webapp/app/view/host/host.js
@@ -31,8 +31,7 @@
top,
iconDiv,
wSize,
- editingName = false,
- host;
+ editingName = false;
// constants
var topPdg = 28,
@@ -43,11 +42,11 @@
nameChangeResp = 'hostNameChangeResponse';
var propOrder = [
- 'id', 'ip', 'mac', 'vlan', 'configured', 'location'
+ 'id', 'ip', 'mac', 'vlan', 'configured', 'location',
],
friendlyProps = [
'Host ID', 'IP Address', 'MAC Address', 'VLAN',
- 'Configured', 'Location'
+ 'Configured', 'Location',
];
function closePanel() {
@@ -165,7 +164,6 @@
function respDetailsCb(data) {
$scope.panelData = data.details;
- host = data.host;
$scope.$apply();
}
@@ -180,11 +178,11 @@
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
$scope.hidePanel = function () { detailsPanel.hide(); };
detailsPanel.hide();
@@ -246,7 +244,7 @@
tbs.buildTable({
scope: $scope,
tag: 'host',
- selCb: selCb
+ selCb: selCb,
});
$scope.nav = function (path) {
@@ -291,11 +289,11 @@
ks.keyBindings({
enter: editNameSave,
esc: [handleEscape, 'Close the details panel'],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
['click', 'Select a row to show device details'],
- ['scroll down', 'See more devices']
+ ['scroll down', 'See more devices'],
]);
// if the panelData changes
@@ -311,7 +309,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/intent/intent.js b/web/gui/src/main/webapp/app/view/intent/intent.js
index 716a591..4d168ea 100644
--- a/web/gui/src/main/webapp/app/view/intent/intent.js
+++ b/web/gui/src/main/webapp/app/view/intent/intent.js
@@ -24,7 +24,7 @@
// constants and configuration
var dialogId = 'remove-intent-dialog',
dialogOpts = {
- edge: 'right'
+ edge: 'right',
};
// DOM elements
@@ -61,7 +61,7 @@
appId: id,
appName: name,
key: row.key,
- intentType: row.type
+ intentType: row.type,
} : null;
$scope.intentState = row.state;
@@ -84,7 +84,7 @@
dropdown.style('display', b ? 'block' : 'none');
}
- function showIntent () {
+ function showIntent() {
var d = $scope.intentData,
handlers,
nh;
@@ -163,7 +163,7 @@
// set up scope function references...
$scope.showIntent = showIntent;
- $scope.canShowIntent = function() {
+ $scope.canShowIntent = function () {
var d = $scope.intentData;
return d && tov.overlaysAcceptingIntents(d.intentType).length > 0;
};
@@ -174,7 +174,7 @@
tag: 'intent',
selCb: selCb,
respCb: respCb,
- idKey: 'key'
+ idKey: 'key',
});
@@ -200,7 +200,6 @@
function executeAction(action) {
var content = ds.createDiv(),
- txt,
bPurge = action === 'purge';
$scope.intentData.intentPurge = bPurge;
@@ -231,10 +230,10 @@
}
function executeActions(action) {
- var content = ds.createDiv(),
- txt='purgeIntents';
- content.append('p').
- text('Are you sure you want to purge all the withdrawn intents?');
+ var content = ds.createDiv();
+
+ content.append('p')
+ .text('Are you sure you want to purge all the withdrawn intents?');
function dOk() {
tts.removeIntents();
@@ -255,15 +254,15 @@
}
$scope.deactivateIntent = function () {
- executeAction("withdraw");
+ executeAction('withdraw');
};
$scope.resubmitIntent = function () {
- executeAction("resubmit");
+ executeAction('resubmit');
};
$scope.purgeIntent = function () {
- executeAction("purge");
+ executeAction('purge');
};
$scope.briefToggle = function () {
@@ -276,8 +275,9 @@
});
$scope.purgeIntents = function () {
- executeActions("purgeIntents");
+ executeActions('purgeIntents');
};
+
$log.debug('OvIntentCtrl has been created');
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/link/link.js b/web/gui/src/main/webapp/app/view/link/link.js
index b3bfcf9..1f777fe 100644
--- a/web/gui/src/main/webapp/app/view/link/link.js
+++ b/web/gui/src/main/webapp/app/view/link/link.js
@@ -28,7 +28,7 @@
function ($log, $scope, $sce, fs, tbs) {
tbs.buildTable({
scope: $scope,
- tag: 'link'
+ tag: 'link',
});
$scope.$watch('tableData', function () {
diff --git a/web/gui/src/main/webapp/app/view/meter/meter.js b/web/gui/src/main/webapp/app/view/meter/meter.js
index 980213e..bec7d2e 100644
--- a/web/gui/src/main/webapp/app/view/meter/meter.js
+++ b/web/gui/src/main/webapp/app/view/meter/meter.js
@@ -49,7 +49,7 @@
tbs.buildTable({
scope: $scope,
tag: 'meter',
- query: params
+ query: params,
});
$scope.$watch('tableData', function () {
@@ -66,12 +66,12 @@
}
};
- Object.defineProperty($scope, "queryFilter", {
- get: function() {
+ Object.defineProperty($scope, 'queryFilter', {
+ get: function () {
var out = {};
- out[$scope.queryBy || "$"] = $scope.query;
+ out[$scope.queryBy || '$'] = $scope.query;
return out;
- }
+ },
});
diff --git a/web/gui/src/main/webapp/app/view/partition/partition.js b/web/gui/src/main/webapp/app/view/partition/partition.js
index 7865010..d4d230c 100644
--- a/web/gui/src/main/webapp/app/view/partition/partition.js
+++ b/web/gui/src/main/webapp/app/view/partition/partition.js
@@ -28,7 +28,7 @@
function ($log, $scope, $sce, fs, tbs) {
tbs.buildTable({
scope: $scope,
- tag: 'partition'
+ tag: 'partition',
});
$log.log('OvPartitionCtrl has been created');
diff --git a/web/gui/src/main/webapp/app/view/port/port.js b/web/gui/src/main/webapp/app/view/port/port.js
index 13155a7..7aad374 100644
--- a/web/gui/src/main/webapp/app/view/port/port.js
+++ b/web/gui/src/main/webapp/app/view/port/port.js
@@ -22,7 +22,7 @@
'use strict';
// injected references
- var $log, $scope, $location, fs, tbs, wss, ns, ps;
+ var $log, $scope, $location, tbs, ns, ps;
var nz = 'nzFilter',
del = 'showDelta';
@@ -32,8 +32,8 @@
showDelta = false;
var defaultPortPrefsState = {
- nzFilter : 1,
- showDelta : 0,
+ nzFilter: 1,
+ showDelta: 0,
};
var prefsState = {};
@@ -72,88 +72,85 @@
}
angular.module('ovPort', [])
- .controller('OvPortCtrl',
- ['$log', '$scope', '$location',
- 'FnService', 'TableBuilderService', 'WebSocketService', 'NavService',
- 'PrefsService',
+ .controller('OvPortCtrl', [
+ '$log', '$scope', '$location',
+ 'TableBuilderService', 'NavService', 'PrefsService',
- function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _wss_, _ns_, _ps_) {
- var params;
- var tableApi;
- $log = _$log_;
- $scope = _$scope_;
- $location = _$location_;
- fs = _fs_;
- tbs = _tbs_;
- wss = _wss_;
- ns = _ns_;
- ps = _ps_;
+ function (_$log_, _$scope_, _$location_, _tbs_, _ns_, _ps_) {
+ var params;
+ var tableApi;
+ $log = _$log_;
+ $scope = _$scope_;
+ $location = _$location_;
+ tbs = _tbs_;
+ ns = _ns_;
+ ps = _ps_;
- $scope.deviceTip = 'Show device table';
- $scope.flowTip = 'Show flow view for this device';
- $scope.groupTip = 'Show group view for this device';
- $scope.meterTip = 'Show meter view for selected device';
- $scope.toggleDeltaTip = 'Toggle port delta statistics';
- $scope.toggleNZTip = 'Toggle non zero port statistics';
+ $scope.deviceTip = 'Show device table';
+ $scope.flowTip = 'Show flow view for this device';
+ $scope.groupTip = 'Show group view for this device';
+ $scope.meterTip = 'Show meter view for selected device';
+ $scope.toggleDeltaTip = 'Toggle port delta statistics';
+ $scope.toggleNZTip = 'Toggle non zero port statistics';
- params = $location.search();
- if (params.hasOwnProperty('devId')) {
- $scope.devId = params['devId'];
- }
-
- $scope.payloadParams = {
- nzFilter: nzFilter,
- showDelta: showDelta
- };
-
- tableApi = tbs.buildTable({
- scope: $scope,
- tag: 'port',
- query: params
- });
-
- function filterToggleState() {
- return {
- nzFilter: nzFilter,
- showDelta: showDelta
- };
- }
-
- $scope.nav = function (path) {
- if ($scope.devId) {
- ns.navTo(path, { devId: $scope.devId });
+ params = $location.search();
+ if (params.hasOwnProperty('devId')) {
+ $scope.devId = params['devId'];
}
- };
- $scope.toggleNZ = function () {
- toggleNZState();
- $scope.payloadParams = filterToggleState();
- tableApi.forceRefesh();
- };
+ $scope.payloadParams = {
+ nzFilter: nzFilter,
+ showDelta: showDelta,
+ };
- $scope.toggleDelta = function () {
- toggleDeltaState();
- $scope.payloadParams = filterToggleState();
- tableApi.forceRefesh();
- };
+ tableApi = tbs.buildTable({
+ scope: $scope,
+ tag: 'port',
+ query: params,
+ });
- $scope.isDelta = function() {
- return showDelta;
- };
+ function filterToggleState() {
+ return {
+ nzFilter: nzFilter,
+ showDelta: showDelta,
+ };
+ }
- $scope.isNZ = function() {
- return nzFilter;
- };
+ $scope.nav = function (path) {
+ if ($scope.devId) {
+ ns.navTo(path, { devId: $scope.devId });
+ }
+ };
- Object.defineProperty($scope, "queryFilter", {
- get: function() {
- var out = {};
- out[$scope.queryBy || "$"] = $scope.query;
- return out;
- }
- });
+ $scope.toggleNZ = function () {
+ toggleNZState();
+ $scope.payloadParams = filterToggleState();
+ tableApi.forceRefesh();
+ };
- restoreConfigFromPrefs();
- $log.log('OvPortCtrl has been created');
- }]);
+ $scope.toggleDelta = function () {
+ toggleDeltaState();
+ $scope.payloadParams = filterToggleState();
+ tableApi.forceRefesh();
+ };
+
+ $scope.isDelta = function () {
+ return showDelta;
+ };
+
+ $scope.isNZ = function () {
+ return nzFilter;
+ };
+
+ Object.defineProperty($scope, 'queryFilter', {
+ get: function () {
+ var out = {};
+ out[$scope.queryBy || '$'] = $scope.query;
+ return out;
+ },
+ });
+
+ restoreConfigFromPrefs();
+ $log.log('OvPortCtrl has been created');
+ }]);
}());
diff --git a/web/gui/src/main/webapp/app/view/processor/processor.js b/web/gui/src/main/webapp/app/view/processor/processor.js
index 2fb47f3..66188a1 100644
--- a/web/gui/src/main/webapp/app/view/processor/processor.js
+++ b/web/gui/src/main/webapp/app/view/processor/processor.js
@@ -22,19 +22,17 @@
'use strict';
// injected references
- var $log, $scope, $location, fs, tbs, ns;
+ var $log, $scope, $location, tbs, ns;
angular.module('ovProcessor', [])
.controller('OvProcessorCtrl',
- ['$log', '$scope', '$location',
- 'FnService', 'TableBuilderService', 'NavService',
+ ['$log', '$scope', '$location', 'TableBuilderService', 'NavService',
- function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_) {
+ function (_$log_, _$scope_, _$location_, _tbs_, _ns_) {
var params;
$log = _$log_;
$scope = _$scope_;
$location = _$location_;
- fs = _fs_;
tbs = _tbs_;
ns = _ns_;
$scope.requestTip = 'Show packet requests';
@@ -44,7 +42,7 @@
tbs.buildTable({
scope: $scope,
tag: 'processor',
- query: params
+ query: params,
});
$scope.nav = function (path) {
diff --git a/web/gui/src/main/webapp/app/view/settings/settings.js b/web/gui/src/main/webapp/app/view/settings/settings.js
index fe19a4f..78ae829 100644
--- a/web/gui/src/main/webapp/app/view/settings/settings.js
+++ b/web/gui/src/main/webapp/app/view/settings/settings.js
@@ -22,7 +22,7 @@
'use strict';
// injected refs
- var $log, $scope, wss, fs, ks, ps, is;
+ var $log, $scope, fs, ks, ps, is;
// internal state
var detailsPanel,
@@ -39,19 +39,19 @@
propOrder = ['fqComponent', 'prop', 'type', 'value', 'defValue', 'desc'],
friendlyProps = [
'Component', 'Property', 'Type', 'Value', 'Default Value',
- 'Description'
+ 'Description',
];
function createDetailsPanel() {
detailsPanel = ps.createPanel(pName, {
width: wSize.width,
margin: 0,
- hideMargin: 0
+ hideMargin: 0,
});
detailsPanel.el().style({
position: 'absolute',
- top: pStartY + 'px'
+ top: pStartY + 'px',
});
detailsPanel.hide();
@@ -87,7 +87,7 @@
div = top.append('div').classed('top-content', true);
function ndiv(cls, addTable) {
- var d = div.append('div').classed(cls, true);
+ var d = div.append('div').classed(cls, true);
if (addTable) {
d.append('table');
}
@@ -129,13 +129,12 @@
angular.module('ovSettings', [])
.controller('OvSettingsCtrl',
['$log', '$scope',
- 'WebSocketService', 'FnService', 'KeyService', 'PanelService',
+ 'FnService', 'KeyService', 'PanelService',
'IconService', 'TableBuilderService',
- function (_$log_, _$scope_, _wss_, _fs_, _ks_, _ps_, _is_, tbs) {
+ function (_$log_, _$scope_, _fs_, _ks_, _ps_, _is_, tbs) {
$log = _$log_;
$scope = _$scope_;
- wss = _wss_;
fs = _fs_;
ks = _ks_;
ps = _ps_;
@@ -156,16 +155,16 @@
tbs.buildTable({
scope: $scope,
tag: 'setting',
- selCb: selCb
+ selCb: selCb,
});
ks.keyBindings({
esc: [$scope.selectCallback, 'Deselect property'],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
['click row', 'Select / deselect settings property'],
- ['scroll down', 'See more settings']
+ ['scroll down', 'See more settings'],
]);
$scope.$on('$destroy', function () {
@@ -204,11 +203,11 @@
// create key bindings to handle panel
ks.keyBindings({
esc: [closePanel, 'Close the details panel'],
- _helpFormat: ['esc']
+ _helpFormat: ['esc'],
});
ks.gestureNotes([
['click', 'Select a row to show property details'],
- ['scroll down', 'See more properties']
+ ['scroll down', 'See more properties'],
]);
// if the window size changes
@@ -216,7 +215,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
if (panelData) {
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index e397852..6c5c8aa 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -25,13 +25,13 @@
'ngCookies',
'onosUtil',
'onosSvg',
- 'onosRemote'
+ 'onosRemote',
];
// references to injected services
- var $scope, $log, $loc, $timeout, $cookies,
+ var $scope, $log, $loc, $timeout,
fs, ks, zs, gs, ms, sus, flash, wss, ps, th, tds, t3s, tes, tfs, tps,
- tis, tms, tss, tls, tts, tos, fltr, ttbs, tspr, ttip, tov;
+ tis, tms, tss, tls, tos, fltr, ttbs, tspr, tov;
// DOM elements
var ovtopo, svg, defs, zoomLayer, mapG, spriteG, forceG, noDevsLayer;
@@ -39,7 +39,7 @@
// Internal state
var zoomer,
actionMap,
- topoLion = function (x) { return '#' + x + '#'}; // func replaced later
+ topoLion = function (x) { return '#' + x + '#'; }; // func replaced later
// --- Short Cut Keys ------------------------------------------------
@@ -48,41 +48,41 @@
// thus, deferred to here...
// we need functions that can be invoked after LION bundle loaded
- function togInst() {return topoLion('tbtt_tog_instances')}
- function togSumm() {return topoLion('tbtt_tog_summary')}
- function togUseDet() {return topoLion('tbtt_tog_use_detail')}
+ function togInst() { return topoLion('tbtt_tog_instances'); }
+ function togSumm() { return topoLion('tbtt_tog_summary'); }
+ function togUseDet() { return topoLion('tbtt_tog_use_detail'); }
- function togHost() {return topoLion('tbtt_tog_host')}
- function togOff() {return topoLion('tbtt_tog_offline')}
- function togPortHi() {return topoLion('tbtt_tog_porthi')}
+ function togHost() { return topoLion('tbtt_tog_host'); }
+ function togOff() { return topoLion('tbtt_tog_offline'); }
+ function togPortHi() { return topoLion('tbtt_tog_porthi'); }
- function showBad() {return topoLion('tbtt_bad_links')}
- function togMap() {return topoLion('tbtt_tog_map')}
- function selMap() {return topoLion('tbtt_sel_map')}
- function togSpr() {return topoLion('tbtt_tog_sprite')}
+ function showBad() { return topoLion('tbtt_bad_links'); }
+ function togMap() { return topoLion('tbtt_tog_map'); }
+ function selMap() { return topoLion('tbtt_sel_map'); }
+ function togSpr() { return topoLion('tbtt_tog_sprite'); }
- function rstLoc() {return topoLion('tbtt_reset_loc')}
- function togOb() {return topoLion('tbtt_tog_oblique')}
- function cycLayer() {return topoLion('tbtt_cyc_layers')}
- function cycDev() {return topoLion('tbtt_cyc_dev_labs')}
- function cycHost() {return topoLion('tbtt_cyc_host_labs')}
+ function rstLoc() { return topoLion('tbtt_reset_loc'); }
+ function togOb() { return topoLion('tbtt_tog_oblique'); }
+ function cycLayer() { return topoLion('tbtt_cyc_layers'); }
+ function cycDev() { return topoLion('tbtt_cyc_dev_labs'); }
+ function cycHost() { return topoLion('tbtt_cyc_host_labs'); }
- function unpin() {return topoLion('tbtt_unpin_node')}
- function rzoom() {return topoLion('tbtt_reset_zoom')}
- function togtb() {return topoLion('tbtt_tog_toolbar')}
- function eqmaster() {return topoLion('tbtt_eq_master')}
+ function unpin() { return topoLion('tbtt_unpin_node'); }
+ function rzoom() { return topoLion('tbtt_reset_zoom'); }
+ function togtb() { return topoLion('tbtt_tog_toolbar'); }
+ function eqmaster() { return topoLion('tbtt_eq_master'); }
- function uiClick() {return topoLion('click')}
- function uiShClick() {return topoLion('shift_click')}
- function uiDrag() {return topoLion('drag')}
- function uiCmdScr() {return topoLion('cmd_scroll')}
- function uiCmdDrag() {return topoLion('cmd_drag')}
+ function uiClick() { return topoLion('click'); }
+ function uiShClick() { return topoLion('shift_click'); }
+ function uiDrag() { return topoLion('drag'); }
+ function uiCmdScr() { return topoLion('cmd_scroll'); }
+ function uiCmdDrag() { return topoLion('cmd_drag'); }
- function uiClickTxt() {return topoLion('qh_gest_click')}
- function uiShClickTxt() {return topoLion('qh_gest_shift_click')}
- function uiDragTxt() {return topoLion('qh_gest_drag')}
- function uiCmdScrTxt() {return topoLion('qh_gest_cmd_scroll')}
- function uiCmdDragTxt() {return topoLion('qh_gest_cmd_drag')}
+ function uiClickTxt() { return topoLion('qh_gest_click'); }
+ function uiShClickTxt() { return topoLion('qh_gest_shift_click'); }
+ function uiDragTxt() { return topoLion('qh_gest_drag'); }
+ function uiCmdScrTxt() { return topoLion('qh_gest_cmd_scroll'); }
+ function uiCmdDragTxt() { return topoLion('qh_gest_cmd_drag'); }
actionMap = {
I: [toggleInstances, togInst],
@@ -109,7 +109,7 @@
dot: [ttbs.toggleToolbar, togtb],
E: [equalizeMasters, eqmaster],
- //-- instance color palette debug
+ // -- instance color palette debug
// 9: function () { sus.cat7().testCard(svg); },
// topology overlay selections
@@ -124,10 +124,10 @@
_keyListener: ttbs.keyListener,
_helpFormat: [
- ['I', 'O', 'D', 'H', 'M', 'P', 'dash', 'B', 'G', 'S' ],
+ ['I', 'O', 'D', 'H', 'M', 'P', 'dash', 'B', 'G', 'S'],
['X', 'Z', 'N', 'L', 'shift-L', 'U', 'R', '-', 'E', '-', 'dot'],
- [] // this column reserved for overlay actions
- ]
+ [], // this column reserved for overlay actions
+ ],
};
if (fs.isO(overlayKeys)) {
@@ -141,7 +141,7 @@
[uiShClick, uiShClickTxt],
[uiDrag, uiDragTxt],
[uiCmdScr, uiCmdScrTxt],
- [uiCmdDrag, uiCmdDragTxt]
+ [uiCmdDrag, uiCmdDragTxt],
]);
}
@@ -224,7 +224,7 @@
function handleEscape() {
if (tis.showMaster()) {
// if an instance is selected, cancel the affinity mapping
- tis.cancelAffinity()
+ tis.cancelAffinity();
} else if (tov.hooks.escape()) {
// else if the overlay consumed the ESC event...
@@ -275,7 +275,7 @@
function setUpToolbar() {
ttbs.init({
getActionEntry: getActionEntry,
- setUpKeys: setUpKeys
+ setUpKeys: setUpKeys,
});
ttbs.createToolbar();
}
@@ -300,7 +300,7 @@
var sc = zoomer.scale(),
tr = zoomer.translate();
- ps.setPrefs('topo_zoom', {tx:tr[0], ty:tr[1], sc:sc});
+ ps.setPrefs('topo_zoom', { tx: tr[0], ty: tr[1], sc: sc });
// keep the map lines constant width while zooming
mapG.style('stroke-width', (2.0 / sc) + 'px');
@@ -314,7 +314,7 @@
svg: svg,
zoomLayer: zoomLayer,
zoomEnabled: zoomEnabled,
- zoomCallback: zoomCallback
+ zoomCallback: zoomCallback,
});
}
@@ -330,7 +330,7 @@
var g, box;
noDevsLayer = svg.append('g').attr({
id: 'topo-noDevsLayer',
- transform: sus.translate(500,500)
+ transform: sus.translate(500, 500),
});
// Note, SVG viewbox is '0 0 1000 1000', defined in topo.html.
// We are translating this layer to have its origin at the center
@@ -338,7 +338,7 @@
g = noDevsLayer.append('g');
gs.addGlyph(g, 'bird', 100).attr('class', 'noDevsBird');
g.append('text').text('No devices are connected')
- .attr({ x: 120, y: 80});
+ .attr({ x: 120, y: 80 });
box = g.node().getBBox();
box.x -= box.width/2;
@@ -389,7 +389,7 @@
australia: function (c) {
return c.properties.adm0_a3 === 'AUS';
- }
+ },
};
var tintOn = 0,
@@ -398,19 +398,19 @@
light: {
sea: 'aliceblue',
land: 'white',
- outline: '#ddd'
+ outline: '#ddd',
},
dark: {
sea: '#001830',
land: '#232331',
- outline: '#3a3a3a'
- }
+ outline: '#3a3a3a',
+ },
};
function shading() {
return tintOn ? {
palette: shadePalette[th.theme()],
- flip: shadeFlip
+ flip: shadeFlip,
} : '';
}
@@ -427,7 +427,7 @@
mapid: 'usa',
mapscale: 1,
mapfilepath: '*continental_us',
- tint: 'off'
+ tint: 'off',
},
$loc.search()
);
@@ -451,7 +451,7 @@
if (mapG.empty()) {
mapG = zoomLayer.append('g').attr('id', 'topo-map');
} else {
- mapG.each(function(d,i) {
+ mapG.each(function (d, i) {
d3.selectAll(this.childNodes).remove();
});
}
@@ -463,13 +463,13 @@
promise = ms.loadMapRegionInto(mapG, {
countryFilter: cfilter,
adjustScale: mapScale,
- shading: shading()
+ shading: shading(),
});
} else {
promise = ms.loadMapInto(mapG, mapFilePath, mapId, {
adjustScale: mapScale,
- shading: shading()
+ shading: shading(),
});
}
@@ -478,7 +478,7 @@
}
function mapReshader() {
- $log.debug('... Re-shading map ...')
+ $log.debug('... Re-shading map ...');
ms.reshade(shading());
}
@@ -501,7 +501,7 @@
var prefs = ps.getPrefs('topo_sprites', { sprites: '' }, $loc.search()),
sprId = prefs.sprites;
- spriteG = zoomLayer.append ('g').attr('id', 'topo-sprites');
+ spriteG = zoomLayer.append('g').attr('id', 'topo-sprites');
if (sprId) {
ps.setPrefs('topo_sprites', prefs);
tspr.loadSprites(spriteG, defs, sprId);
@@ -610,14 +610,13 @@
zoomLayer: function () { return zoomLayer; },
zoomer: function () { return zoomer; },
opacifyMap: opacifyMap,
- topoStartDone: topoStartDone
+ topoStartDone: topoStartDone,
};
$scope = _$scope_;
$log = _$log_;
$loc = _$loc_;
$timeout = _$timeout_;
- $cookies = _$cookies_;
fs = _fs_;
ks = _ks_;
zs = _zs_;
@@ -638,20 +637,18 @@
tps = _tps_;
tis = _tis_;
tms = _tms_;
- tss = _tss_;
tls = _tls_;
- tts = _tts_;
tos = _tos_;
fltr = _fltr_;
ttbs = _ttbs_;
tspr = _tspr_;
- ttip = _ttip_;
tov = _tov_;
+ tss = _tss_;
tms.start({
toggleMap: toggleMap,
currentMap: currentMap,
- setMap: setMap
+ setMap: setMap,
});
// pull intent data from the query string...
@@ -660,7 +657,7 @@
key: params.key,
appId: params.appId,
appName: params.appName,
- intentType: params.intentType
+ intentType: params.intentType,
};
}
@@ -696,7 +693,7 @@
setUpNoDevs();
setUpMap().then(
function (proj) {
- var z = ps.getPrefs('topo_zoom', { tx:0, ty:0, sc:1 });
+ var z = ps.getPrefs('topo_zoom', { tx: 0, ty: 0, sc: 1 });
zoomer.panZoom([z.tx, z.ty], z.sc);
$log.debug('** Zoom restored:', z);
diff --git a/web/gui/src/main/webapp/app/view/topo/topoD3.js b/web/gui/src/main/webapp/app/view/topo/topoD3.js
index 5496abc..6146082 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoD3.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoD3.js
@@ -23,7 +23,7 @@
'use strict';
// injected refs
- var $log, fs, sus, is, ts, ps, ttbs;
+ var sus, is, ts, ps, ttbs;
// api to topoForce
var zoomer, api;
@@ -46,7 +46,7 @@
badgeConfig = {
radius: 12,
yoff: 5,
- gdelta: 10
+ gdelta: 10,
},
halfDevIcon = devIconDim / 2,
devBadgeOff = { dx: -halfDevIcon, dy: -halfDevIcon },
@@ -55,7 +55,7 @@
status = {
i: 'badgeInfo',
w: 'badgeWarn',
- e: 'badgeError'
+ e: 'badgeError',
};
// NOTE: this type of hack should go away once we have implemented
@@ -77,7 +77,7 @@
var remappedHostTypes = {
router: 'm_router',
endstation: 'm_endstation',
- bgpSpeaker: 'm_bgpSpeaker'
+ bgpSpeaker: 'm_bgpSpeaker',
};
function mapDeviceTypeToGlyph(type) {
@@ -100,13 +100,13 @@
var dColTheme = {
light: {
online: '#444444',
- offline: '#cccccc'
+ offline: '#cccccc',
},
dark: {
// TODO: theme
online: '#444444',
- offline: '#cccccc'
- }
+ offline: '#cccccc',
+ },
};
function devGlyphColor(d) {
@@ -119,13 +119,13 @@
function setDeviceColor(d) {
// want to color the square rectangle (no longer the 'use' glyph)
- d.el.selectAll('rect').filter(function (d, i) {return i === 1;})
+ d.el.selectAll('rect').filter(function (d, i) { return i === 1; })
.style('fill', devGlyphColor(d));
}
function incDevLabIndex() {
setDevLabIndex(deviceLabelIndex+1);
- switch(deviceLabelIndex) {
+ switch (deviceLabelIndex) {
case 0: return 'Hide device labels';
case 1: return 'Show friendly device labels';
case 2: return 'Show device ID labels';
@@ -141,7 +141,7 @@
function incHostLabIndex() {
setHostLabIndex(hostLabelIndex+1);
- switch(hostLabelIndex) {
+ switch (hostLabelIndex) {
case 0: return 'Show friendly host labels';
case 1: return 'Show host IP Addresses';
case 2: return 'Show host MAC Addresses';
@@ -180,8 +180,8 @@
x: -dim/2,
y: -dim/2,
width: dim + labelWidth,
- height: dim
- }
+ height: dim,
+ };
}
function updateDeviceRendering(d) {
@@ -239,7 +239,7 @@
width: bcgd * 2,
height: bcgd * 2,
transform: sus.translate(-bcgd, -bcgd),
- 'xlink:href': '#' + bdg.gid
+ 'xlink:href': '#' + bdg.gid,
});
}
}
@@ -279,14 +279,14 @@
var node = d3.select(this),
glyphId = mapDeviceTypeToGlyph(d.type),
label = trimLabel(deviceLabel(d)),
- rect, crect, text, glyph, labelWidth;
+ rect, crect, glyph, labelWidth;
d.el = node;
rect = node.append('rect');
crect = node.append('rect');
- text = node.append('text').text(label)
+ node.append('text').text(label)
.attr('text-anchor', 'left')
.attr('y', '0.3em')
.attr('x', halfDevIcon + labelPad);
@@ -462,13 +462,13 @@
});
if (idx === -1) {
- labels.push({id: newId, x: newX, y: newY});
+ labels.push({ id: newId, x: newX, y: newY });
} else {
- labels[idx] = {id: newId, x: newX, y: newY};
+ labels[idx] = { id: newId, x: newX, y: newY };
}
- return {x: newX, y: newY};
- }
+ return { x: newX, y: newY };
+ };
}
var getLabelPos = generateLabelFunction();
@@ -518,7 +518,7 @@
return {
x: movedX,
- y: movedY
+ y: movedY,
};
}
@@ -545,7 +545,7 @@
x2: mid.x + moveAmtX,
y2: mid.y + moveAmtY,
stroke: api.linkConfig()[ts.theme()].baseColor,
- transform: 'rotate(' + angle + ',' + mid.x + ',' + mid.y + ')'
+ transform: 'rotate(' + angle + ',' + mid.x + ',' + mid.y + ')',
};
}
@@ -554,7 +554,7 @@
dist = 20;
return {
x: point.x + dist,
- y: point.y + dist
+ y: point.y + dist,
};
}
@@ -568,7 +568,7 @@
var el = d3.select(this);
el.attr({
- transform: function (d) { return calcGroupPos(d.linkCoords); }
+ transform: function (d) { return calcGroupPos(d.linkCoords); },
});
el.select('line')
.attr(hashAttrs(d.linkCoords));
@@ -583,7 +583,7 @@
.append('g')
.attr({
transform: function (d) { return calcGroupPos(d.linkCoords); },
- id: function (d) { return 'pair-' + d.id; }
+ id: function (d) { return 'pair-' + d.id; },
})
.classed('numLinkLabel', true);
@@ -608,12 +608,10 @@
angular.module('ovTopo')
.factory('TopoD3Service',
- ['$log', 'FnService', 'SvgUtilService', 'IconService', 'ThemeService',
+ ['SvgUtilService', 'IconService', 'ThemeService',
'PrefsService', 'TopoToolbarService',
- function (_$log_, _fs_, _sus_, _is_, _ts_, _ps_, _ttbs_) {
- $log = _$log_;
- fs = _fs_;
+ function (_sus_, _is_, _ts_, _ps_, _ttbs_) {
sus = _sus_;
is = _is_;
ts = _ts_;
@@ -654,7 +652,7 @@
applyLinkLabels: applyLinkLabels,
transformLabel: transformLabel,
applyPortLabels: applyPortLabels,
- applyNumLinkLabels: applyNumLinkLabels
+ applyNumLinkLabels: applyNumLinkLabels,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoDialog.js b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
index 44cb156..24a1e83 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoDialog.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
@@ -25,7 +25,7 @@
// constants
var idDialog = 'topo-p-dialog',
opts = {
- cssCls: 'topo-p'
+ cssCls: 'topo-p',
};
// ==========================
@@ -38,7 +38,7 @@
return {
openDialog: function () { return ds.openDialog(idDialog, opts); },
closeDialog: ds.closeDialog,
- createDiv: ds.createDiv
+ createDiv: ds.createDiv,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoEvent.js b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
index bedb356..79fc760 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoEvent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
@@ -27,7 +27,7 @@
'use strict';
// injected refs
- var $log, $interval, wss, tps, tis, tfs, tss, tov, tspr;
+ var $log, wss, tps, tis, tfs, tss, tov, tspr;
// internal state
var handlerMap,
@@ -61,7 +61,7 @@
topoStartDone: tfs,
spriteListResponse: tspr,
- spriteDataResponse: tspr
+ spriteDataResponse: tspr,
};
}
@@ -74,14 +74,13 @@
angular.module('ovTopo')
.factory('TopoEventService',
- ['$log', '$interval', 'WebSocketService',
+ ['$log', 'WebSocketService',
'TopoPanelService', 'TopoInstService', 'TopoForceService',
'TopoSelectService', 'TopoOverlayService', 'TopoSpriteService',
- function (_$log_, _$interval_, _wss_,
+ function (_$log_, _wss_,
_tps_, _tis_, _tfs_, _tss_, _tov_, _tspr_) {
$log = _$log_;
- $interval = _$interval_;
wss = _wss_;
tps = _tps_;
tis = _tis_;
@@ -115,7 +114,7 @@
return {
bindHandlers: bindHandlers,
start: start,
- stop: stop
+ stop: stop,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoFilter.js b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
index b9f864c..b24bf53 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoFilter.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
@@ -24,7 +24,7 @@
'use strict';
// injected refs
- var $log, fs, flash, tps, tts;
+ var flash;
// api to topoForce
var api;
@@ -39,40 +39,40 @@
var layerLookup = {
host: {
endstation: 'pkt', // default, if host event does not define type
- router: 'pkt',
- bgpSpeaker: 'pkt'
+ router: 'pkt',
+ bgpSpeaker: 'pkt',
},
device: {
switch: 'pkt',
router: 'pkt',
roadm: 'opt',
- otn: 'opt'
+ otn: 'opt',
},
link: {
hostLink: 'pkt',
direct: 'pkt',
indirect: '',
tunnel: '',
- optical: 'opt'
- }
+ optical: 'opt',
+ },
},
// order of layer cycling in button
dispatch = [
{
type: 'all',
action: function () { suppressLayers(false); },
- msg: 'All Layers Shown'
+ msg: 'All Layers Shown',
},
{
type: 'pkt',
action: function () { showLayer('pkt'); },
- msg: 'Packet Layer Shown'
+ msg: 'Packet Layer Shown',
},
{
type: 'opt',
action: function () { showLayer('opt'); },
- msg: 'Optical Layer Shown'
- }
+ msg: 'Optical Layer Shown',
+ },
],
layer = 0;
@@ -123,18 +123,9 @@
// === MODULE DEFINITION ===
angular.module('ovTopo')
- .factory('TopoFilterService',
- ['$log', 'FnService',
- 'FlashService',
- 'TopoPanelService',
- 'TopoTrafficService',
-
- function (_$log_, _fs_, _flash_, _tps_, _tts_) {
- $log = _$log_;
- fs = _fs_;
+ .factory('TopoFilterService', ['FlashService',
+ function (_flash_) {
flash = _flash_;
- tps = _tps_;
- tts = _tts_;
function initFilter(_api_) {
api = _api_;
@@ -145,7 +136,8 @@
clickAction: clickAction,
selected: selected,
- inLayer: inLayer
+ inLayer: inLayer,
};
- }]);
+ },
+ ]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 85aeee5..c7d1dca 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -31,42 +31,42 @@
light: {
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
dark: {
// TODO : theme
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
inWidth: 12,
- outWidth: 10
+ outWidth: 10,
};
// internal state
- var settings, // merged default settings and options
- force, // force layout object
- drag, // drag behavior handler
+ var settings, // merged default settings and options
+ force, // force layout object
+ drag, // drag behavior handler
network = {
nodes: [],
links: [],
linksByDevice: {},
lookup: {},
- revLinkToKey: {}
+ revLinkToKey: {},
},
- lu, // shorthand for lookup
- rlk, // shorthand for revLinktoKey
- showHosts = false, // whether hosts are displayed
- showOffline = true, // whether offline devices are displayed
- nodeLock = false, // whether nodes can be dragged or not (locked)
- fTimer, // timer for delayed force layout
- fNodesTimer, // timer for delayed nodes update
- fLinksTimer, // timer for delayed links update
- dim, // the dimensions of the force layout [w,h]
- linkNums = [], // array of link number labels
- devIconDim = 36, // node target dimension
- devIconDimMin = 20, // node minimum dimension when zoomed out
- devIconDimMax = 40, // node maximum dimension when zoomed in
+ lu, // shorthand for lookup
+ rlk, // shorthand for revLinktoKey
+ showHosts = false, // whether hosts are displayed
+ showOffline = true, // whether offline devices are displayed
+ nodeLock = false, // whether nodes can be dragged or not (locked)
+ fTimer, // timer for delayed force layout
+ fNodesTimer, // timer for delayed nodes update
+ fLinksTimer, // timer for delayed links update
+ dim, // the dimensions of the force layout [w,h]
+ linkNums = [], // array of link number labels
+ devIconDim = 36, // node target dimension
+ devIconDimMin = 20, // node minimum dimension when zoomed out
+ devIconDimMax = 40, // node maximum dimension when zoomed in
portLabelDim = 30;
// SVG elements;
@@ -83,23 +83,23 @@
// note: key is node.class
device: -8000,
host: -5000,
- _def_: -12000
+ _def_: -12000,
},
linkDistance: {
// note: key is link.type
direct: 100,
optical: 120,
hostLink: 3,
- _def_: 50
+ _def_: 50,
},
linkStrength: {
// note: key is link.type
// range: {0.0 ... 1.0}
- //direct: 1.0,
- //optical: 1.0,
- //hostLink: 1.0,
- _def_: 1.0
- }
+ // direct: 1.0,
+ // optical: 1.0,
+ // hostLink: 1.0,
+ _def_: 1.0,
+ },
};
@@ -171,7 +171,7 @@
lnk = tms.createHostLink(data);
if (lnk) {
- d.linkData = lnk; // cache ref on its host
+ d.linkData = lnk; // cache ref on its host
network.links.push(lnk);
lu[d.ingress] = lnk;
lu[d.egress] = lnk;
@@ -308,7 +308,7 @@
network.linksByDevice[found].push(ldata);
ldata.devicePair = found;
} else {
- network.linksByDevice[key] = [ ldata ];
+ network.linksByDevice[key] = [ldata];
ldata.devicePair = key;
}
}
@@ -318,7 +318,7 @@
ldata.fromTarget = link;
rlk[link.id] = ldata.key;
// possible solution to el being undefined in restyleLinkElement:
- //_updateLinks();
+ // _updateLinks();
restyleLinkElement(ldata);
}
@@ -468,15 +468,15 @@
y: d.y,
equivLoc: {
lng: ll[0],
- lat: ll[1]
- }
+ lat: ll[1],
+ },
};
}
d.metaUi = metaUi;
wss.sendEvent('updateMeta', {
id: d.id,
class: d.class,
- memento: metaUi
+ memento: metaUi,
});
}
@@ -557,7 +557,7 @@
}
function supAmt(less) {
- return less ? "suppressed" : "suppressedmax";
+ return less ? 'suppressed' : 'suppressedmax';
}
function suppressLayers(b, less) {
@@ -665,8 +665,6 @@
// IMPLEMENTATION NOTE: _updateNodes() should NOT stop, start, or resume
// the force layout; that needs to be determined and implemented elsewhere
function _updateNodes() {
-
- var scale = uplink.zoomer().scale();
// select all the nodes in the layout:
node = nodeG.selectAll('.node')
.data(network.nodes, function (d) { return d.id; });
@@ -685,7 +683,7 @@
// Need to guard against NaN here ??
return sus.translate(d.x, d.y);
},
- opacity: 0
+ opacity: 0,
})
.call(drag)
.on('mouseover', tss.nodeMouseOver)
@@ -721,7 +719,7 @@
x1: link.source.x,
y1: link.source.y,
x2: link.target.x,
- y2: link.target.y
+ y2: link.target.y,
};
}
@@ -742,7 +740,7 @@
x1: pos.x1 + (mult * dy / length),
y1: pos.y1 + (mult * -dx / length),
x2: pos.x2 + (mult * dy / length),
- y2: pos.y2 + (mult * -dx / length)
+ y2: pos.y2 + (mult * -dx / length),
};
}
@@ -785,7 +783,7 @@
linkNums.push({
id: key,
num: numLinks,
- linkCoords: linkArr[0].position
+ linkCoords: linkArr[0].position,
});
} else {
linkSrcId = null;
@@ -834,14 +832,14 @@
x2: function (d) { return d.position.x2; },
y2: function (d) { return d.position.y2; },
stroke: linkConfig[th].inColor,
- 'stroke-width': linkConfig.inWidth
+ 'stroke-width': linkConfig.inWidth,
});
// augment links
entering.each(td3.linkEntering);
// operate on both existing and new links:
- //link.each(...)
+ // link.each(...)
// add labels for how many links are in a thick line
td3.applyNumLinkLabels(linkNums, numLinkLblsG);
@@ -858,7 +856,7 @@
.duration(1500)
.attr({
'stroke-dasharray': '3 12',
- 'stroke-width': linkConfig.outWidth
+ 'stroke-width': linkConfig.outWidth,
})
.style('opacity', 0.0)
.remove();
@@ -880,7 +878,7 @@
$timeout.cancel(fTimer);
}
fTimer = $timeout(function () {
- $log.debug("Starting force-layout");
+ $log.debug('Starting force-layout');
force.start();
}, 200);
}
@@ -892,13 +890,13 @@
var dx = isNaN(d.x) ? 0 : d.x,
dy = isNaN(d.y) ? 0 : d.y;
return sus.translate(dx, dy);
- }
+ },
},
linkAttr: {
x1: function (d) { return d.position.x1; },
y1: function (d) { return d.position.y1; },
x2: function (d) { return d.position.x2; },
- y2: function (d) { return d.position.y2; }
+ y2: function (d) { return d.position.y2; },
},
linkLabelAttr: {
transform: function (d) {
@@ -906,8 +904,8 @@
if (lnk) {
return td3.transformLabel(lnk.position, d.key);
}
- }
- }
+ },
+ },
};
function tick() {
@@ -991,7 +989,7 @@
id: 'lab-' + d.key,
key: d.key,
label: d.label,
- ldata: d
+ ldata: d,
});
}
});
@@ -1008,7 +1006,7 @@
projection: uplink.projection,
network: network,
restyleLinkElement: restyleLinkElement,
- removeLinkElement: removeLinkElement
+ removeLinkElement: removeLinkElement,
};
}
@@ -1024,7 +1022,7 @@
updateLinkLabelModel: updateLinkLabelModel,
linkConfig: function () { return linkConfig; },
deviceScale: deviceScale,
- linkWidthScale: linkWidthScale
+ linkWidthScale: linkWidthScale,
};
}
@@ -1033,7 +1031,7 @@
node: function () { return node; },
zoomingOrPanning: zoomingOrPanning,
updateDeviceColors: td3.updateDeviceColors,
- deselectAllLinks: tls.deselectAllLinks
+ deselectAllLinks: tls.deselectAllLinks,
};
}
@@ -1041,7 +1039,7 @@
return {
hovered: tss.hovered,
somethingSelected: tss.somethingSelected,
- selectOrder: tss.selectOrder
+ selectOrder: tss.selectOrder,
};
}
@@ -1057,15 +1055,15 @@
updateNodes: updateNodes,
supLayers: suppressLayers,
unsupNode: unsuppressNode,
- unsupLink: unsuppressLink
+ unsupLink: unsuppressLink,
};
}
function mkObliqueApi(uplink, fltr) {
return {
- force: function() { return force; },
+ force: function () { return force; },
zoomLayer: uplink.zoomLayer,
- nodeGBBox: function() { return nodeG.node().getBBox(); },
+ nodeGBBox: function () { return nodeG.node().getBBox(); },
node: function () { return node; },
link: function () { return link; },
linkLabel: function () { return linkLabel; },
@@ -1081,14 +1079,14 @@
calcLinkPos: calcPosition,
applyNumLinkLabels: function () {
td3.applyNumLinkLabels(linkNums, numLinkLblsG);
- }
+ },
};
}
function mkFilterApi() {
return {
node: function () { return node; },
- link: function () { return link; }
+ link: function () { return link; },
};
}
@@ -1098,7 +1096,7 @@
zoomer: uplink.zoomer(),
network: network,
portLabelG: function () { return portLabelG; },
- showHosts: function () { return showHosts; }
+ showHosts: function () { return showHosts; },
};
}
@@ -1264,7 +1262,7 @@
addLink: addLink,
updateLink: updateLink,
removeLink: removeLink,
- topoStartDone: topoStartDone
+ topoStartDone: topoStartDone,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoInst.js b/web/gui/src/main/webapp/app/view/topo/topoInst.js
index 0ae50a2..9544d4e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoInst.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoInst.js
@@ -36,7 +36,7 @@
idIns = 'topo-p-instance',
instOpts = {
edge: 'left',
- width: 20
+ width: 20,
};
// internal state
@@ -141,24 +141,24 @@
instSvg = {
width: 170,
height: 85,
- viewBox: '0 0 170 85'
+ viewBox: '0 0 170 85',
},
headRect = {
x: rox,
y: roy,
width: rw,
- height: rhh
+ height: rhh,
},
bodyRect = {
x: rox,
y: roy + rhh,
width: rw,
- height: rbh
+ height: rbh,
},
titleAttr = {
class: 'instTitle',
x: tx,
- y: 27
+ y: 27,
};
var onoses = oiBox.el().selectAll('.onosInst')
@@ -225,7 +225,7 @@
svg.append('text').attr({
class: 'instLabel ' + id,
x: tx,
- y: ty
+ y: ty,
}).text(label);
ty += 18;
}
@@ -342,7 +342,7 @@
show: showInsts,
hide: hideInsts,
toggle: toggleInsts,
- showMaster: function () { return oiShowMaster; }
+ showMaster: function () { return oiShowMaster; },
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index 45f3f05..c0faa8c 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -23,15 +23,15 @@
'use strict';
// injected refs
- var $log, fs, sus, ts, flash, tss, tps, tov;
+ var $log, fs, flash, tss, tps, tov;
// internal state
var api,
td3,
network,
- showPorts = true, // enable port highlighting by default
- enhancedLink = null, // the link over which the mouse is hovering
- selectedLinks = {}; // the links which are already selected
+ showPorts = true, // enable port highlighting by default
+ enhancedLink = null, // the link over which the mouse is hovering
+ selectedLinks = {}; // the links which are already selected
// SVG elements;
var svg;
@@ -45,7 +45,7 @@
tr = api.zoomer.translate(),
mx = (m[0] - tr[0]) / sc,
my = (m[1] - tr[1]) / sc;
- return {x: mx, y: my};
+ return { x: mx, y: my };
}
@@ -74,7 +74,7 @@
return; // skip hidden hosts
}
- dist = mdist({x: d.x, y: d.y}, mouse);
+ dist = mdist({ x: d.x, y: d.y }, mouse);
if (dist < minDist && dist < proximity) {
minDist = dist;
nearest = d;
@@ -101,7 +101,7 @@
(sq(y2-y1) + sq(x2-x1)),
x4 = x3 - k * (y2-y1),
y4 = y3 + k * (x2-x1);
- return {x:x4, y:y4};
+ return { x: x4, y: y4 };
}
function lineHit(line, p, m) {
@@ -179,7 +179,7 @@
point = locatePortLabel(d);
angular.extend(point, {
id: 'topo-port-tgt',
- num: d.tgtPort
+ num: d.tgtPort,
});
data.push(point);
@@ -187,7 +187,7 @@
point = locatePortLabel(d, 1);
angular.extend(point, {
id: 'topo-port-src',
- num: d.srcPort
+ num: d.srcPort,
});
data.push(point);
}
@@ -209,7 +209,7 @@
dy = farY - nearY,
k = offset / dist(dx, dy);
- return {x: k * dx + nearX, y: k * dy + nearY};
+ return { x: k * dx + nearX, y: k * dy + nearY };
}
function selectLink(ldata) {
@@ -248,7 +248,7 @@
if (!d.el) return;
d.el.classed('selected', true);
- selectedLinks[d.key] = {key : d};
+ selectedLinks[d.key] = { key: d };
tps.displayLink(d, tov.hooks.modifyLinkData);
tps.displaySomething();
@@ -317,14 +317,12 @@
angular.module('ovTopo')
.factory('TopoLinkService',
- ['$log', 'FnService', 'SvgUtilService', 'ThemeService', 'FlashService',
- 'TopoSelectService', 'TopoPanelService', 'TopoOverlayService',
+ ['$log', 'FnService', 'FlashService', 'TopoSelectService',
+ 'TopoPanelService', 'TopoOverlayService',
- function (_$log_, _fs_, _sus_, _ts_, _flash_, _tss_, _tps_, _tov_) {
+ function (_$log_, _fs_, _flash_, _tss_, _tps_, _tov_) {
$log = _$log_;
fs = _fs_;
- sus = _sus_;
- ts = _ts_;
flash = _flash_;
tss = _tss_;
tps = _tps_;
@@ -351,7 +349,7 @@
initLink: initLink,
destroyLink: destroyLink,
togglePorts: togglePorts,
- deselectAllLinks: deselectAllLinks
+ deselectAllLinks: deselectAllLinks,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoMap.js b/web/gui/src/main/webapp/app/view/topo/topoMap.js
index a983f88..e44cf35 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoMap.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoMap.js
@@ -23,13 +23,13 @@
'use strict';
// injected refs
- var $log, $loc, fs, flash, wss, tds, delegate;
+ var $log, wss, tds, delegate;
// constants
var mapRequest = 'mapSelectorRequest';
// internal state
- var order, maps, map, mapItems, tintCheck, msgHandlers;
+ var order, maps, map, mapItems, msgHandlers;
// === ---------------------------
// === Helper functions
@@ -60,7 +60,7 @@
mapid: map.id,
mapscale: map.scale,
mapfilepath: map.filePath,
- tint: 'off'
+ tint: 'off',
// tint: tintCheck.property('checked') ? 'on' : 'off'
};
setMap(p);
@@ -98,7 +98,7 @@
}
p.append('span').text('Enable map tint');
*/
-
+
return content;
}
@@ -131,19 +131,15 @@
angular.module('ovTopo')
.factory('TopoMapService',
- ['$log', '$location', 'FnService', 'FlashService', 'WebSocketService',
- 'TopoDialogService',
+ ['$log', 'WebSocketService', 'TopoDialogService',
- function (_$log_, _$loc_, _fs_, _flash_, _wss_, _tds_) {
+ function (_$log_, _wss_, _tds_) {
$log = _$log_;
- $loc = _$loc_;
- fs = _fs_;
- flash = _flash_;
wss = _wss_;
tds = _tds_;
msgHandlers = {
- mapSelectorResponse: handleMapResponse
+ mapSelectorResponse: handleMapResponse,
};
return {
@@ -154,7 +150,7 @@
openMapSelection: openMapSelection,
closeMapSelection: closeMapSelection,
start: start,
- stop: stop
+ stop: stop,
};
}]);
diff --git a/web/gui/src/main/webapp/app/view/topo/topoModel.js b/web/gui/src/main/webapp/app/view/topo/topoModel.js
index d224e4f..caaf38b 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoModel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoModel.js
@@ -38,7 +38,7 @@
// shorthand
var lu, rlk, nodes, links, linksByDevice;
- var dim; // dimensions of layout [w,h]
+ var dim; // dimensions of layout [w,h]
// configuration 'constants'
var defaultLinkType = 'direct',
@@ -90,14 +90,14 @@
function rand() {
return {
x: rnd.randDim(dim[0]),
- y: rnd.randDim(dim[1])
+ y: rnd.randDim(dim[1]),
};
}
function near(node) {
return {
x: node.x + nearDist + rnd.spread(nearDist),
- y: node.y + nearDist + rnd.spread(nearDist)
+ y: node.y + nearDist + rnd.spread(nearDist),
};
}
@@ -181,7 +181,7 @@
// hostlink target is edge switch
return lnk.target.online;
},
- linkWidth: function () { return 1; }
+ linkWidth: function () { return 1; },
});
return lnk;
}
@@ -203,7 +203,7 @@
x1: 0,
y1: 0,
x2: 0,
- y2: 0
+ y2: 0,
},
// functions to aggregate dual link state
@@ -230,7 +230,7 @@
wt = (t && t.linkWidth) || 0;
return lnk.position.multiLink ? 5 : Math.max(ws, wt);
},
- extra: link.extra
+ extra: link.extra,
});
return lnk;
}
@@ -244,13 +244,13 @@
if (sMiss || dMiss) {
$log.error('Node(s) not on map for link:' + sMiss + dMiss);
- //logicError('Node(s) not on map for link:\n' + sMiss + dMiss);
+ // logicError('Node(s) not on map for link:\n' + sMiss + dMiss);
return null;
}
return {
source: srcNode,
- target: dstNode
+ target: dstNode,
};
}
@@ -306,7 +306,7 @@
result.updateWith = function (data) {
angular.extend(rawLink, data);
api.restyleLinkElement(ldata);
- }
+ };
}
} else if (op === 'remove') {
if (!ldata) {
@@ -349,7 +349,7 @@
} else {
api.removeLinkElement(ldata);
}
- }
+ };
}
}
}
@@ -466,7 +466,7 @@
findHosts: findHosts,
findAttachedHosts: findAttachedHosts,
findAttachedLinks: findAttachedLinks,
- findBadLinks: findBadLinks
- }
+ findBadLinks: findBadLinks,
+ };
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOblique.js b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
index 45ad2f0..6390758 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOblique.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
@@ -24,7 +24,7 @@
'use strict';
// injected refs
- var $log, fs, sus, flash;
+ var sus, flash;
// api to topoForce
var api;
@@ -43,14 +43,14 @@
*/
// configuration
- var xsky = -.7, // x skew y factor
- xsk = -35, // x skew angle
- ysc = .5, // y scale
+ var xsky = -.7, // x skew y factor
+ xsk = -35, // x skew angle
+ ysc = .5, // y scale
pad = 50,
time = 1500,
fill = {
- pkt: 'rgba(130,130,170,0.3)', // blue-ish
- opt: 'rgba(170,130,170,0.3)' // magenta-ish
+ pkt: 'rgba(130,130,170,0.3)', // blue-ish
+ opt: 'rgba(170,130,170,0.3)', // magenta-ish
};
// internal state
@@ -74,7 +74,7 @@
}
function noXform() {
- return sus.skewX(0) + sus.translate(0,0) + sus.scale(1,1);
+ return sus.skewX(0) + sus.translate(0, 0) + sus.scale(1, 1);
}
function padBox(box, p) {
@@ -105,7 +105,7 @@
ay = xy.y - oy,
x = ax + ay * xsky,
y = (ay + yt) * ysc;
- return {x: ox + x, y: oy + y};
+ return { x: ox + x, y: oy + y };
};
showPlane('pkt', box, -1);
@@ -136,7 +136,7 @@
if (xffn) {
api.nodes().forEach(function (d) {
- var oldxy = {x: d.x, y: d.y},
+ var oldxy = { x: d.x, y: d.y },
coords = xffn(oldxy, dir(d));
d.oldxy = oldxy;
d.px = d.x = coords.x;
@@ -144,7 +144,7 @@
});
} else {
api.nodes().forEach(function (d) {
- var old = d.oldxy || {x: d.x, y: d.y};
+ var old = d.oldxy || { x: d.x, y: d.y };
d.px = d.x = old.x;
d.py = d.y = old.y;
delete d.oldxy;
@@ -191,7 +191,7 @@
var id = planeId(tag),
g = api.zoomLayer().insert('g', '#topo-G')
.attr('id', id)
- .attr('transform', sus.translate(ox,oy));
+ .attr('transform', sus.translate(ox, oy));
g.append('rect')
.attr('fill', fill[tag])
.attr('opacity', 0);
@@ -220,11 +220,9 @@
angular.module('ovTopo')
.factory('TopoObliqueService',
- ['$log', 'FnService', 'SvgUtilService', 'FlashService',
+ ['SvgUtilService', 'FlashService',
- function (_$log_, _fs_, _sus_, _flash_) {
- $log = _$log_;
- fs = _fs_;
+ function (_sus_, _flash_) {
sus = _sus_;
flash = _flash_;
@@ -251,7 +249,7 @@
destroyOblique: destroyOblique,
isOblique: function () { return oblique; },
- toggleOblique: toggleOblique
+ toggleOblique: toggleOblique,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
index 00780d7..a2b52aa 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
@@ -126,7 +126,7 @@
if (sicb && aicb && aicb(intentType)) {
result.push({
id: ovid,
- tt: ov.tooltip || '%' + ovid + '%'
+ tt: ov.tooltip || '%' + ovid + '%',
});
}
});
@@ -145,7 +145,7 @@
tooltip: (ov.tooltip || '(no tooltip)'),
cb: function () {
tbSelection(ov.overlayId, switchFn);
- }
+ },
});
map[ov.overlayId] = idx++;
});
@@ -185,28 +185,28 @@
showDeviceView: {
gid: 'switch',
tt: 'Show Device View',
- path: 'device'
+ path: 'device',
},
showFlowView: {
gid: 'flowTable',
tt: 'Show Flow View for this Device',
- path: 'flow'
+ path: 'flow',
},
showPortView: {
gid: 'portTable',
tt: 'Show Port View for this Device',
- path: 'port'
+ path: 'port',
},
showGroupView: {
gid: 'groupTable',
tt: 'Show Group View for this Device',
- path: 'group'
+ path: 'group',
},
showMeterView: {
gid: 'meterTable',
tt: 'Show Meter View for this Device',
- path: 'meter'
- }
+ path: 'meter',
+ },
};
// retrieves a button definition from the current overlay and generates
@@ -221,7 +221,7 @@
id: current.mkId(id),
gid: current.mkGid(b.gid),
tt: b.tt,
- cb: f
+ cb: f,
} : null;
}
@@ -238,7 +238,7 @@
id: 'core-' + id,
gid: gid,
tt: tt,
- cb: function () { ns.navTo(path, {devId: devId }); }
+ cb: function () { ns.navTo(path, { devId: devId }); },
});
} else if (btn = _getButtonDef(id, data)) {
tps.addAction(btn);
@@ -253,7 +253,7 @@
id: current.mkId(id),
gid: current.mkGid(b.gid),
cb: b.cb,
- tt: b.tt
+ tt: b.tt,
});
}
}
@@ -318,7 +318,7 @@
tss = _tss_;
}
- //process highlight event with optional delay
+ // process highlight event with optional delay
function showHighlights(data) {
function doHighlight() {
_showHighlights(data);
@@ -446,11 +446,11 @@
mouseOver: mouseOverHook,
mouseOut: mouseOutHook,
modifyLinkData: modifyLinkDataHook,
- showIntent: showIntentHook
+ showIntent: showIntentHook,
},
- showHighlights: showHighlights
- }
+ showHighlights: showHighlights,
+ };
}]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoPanel.js b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
index 2c358f3..b25f02e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
@@ -30,17 +30,17 @@
idSum = 'topo-p-summary',
idDet = 'topo-p-detail',
panelOpts = {
- width: 260 // summary and detail panel width
+ width: 260, // summary and detail panel width
},
- sumMax = 226, // summary panel max height
- padTop = 16, // summary panel padding below masthead
- padding = 16, // panel internal padding
+ sumMax = 226, // summary panel max height
+ padTop = 16, // summary panel padding below masthead
+ padding = 16, // panel internal padding
padFudge = padTop + 2 * padding;
// internal state
- var useDetails = true, // should we show details if we have 'em?
- haveDetails = false, // do we have details that we could show?
- sumFromTop, // summary panel distance from top of screen
+ var useDetails = true, // should we show details if we have 'em?
+ haveDetails = false, // do we have details that we could show?
+ sumFromTop, // summary panel distance from top of screen
unbindWatch;
// panels
@@ -140,7 +140,7 @@
appendHeader: hAppend,
appendBody: bAppend,
appendFooter: fAppend,
- adjustHeight: adjustHeight
+ adjustHeight: adjustHeight,
};
}
@@ -195,7 +195,7 @@
function () {
return {
h: $window.innerHeight,
- w: $window.innerWidth
+ w: $window.innerWidth,
};
}, function () {
var h = summary.adjustHeight(sumFromTop, sumMax),
@@ -220,7 +220,7 @@
table = summary.appendBody('table'),
tbody = table.append('tbody');
- gs.addGlyph(svg, 'bird', 24, 0, [1,1]);
+ gs.addGlyph(svg, 'bird', 24, 0, [1, 1]);
title.text(data.title);
listProps(tbody, data);
@@ -231,7 +231,7 @@
var navPathIdKey = {
device: 'devId',
- host: 'hostId'
+ host: 'hostId',
};
function displaySingle(data) {
@@ -291,7 +291,7 @@
var friendlyIndex = {
device: 1,
- host: 0
+ host: 0,
};
function friendly(d) {
@@ -306,7 +306,7 @@
// provided to change presentation of internal type name
var linkTypePres = {
- hostLink: 'edge link'
+ hostLink: 'edge link',
};
function linkType(d) {
@@ -320,12 +320,12 @@
var coreOrder = [
'Type', 'Expected', '-',
'A_type', 'A_id', 'A_label', 'A_port', '-',
- 'B_type', 'B_id', 'B_label', 'B_port'
+ 'B_type', 'B_id', 'B_label', 'B_port',
],
edgeOrder = [
'Type', '-',
'A_type', 'A_id', 'A_label', '-',
- 'B_type', 'B_id', 'B_label', 'B_port'
+ 'B_type', 'B_id', 'B_label', 'B_port',
];
function displayLink(data, modifyCb) {
@@ -344,7 +344,7 @@
title.text('Link');
var linkData = {
- propOrder: order.slice(0), // makes a copy of the array
+ propOrder: order.slice(0), // makes a copy of the array
props: {
Type: linkType(data),
Expected: linkExpected(data),
@@ -357,8 +357,8 @@
B_type: data.target.class,
B_id: data.target.id,
B_label: friendly(data.target),
- B_port: data.tgtPort
- }
+ B_port: data.tgtPort,
+ },
};
listProps(tbody, modifyCb(linkData, data.extra));
@@ -422,7 +422,7 @@
function hideSummaryPanel() {
// instruct server to stop sending summary data
- wss.sendEvent("cancelSummary");
+ wss.sendEvent('cancelSummary');
summary.panel().hide(detail.up);
}
@@ -443,7 +443,7 @@
function augmentDetailPanel() {
var d = detail,
downPos = sumFromTop + sumMax + padFudge;
- d.ypos = { up: sumFromTop, down: downPos, current: downPos};
+ d.ypos = { up: sumFromTop, down: downPos, current: downPos };
d._move = function (y, cb) {
var yp = d.ypos,
@@ -453,11 +453,11 @@
endCb = function () {
cb();
d.adjustHeight(d.ypos.current);
- }
+ };
} else {
endCb = function () {
d.adjustHeight(d.ypos.current);
- }
+ };
}
if (yp.current !== y) {
yp.current = y;
@@ -552,7 +552,7 @@
addAction: addAction,
detailVisible: function () { return detail.panel().isVisible(); },
- summaryVisible: function () { return summary.panel().isVisible(); }
+ summaryVisible: function () { return summary.panel().isVisible(); },
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
index 5ecded5..085ff4b 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
@@ -23,7 +23,7 @@
'use strict';
// injected refs
- var $log, fs, flash, wss, api;
+ var flash, wss;
// internal state
var showingProtectedIntent = null;
@@ -54,21 +54,20 @@
angular.module('ovTopo')
.factory('TopoProtectedIntentsService',
- ['$log', 'FnService', 'FlashService', 'WebSocketService',
+ ['FlashService', 'WebSocketService',
- function (_$log_, _fs_, _flash_, _wss_) {
- $log = _$log_;
- fs = _fs_;
+ function (_flash_, _wss_) {
flash = _flash_;
wss = _wss_;
return {
- initProtectedIntents: function (_api_) { api = _api_; },
+ // TODO: Remove references
+ initProtectedIntents: function (_api_) {},
destroyProtectedIntents: function () { },
// invoked from toolbar overlay buttons or keystrokes
cancelHighlights: cancelHighlights,
- showProtectedIntent: showProtectedIntent
+ showProtectedIntent: showProtectedIntent,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
index 144e0b4..3cfea34 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
@@ -38,12 +38,12 @@
tooltip: 'Protected Intents Overlay',
activate: function () {
- $log.debug("Protected Intent overlay ACTIVATED");
+ $log.debug('Protected Intent overlay ACTIVATED');
},
deactivate: function () {
tpis.cancelHighlights();
- $log.debug("Protected Intent DEACTIVATED");
+ $log.debug('Protected Intent DEACTIVATED');
},
hooks: {
@@ -60,8 +60,8 @@
showIntent: function (info) {
$log.debug('^^ topoProtectedIntentsOverlay.showintent() ^^', info);
tpis.showProtectedIntent(info);
- }
- }
+ },
+ },
};
// invoke code to register with the overlay service
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSelect.js b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
index 5fbb700..1309a66 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSelect.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
@@ -23,7 +23,7 @@
'use strict';
// injected refs
- var $log, fs, wss, tov, tps, tts, ns, sus, tpis;
+ var fs, wss, tov, tps, tts, sus;
// api to topoForce
var api;
@@ -37,11 +37,11 @@
// internal state
var hovered, selections, selectOrder, consumeClick;
- function setInitialState () {
- hovered = null; // the node over which the mouse is hovering
- selections = {}; // currently selected nodes (by id)
- selectOrder = []; // the order in which we made selections
- consumeClick = false; // used to coordinate with SVG click handler
+ function setInitialState() {
+ hovered = null; // the node over which the mouse is hovering
+ selections = {}; // currently selected nodes (by id)
+ selectOrder = []; // the order in which we made selections
+ consumeClick = false; // used to coordinate with SVG click handler
}
// ==========================
@@ -70,7 +70,7 @@
tov.hooks.mouseOver({
id: m.id,
class: m.class,
- type: m.type
+ type: m.type,
});
}
}
@@ -185,7 +185,7 @@
function requestDetails(data) {
wss.sendEvent('requestDetails', {
id: data.id,
- class: data.class
+ class: data.class,
});
}
@@ -210,7 +210,7 @@
function singleSelect() {
var data = getSel(0).obj;
- //the link details are already taken care of in topoLink.js
+ // the link details are already taken care of in topoLink.js
if (data.class === 'link') {
return;
}
@@ -235,14 +235,14 @@
id: 'host-flow-btn',
gid: 'endstation',
cb: tts.addHostIntent,
- tt: 'Create Host-to-Host Flow'
+ tt: 'Create Host-to-Host Flow',
});
} else if (nSel() >= 2) {
tps.addAction({
id: 'mult-src-flow-btn',
gid: 'flows',
cb: tts.addMultiSourceIntent,
- tt: 'Create Multi-Source Flow'
+ tt: 'Create Multi-Source Flow',
});
}
}
@@ -295,7 +295,7 @@
return {
devices: devices,
hosts: hosts,
- types: types
+ types: types,
};
}
@@ -304,20 +304,16 @@
angular.module('ovTopo')
.factory('TopoSelectService',
- ['$log', 'FnService', 'WebSocketService', 'TopoOverlayService',
- 'TopoPanelService', 'TopoTrafficService', 'NavService',
- 'SvgUtilService', 'TopoProtectedIntentsService',
+ ['FnService', 'WebSocketService', 'TopoOverlayService',
+ 'TopoPanelService', 'TopoTrafficService', 'SvgUtilService',
- function (_$log_, _fs_, _wss_, _tov_, _tps_, _tts_, _ns_, _sus_, _tpis_) {
- $log = _$log_;
+ function (_fs_, _wss_, _tov_, _tps_, _tts_, _sus_) {
fs = _fs_;
wss = _wss_;
tov = _tov_;
tps = _tps_;
tts = _tts_;
- ns = _ns_;
sus = _sus_;
- tpis= _tpis_;
function initSelect(_api_) {
api = _api_;
@@ -347,7 +343,7 @@
clickConsumed: clickConsumed,
selectionContext: selectionContext,
- reselect: reselect
+ reselect: reselect,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSprite.js b/web/gui/src/main/webapp/app/view/topo/topoSprite.js
index e17e74c..756aed5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSprite.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSprite.js
@@ -23,11 +23,11 @@
'use strict';
// injected refs
- var $log, $http, fs, gs, sus, wss;
+ var $log, fs, gs, sus, wss;
// constants
var tssid = 'TopoSpriteService: ',
- fontsize = 20; // default font size 20pt.
+ fontsize = 20; // default font size 20pt.
// internal state
var spriteLayer, defsElement;
@@ -76,9 +76,9 @@
function doSprite(spr, def, pathmeta) {
var pmeta = pathmeta[def.path],
c = spr.class || 'gray1',
- p = spr.pos || [0,0],
+ p = spr.pos || [0, 0],
lab = spr.label,
- dim = def.dim || [40,40],
+ dim = def.dim || [40, 40],
w = dim[0],
h = dim[1],
dy = def.labelyoff || 1,
@@ -97,7 +97,7 @@
attr = {
width: w,
height: h,
- 'xlink:href': '#' + pmeta.u
+ 'xlink:href': '#' + pmeta.u,
};
use = g.append('use').attr(attr);
@@ -113,7 +113,7 @@
width: w,
height: h,
'xlink:href': '#' + pmeta.u,
- transform: sus.translate(v.pos)
+ transform: sus.translate(v.pos),
};
use = g.append('use').attr(attr);
applyStrokeStyle(pmeta.s, use);
@@ -130,9 +130,10 @@
function doLabel(label) {
var c = label.class || 'gray1',
- p = label.pos || [0,0],
- sz = label.size || 1.0,
- g = spriteLayer.append('g')
+ p = label.pos || [0, 0],
+ sz = label.size || 1.0;
+
+ spriteLayer.append('g')
.classed(c, true)
.attr('transform', sus.translate(p))
.append('text')
@@ -174,7 +175,7 @@
load = data.load;
pfx = tssid + '[' + name + ']: ';
- $log.debug("Loading sprites...[" + name + "]", desc);
+ $log.debug('Loading sprites...[' + name + ']', desc);
function no(what) {
warn.push(pfx + 'No ' + what + ' property defined');
@@ -195,7 +196,7 @@
paths.forEach(function (p) {
pathmeta[p.tag] = {
s: p.stroke,
- u: p.glyph || 'spr_' + p.tag
+ u: p.glyph || 'spr_' + p.tag,
};
});
@@ -233,7 +234,7 @@
$log.info(tssid + 'Requesting sprite definition ['+name+']...');
wss.sendEvent('spriteListRequest');
- wss.sendEvent('spriteDataRequest', {name: name});
+ wss.sendEvent('spriteDataRequest', { name: name });
}
// === -----------------------------------------------------
@@ -241,12 +242,11 @@
angular.module('ovTopo')
.factory('TopoSpriteService',
- ['$log', '$http', 'FnService', 'GlyphService',
+ ['$log', 'FnService', 'GlyphService',
'SvgUtilService', 'WebSocketService',
- function (_$log_, _$http_, _fs_, _gs_, _sus_, _wss_) {
+ function (_$log_, _fs_, _gs_, _sus_, _wss_) {
$log = _$log_;
- $http = _$http_;
fs = _fs_;
gs = _gs_;
sus = _sus_;
@@ -255,7 +255,7 @@
return {
loadSprites: loadSprites,
spriteListResponse: inList,
- spriteDataResponse: inData
+ spriteDataResponse: inData,
};
}]);
diff --git a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
index 76af3d7..e9d9752 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
@@ -42,7 +42,7 @@
// key to button mapping data
var k2b = {
- O: { id: 'summary-tog', gid: 'm_summary', isel: true},
+ O: { id: 'summary-tog', gid: 'm_summary', isel: true },
I: { id: 'instance-tog', gid: 'm_uiAttached', isel: true },
D: { id: 'details-tog', gid: 'm_details', isel: true },
H: { id: 'hosts-tog', gid: 'm_endstation', isel: false },
@@ -57,12 +57,12 @@
L: { id: 'cycleLabels-btn', gid: 'm_cycleLabels' },
R: { id: 'resetZoom-btn', gid: 'm_resetZoom' },
- E: { id: 'eqMaster-btn', gid: 'm_eqMaster' }
+ E: { id: 'eqMaster-btn', gid: 'm_eqMaster' },
};
var prohibited = [
'T', 'backSlash', 'slash',
- 'X' // needed until we re-instate X above.
+ 'X', // needed until we re-instate X above.
];
prohibited = prohibited.concat(d3.map(k2b).keys());
@@ -79,8 +79,8 @@
porthl: 1,
bg: 0,
spr: 0,
- ovid: 'traffic', // default to traffic overlay
- toolbar: 0
+ ovid: 'traffic', // default to traffic overlay
+ toolbar: 0,
},
prefsMap = {
summary: 'O',
@@ -90,7 +90,7 @@
offdev: 'M',
porthl: 'P',
bg: 'B',
- spr: 'S'
+ spr: 'S',
// NOTE: toolbar state is handled separately
};
@@ -125,12 +125,11 @@
function initKeyData() {
// TODO: use angular forEach instead of d3.map
keyData = d3.map(k2b);
- keyData.forEach(function(key, value) {
+ keyData.forEach(function (key, value) {
var data = api.getActionEntry(key);
-
value.key = key;
- value.cb = data[0]; // on-click callback
- value.tt = data[1]; // tooltip (may be a function)
+ value.cb = data[0]; // on-click callback
+ value.tt = data[1] + ' (' + key + ')'; // tooltip
});
}
@@ -172,7 +171,7 @@
}
function addSecondRow() {
- //addToggle('X');
+ // addToggle('X');
addToggle('Z');
addButton('N');
addButton('L');
@@ -190,7 +189,7 @@
tooltip: 'No Overlay',
cb: function () {
tov.tbSelection(null, switchOverlayActions);
- }
+ },
}];
ovIndex = tov.augmentRbset(rset, switchOverlayActions);
ovRset = toolbar.addRadioSet('topo-overlays', rset);
@@ -331,7 +330,7 @@
toggleToolbar: toggleToolbar,
selectOverlay: selectOverlay,
defaultPrefs: defaultPrefsState,
- fnkey: fnkey
+ fnkey: fnkey,
};
}]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
index b4aa06a..e6b66fc 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
@@ -23,7 +23,7 @@
'use strict';
// injected refs
- var $log, fs, flash, wss, api;
+ var $log, flash, wss, api;
/*
API to topoForce
@@ -35,12 +35,12 @@
var allTrafficTypes = [
'flowStatsBytes',
'portStatsBitSec',
- 'portStatsPktSec'
+ 'portStatsPktSec',
],
allTrafficMsgs = [
'Flow Stats (bytes)',
'Port Stats (bits / second)',
- 'Port Stats (packets / second)'
+ 'Port Stats (packets / second)',
];
// internal state
@@ -49,7 +49,6 @@
allTrafficIndex = 0;
-
// === -----------------------------------------------------
// Helper functions
@@ -78,7 +77,7 @@
if (api.somethingSelected()) {
wss.sendEvent('requestDeviceLinkFlows', {
ids: api.selectOrder(),
- hover: hoverValid() ? hov.id : ''
+ hover: hoverValid() ? hov.id : '',
});
}
}
@@ -97,7 +96,7 @@
if (api.somethingSelected()) {
wss.sendEvent('requestRelatedIntents', {
ids: api.selectOrder(),
- hover: hoverValid() ? hov.id : ''
+ hover: hoverValid() ? hov.id : '',
});
}
}
@@ -121,19 +120,19 @@
trafficMode = 'allFlowPort';
hoverMode = null;
wss.sendEvent('requestAllTraffic', {
- trafficType: allTrafficTypes[allTrafficIndex]
+ trafficType: allTrafficTypes[allTrafficIndex],
});
flash.flash(allTrafficMsgs[allTrafficIndex]);
allTrafficIndex = (allTrafficIndex + 1) % 3;
}
- function showDeviceLinkFlows () {
+ function showDeviceLinkFlows() {
trafficMode = hoverMode = 'flows';
requestDeviceLinkFlows();
flash.flash('Device Flows');
}
- function showRelatedIntents () {
+ function showRelatedIntents() {
trafficMode = hoverMode = 'intents';
requestRelatedIntents();
flash.flash('Related Paths');
@@ -175,25 +174,25 @@
// === ------------------------------------------------------
// action buttons on detail panel (multiple selection)
- function addHostIntent () {
+ function addHostIntent() {
var so = api.selectOrder();
wss.sendEvent('addHostIntent', {
one: so[0],
two: so[1],
- ids: so
+ ids: so,
});
trafficMode = 'intents';
hoverMode = null;
flash.flash('Host-to-Host flow added');
}
- function removeIntent (d) {
+ function removeIntent(d) {
$log.debug('Entering removeIntent');
wss.sendEvent('removeIntent', {
appId: d.appId,
appName: d.appName,
key: d.key,
- purge: d.intentPurge
+ purge: d.intentPurge,
});
trafficMode = 'intents';
hoverMode = null;
@@ -201,32 +200,32 @@
flash.flash('Intent ' + txt);
}
- function resubmitIntent (d) {
+ function resubmitIntent(d) {
$log.debug('Entering resubmitIntent');
wss.sendEvent('resubmitIntent', {
appId: d.appId,
appName: d.appName,
key: d.key,
- purge: d.intentPurge
+ purge: d.intentPurge,
});
trafficMode = 'intents';
hoverMode = null;
flash.flash('Intent resubmitted');
}
- function addMultiSourceIntent () {
+ function addMultiSourceIntent() {
var so = api.selectOrder();
wss.sendEvent('addMultiSourceIntent', {
src: so.slice(0, so.length - 1),
dst: so[so.length - 1],
- ids: so
+ ids: so,
});
trafficMode = 'intents';
hoverMode = null;
flash.flash('Multi-Source flow added');
}
- function removeIntents () {
+ function removeIntents() {
$log.debug('Entering removeIntents');
wss.sendEvent('removeIntents', {});
trafficMode = 'intents';
@@ -240,11 +239,10 @@
angular.module('ovTopo')
.factory('TopoTrafficService',
- ['$log', 'FnService', 'FlashService', 'WebSocketService',
+ ['$log', 'FnService', 'WebSocketService',
- function (_$log_, _fs_, _flash_, _wss_) {
+ function (_$log_, _flash_, _wss_) {
$log = _$log_;
- fs = _fs_;
flash = _flash_;
wss = _wss_;
@@ -271,7 +269,7 @@
addMultiSourceIntent: addMultiSourceIntent,
removeIntent: removeIntent,
resubmitIntent: resubmitIntent,
- removeIntents: removeIntents
+ removeIntents: removeIntents,
};
}]);
}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
index 9ae9b0f..687fdab 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
@@ -41,12 +41,12 @@
// NOTE: Traffic glyphs already installed as part of the base ONOS set.
activate: function () {
- $log.debug("Traffic overlay ACTIVATED");
+ $log.debug('Traffic overlay ACTIVATED');
},
deactivate: function () {
tts.cancelTraffic(true);
- $log.debug("Traffic overlay DEACTIVATED");
+ $log.debug('Traffic overlay DEACTIVATED');
},
// detail panel button definitions
@@ -55,14 +55,14 @@
showDeviceFlows: {
gid: 'm_flows',
tt: 'Show Device Flows',
- cb: function (data) { tts.showDeviceLinkFlows(); }
+ cb: function (data) { tts.showDeviceLinkFlows(); },
},
showRelatedTraffic: {
gid: 'm_relatedIntents',
tt: 'Show Related Traffic',
- cb: function (data) { tts.showRelatedIntents(); }
- }
+ cb: function (data) { tts.showRelatedIntents(); },
+ },
},
// key bindings for traffic overlay toolbar buttons
@@ -71,43 +71,43 @@
0: {
cb: function () { tts.cancelTraffic(true); },
tt: 'Cancel traffic monitoring',
- gid: 'm_xMark'
+ gid: 'm_xMark',
},
A: {
cb: function () { tts.showAllTraffic(); },
tt: 'Monitor all traffic',
- gid: 'm_allTraffic'
+ gid: 'm_allTraffic',
},
F: {
cb: function () { tts.showDeviceLinkFlows(); },
tt: 'Show device link flows',
- gid: 'm_flows'
+ gid: 'm_flows',
},
V: {
cb: function () { tts.showRelatedIntents(); },
tt: 'Show all related intents',
- gid: 'm_relatedIntents'
+ gid: 'm_relatedIntents',
},
leftArrow: {
cb: function () { tts.showPrevIntent(); },
tt: 'Show previous related intent',
- gid: 'm_prev'
+ gid: 'm_prev',
},
rightArrow: {
cb: function () { tts.showNextIntent(); },
tt: 'Show next related intent',
- gid: 'm_next'
+ gid: 'm_next',
},
W: {
cb: function () { tts.showSelectedIntentTraffic(); },
tt: 'Monitor traffic of selected intent',
- gid: 'm_intentTraffic'
+ gid: 'm_intentTraffic',
},
_keyOrder: [
- '0', 'A', 'F', 'V', 'leftArrow', 'rightArrow', 'W'
- ]
+ '0', 'A', 'F', 'V', 'leftArrow', 'rightArrow', 'W',
+ ],
},
hooks: {
@@ -146,8 +146,8 @@
showIntent: function (info) {
$log.debug('^^ trafficOverlay.showintent() ^^', info);
tts.selectIntent(info);
- }
- }
+ },
+ },
};
// invoke code to register with the overlay service
diff --git a/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js b/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js
deleted file mode 100644
index 8432f7a..0000000
--- a/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js
+++ /dev/null
@@ -1,21 +0,0 @@
-module.exports = {
- "extends": "google",
- "installedESLint": true,
- "globals": {
- "angular": true,
- "d3": true,
- "_": true
- },
- "rules": {
- "brace-style": 0,
- "no-void": 0,
- "require-jsdoc": 0,
- "padded-blocks": 0,
- "quote-props": 0,
- "no-warning-comments": 0,
- "object-curly-spacing": ["error", "always"],
- "indent": ["error", 4],
- "one-var": 0,
- "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }]
- }
-};
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2.js b/web/gui/src/main/webapp/app/view/topo2/topo2.js
index 4b92d61..8559811 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2.js
@@ -22,10 +22,10 @@
(function () {
'use strict';
-
+
// references to injected services
var $scope, $log, fs, mast, ks, wss,
- gs, sus, ps, t2es, t2fs, t2is, t2bcs, t2kcs, t2ms, t2mcs, t2zs;
+ gs, sus, t2es, t2fs, t2is, t2bcs, t2kcs, t2ms, t2zs;
// DOM elements
var ovtopo2, svg, defs, zoomLayer, forceG;
@@ -59,11 +59,11 @@
var sc = zoomer.scale(),
tr = zoomer.translate(),
metaUi = isNaN(sc) ? {
- useCfg: 1
+ useCfg: 1,
} : {
scale: sc,
offsetX: tr[0],
- offsetY: tr[1]
+ offsetY: tr[1],
};
// Allow map service to react to change in zoom parameters
@@ -74,7 +74,7 @@
wss.sendEvent('updateMeta2', {
id: 'layoutZoom',
- memento: metaUi
+ memento: metaUi,
});
}
@@ -85,7 +85,7 @@
svg: svg,
zoomLayer: zoomLayer,
zoomEnabled: zoomEnabled,
- zoomCallback: zoomCallback
+ zoomCallback: zoomCallback,
});
}
@@ -95,22 +95,20 @@
.controller('OvTopo2Ctrl', [
'$scope', '$log', '$location',
'FnService', 'MastService', 'KeyService', 'GlyphService', 'MapService',
- 'SvgUtilService', 'FlashService', 'WebSocketService',
- 'PrefsService', 'ThemeService',
+ 'SvgUtilService', 'FlashService', 'WebSocketService', 'ThemeService',
'Topo2EventService', 'Topo2ForceService', 'Topo2InstanceService',
'Topo2BreadcrumbService', 'Topo2KeyCommandService', 'Topo2MapService',
- 'Topo2MapConfigService', 'Topo2ZoomService', 'Topo2SpriteLayerService',
+ 'Topo2ZoomService', 'Topo2SpriteLayerService',
'Topo2SummaryPanelService', 'Topo2DeviceDetailsPanel', 'Topo2ToolbarService',
'Topo2NoDevicesConnectedService', 'Topo2OverlayService',
function (
_$scope_, _$log_, _$loc_,
_fs_, _mast_, _ks_, _gs_, _ms_,
- _sus_, _flash_, _wss_,
- _ps_, _th_,
+ _sus_, _flash_, _wss_, _th_,
_t2es_, _t2fs_, _t2is_,
_t2bcs_, _t2kcs_, _t2ms_,
- _t2mcs_, _t2zs_, t2sls,
+ _t2zs_, t2sls,
summaryPanel, detailsPanel, t2tbs, t2ndcs, t2os
) {
var params = _$loc_.search(),
@@ -118,7 +116,7 @@
wh,
uplink = {
zoomLayer: function () { return zoomLayer; },
- zoomer: function () { return zoomer; }
+ zoomer: function () { return zoomer; },
};
$scope = _$scope_;
@@ -130,7 +128,6 @@
wss = _wss_;
gs = _gs_;
sus = _sus_;
- ps = _ps_;
t2es = _t2es_;
t2fs = _t2fs_;
@@ -138,7 +135,6 @@
t2bcs = _t2bcs_;
t2kcs = _t2kcs_;
t2ms = _t2ms_;
- t2mcs = _t2mcs_;
t2zs = _t2zs_;
// capture selected intent parameters (if they are set in the
@@ -152,7 +148,7 @@
key: params.intentKey,
appId: params.intentAppId,
appName: params.intentAppName,
- intentType: params.intentType
+ intentType: params.intentType,
};
}
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
index 8d63bb0..89b91cf 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
@@ -116,10 +116,10 @@
resetZoom: function () {
var pan = zoomPan(this.zoomData, true);
t2zs.panAndZoom(pan, zoomScale(this.zoomData, true), 1000);
- }
+ },
});
return instance || new BackgroundView();
- }
+ },
]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js b/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
index 7e45557..57cd72d 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
@@ -20,4 +20,4 @@
usage: new NodeBadge({text, icon}, DOM Element, Node);
*/
-// TODO: Create a badge class
\ No newline at end of file
+// TODO: Create a badge class
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
index 16f53fd..6b39f3e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
@@ -23,12 +23,11 @@
'use strict';
- var $log, $loc, wss, t2rns;
+ var t2rns;
// Internal
var breadcrumbContainer,
- breadcrumbs,
- layout;
+ breadcrumbs;
function init() {
breadcrumbs = [];
@@ -96,27 +95,21 @@
});
}
- function addLayout(_layout_) {
- layout = _layout_;
- }
+ // TODO: Remove references
+ function addLayout(_layout_) {}
angular.module('ovTopo2')
.factory('Topo2BreadcrumbService', [
- '$log', '$location', 'WebSocketService',
'Topo2RegionNavigationService',
- function (_$log_, _$loc_, _wss_, _t2rns_) {
-
- $log = _$log_;
- $loc = _$loc_;
- wss = _wss_;
+ function (_t2rns_) {
t2rns = _t2rns_;
return {
init: init,
addBreadcrumb: addBreadcrumb,
addLayout: addLayout,
- hide: hide
+ hide: hide,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js b/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
index 89d92d3..12d8e60 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
@@ -116,7 +116,7 @@
return this.models.map(function (model) {
return model.toJSON(options);
});
- }
+ },
};
angular.module('ovTopo2')
@@ -126,7 +126,7 @@
Collection.extend = fn.extend;
Model = _Model_;
return Collection;
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
index f77dbbf..921ebef 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
@@ -43,7 +43,7 @@
panelPadding = 64,
panelSpacing = 20,
panelOpts = {
- width: 260 // summary and detail panel width
+ width: 260, // summary and detail panel width
};
function getInstance(_summaryPanel_) {
@@ -54,7 +54,7 @@
summaryPanel = _summaryPanel_;
var options = angular.extend({}, panelOpts, {
- class: className
+ class: className,
});
Panel = Panel.extend({
@@ -84,7 +84,7 @@
detailsPanel.el.el()
.style('top', panelPadding + position + 'px');
detailsPanel.el.show();
- }
+ },
});
detailsPanel = new Panel(id, options);
@@ -94,7 +94,6 @@
}
-
angular.module('ovTopo2')
.factory('Topo2DetailsPanelService', [
'Topo2PanelService',
@@ -102,6 +101,6 @@
Panel = _ps_;
return getInstance;
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Device.js b/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
index 0e78d3c..ebed084 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
@@ -26,13 +26,13 @@
var remappedDeviceTypes = {
switch: 'm_switch',
- virtual: 'cord'
+ virtual: 'cord',
};
function createDeviceCollection(data) {
var DeviceCollection = Collection.extend({
- model: Model
+ model: Model,
});
var devices = [];
@@ -58,7 +58,7 @@
nodeType: 'device',
multiSelectEnabled: true,
events: {
- 'click': 'onClick'
+ 'click': 'onClick',
},
initialize: function () {
@@ -88,7 +88,7 @@
var id = this.mastershipService.mastership(),
suppress = id ? this.get('master') !== id : false;
- this.set({mastership: suppress});
+ this.set({ mastership: suppress });
},
setOfflineVisibility: function () {
var showOffline = ps.getPrefs('topo2_prefs')['offline_devices'],
@@ -107,13 +107,13 @@
.style('stroke-fill', '#555')
.style('fill', '#888')
.style('opacity', 0.5);
- }
+ },
});
return {
- createDeviceCollection: createDeviceCollection
+ createDeviceCollection: createDeviceCollection,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
index 962bd8c..bcf0469 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
@@ -32,35 +32,35 @@
var id = 'topo2-p-detail',
devicePath = 'device',
handlerMap = {
- 'showDetails': showDetails
+ 'showDetails': showDetails,
};
var coreButtons = {
showDeviceView: {
gid: 'switch',
tt: 'Show Device View',
- path: 'device'
+ path: 'device',
},
showFlowView: {
gid: 'flowTable',
tt: 'Show Flow View for this Device',
- path: 'flow'
+ path: 'flow',
},
showPortView: {
gid: 'portTable',
tt: 'Show Port View for this Device',
- path: 'port'
+ path: 'port',
},
showGroupView: {
gid: 'groupTable',
tt: 'Show Group View for this Device',
- path: 'group'
+ path: 'group',
},
showMeterView: {
gid: 'meterTable',
tt: 'Show Meter View for this Device',
- path: 'meter'
- }
+ path: 'meter',
+ },
};
function init(summaryPanel) {
@@ -94,7 +94,7 @@
id: 'core-' + id,
gid: gid,
tt: tt,
- cb: function () { ns.navTo(path, { devId: devId }); }
+ cb: function () { ns.navTo(path, { devId: devId }); },
});
}
});
@@ -168,7 +168,7 @@
function updateDetails(id, nodeType) {
wss.sendEvent('requestDetails', {
id: id,
- class: nodeType
+ class: nodeType,
});
}
@@ -223,8 +223,8 @@
hide: hide,
destroy: destroy,
isVisible: function () { return detailsPanel.isVisible(); },
- getInstance: function () { return detailsPanel; }
+ getInstance: function () { return detailsPanel; },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Event.js b/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
index c1651d0..e7f86e8 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
@@ -98,7 +98,7 @@
return {
bindHandlers: bindHandlers,
start: start,
- stop: stop
+ stop: stop,
};
}]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
index cbe7511..b67df6f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
@@ -26,10 +26,7 @@
var $log, $loc, wss;
var t2is, t2rs, t2ls, t2vs, t2bcs, t2ss, t2bgs, t2tbs, t2mss;
- var svg, forceG, uplink, dim, opts, zoomer;
-
- // D3 Selections
- var node;
+ var svg, uplink, dim, opts, zoomer;
// ========================== Helper Functions
@@ -63,7 +60,7 @@
$log.debug('navToBookmarkedRegion:', regionId);
if (regionId) {
wss.sendEvent('topo2navRegion', {
- rid: regionId
+ rid: regionId,
});
t2ls.createForceElements();
@@ -223,7 +220,7 @@
updateNodes: updateNodes,
updateLinks: updateLinks,
resetNodeLocation: resetNodeLocation,
- unpin: unpin
+ unpin: unpin,
};
}]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Host.js b/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
index df40e8b..a2f2124 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
@@ -32,7 +32,7 @@
function createHostCollection(data, region) {
var HostCollection = Collection.extend({
- model: Model
+ model: Model,
});
var hosts = [];
@@ -57,7 +57,7 @@
nodeType: 'host',
events: {
- 'click': 'onClick'
+ 'click': 'onClick',
},
initialize: function () {
this.super = this.constructor.__super__;
@@ -69,7 +69,7 @@
this.el.attr('class', this.svgClassName());
}
},
- showDetails: function() {
+ showDetails: function () {
t2hds.displayPanel(this);
},
icon: function () {
@@ -118,7 +118,7 @@
width: glyphSize,
height: glyphSize,
x: -glyphSize / 2,
- y: -glyphSize / 2
+ y: -glyphSize / 2,
});
var labelText = this.label();
@@ -132,13 +132,13 @@
this.setScale();
this.setUpEvents();
this.setVisibility();
- }
+ },
});
return {
- createHostCollection: createHostCollection
+ createHostCollection: createHostCollection,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
index 285221f..4ba1f60 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
@@ -41,8 +41,8 @@
'-': '',
'MAC': data.get('id'),
'IP': data.get('ips')[0],
- 'VLAN': 'None' // TODO: VLAN is not currently in the data received from backend
- }
+ 'VLAN': 'None', // TODO: VLAN is not currently in the data received from backend
+ },
};
if (data.get('location')) {
@@ -120,9 +120,9 @@
hide: hide,
toggle: toggle,
destroy: destroy,
- isVisible: function () { return hostPanel.isVisible(); }
+ isVisible: function () { return hostPanel.isVisible(); },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js b/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
index 044e3d6..de7c09e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
@@ -4,15 +4,12 @@
// injected refs
var $log, ps, sus, gs, flash, ts, t2mss;
- // api from topo
- var api;
-
// configuration
var showLogicErrors = true,
idIns = 'topo2-p-instance',
instOpts = {
edge: 'left',
- width: 20
+ width: 20,
};
// internal state
@@ -97,24 +94,24 @@
instSvg = {
width: 170,
height: 85,
- viewBox: '0 0 170 85'
+ viewBox: '0 0 170 85',
},
headRect = {
x: rox,
y: roy,
width: rw,
- height: rhh
+ height: rhh,
},
bodyRect = {
x: rox,
y: roy + rhh,
width: rw,
- height: rbh
+ height: rbh,
},
titleAttr = {
class: 'instTitle',
x: tx,
- y: 27
+ y: 27,
};
var onoses = oiBox.el().selectAll('.onosInst')
@@ -180,7 +177,7 @@
svg.append('text').attr({
class: 'instLabel ' + id,
x: tx,
- y: ty
+ y: ty,
}).text(label);
ty += 18;
}
@@ -215,8 +212,7 @@
}
}
- function initInst(_api_) {
- api = _api_;
+ function initInst() {
oiBox = ps.createPanel(idIns, instOpts);
oiBox.show();
@@ -286,9 +282,9 @@
allInstances: allInstances,
destroy: destroy,
toggle: toggle,
- isVisible: function () { return oiBox.isVisible(); }
+ isVisible: function () { return oiBox.isVisible(); },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
index 4f31f63..bce5efb 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
@@ -18,7 +18,7 @@
// Injected Services
var $log, fs, ks, flash, wss, t2ps, t2bgs, ps, t2is, t2sp, t2vs, t2rs,
- t2fs, t2sls, t2tbs;
+ t2fs, t2tbs;
// Commmands
function actionMap() {
@@ -38,8 +38,8 @@
esc: handleEscape,
- _keyListener: t2tbs.keyListener.bind(t2tbs)
- }
+ _keyListener: t2tbs.keyListener.bind(t2tbs),
+ };
}
function init(_t2fs_, _t2tbs_) {
@@ -74,7 +74,7 @@
['shift-click', 'Toggle selection state'],
['drag', 'Reposition (and pin) device / host'],
['cmd-scroll', 'Zoom in / out'],
- ['cmd-drag', 'Pan']
+ ['cmd-drag', 'Pan'],
]);
}
@@ -170,12 +170,12 @@
function toggleHosts() {
var on = t2rs.toggleHosts();
- actionedFlashed(on ? 'Show': 'Hide', 'Hosts')
+ actionedFlashed(on ? 'Show': 'Hide', 'Hosts');
}
function toggleOfflineDevices() {
var on = t2rs.toggleOfflineDevices();
- actionedFlashed(on ? 'Show': 'Hide', 'offline devices')
+ actionedFlashed(on ? 'Show': 'Hide', 'offline devices');
}
function notValid(what) {
@@ -204,10 +204,10 @@
'$log', 'FnService', 'KeyService', 'FlashService', 'WebSocketService',
'Topo2PrefsService', 'Topo2BackgroundService', 'PrefsService',
'Topo2InstanceService', 'Topo2SummaryPanelService', 'Topo2ViewService',
- 'Topo2RegionService', 'Topo2SpriteLayerService',
+ 'Topo2RegionService',
function (_$log_, _fs_, _ks_, _flash_, _wss_, _t2ps_, _t2bgs_, _ps_,
- _t2is_, _t2sp_, _t2vs_, _t2rs_, _t2sls_) {
+ _t2is_, _t2sp_, _t2vs_, _t2rs_) {
$log = _$log_;
fs = _fs_;
@@ -221,13 +221,12 @@
t2sp = _t2sp_;
t2vs = _t2vs_;
t2rs = _t2rs_;
- t2sls = _t2sls_;
return {
init: init,
bindCommands: bindCommands,
- getActionEntry: getActionEntry
+ getActionEntry: getActionEntry,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Label.js b/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
index 9c98ac5..69a0440 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
@@ -25,20 +25,20 @@
var defaultStyles = {
label: {
text: {
- fill: '#000000'
+ fill: '#000000',
},
rect: {
- fill: '#ffffff'
- }
+ fill: '#ffffff',
+ },
},
icon: {
glyph: {
- fill: '#000000'
+ fill: '#000000',
},
rect: {
- fill: '#ffffff'
- }
- }
+ fill: '#ffffff',
+ },
+ },
};
angular.module('ovTopo2')
@@ -69,9 +69,9 @@
this._labelG.text.text(this.get('label'));
this._labelG.rect.attr({
width: width,
- height: height
+ height: height,
}).style({
- transform: sus.translate(-(width/2) + 'px', -(height/2) + 'px')
+ transform: sus.translate(-(width/2) + 'px', -(height/2) + 'px'),
});
}
},
@@ -108,9 +108,9 @@
this._labelG.rect.attr({
width: this._labelG.text.node().getBBox().width + 20,
- height: this._labelG.text.node().getBBox().height + 10
+ height: this._labelG.text.node().getBBox().height + 10,
}).style({
- transform: sus.translate('-50%', '-50%')
+ transform: sus.translate('-50%', '-50%'),
});
},
renderIcon: function () {
@@ -123,7 +123,7 @@
this._iconG.rect = this._iconG.el.append('rect')
.attr({
width: this.iconSize,
- height: this.iconSize
+ height: this.iconSize,
});
this._iconG.glyph = is.addDeviceIcon(this._iconG.el,
@@ -131,9 +131,9 @@
var iconX = (-bbox.width / 2) - this.iconSize + 'px',
- iconY = -this.iconSize /2 + 'px';
+ iconY = -this.iconSize /2 + 'px';
this._iconG.el.style({
- transform: sus.translate(iconX, iconY)
+ transform: sus.translate(iconX, iconY),
});
},
beforeRender: function () {},
@@ -141,7 +141,7 @@
this.el = this.parent.append('g')
.attr('class', 'topo2-label')
.style({
- transform: 'translate(300px, 300px)'
+ transform: 'translate(300px, 300px)',
});
this.content = this.el.append('g')
@@ -160,8 +160,8 @@
afterRender: function () {},
remove: function () {
this.el.remove();
- }
+ },
});
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js b/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
index 53a3047..cb9fa93 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
@@ -36,13 +36,13 @@
if (this._byId[label.id]) {
this.get(label.id).set(label);
} else {
- var lab = new Model(label, targetNode, options)
+ var lab = new Model(label, targetNode, options);
this.add(lab);
}
- }
+ },
});
return instance || new LabelCollection();
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
index ba194d3..503cf40 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
@@ -34,20 +34,20 @@
device: -8000,
host: -20000,
region: -8000,
- _def_: -12000
+ _def_: -12000,
},
linkDistance: {
// note: key is link.type
direct: 100,
optical: 120,
UiEdgeLink: 100,
- _def_: 50
+ _def_: 50,
},
linkStrength: {
// note: key is link.type
// range: {0.0 ... 1.0}
- _def_: 1.0
- }
+ _def_: 1.0,
+ },
};
// configuration
@@ -55,20 +55,20 @@
light: {
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
dark: {
// TODO : theme
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
inWidth: 12,
- outWidth: 10
+ outWidth: 10,
};
// internal state
- var nodeLock = false; // whether nodes can be dragged or not (locked)
+ var nodeLock = false; // whether nodes can be dragged or not (locked)
// predicate that indicates when clicking is active
function clickEnabled() {
@@ -117,7 +117,7 @@
linkLabelG: this.addElement(this.forceG, 'topo2-linkLabels'),
numLinksLabels: this.addElement(this.forceG, 'topo2-numLinkLabels'),
nodeG: this.addElement(this.forceG, 'topo2-nodes'),
- portLabels: this.addElement(this.forceG, 'topo2-portLabels')
+ portLabels: this.addElement(this.forceG, 'topo2-portLabels'),
};
},
addElement: function (parent, className) {
@@ -138,7 +138,7 @@
.linkStrength(this.settingOrDefault.bind(this, 'linkStrength'))
.nodes([])
.links([])
- .on("tick", this.tick.bind(this))
+ .on('tick', this.tick.bind(this))
.start();
this.drag = sus.createDragBehavior(this.force,
@@ -173,15 +173,15 @@
var dx = isNaN(d.x) ? 0 : d.x,
dy = isNaN(d.y) ? 0 : d.y;
return sus.translate(dx, dy);
- }
+ },
});
this.link
.each(this.setLinkPosition)
- .attr("x1", function (d) { return d.get('position').x1; })
- .attr("y1", function (d) { return d.get('position').y1; })
- .attr("x2", function (d) { return d.get('position').x2; })
- .attr("y2", function (d) { return d.get('position').y2; });
+ .attr('x1', function (d) { return d.get('position').x1; })
+ .attr('y1', function (d) { return d.get('position').y1; })
+ .attr('x2', function (d) { return d.get('position').x2; })
+ .attr('y2', function (d) { return d.get('position').y2; });
},
start: function () {
@@ -215,13 +215,13 @@
// Need to guard against NaN here ??
return sus.translate(d.node.x, d.node.y);
},
- opacity: 0
+ opacity: 0,
})
.call(this.drag)
.transition()
.attr('opacity', 1);
- entering.each(function (d) { d.onEnter(this, d) });
+ entering.each(function (d) { d.onEnter(this, d); });
this.force.nodes(regionNodes);
},
@@ -242,10 +242,10 @@
x2: function (d) { return d.get('position').x2; },
y2: function (d) { return d.get('position').y2; },
stroke: linkConfig.light.inColor,
- 'stroke-width': linkConfig.inWidth
+ 'stroke-width': linkConfig.inWidth,
});
- entering.each(function (d) { d.onEnter(this, d) });
+ entering.each(function (d) { d.onEnter(this, d); });
// operate on exiting links:
this.link.exit()
@@ -280,15 +280,15 @@
y: d.y,
equivLoc: {
lng: ll[0],
- lat: ll[1]
- }
+ lat: ll[1],
+ },
};
}
d.metaUi = metaUi;
wss.sendEvent('updateMeta2', {
id: d.get('id'),
class: d.get('class'),
- memento: metaUi
+ memento: metaUi,
});
},
setDimensions: function () {
@@ -341,12 +341,12 @@
.style('opacity', 1)
.each('end', function () {
t2rns.navigateToRegionComplete();
- });;
+ }); ;
},
navigateToRegionHandler: function () {
this.createForceElements();
this.transitionDownRegion();
- }
+ },
});
function getInstance(svg, forceG, uplink, dim, zoomer, opts) {
@@ -354,7 +354,7 @@
}
return getInstance();
- }
+ },
]
);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
index e4b0f4a..3af8c0c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
@@ -39,16 +39,16 @@
light: {
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
dark: {
// TODO : theme
baseColor: '#939598',
inColor: '#66f',
- outColor: '#f00'
+ outColor: '#f00',
},
inWidth: 12,
- outWidth: 10
+ outWidth: 10,
};
function createLink() {
@@ -62,8 +62,8 @@
x1: 0,
y1: 0,
x2: 0,
- y2: 0
- }
+ y2: 0,
+ },
// functions to aggregate dual link state
// extra: link.extra
});
@@ -109,7 +109,7 @@
return {
source: sourceNode,
- target: targetNode
+ target: targetNode,
};
}
@@ -134,7 +134,7 @@
{
enhanced: this.get('enhanced'),
selected: this.get('selected'),
- suppressedmax: this.get('mastership')
+ suppressedmax: this.get('mastership'),
},
(this.linkLabel) ? this.linkLabel.linkLabelCSSClass() : null
);
@@ -168,7 +168,7 @@
point = this.locatePortLabel();
angular.extend(point, {
id: 'topo2-port-tgt',
- num: this.get('portB')
+ num: this.get('portB'),
});
data.push(point);
@@ -176,7 +176,7 @@
point = this.locatePortLabel(1);
angular.extend(point, {
id: 'topo2-port-src',
- num: this.get('portA')
+ num: this.get('portA'),
});
data.push(point);
}
@@ -224,8 +224,8 @@
x1: this.get('source').x,
y1: this.get('source').y,
x2: this.get('target').x,
- y2: this.get('target').y
- }
+ y2: this.get('target').y,
+ };
},
calcMovement: function (amt, flipped) {
var pos = this.defaultPosition(),
@@ -238,7 +238,7 @@
x1: pos.x1 + (mult * dy / length),
y1: pos.y1 + (mult * -dx / length),
x2: pos.x2 + (mult * dy / length),
- y2: pos.y2 + (mult * -dx / length)
+ y2: pos.y2 + (mult * -dx / length),
};
},
setPosition: function () {
@@ -282,7 +282,7 @@
deselect: function () {
this.set({
'selected': false,
- 'enhanced': false
+ 'enhanced': false,
});
},
showDetails: function () {
@@ -394,7 +394,7 @@
this.el.style('visibility', visible ? 'visible' : 'hidden');
},
displayMastership: function () {
- this.set({ mastership: t2mss.mastership() !== null});
+ this.set({ mastership: t2mss.mastership() !== null });
},
remove: function () {
@@ -407,11 +407,11 @@
.transition()
.delay(1000)
.style('opacity', 0);
- }
+ },
});
var LinkCollection = Collection.extend({
- model: LinkModel
+ model: LinkModel,
});
return new LinkCollection(data);
@@ -444,8 +444,8 @@
t2ts = _t2ts_;
return {
- createLinkCollection: createLinkCollection
+ createLinkCollection: createLinkCollection,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js b/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
index e0f5658..344fc68 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
@@ -47,7 +47,7 @@
var link = this.link;
this.set({
x: (link.source.x + link.target.x) / 2,
- y: (link.source.y + link.target.y) / 2
+ y: (link.source.y + link.target.y) / 2,
});
},
setScale: function () {
@@ -61,8 +61,8 @@
this.link.linkLabel = null;
this.link.onChange();
this.constructor.__super__.remove.apply(this, arguments);
- }
+ },
});
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
index 3b822aa..f7dc66c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
@@ -42,7 +42,7 @@
propOrder: [
'Type', '-',
'A Type', 'A Id', 'A Label', 'A Port', '-',
- 'B Type', 'B Id', 'B Label', 'B Port'
+ 'B Type', 'B Id', 'B Label', 'B Port',
],
props: {
'-': '',
@@ -54,8 +54,8 @@
'B Type': target.get('nodeType'),
'B Id': target.get('id'),
'B Label': target.get('props').name,
- 'B Port': data.get('portB') || 'N/A'
- }
+ 'B Port': data.get('portB') || 'N/A',
+ },
};
}
@@ -117,9 +117,9 @@
hide: hide,
toggle: toggle,
destroy: destroy,
- isVisible: function () { return linkPanel.isVisible(); }
+ isVisible: function () { return linkPanel.isVisible(); },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Map.js b/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
index 804cc02..be6bffe 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
@@ -23,14 +23,13 @@
'use strict';
// Injected Services
- var $log, $loc, ps, ms, flash, sus, t2zs, countryFilters;
+ var t2zs, countryFilters, ms;
// internal state
- var instance, mapG, zoomLayer, zoomer, currentMap;
+ var instance, zoomer, currentMap;
function init() {
this.appendElement('#topo2-background', 'g');
- zoomLayer = d3.select('#topo2-zoomlayer');
zoomer = t2zs.getZoomer();
currentMap = null;
}
@@ -38,7 +37,7 @@
function setUpMap(mapId, mapFilePath, mapScale) {
if (currentMap === mapId) {
- return new Promise(function(resolve) {
+ return new Promise(function (resolve) {
resolve();
});
}
@@ -48,7 +47,7 @@
var loadMap = ms.loadMapInto,
promise, cfilter;
- this.node().selectAll("*").remove();
+ this.node().selectAll('*').remove();
if (mapFilePath === '*countries') {
cfilter = countryFilters[mapId] || countryFilters.uk;
@@ -58,7 +57,7 @@
promise = loadMap(this.node(), mapFilePath, mapId, {
countryFilters: cfilter,
adjustScale: mapScale || 1,
- shading: ''
+ shading: '',
});
return promise;
@@ -80,19 +79,11 @@
angular.module('ovTopo2')
.factory('Topo2MapService', [
- '$log', '$location', 'Topo2ViewController', 'PrefsService',
- 'MapService', 'FlashService', 'SvgUtilService', 'Topo2ZoomService',
+ 'Topo2ZoomService', 'MapService', 'Topo2ViewController',
- function (_$log_, _$loc_, ViewController, _ps_,
- _ms_, _flash_, _sus_, _t2zs_) {
-
- $log = _$log_;
- $loc = _$loc_;
- ps = _ps_;
- ms = _ms_;
- flash = _flash_;
- sus = _sus_;
+ function (_t2zs_, _ms_, ViewController) {
t2zs = _t2zs_;
+ ms = _ms_;
var MapLayer = ViewController.extend({
@@ -103,10 +94,10 @@
setUpMap: setUpMap,
resetZoom: resetZoom,
zoomCallback: zoomCallback,
- getCurrentMap: getCurrentMap
+ getCurrentMap: getCurrentMap,
});
return instance || new MapLayer();
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js b/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
index e883d9a..41ceec4 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
@@ -31,7 +31,7 @@
function projection(x) {
if (x) {
proj = x;
- $log.debug("Set the projection");
+ $log.debug('Set the projection');
}
return proj;
}
@@ -44,9 +44,9 @@
$log = _$log_;
return {
- projection: projection
+ projection: projection,
};
- }
+ },
]
);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js b/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
index c6272b4..6e6aad1 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
@@ -49,10 +49,10 @@
setMastership: function (id) {
this.currentMastership = id;
this.displayMastership();
- }
- }
+ },
+ };
return instance || new MastershipController();
- }
+ },
]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Model.js b/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
index 0cf7ad3..dbb5d67 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
@@ -117,7 +117,7 @@
if (this.collection) {
this.collection.remove(this);
}
- }
+ },
};
angular.module('ovTopo2')
@@ -127,6 +127,6 @@
Model.extend = fn.extend;
return Model;
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js b/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
index b14ed7c..c3b0732 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
@@ -36,7 +36,7 @@
instance = this;
this.appendElement('#topo2', 'g')
.attr({
- transform: sus.translate(500, 500)
+ transform: sus.translate(500, 500),
});
this.render();
@@ -49,16 +49,16 @@
g = this.node().append('g');
gs.addGlyph(g, 'bird', 100).attr('class', 'noDevsBird');
g.append('text').text('No devices are connected')
- .attr({ x: 120, y: 80});
+ .attr({ x: 120, y: 80 });
box = g.node().getBBox();
box.x -= box.width/2;
box.y -= box.height/2;
g.attr('transform', sus.translate(box.x, box.y));
- }
+ },
});
return instance || new NoDevicesConnected();
- }
+ },
]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js b/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
index 3824005..c66f60e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
@@ -35,18 +35,18 @@
var dColTheme = {
light: {
online: '#444444',
- offline: '#cccccc'
+ offline: '#cccccc',
},
dark: {
// TODO: theme
online: '#444444',
- offline: '#cccccc'
- }
+ offline: '#cccccc',
+ },
},
// and here are the stroke colors of the glyph, per theme
dUseTheme = {
light: 'white',
- dark: 'black'
+ dark: 'black',
};
angular.module('ovTopo2')
@@ -72,7 +72,7 @@
this.mastershipService = t2mss;
this._events = {
'mouseover': 'mouseoverHandler',
- 'mouseout': 'mouseoutHandler'
+ 'mouseout': 'mouseoutHandler',
};
},
select: function () {
@@ -162,7 +162,7 @@
x: -dim / 2 - labelPad,
y: -dim / 2 - labelPad,
width: dim + labelWidth + (labelPad * 2) + _textPad,
- height: dim + (labelPad * 2)
+ height: dim + (labelPad * 2),
};
},
iconBox: function (dim, labelWidth) {
@@ -170,7 +170,7 @@
x: -dim / 2,
y: -dim / 2,
width: dim + labelWidth,
- height: dim
+ height: dim,
};
},
svgClassName: function () {
@@ -182,7 +182,7 @@
selected: this.get('selected'),
hovered: this.get('hovered'),
fixed: this.get('fixed'),
- suppressedmax: this.get('mastership')
+ suppressedmax: this.get('mastership'),
}
);
},
@@ -194,7 +194,7 @@
t2nps.setLongLat(this);
},
displayMastership: function () {
- this.set({ mastership: t2mss.mastership() !== null});
+ this.set({ mastership: t2mss.mastership() !== null });
},
update: function () {
this.updateLabel();
@@ -247,7 +247,7 @@
return {
rect: rect,
- text: text
+ text: text,
};
},
addIconElements: function (el) {
@@ -256,7 +256,7 @@
glyph;
var iconG = el.append('g')
- .attr('class', 'icon')
+ .attr('class', 'icon');
iconG.append('rect')
.attr('class', 'icon-rect')
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js b/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
index e5535b0..501bdcb 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
@@ -72,7 +72,7 @@
if (!loc.latOrY && !loc.longOrX) {
loc = {
longOrX: -20,
- latOrY: 10 * node.index()
+ latOrY: 10 * node.index(),
};
}
@@ -101,14 +101,14 @@
function rand() {
return {
x: rs.randDim(dim[0]),
- y: rs.randDim(dim[1])
+ y: rs.randDim(dim[1]),
};
}
function near(node) {
return {
x: node.x + nearDist + rs.spread(nearDist),
- y: node.y + nearDist + rs.spread(nearDist)
+ y: node.y + nearDist + rs.spread(nearDist),
};
}
@@ -176,8 +176,8 @@
return {
positionNode: positionNode,
- setLongLat: setLongLat
+ setLongLat: setLongLat,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js b/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
index 8dd041f..49f76ea 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
@@ -22,12 +22,11 @@
var t2os = 'Topo2OverlayService: ';
// injected refs
- var $log, $timeout, fs, gs, wss, t2kcs, t2rs, t2lc, api, LinkLabel;
+ var $log, fs, t2kcs, t2rs, t2lc, LinkLabel;
// internal state
var overlays = {},
- current = null,
- reset = true;
+ current = null;
function error(fn, msg) {
$log.error(t2os + fn + '(): ' + msg);
@@ -119,10 +118,6 @@
// === -----------------------------------------------------
// Event Handlers (events from server)
- function setApi(_api_) {
- api = _api_;
- }
-
function setOverlay(ovid) {
var ov = overlays[ovid];
if (!ov) {
@@ -143,7 +138,7 @@
nodeLink = t2rs.getLink(id);
if (nodeLink) {
t2lc.addLabel(LinkLabel, link, linkLabelsDOM, {
- link: nodeLink
+ link: nodeLink,
});
}
});
@@ -153,17 +148,13 @@
angular.module('ovTopo2')
.factory('Topo2OverlayService', [
- '$log', '$timeout', 'FnService', 'GlyphService', 'WebSocketService',
- 'Topo2KeyCommandService', 'Topo2RegionService', 'Topo2LabelCollection',
- 'Topo2LinkLabel',
+ '$log', 'FnService', 'Topo2KeyCommandService',
+ 'Topo2RegionService', 'Topo2LabelCollection', 'Topo2LinkLabel',
- function (_$log_, _$timeout_, _fs_, _gs_, _wss_, _t2kcs_, _t2rs_,
+ function (_$log_, _fs_, _t2kcs_, _t2rs_,
_t2lc_, _t2ll_) {
$log = _$log_;
- $timeout = _$timeout_;
fs = _fs_;
- gs = _gs_;
- wss = _wss_;
t2kcs = _t2kcs_;
t2rs = _t2rs_;
t2lc = _t2lc_;
@@ -171,7 +162,6 @@
return {
register: register,
- setApi: setApi,
setOverlay: setOverlay,
hooks: {
@@ -180,11 +170,10 @@
singleSelect: singleSelectHook,
multiSelect: multiSelectHook,
mouseOver: mouseOverHook,
- mouseOut: mouseOutHook
+ mouseOut: mouseOutHook,
},
- showHighlights: showHighlights
- }
- }
+ showHighlights: showHighlights,
+ };
+ },
]);
-
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js b/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
index c592382..47ecb28 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
@@ -51,16 +51,16 @@
return this.footer.append(x);
},
emptyRegions: function () {
- this.header.selectAll("*").remove();
- this.body.selectAll("*").remove();
- this.footer.selectAll("*").remove();
+ this.header.selectAll('*').remove();
+ this.body.selectAll('*').remove();
+ this.footer.selectAll('*').remove();
},
destroy: function () {
ps.destroyPanel(this.id);
},
isVisible: function () {
return this.el.isVisible();
- }
+ },
};
angular.module('ovTopo2')
@@ -71,7 +71,7 @@
ps = _ps_;
return View.extend(panel);
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js b/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
index bbfcf37..68e4266 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
@@ -25,14 +25,14 @@
var Collection, Model;
var remappedDeviceTypes = {
- virtual: 'cord'
+ virtual: 'cord',
};
function createCollection(data, region) {
var PeerRegionCollection = Collection.extend({
model: Model,
- region: region
+ region: region,
});
return new PeerRegionCollection(data);
@@ -52,7 +52,7 @@
nodeType: 'peer-region',
events: {
'dblclick': 'navigateToRegion',
- 'click': 'onClick'
+ 'click': 'onClick',
},
initialize: function () {
@@ -76,13 +76,13 @@
if (d3.event.defaultPrevented) return;
t2rns.navigateToRegion(this.get('id'));
t2srp.hide();
- }
+ },
});
return {
- createCollection: createCollection
+ createCollection: createCollection,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js b/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
index 9587aef..7c376a8 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
@@ -30,8 +30,8 @@
porthl: 1,
bg: 0,
spr: 0,
- ovid: 'traffic', // default to traffic overlay
- toolbar: 0
+ ovid: 'traffic', // default to traffic overlay
+ toolbar: 0,
};
function topo2Prefs() {
@@ -59,8 +59,8 @@
return {
get: get,
- set: set
+ set: set,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
index 0da72e1..d5225d2 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -53,7 +53,7 @@
var RegionModel = Model.extend({
findNodeById: this.findNodeById,
- nodes: this.regionNodes.bind(this)
+ nodes: this.regionNodes.bind(this),
});
this.model = new RegionModel();
@@ -67,7 +67,7 @@
this.model.set({ peerRegions: t2pr.createCollection([], this) });
this.model.set({ links: t2ls.createLinkCollection([], this) });
},
- isLoadComplete: function() {
+ isLoadComplete: function () {
return this.bgRendered && this.regionData && this.peers;
},
loaded: function (key, value) {
@@ -80,7 +80,7 @@
this.model.set({
id: this.regionData.id,
- layerOrder: this.regionData.layerOrder
+ layerOrder: this.regionData.layerOrder,
});
this.sortMultiLinks();
@@ -117,7 +117,7 @@
if (peer.id === id) {
peer.location = location;
}
- })
+ });
});
},
sortMultiLinks: function () {
@@ -147,12 +147,11 @@
_.each(collection, function (link, index) {
link.multiline = {
deviceLinks: collection.length,
- index: index
- }
+ index: index,
+ };
});
}
- })
-
+ });
},
isRootRegion: function () {
return this.model.get('id') === ROOT;
@@ -248,17 +247,17 @@
},
update: function (event) {
- if (!this.isLoadComplete()){
+ if (!this.isLoadComplete()) {
this.layout.createForceLayout();
}
if (this[event.type]) {
this[event.type](event);
} else {
- $log.error("Unhanded topology update", event);
+ $log.error('Unhanded topology update', event);
}
- this.layout.update()
+ this.layout.update();
this.displayNoDevs();
},
displayNoDevs: function () {
@@ -272,11 +271,10 @@
// Topology update event handlers
LINK_ADDED_OR_UPDATED: function (event) {
- var regionLinks = this.model.get('links'),
- device;
+ var regionLinks = this.model.get('links');
if (!regionLinks) {
- this.model.set({ links: t2ls.createLinkCollection([], this) })
+ this.model.set({ links: t2ls.createLinkCollection([], this) });
}
if (event.memo === 'added') {
@@ -296,7 +294,7 @@
device;
if (!regionDevices) {
- this.model.set({ devices: t2ds.createDeviceCollection([], this) })
+ this.model.set({ devices: t2ds.createDeviceCollection([], this) });
}
if (event.memo === 'added') {
@@ -315,7 +313,7 @@
host;
if (!regionHosts) {
- this.model.set({ hosts: t2hs.createHostCollection([], this) })
+ this.model.set({ hosts: t2hs.createHostCollection([], this) });
}
if (event.memo === 'added') {
@@ -328,14 +326,14 @@
region;
if (!regionSubRegions) {
- this.model.set({ subregions: t2sr.createSubRegionCollection([], this) })
+ this.model.set({ subregions: t2sr.createSubRegionCollection([], this) });
}
if (event.memo === 'added') {
region = this.model.get('subregions').add(event.data);
$log.debug('Added region', region);
}
- }
+ },
});
function getInstance() {
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js b/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
index 84b195e..93e23db 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
@@ -50,7 +50,7 @@
navigateToRegion: function (id) {
$loc.search('regionId', id);
wss.sendEvent('topo2navRegion', {
- rid: id
+ rid: id,
});
this.notifyListeners('region:navigation-start', id);
},
@@ -60,7 +60,7 @@
destory: function () {
this.listeners = {};
- }
+ },
};
angular.module('ovTopo2')
@@ -72,6 +72,6 @@
wss = _wss_;
return instance || new RegionNavigationService();
- }
+ },
]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Select.js b/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
index 0c90ee6..ed1667f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
@@ -27,7 +27,7 @@
var instance,
consumeClick,
zoomer,
- previousNearestLink; // previous link to mouse position
+ previousNearestLink; // previous link to mouse position
function mouseClickHandler() {
if (d3.event.defaultPrevented) return;
@@ -162,11 +162,11 @@
},
updateDetails: function () {
- var nodeCount = this.selectedNodes.length;
+ var nodeCount = this.selectedNodes.length;
if (nodeCount === 1) {
this.selectedNodes[0].showDetails();
- } else if (nodeCount > 1) {
+ } else if (nodeCount > 1) {
t2ddp.showMulti(this.selectedNodes);
} else {
t2ddp.hide();
@@ -211,7 +211,7 @@
var cc = consumeClick;
consumeClick = Boolean(x);
return cc;
- }
+ },
};
angular.module('ovTopo2')
@@ -221,7 +221,7 @@
t2zs = _t2zs_;
t2ddp = _t2ddp_;
return instance || new SelectionService();
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js b/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
index 74e5ad0..539f80c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
@@ -19,11 +19,10 @@
Defines behavior for loading sprites into the sprite layer.
*/
- (function() {
+ (function () {
'use strict';
- var instance,
- renderer;
+ var instance;
function vbox(w, h) {
return '0 0 ' + w + ' ' + h;
@@ -41,14 +40,14 @@
id: 'topo2-sprites',
displayName: 'Sprite Layer',
- init: function() {
+ init: function () {
this.svg = d3.select('#topo2');
this.createSpriteDefs();
this.container = this.appendElement('#topo2-background', 'g');
},
loadLayout: function (id) {
var _this = this;
- this.container.selectAll("*").remove();
+ this.container.selectAll('*').remove();
this.layout = ss.layout(id);
if (this.layout) {
@@ -65,7 +64,7 @@
}
// Returns a promise for consistency with Topo2MapService
- return new Promise(function(resolve) {
+ return new Promise(function (resolve) {
resolve(_this);
});
},
@@ -132,7 +131,7 @@
layout
.append('g')
- .append("use")
+ .append('use')
.attr('xlink:href', '#rack')
.attr('width', 20)
.attr('height', 25)
@@ -164,7 +163,7 @@
.attr('y', i * gridSpacing)
.attr('x', 0);
}
- }
+ },
});
function getInstance() {
@@ -172,6 +171,6 @@
}
return getInstance();
- }
- ])
- })();
\ No newline at end of file
+ },
+ ]);
+ })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
index b65c175..12b7868 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
@@ -25,14 +25,14 @@
var Collection, Model;
var remappedDeviceTypes = {
- virtual: 'cord'
+ virtual: 'cord',
};
function createSubRegionCollection(data, region) {
var SubRegionCollection = Collection.extend({
model: Model,
- region: region
+ region: region,
});
return new SubRegionCollection(data);
@@ -52,7 +52,7 @@
nodeType: 'sub-region',
events: {
'dblclick': 'navigateToRegion',
- 'click': 'onClick'
+ 'click': 'onClick',
},
initialize: function () {
@@ -76,13 +76,13 @@
if (d3.event.defaultPrevented) return;
t2rns.navigateToRegion(this.get('id'));
t2srp.hide();
- }
+ },
});
return {
- createSubRegionCollection: createSubRegionCollection
+ createSubRegionCollection: createSubRegionCollection,
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
index 1ac9f5a..070c6f2 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
@@ -41,8 +41,8 @@
'Id': data.get('id'),
'Type': data.get('nodeType'),
'Number of Devices': data.get('nDevs'),
- 'Number of Hosts': data.get('nHosts')
- }
+ 'Number of Hosts': data.get('nHosts'),
+ },
};
}
@@ -103,9 +103,9 @@
hide: hide,
toggle: toggle,
destroy: destroy,
- isVisible: function () { return subRegionPanel.isVisible(); }
+ isVisible: function () { return subRegionPanel.isVisible(); },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
index 4c4ecc8..24785f7 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
@@ -33,10 +33,10 @@
className = 'topo2-p',
panelOpts = {
show: true,
- width: 260 // summary and detail panel width
+ width: 260, // summary and detail panel width
},
handlerMap = {
- showSummary: handleSummaryData
+ showSummary: handleSummaryData,
};
function init(_detailsPanel_) {
@@ -47,7 +47,7 @@
wss.sendEvent('requestSummary');
var options = angular.extend({}, panelOpts, {
- class: className
+ class: className,
});
summaryPanel = new Panel(id, options);
@@ -128,9 +128,9 @@
toggle: toggle,
destroy: destroy,
isVisible: function () { return summaryPanel.isVisible(); },
- getInstance: function () { return summaryPanel; }
+ getInstance: function () { return summaryPanel; },
};
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js b/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
index 470d642..ae1cc90 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
@@ -24,7 +24,7 @@
// key to button mapping data
var k2b = {
- O: { id: 'topo2-summary-tog', gid: 'm_summary', isel: true},
+ O: { id: 'topo2-summary-tog', gid: 'm_summary', isel: true },
I: { id: 'topo2-instance-tog', gid: 'm_uiAttached', isel: true },
// D: { id: 'details-tog', gid: 'm_details', isel: true },
// H: { id: 'hosts-tog', gid: 'm_endstation', isel: false },
@@ -37,7 +37,7 @@
L: { id: 'topo2-cycleLabels-btn', gid: 'm_cycleLabels' },
R: { id: 'topo2-resetZoom-btn', gid: 'm_resetZoom' },
- E: { id: 'topo2-eqMaster-btn', gid: 'm_eqMaster' }
+ E: { id: 'topo2-eqMaster-btn', gid: 'm_eqMaster' },
};
angular.module('ovTopo2')
@@ -63,11 +63,13 @@
this.el.hide();
},
initKeyData: function () {
- _.each(k2b, function(value, key) {
+ _.each(k2b, function (value, key) {
var data = t2kcs.getActionEntry(key);
if (data) {
- value.cb = data[0]; // on-click callback
- value.tt = data[1] + ' (' + key + ')'; // tooltip
+ // on-click callback
+ value.cb = data[0];
+ // tooltip
+ value.tt = data[1] + ' (' + key + ')';
}
});
},
@@ -82,11 +84,11 @@
}
},
addButton: function (key) {
- var v = this.getKey(key);
+ var v = this.getKey(key);
v.btn = this.el.addButton(v.id, v.gid, v.cb, v.tt);
},
addToggle: function (key, suppressIfMobile) {
- var v = this.getKey(key);
+ var v = this.getKey(key);
if (suppressIfMobile && fs.isMobile()) { return; }
v.tog = this.el.addToggle(v.id, v.gid, v.isel, v.cb, v.tt);
},
@@ -107,7 +109,7 @@
this.addToggle('B');
},
addSecondRow: function () {
- //addToggle('X');
+ // addToggle('X');
// this.addToggle('Z');
// this.addButton('N');
this.addButton('L');
@@ -120,10 +122,10 @@
// TODO: Should the tbs remove button id's in the destroyToolbar method?
// If you go topo2 -> topo -> topo2 there's a button id conflict
tbs.destroyToolbar(this.className);
- }
+ },
};
return instance || new Toolbar();
- }
+ },
]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js b/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
index 8eded4f..92509bd 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
@@ -19,18 +19,18 @@
'use strict';
// injected refs
- var $log, fs, flash, wss, api;
+ var $log, flash, wss;
// configuration
var allTrafficTypes = [
'flowStatsBytes',
'portStatsBitSec',
- 'portStatsPktSec'
+ 'portStatsPktSec',
],
allTrafficMsgs = [
'Flow Stats (bytes)',
'Port Stats (bits / second)',
- 'Port Stats (packets / second)'
+ 'Port Stats (packets / second)',
];
// internal state
@@ -57,7 +57,7 @@
mode = 'allFlowPort';
wss.sendEvent('topo2RequestAllTraffic', {
- trafficType: allTrafficTypes[allIndex]
+ trafficType: allTrafficTypes[allIndex],
});
flash.flash(allTrafficMsgs[allIndex]);
currentIndex = allIndex;
@@ -72,23 +72,23 @@
angular.module('ovTopo2')
.factory('Topo2TrafficService', [
- '$log', 'FnService', 'FlashService', 'WebSocketService',
+ '$log', 'FlashService', 'WebSocketService',
- function (_$log_, _fs_, _flash_, _wss_) {
+ function (_$log_, _flash_, _wss_) {
$log = _$log_;
- fs = _fs_;
flash = _flash_;
wss = _wss_;
return {
- initTraffic: function (_api_) { api = _api_; },
+ // TODO: Remove References
+ initTraffic: function (_api_) {},
destroyTraffic: function () {},
// invoked from toolbar overlay buttons or keystrokes
cancelTraffic: cancelTraffic,
showAllTraffic: showAllTraffic,
- selectedTrafficOverlay: selectedTrafficOverlay
- }
- }
+ selectedTrafficOverlay: selectedTrafficOverlay,
+ };
+ },
]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js b/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
index aeb2325..98d3926 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
@@ -30,12 +30,12 @@
tooltip: 'Traffic Overlay',
activate: function () {
- $log.debug("Traffic-2 overlay ACTIVATED");
+ $log.debug('Traffic-2 overlay ACTIVATED');
},
deactivate: function () {
t2ts.cancelTraffic(true);
- $log.debug("Traffic-2 overlay DEACTIVATED");
+ $log.debug('Traffic-2 overlay DEACTIVATED');
},
// key bindings for toolbar buttons
@@ -44,18 +44,18 @@
0: {
cb: function () { t2ts.cancelTraffic(true); },
tt: 'Cancel traffic monitoring',
- gid: 'm_xMark'
+ gid: 'm_xMark',
},
A: {
cb: function () { t2ts.showAllTraffic(); },
tt: 'Monitor all traffic',
- gid: 'm_allTraffic'
+ gid: 'm_allTraffic',
},
_keyOrder: [
- '0', 'A'
- ]
+ '0', 'A',
+ ],
},
hooks: {
@@ -63,10 +63,10 @@
escape: function () {
// Must return true to consume ESC, false otherwise.
return t2ts.cancelTraffic(true);
- }
+ },
// TODO : add node selection events etc.
// NOTE : see topoTrafficNew.js
- }
+ },
};
// invoke code to register with the overlay service
@@ -80,4 +80,4 @@
t2ov.register(overlay);
}]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2View.js b/web/gui/src/main/webapp/app/view/topo2/topo2View.js
index b572d64..0c6df03 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2View.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2View.js
@@ -28,7 +28,7 @@
// Internal State
var dimensions,
viewOptions = {
- linkPortHighlighting: true
+ linkPortHighlighting: true,
};
function newDim(_dimensions) {
@@ -65,9 +65,9 @@
getDimensions: getDimensions,
togglePortHighlights: togglePortHighlights,
- getPortHighlighting: getPortHighlighting
+ getPortHighlighting: getPortHighlighting,
};
- }
+ },
]
);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js b/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
index 31ecf0f..a60153f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
@@ -34,10 +34,10 @@
displayName: 'View',
initialize: function () {
- this.name = this.displayName.toLowerCase().replace(/ /g,"_");
+ this.name = this.displayName.toLowerCase().replace(/ /g, '_');
this.prefs = {
- visible: this.name + '_visible'
- }
+ visible: this.name + '_visible',
+ };
},
appendElement: function (parent, node) {
var el = d3.select('#' + this.id);
@@ -46,7 +46,7 @@
}
return el;
},
- node: function() {
+ node: function () {
return d3.select('#' + this.id);
},
enabled: function () {
@@ -64,7 +64,7 @@
.duration(400)
.style('opacity', 0)
.each('end', function () {
- node.style('visibility', 'hidden')
+ node.style('visibility', 'hidden');
});
}
},
@@ -76,7 +76,7 @@
.style('visibility', 'visible')
.transition()
.duration(400)
- .style('opacity', 1)
+ .style('opacity', 1);
}
},
toggle: function () {
@@ -95,7 +95,7 @@
var state = ps.getPrefs('topo2_prefs');
state[key] = value ? 1 : 0;
ps.setPrefs('topo2_prefs', state);
- }
+ },
};
angular.module('ovTopo2')
@@ -108,6 +108,6 @@
ViewController.extend = fn.extend;
return ViewController;
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
index 8d24aa3..616f8e6 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
@@ -23,7 +23,7 @@
'use strict';
// injected references
- var fs, zs, ps;
+ var fs, zs;
// internal state
var zoomer,
@@ -91,12 +91,11 @@
angular.module('ovTopo2')
.factory('Topo2ZoomService', [
- 'FnService', 'ZoomService', 'PrefsService',
- function (_fs_, _zs_, _ps_) {
+ 'FnService', 'ZoomService',
+ function (_fs_, _zs_) {
fs = _fs_;
zs = _zs_;
- ps = _ps_;
return {
getZoomer: getZoomer,
@@ -106,7 +105,7 @@
scale: scale,
adjustmentScale: adjustmentScale,
- panAndZoom: panAndZoom
+ panAndZoom: panAndZoom,
};
}]);
})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/uiView.js b/web/gui/src/main/webapp/app/view/topo2/uiView.js
index 9cbb1fb..c506f85 100644
--- a/web/gui/src/main/webapp/app/view/topo2/uiView.js
+++ b/web/gui/src/main/webapp/app/view/topo2/uiView.js
@@ -47,12 +47,12 @@
// TODO: Unbind Events
this.empty();
return this;
- }
+ },
});
View.extend = fn.extend;
return View;
- }
+ },
]);
})();
diff --git a/web/gui/src/main/webapp/app/view/tunnel/tunnel.js b/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
index 9150bfd..6f8924a 100644
--- a/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
+++ b/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
@@ -28,13 +28,13 @@
function ($log, $scope, $sce, fs, tbs) {
tbs.buildTable({
scope: $scope,
- tag: 'tunnel'
+ tag: 'tunnel',
});
$scope.$watch('tableData', function () {
if (!fs.isEmptyObject($scope.tableData)) {
$scope.tableData.forEach(function (tunnel) {
- //tunnel.direction = $sce.trustAsHtml(tunnel.direction);
+ // tunnel.direction = $sce.trustAsHtml(tunnel.direction);
});
}
});
diff --git a/web/gui/src/main/webapp/tests/package-lock.json b/web/gui/src/main/webapp/tests/package-lock.json
new file mode 100644
index 0000000..5303aaa
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/package-lock.json
@@ -0,0 +1,4260 @@
+{
+ "name": "Onos-GUI-tests",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "dependencies": {
+ "jasmine-core": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz",
+ "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=",
+ "dev": true
+ },
+ "karma": {
+ "version": "0.13.22",
+ "resolved": "https://registry.npmjs.org/karma/-/karma-0.13.22.tgz",
+ "integrity": "sha1-B3ULG9Bj1+fnuRvNLmNU2PKqh0Q=",
+ "dev": true,
+ "dependencies": {
+ "batch": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
+ "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
+ "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz",
+ "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
+ "dev": true,
+ "dependencies": {
+ "bytes": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
+ "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
+ "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "depd": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
+ "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
+ "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
+ "dev": true,
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "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
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
+ "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=",
+ "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,
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "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
+ },
+ "raw-body": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
+ "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
+ "dev": true,
+ "dependencies": {
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.15",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+ "dev": true,
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+ "dev": true,
+ "dependencies": {
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "dependencies": {
+ "anymatch": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz",
+ "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=",
+ "dev": true,
+ "dependencies": {
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+ "dev": true
+ }
+ }
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "dependencies": {
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "dependencies": {
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "dependencies": {
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
+ "dev": true,
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "dependencies": {
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "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,
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
+ "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
+ "dev": true
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "dependencies": {
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "dependencies": {
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ }
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "dependencies": {
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ }
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
+ "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
+ "dev": true,
+ "dependencies": {
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz",
+ "integrity": "sha1-MoK3E/s62A7eDp/PRhG1qm/AM/Q=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
+ "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
+ "dev": true,
+ "optional": true
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
+ "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=",
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "dev": true,
+ "optional": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true,
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "dev": true,
+ "optional": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true,
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true,
+ "optional": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true,
+ "optional": true
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+ "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
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
+ "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=",
+ "dev": true
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
+ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true,
+ "optional": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "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
+ },
+ "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
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "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
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true,
+ "optional": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "optional": true,
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "dev": true,
+ "optional": true
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+ "dev": true,
+ "optional": 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
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true,
+ "optional": true
+ },
+ "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
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true,
+ "optional": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true,
+ "optional": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "dev": true,
+ "optional": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "dev": true
+ },
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
+ "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "dev": true,
+ "optional": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "optional": true,
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "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
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+ "dev": true,
+ "optional": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "dev": true,
+ "optional": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true,
+ "optional": true
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "dev": true,
+ "optional": true
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "dev": true,
+ "optional": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "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,
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "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,
+ "optional": true
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
+ "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
+ "dev": true,
+ "optional": true
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+ "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
+ "dev": true,
+ "optional": true,
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true
+ },
+ "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
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true,
+ "optional": true
+ },
+ "nan": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
+ "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=",
+ "dev": true,
+ "optional": true
+ },
+ "node-pre-gyp": {
+ "version": "0.6.36",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz",
+ "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=",
+ "dev": true,
+ "optional": true
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "dev": true,
+ "optional": true
+ },
+ "npmlog": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz",
+ "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==",
+ "dev": true,
+ "optional": true
+ },
+ "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,
+ "optional": 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,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+ "dev": true,
+ "optional": true
+ },
+ "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
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+ "dev": true,
+ "optional": true
+ },
+ "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
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz",
+ "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.2.9",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
+ "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.81.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+ "dev": true,
+ "optional": true
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+ "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true,
+ "optional": true
+ },
+ "sshpk": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz",
+ "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=",
+ "dev": true,
+ "optional": true,
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz",
+ "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true,
+ "optional": 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
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "dev": true
+ },
+ "tar-pack": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz",
+ "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=",
+ "dev": true,
+ "optional": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
+ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "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
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
+ "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=",
+ "dev": true,
+ "optional": 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
+ },
+ "uuid": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
+ "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
+ "dev": true,
+ "optional": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+ "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "dev": true,
+ "optional": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz",
+ "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=",
+ "dev": true
+ }
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ }
+ }
+ },
+ "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
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "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": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+ "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
+ }
+ }
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "connect": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz",
+ "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+ "dev": true,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
+ "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+ "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
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
+ "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
+ "dev": true
+ }
+ }
+ },
+ "core-js": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+ "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+ "dev": true
+ },
+ "di": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+ "dev": true
+ },
+ "dom-serialize": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+ "dev": true,
+ "dependencies": {
+ "custom-event": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+ "dev": true
+ },
+ "ent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+ "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+ "dev": true
+ }
+ }
+ },
+ "expand-braces": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
+ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+ "dev": true,
+ "dependencies": {
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "braces": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
+ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
+ "dev": true,
+ "dependencies": {
+ "expand-range": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
+ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
+ "dev": true,
+ "dependencies": {
+ "is-number": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
+ "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
+ "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "dev": true,
+ "dependencies": {
+ "eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "dev": true
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ }
+ }
+ },
+ "isbinaryfile": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
+ "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "log4js": {
+ "version": "0.6.38",
+ "resolved": "https://registry.npmjs.com/log4js/-/log4js-0.6.38.tgz",
+ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "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
+ },
+ "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
+ }
+ }
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
+ "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true
+ },
+ "socket.io": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
+ "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=",
+ "dev": true,
+ "dependencies": {
+ "debug": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+ "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+ "dev": true,
+ "dependencies": {
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ }
+ }
+ },
+ "engine.io": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz",
+ "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=",
+ "dev": true,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+ "dev": true,
+ "dependencies": {
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+ "dev": true,
+ "dependencies": {
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+ "dev": true
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ }
+ }
+ },
+ "base64id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "engine.io-parser": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+ "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+ "dev": true,
+ "dependencies": {
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+ "dev": true
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+ "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+ "dev": true
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+ "dev": true
+ },
+ "blob": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+ "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+ "dev": true
+ },
+ "wtf-8": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+ "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+ "dev": true
+ }
+ }
+ },
+ "ws": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz",
+ "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=",
+ "dev": true,
+ "dependencies": {
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+ "dev": true
+ },
+ "ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "has-binary": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
+ "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
+ "dev": true,
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "object-assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
+ "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
+ "dev": true
+ },
+ "socket.io-adapter": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
+ "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
+ "dev": true
+ },
+ "socket.io-client": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz",
+ "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=",
+ "dev": true,
+ "dependencies": {
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+ "dev": true
+ },
+ "component-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+ "dev": true
+ },
+ "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
+ },
+ "engine.io-client": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz",
+ "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=",
+ "dev": true,
+ "dependencies": {
+ "component-inherit": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+ "dev": true
+ },
+ "engine.io-parser": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+ "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+ "dev": true,
+ "dependencies": {
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+ "dev": true
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+ "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+ "dev": true
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+ "dev": true
+ },
+ "blob": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+ "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+ "dev": true
+ },
+ "wtf-8": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+ "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+ "dev": true
+ }
+ }
+ },
+ "has-cors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+ "dev": true
+ },
+ "parsejson": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
+ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
+ "dev": true,
+ "dependencies": {
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "dev": true,
+ "dependencies": {
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "parseqs": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+ "dev": true,
+ "dependencies": {
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "dev": true,
+ "dependencies": {
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "ws": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
+ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+ "dev": true,
+ "dependencies": {
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+ "dev": true
+ },
+ "ultron": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "dev": true
+ }
+ }
+ },
+ "xmlhttprequest-ssl": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
+ "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
+ "dev": true
+ },
+ "yeast": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+ "dev": true
+ }
+ }
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "object-component": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+ "dev": true
+ },
+ "parseuri": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+ "dev": true,
+ "dependencies": {
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "dev": true,
+ "dependencies": {
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "to-array": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+ "dev": true
+ }
+ }
+ },
+ "socket.io-parser": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
+ "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
+ "dev": true,
+ "dependencies": {
+ "component-emitter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
+ "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "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
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true
+ },
+ "useragent": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
+ "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
+ "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "karma-babel-preprocessor": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/karma-babel-preprocessor/-/karma-babel-preprocessor-6.0.1.tgz",
+ "integrity": "sha1-euHT5klQ2+EfQht0BAqwj7WmbCE=",
+ "dev": true,
+ "dependencies": {
+ "babel-core": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz",
+ "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=",
+ "dev": true,
+ "dependencies": {
+ "babel-code-frame": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
+ "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
+ "dev": true,
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "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
+ },
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ }
+ }
+ },
+ "babel-generator": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz",
+ "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=",
+ "dev": true,
+ "dependencies": {
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "dependencies": {
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "dependencies": {
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "dependencies": {
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ }
+ }
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true
+ },
+ "babel-register": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
+ "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=",
+ "dev": true,
+ "dependencies": {
+ "core-js": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+ "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+ "dev": true
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true,
+ "dependencies": {
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz",
+ "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=",
+ "dev": true
+ }
+ }
+ },
+ "babel-runtime": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz",
+ "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=",
+ "dev": true,
+ "dependencies": {
+ "core-js": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+ "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+ "dev": true
+ }
+ }
+ },
+ "babel-template": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz",
+ "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=",
+ "dev": true
+ },
+ "babel-traverse": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz",
+ "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=",
+ "dev": true,
+ "dependencies": {
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true,
+ "dependencies": {
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz",
+ "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=",
+ "dev": true,
+ "dependencies": {
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ }
+ }
+ },
+ "babylon": {
+ "version": "6.17.4",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
+ "integrity": "sha1-Pot0AriNIsNCPhN6FXeIOxX/hpo=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "dev": true,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "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
+ },
+ "private": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
+ "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "karma-chrome-launcher": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz",
+ "integrity": "sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk=",
+ "dev": true,
+ "dependencies": {
+ "fs-access": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "dev": true,
+ "dependencies": {
+ "null-check": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "dev": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "dev": true,
+ "dependencies": {
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "karma-coverage": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-0.5.5.tgz",
+ "integrity": "sha1-sNWLECXVnVxmICYxhvHVj11TSMU=",
+ "dev": true,
+ "dependencies": {
+ "dateformat": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "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,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ }
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=",
+ "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,
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "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,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "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
+ },
+ "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,
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "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,
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "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,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "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,
+ "dependencies": {
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "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,
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ }
+ }
+ },
+ "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,
+ "dependencies": {
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "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,
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "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,
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "dependencies": {
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "dependencies": {
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "dependencies": {
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "dependencies": {
+ "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
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "istanbul": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+ "dev": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "dev": true,
+ "dependencies": {
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "dependencies": {
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "dependencies": {
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "handlebars": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
+ "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
+ "dev": true,
+ "dependencies": {
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "dependencies": {
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ }
+ }
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ }
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "dependencies": {
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true,
+ "optional": true
+ },
+ "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,
+ "optional": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "js-yaml": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz",
+ "integrity": "sha1-T/u/JcKsljuCmdx02n43QN4cGM4=",
+ "dev": true,
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "dev": true
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "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
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "dependencies": {
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "dev": true,
+ "dependencies": {
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true
+ }
+ }
+ },
+ "karma-jasmine": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-0.3.8.tgz",
+ "integrity": "sha1-W2RXeRrZuJqhc/B54+vhuMgFI2w=",
+ "dev": true
+ },
+ "karma-junit-reporter": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-0.4.2.tgz",
+ "integrity": "sha1-SSojZyj+TJKqz0GfzQEQpDJ+nX8=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "xmlbuilder": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz",
+ "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=",
+ "dev": true,
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "karma-mocha-reporter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-1.3.0.tgz",
+ "integrity": "sha1-r2pGwIqcVcf9OUw6WqJhetoVhKU=",
+ "dev": true,
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "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
+ },
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ }
+ }
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "karma-ng-html2js-preprocessor": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/karma-ng-html2js-preprocessor/-/karma-ng-html2js-preprocessor-0.2.2.tgz",
+ "integrity": "sha1-vpHc6dnBhQgtDdfLKHCEYWtfLJg=",
+ "dev": true
+ },
+ "karma-phantomjs-launcher": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-0.2.3.tgz",
+ "integrity": "sha1-d/aCQ/rXhSxbMhvPnWkfEiPMCAk=",
+ "dev": true,
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ }
+ }
+ },
+ "phantomjs": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-2.1.7.tgz",
+ "integrity": "sha1-xpEPZ5NcNyhbYRQyn8LyfV8+MTQ=",
+ "dev": true,
+ "dependencies": {
+ "extract-zip": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
+ "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=",
+ "dev": true,
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
+ "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=",
+ "dev": true,
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "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": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "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
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ }
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ }
+ }
+ },
+ "debug": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+ "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+ "dev": true,
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "fs-extra": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
+ "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true
+ },
+ "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
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true,
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "dependencies": {
+ "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,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "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
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "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,
+ "dependencies": {
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "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,
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "kew": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+ "dev": true
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.67.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz",
+ "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=",
+ "dev": true,
+ "dependencies": {
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true
+ },
+ "bl": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
+ "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "dependencies": {
+ "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
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "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": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "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
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "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,
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
+ "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=",
+ "dev": true,
+ "dependencies": {
+ "async": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
+ "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=",
+ "dev": true,
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "dev": true,
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "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
+ },
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "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,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=",
+ "dev": true
+ },
+ "is-my-json-valid": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz",
+ "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=",
+ "dev": true,
+ "dependencies": {
+ "generate-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+ "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+ "dev": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "dev": true,
+ "dependencies": {
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "dev": true
+ }
+ }
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "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,
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "dev": true,
+ "dependencies": {
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+ "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
+ "dev": true,
+ "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
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+ "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
+ },
+ "verror": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+ "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
+ "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,
+ "dependencies": {
+ "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
+ },
+ "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
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true
+ },
+ "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
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "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
+ }
+ }
+ }
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "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
+ },
+ "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
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+ "dev": true,
+ "dependencies": {
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+ "dev": true
+ }
+ }
+ },
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
+ "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
+ },
+ "qs": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz",
+ "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=",
+ "dev": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz",
+ "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true
+ }
+ }
+ },
+ "request-progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+ "dev": true,
+ "dependencies": {
+ "throttleit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+ "dev": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "dev": true,
+ "dependencies": {
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ }
+ }
+ }
+ }
+ }
+ }
+}