From 31f5fc6c415ed72feb14dc97dcc8e9cbc4dcf735 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 6 Sep 2017 15:18:43 -0400 Subject: [PATCH 001/242] added browserify script #494 --- package.json | 8 +++++- tasks/build-js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 tasks/build-js diff --git a/package.json b/package.json index 4097aaf4a3..b5673a3130 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,17 @@ "scripts": { "test": "grunt test lint", "start": "node ./bin/www", - "preinstall": "node version-check.js" + "preinstall": "node version-check.js", + "build-js": "node ./tasks/build-js" }, "devDependencies": { "autoprefixer": "7.1.1", "babel-polyfill": "6.16.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-react": "^6.24.1", + "babelify": "^7.3.0", "bluebird": "3.4.6", + "browserify": "^14.4.0", "buster": "0.7.12", "chromedriver": "2.25.1", "express": "4.15.2", @@ -55,6 +60,7 @@ "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", "stylelint": "^8.0.0", + "watchify": "^3.9.0", "worldview-components": "1.3.3" } } diff --git a/tasks/build-js b/tasks/build-js new file mode 100644 index 0000000000..534d88cb57 --- /dev/null +++ b/tasks/build-js @@ -0,0 +1,78 @@ +#!/usr/bin/env node +// template from https://github.com/petesaia/node-native-task-runner/blob/master/bin/build-js + +//const UglifyJS = require('uglify-js'); +const fs = require('fs'); +const browserify = require('browserify'); +const watchify = require('watchify'); + +const entry = 'wv.main.js'; +const output = './build/js.js'; +const outputMin = './build/js.mins.js'; + +// override, should set this from an argument: --dev or --prod +// and default to dev +process.env.NODE_ENV = 'development'; + +const b = browserify(entry, { + debug: true, + sourceMaps: true, + cache: {}, + packageCache: {}, + plugin: [process.env.NODE_ENV !== 'production' ? watchify : null], + basedir: './web/js' +}) + .transform('babelify', { + plugins: [ ], + presets: [ + 'es2015', + 'react' + ] + }); + +function bundle() { + const stream = fs.createWriteStream(output); + + const onComplete = (function() { + const begin = Date.now(); + + return function() { + console.log('Build complete in ' + (Date.now() - begin) / 1000 + 'secs'); + }; + })(); + + b.bundle() + .on('error', function(err) { + console.error(err); + this.emit('end'); + }) + .pipe(stream) + + stream.on('finish', function() { + if (process.env.NODE_ENV === 'production') { + // console.log('Complete, now compressing because production.'); + + // const minified = UglifyJS.minify(fs.readFileSync(output, 'utf8'), { + // // warnings: true, + // compress: { + // dead_code: true + // } + // }); + + // if (minified.error) { + // return console.error('UGLIFY Error:', minified.error); + // } + + // fs.writeFileSync(outputMin, minified.code); + // onComplete(); + + } else { + console.log('All done! (dev mode - not compressing)'); + onComplete(); + } + }); +} + +bundle(); + +b.on('update', bundle); \ No newline at end of file From 2c0a2f8544c0650548044a8d090b374d48c54ce6 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 7 Sep 2017 10:55:31 -0400 Subject: [PATCH 002/242] added wvc eslint rules w dependencies #494 --- .eslintrc | 44 +++++++++++++++++++++++++++++++++++--------- package.json | 2 ++ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/.eslintrc b/.eslintrc index 6212373422..a0472337fa 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,16 +4,42 @@ "browser": true, "node": true }, - "parserOptions": { - "ecmaVersion": 5, - "sourceType": "script", - "ecmaFeatures": { - "jsx": false - } + "ecmaFeatures": { + "jsx": true }, + "parser": "babel-eslint", + "plugins": [ + "react" + ], "rules": { - "strict": 0, - "semi": [2, "always"], - "indent": [2, 2, {"SwitchCase": 1}], + "strict": 0, + "valid-jsdoc": 0, + "comma-spacing": 1, + "key-spacing": 0, + "no-underscore-dangle": 0, + "no-unused-vars": [1, { "vars": "all", "args": "none" }], + "no-undef": 1, + "new-cap": 0, + "no-param-reassign": 0, + "no-spaced-func": 1, + "padded-blocks": 0, + "camelcase": 1, + "semi": 1, + "no-extra-semi": 1, + "no-mixed-spaces-and-tabs": 1, + "no-trailing-spaces": 1, + "space-before-function-paren": 0, + "space-in-parens": 1, + "indent": [2, 2, {"SwitchCase": 1}], + "react/display-name": 0, + "react/jsx-uses-react": 1, + "react/no-did-mount-set-state": 1, + "react/no-did-update-set-state": 1, + "react/no-multi-comp": 1, + "react/prop-types": [0, { ignore: [children, className] }], + "react/react-in-jsx-scope": 1, + "react/self-closing-comp": 1, + "react/wrap-multilines": 1, + "react/jsx-uses-vars": 1 } } diff --git a/package.json b/package.json index b5673a3130..451f99b890 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "devDependencies": { "autoprefixer": "7.1.1", + "babel-eslint": "^7.2.3", "babel-polyfill": "6.16.0", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", @@ -24,6 +25,7 @@ "browserify": "^14.4.0", "buster": "0.7.12", "chromedriver": "2.25.1", + "eslint-plugin-react": "^7.3.0", "express": "4.15.2", "font-awesome": "4.7.0", "geckodriver": "1.2.0", From 9fb27683d059369c1e275c15f9d57c46d6b87dc3 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 7 Sep 2017 12:57:49 -0400 Subject: [PATCH 003/242] remove depreciated rule #494 --- .eslintrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index a0472337fa..5a47d3d567 100644 --- a/.eslintrc +++ b/.eslintrc @@ -39,7 +39,6 @@ "react/prop-types": [0, { ignore: [children, className] }], "react/react-in-jsx-scope": 1, "react/self-closing-comp": 1, - "react/wrap-multilines": 1, "react/jsx-uses-vars": 1 } } From d3fcfe205d2a9a314bc2dac37a279308267a6c6d Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 7 Sep 2017 13:00:52 -0400 Subject: [PATCH 004/242] attempted wv.main.js rewrite #494 --- web/js/wv.main.js | 248 +++++++++++++++++++++++++++++----------------- 1 file changed, 157 insertions(+), 91 deletions(-) diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 48ce166992..08ea91134c 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,24 +1,92 @@ -/* - * NASA Worldview - * - * This code was originally developed at NASA/Goddard Space Flight Center for - * the Earth Science Data and Information System (ESDIS) project. - * - * Copyright (C) 2013 - 2014 United States Government as represented by the - * Administrator of the National Aeronautics and Space Administration. - * All Rights Reserved. - */ - -var wvx = wvx || {}; +// Utils +import util from './util/wv.util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... +import browser from './util/wv.util.browser'; +// Date +import {dateParse} from './date/wv.date'; // export default function parse!!! +import dateModel from './date/wv.date.model'; +import DateLabel from './date/wv.date.label'; +import DateWheels from './date/wv.date.wheels'; +//Timeline +import Timeline from './date/wv.date.timeline'; +import TimelineData from './date/wv.date.timeline.data'; +import TimelineConfig from './date/wv.date.timeline.config'; +import TimelineZoom from './date/wv.date.timeline.zoom'; +import TimelineTicks from './date/wv.date.timeline.ticks'; +import TimelinePick from './date/wv.date.timeline.pick'; +import TimelinePan from './date/wv.date.timeline.pan'; +import TimelineConfig from './date/wv.date.timeline.config'; +import TimelineInput from './date/wv.date.timeline.input'; +// Layers +import {layerParse, layerValidate} from './layers/wv.layers';// export parse as layerParse. etc... +import LayersModel from './layers/wv.layers.model'; +import LayersModal from './layers/wv.layers.modal'; +import LayersSidebar from './layers/wv.layers.sidebar'; +import LayersActive from './layers/wv.layers.active'; +// Map +import {mapParse} from './map/wv.map'; +import MapModel from './map/wv.map.model'; +import MapUI from './map/wv.map.ui'; +import MapRotate from './map/wv.map.rotate'; +import MapRunningData from './map/wv.map.runningdata'; +import MapLayerBuilder from './map/wv.map.layerbuilder'; +import MapDatelineBuilder from './map/wv.map.datelinebuilder'; +import MapPrecacheTile from './map/wv.map.precachetile'; +import MapAnimate from './map/wv.map.animate'; +// Animation +import {animParse} from './animation/wv.anim'; +import AnimModel from './animation/wv.anim.model'; +import AnimUI from './animation/wv.anim.ui'; +import AnimWidget from './animation/animation-widget'; +import AnimRangeselect from './animation/wv.anim.rangeselect'; +import AnimGIF from './animation/wv.anim.gif'; +// palettes +import {palettesParse, paletteRequirements} from './palettes/wv.palettes'; +import PalettesModel from './palettes/wv.palettes.model'; +// Data +import DataParse from './data/wv.data'; +import DataModel from './data/wv.data.model'; +import DataUI from './data/wv.data.ui'; +// NaturalEvents +import EventsModel from './naturalEvents/wv.naturalEvents.model'; +import EventsUI from './naturalEvents/wv.naturalEvents.ui'; +import EventsRequest from './naturalEvents/wv.naturalEvents.request'; +// Image +import ImageRubberband from './image/wv.image.rubberband'; +import ImagePanel from './image/wv.image.panel'; +// notifications +import NotificationsUI from './notifications/wv.notifications.ui'; +// UI +import {indicateDelayed} from './ui/wv.ui.indicator'; // not a class, export object +// Link +import LinkModel from './link/wv.link.model'; +import LinkUI from './link/wv.link.ui'; +import LinkInfo from './link/wv.link.info'; + +// projections +import projParse from './proj/wv.proj'; +import ProjModel from './proj/wv.proj.model'; +import ProjUI from './proj/wv.proj.ui'; +import ProjChange from './proj/wv.proj.change'; +// other +import {debugConfig, debug} from './wv.debug'; +import Brand from './wv.brand'; +import Tour from './wv.tour'; +// External Dependencies +import $ from 'Jquery'; +import _ from 'lodash'; +import {GA as googleAnalytics} from 'worldview-components'; // Document ready function -$(function() { - - var config; - var state = wv.util.fromQueryString(location.search); - var parameters = wv.util.fromQueryString(location.search); +window.onload = () => { var errors = []; + var requirements; var startTime; + var wvx = {}; + var config; + var parsers; + var state = util.fromQueryString(location.search); + var parameters = util.fromQueryString(location.search); + var main = function() { if (parameters.elapsed) { @@ -40,12 +108,12 @@ $(function() { var loadConfig = function() { elapsed("loading config"); - var configURI = wv.brand.url("config/wv.json"); + var configURI = Brand.url("config/wv.json"); var promise = $.getJSON(configURI); promise - .done(wv.util.wrap(onConfigLoaded)) - .fail(wv.util.error); - wv.ui.indicator.delayed(promise, 1000); + .done(util.wrap(onConfigLoaded)) + .fail(util.error); + indicateDelayed(promise, 1000); }; var onConfigLoaded = function(data) { @@ -56,7 +124,7 @@ $(function() { // Export for debugging wvx.config = config; - wv.debug.config(config); + debugConfig(config); // Load any additional scripts as needed if (config.scripts) { @@ -65,31 +133,31 @@ $(function() { }); } - wv.layers.validate(errors, config); + layerValidate(errors, config); parsers = [ - wv.proj.parse, - wv.layers.parse, - wv.date.parse, - wv.map.parse, - wv.palettes.parse + projParse, + layerParse, + dateParse, + mapParse, + palettesParse ]; if (config.features.dataDownload) { - parsers.push(wv.data.parse); + parsers.push(DataParse); } if (config.features.animation) { - parsers.push(wv.anim.parse); + parsers.push(animParse); } _.each(parsers, function(parser) { parser(state, errors, config); }); requirements = [ - wv.palettes.requirements(state, config) + paletteRequirements(state, config) ]; $.when.apply(null, requirements) - .then(wv.util.wrap(init)) - .fail(wv.util.error); + .then(util.wrap(init)) + .fail(util.error); }; var init = function() { @@ -98,9 +166,9 @@ $(function() { // catches up (about three hours) var initialDate; if (config.defaults.startDate) { - initialDate = wv.util.parseDateUTC(config.defaults.startDate); + initialDate = util.parseDateUTC(config.defaults.startDate); } else { - initialDate = wv.util.now(); + initialDate = util.now(); if (initialDate.getUTCHours() < 3) { initialDate.setUTCDate(initialDate.getUTCDate() - 1); } @@ -109,7 +177,7 @@ $(function() { // Models var models = { wv: { - events: wv.util.events() + events: util.events() } }; var ui = {}; @@ -117,14 +185,14 @@ $(function() { wvx.models = models; wvx.ui = ui; - models.proj = wv.proj.model(config); - models.palettes = wv.palettes.model(models, config); - models.layers = wv.layers.model(models, config); - models.date = wv.date.model(config, { + models.proj = ProjModel(config); + models.palettes = PalettesModel(models, config); + models.layers = LayersModel(models, config); + models.date = dateModel(config, { initial: initialDate }); - models.map = wv.map.model(models, config); - models.link = wv.link.model(config); + models.map = MapModel(models, config); + models.link = LinkModel(config); models.link .register(models.proj) @@ -134,30 +202,28 @@ $(function() { .register(models.map); models.link.load(state); if (config.features.googleAnalytics) { - WVC.GA.init(config.features.googleAnalytics.id); // Insert google tracking + googleAnalytics.init(config.features.googleAnalytics.id); // Insert google tracking } // HACK: Map needs to be created before the data download model var mapComponents = { - Rotation: wv.map.rotate, - Runningdata: wv.map.runningdata, - Layerbuilder: wv.map.layerbuilder, - Dateline: wv.map.datelinebuilder, - Precache: wv.map.precachetile + Rotation: MapRotate, + Runningdata: MapRunningData, + Layerbuilder: MapLayerBuilder, + Dateline: MapDatelineBuilder, + Precache: MapPrecacheTile }; - ui.map = wv.map.ui(models, config, mapComponents); - ui.map.animate = wv.map.animate(models, config, ui); + ui.map = MapUI(models, config, mapComponents); + ui.map.animate = MapAnimate(models, config, ui); if (config.features.animation) { - models.anim = wv.anim.model(models, config); + models.anim = AnimModel(models, config); models.link.register(models.anim); } if (config.features.dataDownload) { - models.data = wv.data.model(models, config); - } - if (config.features.dataDownload) { + models.data = DataModel(models, config); models.link.register(models.data); } if (config.features.naturalEvents) { - models.naturalEvents = wv.naturalEvents.model(models, config); + models.naturalEvents = EventsModel(models, config); models.link.register(models.naturalEvents); } // HACK: Map needs permalink state loaded before starting. But @@ -165,64 +231,64 @@ $(function() { models.link.load(state); // needs to be loaded twice if (config.features.arcticProjectionChange) { - models.proj.change = wv.proj.change(models, config); + models.proj.change = ProjChange(models, config); } elapsed("ui"); // Create widgets - ui.proj = wv.proj.ui(models, config); - ui.sidebar = wv.layers.sidebar(models, config); - ui.activeLayers = wv.layers.active(models, ui, config); - ui.addModal = wv.layers.modal(models, ui, config); + ui.proj = ProjUI(models, config); + ui.sidebar = LayersSidebar(models, config); + ui.activeLayers = LayersActive(models, ui, config); + ui.addModal = LayersModal(models, ui, config); function timelineInit() { - ui.timeline = wv.date.timeline(models, config, ui); - ui.timeline.data = wv.date.timeline.data(models, config, ui); - ui.timeline.zoom = wv.date.timeline.zoom(models, config, ui); - ui.timeline.ticks = wv.date.timeline.ticks(models, config, ui); - ui.timeline.pick = wv.date.timeline.pick(models, config, ui); - ui.timeline.pan = wv.date.timeline.pan(models, config, ui); - ui.timeline.config = wv.date.timeline.config(models, config, ui); - ui.timeline.input = wv.date.timeline.input(models, config, ui); + ui.timeline = Timeline(models, config, ui); + ui.timeline.data = TimelineData(models, config, ui); + ui.timeline.zoom = TimelineZoom(models, config, ui); + ui.timeline.ticks = TimelineTicks(models, config, ui); + ui.timeline.pick = TimelinePick(models, config, ui); + ui.timeline.pan = TimelinePan(models, config, ui); + ui.timeline.config = TimelineConfig(models, config, ui); + ui.timeline.input = TimelineInput(models, config, ui); if (config.features.animation) { ui.anim = {}; - ui.anim.rangeselect = wv.anim.rangeselect(models, config, ui); // SETS STATE: NEEDS TO LOAD BEFORE ANIMATION WIDGET - ui.anim.widget = wv.anim.widget(models, config, ui); - ui.anim.gif = wv.anim.gif(models, config, ui); - ui.anim.ui = wv.anim.ui(models, ui); + ui.anim.rangeselect = AnimRangeselect(models, config, ui); // SETS STATE: NEEDS TO LOAD BEFORE ANIMATION WIDGET + ui.anim.widget = AnimWidget(models, config, ui); + ui.anim.gif = AnimGIF(models, config, ui); + ui.anim.ui = AnimUI(models, ui); } - ui.dateLabel = wv.date.label(models); + ui.dateLabel = DateLabel(models); } if (config.startDate) { - if (!wv.util.browser.small) { // If mobile device, do not build timeline + if (!browser.small) { // If mobile device, do not build timeline timelineInit(); } - ui.dateWheels = wv.date.wheels(models, config); + ui.dateWheels = DateWheels(models, config); } - ui.rubberband = wv.image.rubberband(models, ui, config); - ui.image = wv.image.panel(models, ui, config); + ui.rubberband = ImageRubberband(models, ui, config); + ui.image = ImagePanel(models, ui, config); if (config.features.dataDownload) { - ui.data = wv.data.ui(models, ui, config); + ui.data = DataUI(models, ui, config); // FIXME: Why is this here? ui.data.render(); } if (config.features.naturalEvents) { - ui.naturalEvents = wv.naturalEvents.ui(models, ui, config, wv.naturalEvents.request(models, ui, config)); + ui.naturalEvents = EventsUI(models, ui, config, EventsRequest(models, ui, config)); } - ui.link = wv.link.ui(models, config); - ui.tour = wv.tour(models, ui, config); - ui.info = wv.ui.info(ui, config); + ui.link = LinkUI(models, config); + ui.tour = Tour(models, ui, config); + ui.info = LinkInfo(ui, config); if (config.features.alert) { - ui.alert = wv.notifications.ui(ui, config); + ui.alert = NotificationsUI(ui, config); } //FIXME: Old hack $(window) .resize(function() { - if (wv.util.browser.small) { + if (browser.small) { $('#productsHoldertabs li.first a') .trigger('click'); } @@ -261,13 +327,13 @@ $(function() { }); // Console notifications - if (wv.brand.release()) { - console.info(wv.brand.NAME + " - Version " + wv.brand.VERSION + - " - " + wv.brand.BUILD_TIMESTAMP); + if (Brand.release()) { + console.info(Brand.NAME + " - Version " + Brand.VERSION + + " - " + Brand.BUILD_TIMESTAMP); } else { console.warn("Development version"); } - wv.debug.layers(ui, models, config); + debug.layers(ui, models, config); errorReport(); //wv.debug.error(parameters); @@ -293,7 +359,7 @@ $(function() { _.each(errors, function(error) { var cause = (error.cause) ? ": " + error.cause : ""; - wv.util.warn(error.message + cause); + util.warn(error.message + cause); if (error.layerRemoved) { layersRemoved = layersRemoved + 1; } @@ -339,6 +405,6 @@ $(function() { }; */ - wv.util.wrap(main)(); + util.wrap(main)(); -}); +}; From 26466cb024522b2219f66c2df7b7bc2dc872c5bc Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 14:14:22 -0400 Subject: [PATCH 005/242] Fix package.json syntax and update package-lock --- package-lock.json | 8572 ++++++++++++++++++++++++++++++--------------- package.json | 5 +- 2 files changed, 5709 insertions(+), 2868 deletions(-) diff --git a/package-lock.json b/package-lock.json index d7d266440b..7c90688daf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,12 +18,12 @@ } }, "JSONStream": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", "dev": true, "requires": { - "jsonparse": "0.0.5", + "jsonparse": "1.3.1", "through": "2.3.8" } }, @@ -157,6 +157,16 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", "dev": true }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -344,6 +354,26 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", @@ -372,6 +402,23 @@ "integrity": "sha512-Ebvx7/0lLboCdyEmAw/4GqwBeKIijPveXNiVGhCGCNxc7z26T5he7DC6ARxu8ByKuzUZZcLog+VP8GMyZrBzJw==", "dev": true }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", @@ -380,6 +427,12 @@ "lodash": "4.15.0" } }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -517,6 +570,26 @@ } } }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, "babel-generator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", @@ -547,48 +620,28 @@ } } }, - "babel-helpers": { + "babel-helper-call-delegate": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-polyfill": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", - "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", - "requires": { + "babel-helper-hoist-variables": "6.24.1", "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "regenerator-runtime": "0.9.6" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-register": { + "babel-helper-define-map": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-types": "6.26.0", + "lodash": "4.17.4" }, "dependencies": { "lodash": { @@ -599,41 +652,60 @@ } } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" - } + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-template": { + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "babylon": "6.18.0", "lodash": "4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -642,38 +714,79 @@ } } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", + "babel-helper-optimise-call-expression": "6.24.1", "babel-messages": "6.23.0", "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", "lodash": "4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -682,1130 +795,720 @@ } } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babylon": { - "version": "7.0.0-beta.30", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.30.tgz", - "integrity": "sha512-hfN8RsRw5Fwm+cAdN7+0FrnJRFcGfFNYuR/yzs0P+CXSb/aK2WPBVPWqHAQ3CgrhoId/6i4oqApjCEb7j/+0ZQ==" + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, - "bane": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bane/-/bane-1.0.0.tgz", - "integrity": "sha1-lJ/okStCs481Lh+tIE2CXa+h/0A=", - "dev": true + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, "requires": { - "tweetnacl": "0.14.5" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "becke-ch--regex--s0-0-v1--base--pl--lib": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.2.0.tgz", - "integrity": "sha1-LnPp0h8sLm9aVFQEVjbwq5PkYTA=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, "requires": { - "callsite": "1.0.0" + "babel-runtime": "6.26.0" } }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "bl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", - "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "readable-stream": "2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, - "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=", + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "inherits": "2.0.3" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "bluebird": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=" - }, - "body-parser": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", - "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "bytes": "2.2.0", - "content-type": "1.0.4", - "debug": "2.2.0", - "depd": "1.1.1", - "http-errors": "1.3.1", - "iconv-lite": "0.4.13", - "on-finished": "2.3.0", - "qs": "5.2.0", - "raw-body": "2.1.7", - "type-is": "1.6.15" - }, - "dependencies": { - "bytes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", - "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "http-errors": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "qs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", - "dev": true - } + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, "requires": { - "hoek": "2.16.3" + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" } }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } + "babel-runtime": "6.26.0" } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "pako": "0.2.9" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "browserslist": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.6.1.tgz", - "integrity": "sha512-HBZwVT7ciQB9KlXM3AUMQbnQXtHWPsEUKQTiS0BEFfY5bOrMl94ORaqQD1GyuTGh69ZmYeue9QBqiw219e09eQ==", + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "caniuse-lite": "1.0.30000756", - "electron-to-chromium": "1.3.27" + "babel-runtime": "6.26.0" } }, - "browserstack-capabilities": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserstack-capabilities/-/browserstack-capabilities-0.4.0.tgz", - "integrity": "sha1-osaFKf1qgStR1K2aSr4fU2o5uSM=", + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "lodash": "3.10.1", - "sync-request": "4.1.0" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } + "babel-runtime": "6.26.0" } }, - "browserstack-local": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.3.0.tgz", - "integrity": "sha1-/oDvBc6JVMTWJuNQLrYtYJA7Qjc=", + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "https-proxy-agent": "1.0.0", - "is-running": "2.1.0", - "sinon": "1.17.7", - "temp-fs": "0.9.9" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" } }, - "buffer-crc32": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.1.1.tgz", - "integrity": "sha1-fhENyZU5CKt8MqzccMn5RbHLxSY=", - "dev": true + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "babel-polyfill": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", + "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.9.6" + } }, - "buster": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/buster/-/buster-0.7.12.tgz", - "integrity": "sha1-g0ocPa8vrl+iXQFYYRwNt9whiRU=", + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "async": "0.2.10", - "bane": "1.0.0", - "buster-autotest": "0.4.2", - "buster-server-cli": "0.3.4", - "buster-sinon": "0.7.2", - "buster-static": "0.6.5", - "buster-syntax": "0.4.3", - "buster-test": "0.7.14", - "buster-test-cli": "0.8.8", - "evented-logger": "1.0.1", - "formatio": "1.0.2", - "lodash": "1.0.2", - "platform": "1.0.0", - "referee": "1.0.3", - "referee-sinon": "1.0.3", - "samsam": "1.1.2", - "sinon": "1.9.1", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, - "buster-static": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.6.5.tgz", - "integrity": "sha1-9A4lZOCGr9OhU3Q1eNfJrfYeJDE=", - "dev": true, - "requires": { - "async": "0.8.0", - "buster-cli": "0.6.3", - "buster-test": "0.7.14", - "mkdirp": "0.3.5", - "ramp-resources": "1.0.5", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" - }, - "dependencies": { - "async": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.8.0.tgz", - "integrity": "sha1-7mXsdymML/FFa8RBigUtDwZDURI=", - "dev": true - } - } - }, - "formatio": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "integrity": "sha1-55kcoUT/fYz/B7uayGqbeca6R+8=", - "dev": true, - "requires": { - "samsam": "1.1.2" - } - }, "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "mkdirp": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true - }, - "sinon": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.9.1.tgz", - "integrity": "sha1-DaxiK9Pw5vlmKnQxuvZfWMNFnWk=", - "dev": true, - "requires": { - "formatio": "1.0.2", - "util": "0.10.3" - } } } }, - "buster-analyzer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/buster-analyzer/-/buster-analyzer-0.5.0.tgz", - "integrity": "sha1-KZXzmTZYPpzZEJVbmOg1e+fHopU=", - "dev": true, - "requires": { - "bane": "1.0.0", - "when": "https://github.com/cujojs/when/tarball/1.8.1" - } - }, - "buster-autotest": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.4.2.tgz", - "integrity": "sha1-TY/uKYG7K5jPW4mqCu2zBOj6LIM=", - "dev": true, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "fs-watch-tree": "0.2.5", - "multi-glob": "0.4.0" + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + } } }, - "buster-cli": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.6.3.tgz", - "integrity": "sha1-XSZTPf8MMB3jJB8IlGsf6DczMwk=", + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "ansi-colorizer": "1.0.1", - "bane": "1.0.0", - "buster-configuration": "0.7.6", - "minimatch": "3.0.4", - "posix-argv-parser": "1.0.2", - "rimraf": "1.0.9", - "stream-logger": "1.0.1" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" }, "dependencies": { - "rimraf": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz", - "integrity": "sha1-vkgB/3bCum8cUMeOlwDrHSHyOfE=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "buster-configuration": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.7.6.tgz", - "integrity": "sha1-o4RYOMLg0TK2HvZYtfeEFD2LuzY=", + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "async": "0.1.22", - "bane": "1.0.0", - "glob": "3.1.21", - "lodash": "1.0.2", - "ramp-resources": "1.0.5", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" + "ms": "2.0.0" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "buster-server-cli": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/buster-server-cli/-/buster-server-cli-0.3.4.tgz", - "integrity": "sha1-lbodQX/4LsBMykuyIpqAQC7Pfe8=", - "dev": true, - "requires": { - "buster-cli": "0.6.3", - "ejs": "0.4.3", - "paperboy": "0.0.5", - "phantom-proxy": "0.1.792", - "platform": "1.2.0", - "ramp": "1.0.6", - "ramp-resources": "1.0.5" - }, - "dependencies": { - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", - "dev": true - } - } - }, - "buster-sinon": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/buster-sinon/-/buster-sinon-0.7.2.tgz", - "integrity": "sha1-FUGAbyU40IYyuDPs2wgZYnkDezc=", - "dev": true - }, - "buster-syntax": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.4.3.tgz", - "integrity": "sha1-rkJRTg6sg9iQdacGp+W7kAVwsHM=", - "dev": true, - "requires": { - "jsdom": "0.10.6", - "uglify-js": "1.2.6" - }, - "dependencies": { - "jsdom": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-0.10.6.tgz", - "integrity": "sha1-o7HYdUVLoBZVdYKWeZOewAa/Wrg=", - "dev": true, - "optional": true, - "requires": { - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "htmlparser2": "3.9.2", - "nwmatcher": "1.3.9", - "request": "2.81.0", - "xmlhttprequest": "1.8.0" - } - }, - "nwmatcher": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", - "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", - "dev": true, - "optional": true - }, - "uglify-js": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz", - "integrity": "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0=", - "dev": true - } - } - }, - "buster-test": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.7.14.tgz", - "integrity": "sha1-lMCQckUYm5F1xPSimpoepMmUQoE=", + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "ansi-colorizer": "1.0.1", - "async": "0.1.22", - "bane": "1.0.0", - "lodash": "1.0.2", - "platform": "1.2.0", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "buster-test-cli": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/buster-test-cli/-/buster-test-cli-0.8.8.tgz", - "integrity": "sha1-6LtEdbj5ViVMDfQass92WYR700c=", + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", "dev": true, "requires": { - "ansi-colorizer": "1.0.1", - "ansi-grid": "0.5.0", - "bane": "1.0.0", - "buster-analyzer": "0.5.0", - "buster-cli": "0.6.3", - "buster-test": "0.7.14", - "ejs": "0.4.3", - "lodash": "1.0.2", - "platform": "1.2.0", - "ramp": "1.0.6", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" - }, - "dependencies": { - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", - "dev": true - } + "babel-core": "6.26.0", + "object-assign": "4.1.1" } }, - "bytes": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz", - "integrity": "sha1-xXSBIigSbWNp0VdpJahXnbP45aI=", - "dev": true + "babylon": { + "version": "7.0.0-beta.30", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.30.tgz", + "integrity": "sha512-hfN8RsRw5Fwm+cAdN7+0FrnJRFcGfFNYuR/yzs0P+CXSb/aK2WPBVPWqHAQ3CgrhoId/6i4oqApjCEb7j/+0ZQ==" }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, - "callsite": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "bane": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bane/-/bane-1.0.0.tgz", + "integrity": "sha1-lJ/okStCs481Lh+tIE2CXa+h/0A=", "dev": true }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-db": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000756.tgz", - "integrity": "sha1-6TimuZFjDzDSJj3TRYvrZdNiJos=", - "dev": true + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, - "caniuse-lite": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000756.tgz", - "integrity": "sha1-PacBwVIbn6uHAExt58l/pH2+qtI=", + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, - "capture-stack-trace": { + "base64id": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, "requires": { - "underscore-contrib": "0.3.0" + "tweetnacl": "0.14.5" } }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "becke-ch--regex--s0-0-v1--base--pl--lib": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.2.0.tgz", + "integrity": "sha1-LnPp0h8sLm9aVFQEVjbwq5PkYTA=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "callsite": "1.0.0" } }, - "chai-nightwatch": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", - "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", - "dev": true, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "requires": { - "assertion-error": "1.0.0", - "deep-eql": "0.1.3" + "buffers": "0.1.1", + "chainsaw": "0.1.0" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": "0.3.9" - } + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "dev": true }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "readable-stream": "2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } } }, - "chromedriver": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.25.1.tgz", - "integrity": "sha1-BN4akkL/4xgnhkENvvquFHQ15n4=", + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "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, "requires": { - "adm-zip": "0.4.7", - "kew": "0.5.0", - "mkdirp": "0.5.1", - "npmconf": "2.1.2", - "rimraf": "2.6.1" + "inherits": "2.0.3" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true + "bluebird": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", + "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=" }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "body-parser": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", "dev": true, "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" + "bytes": "2.2.0", + "content-type": "1.0.4", + "debug": "2.2.0", + "depd": "1.1.1", + "http-errors": "1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "2.3.0", + "qs": "5.2.0", + "raw-body": "2.1.7", + "type-is": "1.6.15" }, "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "bytes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "ms": "0.7.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "statuses": "1.3.1" } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", + "dev": true } } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "restore-cursor": "2.0.0" + "hoek": "2.16.3" } }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "clipboard": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", - "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "dev": true, "requires": { - "good-listener": "1.2.2", - "select": "1.1.2", - "tiny-emitter": "2.0.2" + "JSONStream": "1.3.1", + "combine-source-map": "0.7.2", + "defined": "1.0.0", + "through2": "2.0.3", + "umd": "3.0.1" } }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "resolve": "1.1.7" }, "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" } } }, - "clone-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", - "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", - "dev": true, - "requires": { - "is-regexp": "1.0.0", - "is-supported-regexp-flag": "1.0.0" - } + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true }, - "closure-util": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.22.0.tgz", - "integrity": "sha512-DX5IhSawO9838/fKNaH3Cx8jeeJGWORodHhTFkxCOVsr71OtXCfo/rtXsV24eq3iq31jdmgUQvlNIXEMHTlkWg==", + "browserify": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", + "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", + "dev": true, "requires": { - "acorn": "5.0.3", - "async": "2.5.0", - "fs-extra": "3.0.1", - "gaze": "1.1.2", - "get-down": "1.2.0", + "JSONStream": "1.3.1", + "assert": "1.4.1", + "browser-pack": "6.0.2", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.1.7", + "duplexer2": "0.1.4", + "events": "1.1.1", "glob": "7.1.2", - "graceful-fs": "4.1.11", - "handlebars": "4.0.10", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "npmlog": "4.1.2", - "rimraf": "2.6.1", - "send": "0.15.3", - "socket.io": "2.0.1", - "temp": "0.8.3" - }, - "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "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=" - }, - "coffee-script": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", - "dev": true - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-diff": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", - "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", - "dev": true - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorguard": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz", - "integrity": "sha1-8/rK9cquuk71RlPZ+yW7cxd8DYQ=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "color-diff": "0.1.7", - "log-symbols": "1.0.2", - "object-assign": "4.1.1", - "pipetteur": "2.0.3", - "plur": "2.1.2", - "postcss": "5.2.18", - "postcss-reporter": "1.4.1", - "text-table": "0.2.0", - "yargs": "1.3.3" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "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 - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reporter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", - "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.18" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "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 - }, - "yargs": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", - "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", - "dev": true - } - } - }, - "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", - "dev": true - }, - "combine-errors": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", - "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", - "dev": true, - "requires": { - "custom-error-instance": "2.1.1", - "lodash.uniqby": "4.5.0" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "command-exists": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.2.tgz", - "integrity": "sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=", - "dev": true - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "module-deps": "4.1.1", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "resolve": "1.5.0", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4", + "xtend": "4.0.1" }, "dependencies": { "isarray": { @@ -1840,909 +1543,847 @@ } } }, - "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { - "ini": "1.3.4", - "proto-list": "1.2.4" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, - "connect": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-2.7.2.tgz", - "integrity": "sha1-EXmUY72qr5nV+b7xM78kILJuJoA=", + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "buffer-crc32": "0.1.1", - "bytes": "0.1.0", - "cookie": "0.0.5", - "cookie-signature": "0.0.1", - "debug": "2.6.7", - "formidable": "1.0.11", - "fresh": "0.1.0", - "pause": "0.0.1", - "qs": "0.5.1", - "send": "0.1.0" - }, - "dependencies": { - "cookie": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", - "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", - "dev": true - }, - "fresh": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", - "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", - "dev": true - }, - "mime": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", - "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", - "dev": true - }, - "qs": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz", - "integrity": "sha1-n2v12axsdjhOldNtFbSJgOXkrdA=", - "dev": true - }, - "range-parser": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", - "dev": true - }, - "send": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", - "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", - "dev": true, - "requires": { - "debug": "2.6.7", - "fresh": "0.1.0", - "mime": "1.2.6", - "range-parser": "0.0.4" - } - } + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" } }, - "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=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "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 - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz", - "integrity": "sha1-E9NgO1z2O++/haiAHjeqkA20aYU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", - "dev": true - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, - "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=" + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.10.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - }, - "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "pako": "1.0.6" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "browserslist": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.6.1.tgz", + "integrity": "sha512-HBZwVT7ciQB9KlXM3AUMQbnQXtHWPsEUKQTiS0BEFfY5bOrMl94ORaqQD1GyuTGh69ZmYeue9QBqiw219e09eQ==", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } + "caniuse-lite": "1.0.30000756", + "electron-to-chromium": "1.3.27" } }, - "cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "browserstack-capabilities": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserstack-capabilities/-/browserstack-capabilities-0.4.0.tgz", + "integrity": "sha1-osaFKf1qgStR1K2aSr4fU2o5uSM=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" + "lodash": "3.10.1", + "sync-request": "4.1.0" }, "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "browserstack-local": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.3.0.tgz", + "integrity": "sha1-/oDvBc6JVMTWJuNQLrYtYJA7Qjc=", + "dev": true, "requires": { - "boom": "2.10.1" + "https-proxy-agent": "1.0.0", + "is-running": "2.1.0", + "sinon": "1.17.7", + "temp-fs": "0.9.9" } }, - "css-color-list": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz", - "integrity": "sha1-hxjoaVrnosyHh76HFfHACKfyixU=", + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", "dev": true, "requires": { - "css-color-names": "0.0.1" + "base64-js": "1.2.1", + "ieee754": "1.1.8" } }, - "css-color-names": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", - "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", - "dev": true - }, - "css-rule-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", - "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "buffer-crc32": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.1.1.tgz", + "integrity": "sha1-fhENyZU5CKt8MqzccMn5RbHLxSY=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "buster": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/buster/-/buster-0.7.12.tgz", + "integrity": "sha1-g0ocPa8vrl+iXQFYYRwNt9whiRU=", "dev": true, "requires": { - "css-tokenize": "1.0.1", - "duplexer2": "0.0.2", - "ldjson-stream": "1.2.1", - "through2": "0.6.5" + "async": "0.2.10", + "bane": "1.0.0", + "buster-autotest": "0.4.2", + "buster-server-cli": "0.3.4", + "buster-sinon": "0.7.2", + "buster-static": "0.6.5", + "buster-syntax": "0.4.3", + "buster-test": "0.7.14", + "buster-test-cli": "0.8.8", + "evented-logger": "1.0.1", + "formatio": "1.0.2", + "lodash": "1.0.2", + "platform": "1.0.0", + "referee": "1.0.3", + "referee-sinon": "1.0.3", + "samsam": "1.1.2", + "sinon": "1.9.1", + "stack-filter": "1.0.1", + "when": "https://github.com/cujojs/when/tarball/1.8.1" }, "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "buster-static": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.6.5.tgz", + "integrity": "sha1-9A4lZOCGr9OhU3Q1eNfJrfYeJDE=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "async": "0.8.0", + "buster-cli": "0.6.3", + "buster-test": "0.7.14", + "mkdirp": "0.3.5", + "ramp-resources": "1.0.5", + "stack-filter": "1.0.1", + "when": "https://github.com/cujojs/when/tarball/1.8.1" + }, + "dependencies": { + "async": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.8.0.tgz", + "integrity": "sha1-7mXsdymML/FFa8RBigUtDwZDURI=", + "dev": true + } + } + }, + "formatio": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "integrity": "sha1-55kcoUT/fYz/B7uayGqbeca6R+8=", + "dev": true, + "requires": { + "samsam": "1.1.2" + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + }, + "sinon": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.9.1.tgz", + "integrity": "sha1-DaxiK9Pw5vlmKnQxuvZfWMNFnWk=", + "dev": true, + "requires": { + "formatio": "1.0.2", + "util": "0.10.3" } } } }, - "css-tokenize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", - "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "buster-analyzer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/buster-analyzer/-/buster-analyzer-0.5.0.tgz", + "integrity": "sha1-KZXzmTZYPpzZEJVbmOg1e+fHopU=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" + "bane": "1.0.0", + "when": "https://github.com/cujojs/when/tarball/1.8.1" } }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "buster-autotest": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.4.2.tgz", + "integrity": "sha1-TY/uKYG7K5jPW4mqCu2zBOj6LIM=", "dev": true, - "optional": true, "requires": { - "cssom": "0.3.2" + "fs-watch-tree": "0.2.5", + "multi-glob": "0.4.0" } }, - "cucumber": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-3.1.0.tgz", - "integrity": "sha512-DW5vY0oDTY3XtpPx8fYoKtro1JnMr7dOngZv6Ix53aJ4xhKViI/Yxbk3Q7Jaiw618/7uh1aw1RL6xKC67VyC6A==", + "buster-cli": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.6.3.tgz", + "integrity": "sha1-XSZTPf8MMB3jJB8IlGsf6DczMwk=", "dev": true, "requires": { - "assertion-error-formatter": "2.0.0", - "babel-runtime": "6.26.0", - "bluebird": "3.4.6", - "cli-table": "0.3.1", - "colors": "1.1.2", - "commander": "2.11.0", - "cucumber-expressions": "5.0.2", - "cucumber-tag-expressions": "1.0.1", - "duration": "0.2.0", - "escape-string-regexp": "1.0.5", - "figures": "2.0.0", - "gherkin": "5.0.0", - "glob": "7.1.2", - "indent-string": "3.2.0", - "is-generator": "1.0.3", - "is-stream": "1.1.0", - "lodash": "4.15.0", - "mz": "2.7.0", - "progress": "2.0.0", - "resolve": "1.5.0", - "stack-chain": "2.0.0", - "stacktrace-js": "2.0.0", - "string-argv": "0.0.2", - "title-case": "2.1.1", - "util-arity": "1.1.0", - "verror": "1.10.0" + "ansi-colorizer": "1.0.1", + "bane": "1.0.0", + "buster-configuration": "0.7.6", + "minimatch": "3.0.4", + "posix-argv-parser": "1.0.2", + "rimraf": "1.0.9", + "stream-logger": "1.0.1" }, "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "rimraf": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz", + "integrity": "sha1-vkgB/3bCum8cUMeOlwDrHSHyOfE=", "dev": true } } }, - "cucumber-expressions": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.2.tgz", - "integrity": "sha1-9OA8Jpi9Q+kgEaBV2cTOV3GLkbA=", - "dev": true, - "requires": { - "becke-ch--regex--s0-0-v1--base--pl--lib": "1.2.0" - } - }, - "cucumber-html-reporter": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cucumber-html-reporter/-/cucumber-html-reporter-3.0.4.tgz", - "integrity": "sha512-uit68jymdI8Z6m+kJ5YnJPeHf5IdYXt2j52l5xLwgpcLBQRhCvr1peV9UODaCN5nLnRN9nqh1qaw4iNp1rTpvQ==", + "buster-configuration": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.7.6.tgz", + "integrity": "sha1-o4RYOMLg0TK2HvZYtfeEFD2LuzY=", "dev": true, "requires": { - "find": "0.2.7", - "fs-extra": "3.0.1", - "js-base64": "2.3.2", - "jsonfile": "3.0.1", - "lodash": "4.17.4", - "open": "0.0.5" + "async": "0.1.22", + "bane": "1.0.0", + "glob": "3.1.21", + "lodash": "1.0.2", + "ramp-resources": "1.0.5", + "when": "https://github.com/cujojs/when/tarball/1.3.0" }, "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", "dev": true - } - } - }, - "cucumber-tag-expressions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.0.1.tgz", - "integrity": "sha1-1tPEMYCgP1+0/JV/4Tgt3OXLmsg=", - "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "when": { + "version": "https://github.com/cujojs/when/tarball/1.3.0", + "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "dev": true + } + } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "buster-server-cli": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/buster-server-cli/-/buster-server-cli-0.3.4.tgz", + "integrity": "sha1-lbodQX/4LsBMykuyIpqAQC7Pfe8=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "buster-cli": "0.6.3", + "ejs": "0.4.3", + "paperboy": "0.0.5", + "phantom-proxy": "0.1.792", + "platform": "1.2.0", + "ramp": "1.0.6", + "ramp-resources": "1.0.5" + }, + "dependencies": { + "platform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", + "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", + "dev": true + } } }, - "custom-error-instance": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", - "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", + "buster-sinon": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/buster-sinon/-/buster-sinon-0.7.2.tgz", + "integrity": "sha1-FUGAbyU40IYyuDPs2wgZYnkDezc=", "dev": true }, - "d": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", + "buster-syntax": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.4.3.tgz", + "integrity": "sha1-rkJRTg6sg9iQdacGp+W7kAVwsHM=", "dev": true, "requires": { - "es5-ext": "0.10.35" + "jsdom": "0.10.6", + "uglify-js": "1.2.6" + }, + "dependencies": { + "jsdom": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-0.10.6.tgz", + "integrity": "sha1-o7HYdUVLoBZVdYKWeZOewAa/Wrg=", + "dev": true, + "optional": true, + "requires": { + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "htmlparser2": "3.9.2", + "nwmatcher": "1.3.9", + "request": "2.81.0", + "xmlhttprequest": "1.8.0" + } + }, + "nwmatcher": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", + "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", + "dev": true, + "optional": true + }, + "uglify-js": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz", + "integrity": "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0=", + "dev": true + } } }, - "d3": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", - "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", + "buster-test": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.7.14.tgz", + "integrity": "sha1-lMCQckUYm5F1xPSimpoepMmUQoE=", + "dev": true, "requires": { - "d3-array": "1.2.1", - "d3-axis": "1.0.8", - "d3-brush": "1.0.4", - "d3-chord": "1.0.4", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-dsv": "1.0.7", - "d3-ease": "1.0.3", - "d3-force": "1.1.0", - "d3-format": "1.2.0", - "d3-geo": "1.8.1", - "d3-hierarchy": "1.1.5", - "d3-interpolate": "1.1.5", - "d3-path": "1.0.5", - "d3-polygon": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-queue": "3.0.7", - "d3-random": "1.1.0", - "d3-request": "1.0.6", - "d3-scale": "1.0.6", - "d3-selection": "1.1.0", - "d3-shape": "1.2.0", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5", - "d3-timer": "1.0.7", - "d3-transition": "1.1.0", - "d3-voronoi": "1.1.2", - "d3-zoom": "1.6.0" + "ansi-colorizer": "1.0.1", + "async": "0.1.22", + "bane": "1.0.0", + "lodash": "1.0.2", + "platform": "1.2.0", + "when": "https://github.com/cujojs/when/tarball/1.8.1" + }, + "dependencies": { + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "platform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", + "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", + "dev": true + } } }, - "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" - }, - "d3-axis": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", - "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" - }, - "d3-brush": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", - "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", + "buster-test-cli": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/buster-test-cli/-/buster-test-cli-0.8.8.tgz", + "integrity": "sha1-6LtEdbj5ViVMDfQass92WYR700c=", + "dev": true, "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" + "ansi-colorizer": "1.0.1", + "ansi-grid": "0.5.0", + "bane": "1.0.0", + "buster-analyzer": "0.5.0", + "buster-cli": "0.6.3", + "buster-test": "0.7.14", + "ejs": "0.4.3", + "lodash": "1.0.2", + "platform": "1.2.0", + "ramp": "1.0.6", + "stack-filter": "1.0.1", + "when": "https://github.com/cujojs/when/tarball/1.8.1" + }, + "dependencies": { + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "platform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", + "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", + "dev": true + } } }, - "d3-chord": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", - "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", + "bytes": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz", + "integrity": "sha1-xXSBIigSbWNp0VdpJahXnbP45aI=", + "dev": true + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, "requires": { - "d3-array": "1.2.1", - "d3-path": "1.0.5" + "callsites": "0.2.0" } }, - "d3-collection": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", - "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, - "d3-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", - "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true }, - "d3-dispatch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", - "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" - }, - "d3-drag": { + "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", - "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", - "requires": { - "d3-dispatch": "1.0.3", - "d3-selection": "1.1.0" - } + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" }, - "d3-dsv": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", - "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, "requires": { - "commander": "2.11.0", - "iconv-lite": "0.4.19", - "rw": "1.3.3" + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } } }, - "d3-ease": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", - "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" - }, - "d3-force": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", - "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", - "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-timer": "1.0.7" - } + "caniuse-db": { + "version": "1.0.30000756", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000756.tgz", + "integrity": "sha1-6TimuZFjDzDSJj3TRYvrZdNiJos=", + "dev": true }, - "d3-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", - "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" + "caniuse-lite": { + "version": "1.0.30000756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000756.tgz", + "integrity": "sha1-PacBwVIbn6uHAExt58l/pH2+qtI=", + "dev": true }, - "d3-geo": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", - "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", - "requires": { - "d3-array": "1.2.1" - } + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true }, - "d3-hierarchy": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", - "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "d3-interpolate": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", - "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "requires": { - "d3-color": "1.0.3" + "underscore-contrib": "0.3.0" } }, - "d3-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", - "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" - }, - "d3-polygon": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", - "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" - }, - "d3-quadtree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", - "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" - }, - "d3-queue": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", - "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" - }, - "d3-random": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", - "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" - }, - "d3-request": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", - "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-dsv": "1.0.7", - "xmlhttprequest": "1.8.0" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, - "d3-scale": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", - "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", + "chai-nightwatch": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", + "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", + "dev": true, "requires": { - "d3-array": "1.2.1", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-format": "1.2.0", - "d3-interpolate": "1.1.5", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5" + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" } }, - "d3-selection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", - "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" - }, - "d3-shape": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", - "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "requires": { - "d3-path": "1.0.5" + "traverse": "0.3.9" } }, - "d3-time": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", - "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" - }, - "d3-time-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", - "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "requires": { - "d3-time": "1.0.7" + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" } }, - "d3-timer": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", - "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" - }, - "d3-transition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", - "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, "requires": { - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-ease": "1.0.3", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-timer": "1.0.7" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, - "d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" - }, - "d3-zoom": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", - "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", + "chromedriver": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.25.1.tgz", + "integrity": "sha1-BN4akkL/4xgnhkENvvquFHQ15n4=", + "dev": true, "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" + "adm-zip": "0.4.7", + "kew": "0.5.0", + "mkdirp": "0.5.1", + "npmconf": "2.1.2", + "rimraf": "2.6.1" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "dateformat": { - "version": "1.0.2-1.2.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", - "dev": true + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "dev": true, "requires": { - "ms": "2.0.0" + "commander": "2.8.1", + "source-map": "0.4.4" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.11", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.5.0", - "readable-stream": "1.1.14", - "touch": "0.0.3" + "restore-cursor": "2.0.0" } }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", "dev": true, "requires": { - "type-detect": "0.1.1" + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } } }, - "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=", + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, + "clipboard": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" } }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dev": true, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "ast-types": "0.9.14", - "escodegen": "1.9.0", - "esprima": "3.1.3" + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + } } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "clone-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", + "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "is-regexp": "1.0.0", + "is-supported-regexp-flag": "1.0.0" + } + }, + "closure-util": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.22.0.tgz", + "integrity": "sha512-DX5IhSawO9838/fKNaH3Cx8jeeJGWORodHhTFkxCOVsr71OtXCfo/rtXsV24eq3iq31jdmgUQvlNIXEMHTlkWg==", + "requires": { + "acorn": "5.0.3", + "async": "2.5.0", + "fs-extra": "3.0.1", + "gaze": "1.1.2", + "get-down": "1.2.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "handlebars": "4.0.10", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nomnom": "1.8.1", + "npmlog": "4.1.2", + "rimraf": "2.6.1", + "send": "0.15.3", + "socket.io": "2.0.1", + "temp": "0.8.3" }, "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegate": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz", - "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=" + "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=" }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "coffee-script": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", + "dev": true }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", "dev": true, "requires": { - "repeating": "2.0.1" + "color-name": "1.1.3" } }, - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "color-diff": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", + "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", "dev": true }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorguard": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz", + "integrity": "sha1-8/rK9cquuk71RlPZ+yW7cxd8DYQ=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "doiuse": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", - "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", - "css-rule-stream": "1.1.0", - "duplexer2": "0.0.2", - "jsonfilter": "1.1.2", - "ldjson-stream": "1.2.1", - "lodash": "4.15.0", - "multimatch": "2.1.0", + "chalk": "1.1.3", + "color-diff": "0.1.7", + "log-symbols": "1.0.2", + "object-assign": "4.1.1", + "pipetteur": "2.0.3", + "plur": "2.1.2", "postcss": "5.2.18", - "source-map": "0.4.4", - "through2": "0.6.5", - "yargs": "3.10.0" + "postcss-reporter": "1.4.1", + "text-table": "0.2.0", + "yargs": "1.3.3" }, "dependencies": { "ansi-styles": { @@ -2751,16 +2392,6 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -2772,23 +2403,6 @@ "has-ansi": "2.0.0", "strip-ansi": "3.0.1", "supports-color": "2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" } }, "has-flag": { @@ -2809,14 +2423,35 @@ "supports-color": "3.2.3" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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, + "requires": { + "has-flag": "1.0.0" + } } } }, + "postcss-reporter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", + "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.15.0", + "log-symbols": "1.0.2", + "postcss": "5.2.18" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -2827,76 +2462,109 @@ } }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yargs": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", + "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", + "dev": true } } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "combine-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", "dev": true, - "optional": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true, - "optional": true - } + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", "dev": true, - "optional": true, "requires": { - "domelementtype": "1.3.0" + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "dev": true, - "optional": true, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "delayed-stream": "1.0.0" } }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "command-exists": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.2.tgz", + "integrity": "sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=", "dev": true }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" }, "dependencies": { "isarray": { @@ -2906,1256 +2574,3495 @@ "dev": true }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "0.10.31", "util-deprecate": "1.0.2" } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } } } }, - "duration": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.0.tgz", - "integrity": "sha1-X5xN+q//ZV3phhEu/iXFl43YUUY=", + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { - "d": "0.1.1", - "es5-ext": "0.10.35" + "ini": "1.3.4", + "proto-list": "1.2.4" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "connect": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.7.2.tgz", + "integrity": "sha1-EXmUY72qr5nV+b7xM78kILJuJoA=", + "dev": true, "requires": { - "jsbn": "0.1.1" - } - }, - "editorconfig": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", - "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", - "dev": true, - "requires": { - "bluebird": "3.4.6", - "commander": "2.11.0", - "lru-cache": "3.2.0", - "semver": "5.4.1", - "sigmund": "1.0.1" + "buffer-crc32": "0.1.1", + "bytes": "0.1.0", + "cookie": "0.0.5", + "cookie-signature": "0.0.1", + "debug": "2.6.7", + "formidable": "1.0.11", + "fresh": "0.1.0", + "pause": "0.0.1", + "qs": "0.5.1", + "send": "0.1.0" }, "dependencies": { - "lru-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "cookie": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", + "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", + "dev": true + }, + "fresh": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", + "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", + "dev": true + }, + "mime": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", + "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", + "dev": true + }, + "qs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz", + "integrity": "sha1-n2v12axsdjhOldNtFbSJgOXkrdA=", + "dev": true + }, + "range-parser": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", + "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", + "dev": true + }, + "send": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", + "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", "dev": true, "requires": { - "pseudomap": "1.0.2" + "debug": "2.6.7", + "fresh": "0.1.0", + "mime": "1.2.6", + "range-parser": "0.0.4" } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true } } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, - "ejs": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.4.3.tgz", - "integrity": "sha1-gUPDZWlVuJNNtdnag+m+cxdvH08=", + "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=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "electron-to-chromium": { - "version": "1.3.27", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", - "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true }, - "engine.io": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.3.tgz", - "integrity": "sha1-euz3G/ijEPn6IUYZmcT8wDX4qHc=", + "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 + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz", + "integrity": "sha1-E9NgO1z2O++/haiAHjeqkA20aYU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "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=" + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "uws": "0.14.5", - "ws": "2.3.1" + "is-directory": "0.3.1", + "js-yaml": "3.10.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, "requires": { - "ms": "2.0.0" + "sprintf-js": "1.0.3" } - } - } - }, - "engine.io-client": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.3.tgz", - "integrity": "sha1-1wXkiYXf6LVKmMn3cFK4sIJYvgU=", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, "requires": { - "ms": "2.0.0" + "argparse": "1.0.9", + "esprima": "4.0.0" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" + "bn.js": "4.11.8", + "elliptic": "6.4.0" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "is-arrayish": "0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", - "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", - "dev": true, - "requires": { - "stackframe": "1.0.4" - } - }, - "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "capture-stack-trace": "1.0.0" } }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" } }, - "es5-ext": { - "version": "0.10.35", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", - "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-symbol": "3.1.1" + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" }, "dependencies": { - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "es5-ext": "0.10.35" + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "cross-spawn-async": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" + "lru-cache": "4.1.1", + "which": "1.3.0" }, "dependencies": { - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "es5-ext": "0.10.35" + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.10.1" + } }, - "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=" + "crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } }, - "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "css-color-list": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz", + "integrity": "sha1-hxjoaVrnosyHh76HFfHACKfyixU=", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } + "css-color-names": "0.0.1" } }, - "eslint": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", - "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "css-color-names": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", + "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", + "dev": true + }, + "css-rule-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", + "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", "dev": true, "requires": { - "ajv": "5.3.0", - "babel-code-frame": "6.26.0", - "chalk": "2.3.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" + "css-tokenize": "1.0.1", + "duplexer2": "0.0.2", + "ldjson-stream": "1.2.1", + "through2": "0.6.5" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "color-convert": "1.9.0" + "readable-stream": "1.1.14" } }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "sprintf-js": "1.0.3" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } } } } }, - "eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "css-tokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", + "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", "dev": true }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, + "optional": true, "requires": { - "debug": "2.6.9", - "resolve": "1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "cssom": "0.3.2" } }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "cucumber": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-3.1.0.tgz", + "integrity": "sha512-DW5vY0oDTY3XtpPx8fYoKtro1JnMr7dOngZv6Ix53aJ4xhKViI/Yxbk3Q7Jaiw618/7uh1aw1RL6xKC67VyC6A==", "dev": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" + "assertion-error-formatter": "2.0.0", + "babel-runtime": "6.26.0", + "bluebird": "3.4.6", + "cli-table": "0.3.1", + "colors": "1.1.2", + "commander": "2.11.0", + "cucumber-expressions": "5.0.2", + "cucumber-tag-expressions": "1.0.1", + "duration": "0.2.0", + "escape-string-regexp": "1.0.5", + "figures": "2.0.0", + "gherkin": "5.0.0", + "glob": "7.1.2", + "indent-string": "3.2.0", + "is-generator": "1.0.3", + "is-stream": "1.1.0", + "lodash": "4.15.0", + "mz": "2.7.0", + "progress": "2.0.0", + "resolve": "1.5.0", + "stack-chain": "2.0.0", + "stacktrace-js": "2.0.0", + "string-argv": "0.0.2", + "title-case": "2.1.1", + "util-arity": "1.1.0", + "verror": "1.10.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true } } }, - "eslint-plugin-import": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", - "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "cucumber-expressions": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.2.tgz", + "integrity": "sha1-9OA8Jpi9Q+kgEaBV2cTOV3GLkbA=", "dev": true, "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "becke-ch--regex--s0-0-v1--base--pl--lib": "1.2.0" } }, - "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "cucumber-html-reporter": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cucumber-html-reporter/-/cucumber-html-reporter-3.0.4.tgz", + "integrity": "sha512-uit68jymdI8Z6m+kJ5YnJPeHf5IdYXt2j52l5xLwgpcLBQRhCvr1peV9UODaCN5nLnRN9nqh1qaw4iNp1rTpvQ==", "dev": true, "requires": { - "ignore": "3.3.7", - "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.3.0" + "find": "0.2.7", + "fs-extra": "3.0.1", + "js-base64": "2.3.2", + "jsonfile": "3.0.1", + "lodash": "4.17.4", + "open": "0.0.5" }, "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "eslint-plugin-promise": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", - "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", - "dev": true - }, - "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "cucumber-tag-expressions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.0.1.tgz", + "integrity": "sha1-1tPEMYCgP1+0/JV/4Tgt3OXLmsg=", "dev": true }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "array-find-index": "1.0.2" } }, - "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", - "dev": true, - "requires": { - "acorn": "5.2.1", - "acorn-jsx": "3.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", - "dev": true - } - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "custom-error-instance": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", "dev": true }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", "dev": true, "requires": { - "estraverse": "4.2.0" + "es5-ext": "0.10.35" } }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "dev": true, + "d3": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", + "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "d3-array": "1.2.1", + "d3-axis": "1.0.8", + "d3-brush": "1.0.4", + "d3-chord": "1.0.4", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-dsv": "1.0.7", + "d3-ease": "1.0.3", + "d3-force": "1.1.0", + "d3-format": "1.2.0", + "d3-geo": "1.8.1", + "d3-hierarchy": "1.1.5", + "d3-interpolate": "1.1.5", + "d3-path": "1.0.5", + "d3-polygon": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-queue": "3.0.7", + "d3-random": "1.1.0", + "d3-request": "1.0.6", + "d3-scale": "1.0.6", + "d3-selection": "1.1.0", + "d3-shape": "1.2.0", + "d3-time": "1.0.7", + "d3-time-format": "2.0.5", + "d3-timer": "1.0.7", + "d3-transition": "1.1.0", + "d3-voronoi": "1.1.2", + "d3-zoom": "1.6.0" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" }, - "estree-walker": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", - "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=" + "d3-axis": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", + "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "d3-brush": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", + "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", + "requires": { + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-transition": "1.1.0" + } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "d3-chord": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", + "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", + "requires": { + "d3-array": "1.2.1", + "d3-path": "1.0.5" + } }, - "ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + "d3-collection": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", + "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" }, - "event-stream": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.0.20.tgz", - "integrity": "sha1-A4u7LqnqkDhbJvvBhU0LU58qvqM=", - "dev": true, + "d3-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", + "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + }, + "d3-dispatch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", + "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" + }, + "d3-drag": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", + "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.0.7", - "pause-stream": "0.0.11", - "split": "0.2.10", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "d3-dispatch": "1.0.3", + "d3-selection": "1.1.0" } }, - "evented-logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/evented-logger/-/evented-logger-1.0.1.tgz", - "integrity": "sha1-n+1Zxc7MhzFuzv25X76RDwPmNqc=", - "dev": true, + "d3-dsv": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", + "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", "requires": { - "bane": "1.0.0", - "lodash": "3.10.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } + "commander": "2.11.0", + "iconv-lite": "0.4.19", + "rw": "1.3.3" } }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true + "d3-ease": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", + "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" }, - "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", - "dev": true, + "d3-force": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", + "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", "requires": { - "clone-regexp": "1.0.0" + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-timer": "1.0.7" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "d3-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", + "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "d3-geo": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", + "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", "requires": { - "is-posix-bracket": "0.1.1" + "d3-array": "1.2.1" } }, - "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=", + "d3-hierarchy": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", + "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" + }, + "d3-interpolate": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", + "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", "requires": { - "fill-range": "2.2.3" + "d3-color": "1.0.3" } }, - "express": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", - "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.1", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.0.6", - "fresh": "0.5.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.5", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.1", - "serve-static": "1.12.1", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.2" - }, - "dependencies": { - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "debug": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", - "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "send": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", - "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", - "dev": true, - "requires": { - "debug": "2.6.1", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.0", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "0.7.2", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - } - } + "d3-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", + "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "d3-polygon": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", + "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" }, - "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", - "dev": true, + "d3-quadtree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", + "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" + }, + "d3-queue": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", + "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" + }, + "d3-random": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", + "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" + }, + "d3-request": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", + "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.6.0", - "tmp": "0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - } + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-dsv": "1.0.7", + "xmlhttprequest": "1.8.0" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "d3-scale": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", + "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", "requires": { - "is-extglob": "1.0.0" + "d3-array": "1.2.1", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-format": "1.2.0", + "d3-interpolate": "1.1.5", + "d3-time": "1.0.7", + "d3-time-format": "2.0.5" } }, - "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, + "d3-selection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", + "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" + }, + "d3-shape": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", + "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", "requires": { - "concat-stream": "1.5.0", - "debug": "0.7.4", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" - }, - "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, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } + "d3-path": "1.0.5" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true + "d3-time": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", + "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "d3-time-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", + "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", + "requires": { + "d3-time": "1.0.7" + } }, - "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 + "d3-timer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", + "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" }, - "faye": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/faye/-/faye-0.8.11.tgz", - "integrity": "sha1-BrJfIsm+Uevm/m2NWd7m5UZ1GWc=", - "dev": true, + "d3-transition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", + "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", "requires": { - "cookiejar": "2.1.1", - "faye-websocket": "0.11.1" + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-ease": "1.0.3", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-timer": "1.0.7" } }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" + }, + "d3-zoom": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", + "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", "requires": { - "websocket-driver": "0.7.0" + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-transition": "1.1.0" } }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" + "assert-plus": "1.0.0" }, "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, - "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, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", + "dev": true + }, + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", "requires": { - "pend": "1.2.0" + "ms": "2.0.0" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress-zip": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", + "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", "requires": { - "escape-string-regexp": "1.0.5" + "binary": "0.3.0", + "graceful-fs": "4.1.11", + "mkpath": "0.1.0", + "nopt": "3.0.6", + "q": "1.5.0", + "readable-stream": "1.1.14", + "touch": "0.0.3" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "type-detect": "0.1.1" } }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "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 }, - "file-uri-to-path": { + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "defined": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "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=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "ast-types": "0.9.14", + "escodegen": "1.9.0", + "esprima": "3.1.3" } }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "ms": "2.0.0" + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } } } }, - "find": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/find/-/find-0.2.7.tgz", - "integrity": "sha1-evvQD48IxbYi+Xzab3FBc9VHuz8=", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz", + "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", "dev": true, "requires": { - "traverse-chain": "0.1.0" + "JSONStream": "1.3.1", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" } }, - "find-parent-dir": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.1.0.tgz", - "integrity": "sha1-EBuOyk+ye5QmMYei+txWuVyqh9Q=", - "dev": true + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "repeating": "2.0.1" } }, - "findup-sync": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "detective": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", "dev": true, "requires": { - "glob": "3.2.11", - "lodash": "2.4.2" + "acorn": "4.0.13", + "defined": "1.0.0" }, "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } } } }, - "fizzy-ui-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.5.tgz", - "integrity": "sha1-1y3rx00snSctvLt7ABcHiX9sMhA=", + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, "requires": { - "desandro-matches-selector": "2.0.2" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" } }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "esutils": "2.0.2", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "doiuse": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", + "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000756", + "css-rule-stream": "1.1.0", + "duplexer2": "0.0.2", + "jsonfilter": "1.1.2", + "ldjson-stream": "1.2.1", + "lodash": "4.15.0", + "multimatch": "2.1.0", + "postcss": "5.2.18", + "source-map": "0.4.4", + "through2": "0.6.5", + "yargs": "3.10.0" + }, + "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 + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000756", + "electron-to-chromium": "1.3.27" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + } + } }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "optional": true, "requires": { - "for-in": "1.0.2" + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true, + "optional": true + } } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "domelementtype": "1.3.0" } }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", "dev": true, + "optional": true, "requires": { - "samsam": "1.1.2" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, - "formidable": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz", - "integrity": "sha1-aPYzJaA15kS297s9ESQ7l2HeGzA=", + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + "duration": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.0.tgz", + "integrity": "sha1-X5xN+q//ZV3phhEu/iXFl43YUUY=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.35" + } }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, - "fs-extra": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", - "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "editorconfig": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", + "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" + "bluebird": "3.4.6", + "commander": "2.11.0", + "lru-cache": "3.2.0", + "semver": "5.4.1", + "sigmund": "1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "1.0.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } } }, - "fs-watch-tree": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/fs-watch-tree/-/fs-watch-tree-0.2.5.tgz", - "integrity": "sha1-tIoBTJgw/1PlI1bqIwVsHA1suS0=", + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.4.3.tgz", + "integrity": "sha1-gUPDZWlVuJNNtdnag+m+cxdvH08=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "minimatch": "0.2.14", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "engine.io": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.3.tgz", + "integrity": "sha1-euz3G/ijEPn6IUYZmcT8wDX4qHc=", + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.6.9", + "engine.io-parser": "2.1.1", + "uws": "0.14.5", + "ws": "2.3.1" }, "dependencies": { - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.3.tgz", + "integrity": "sha1-1wXkiYXf6LVKmMn3cFK4sIJYvgU=", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.6.9", + "engine.io-parser": "2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "2.3.1", + "xmlhttprequest-ssl": "1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", + "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary2": "1.0.2" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "dev": true, + "requires": { + "stackframe": "1.0.4" + } + }, + "es-abstract": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", + "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.35", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", + "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-symbol": "3.1.1" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.35" + } + } + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.35" + } + } + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", + "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.1", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", + "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + } + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "event-stream": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.0.20.tgz", + "integrity": "sha1-A4u7LqnqkDhbJvvBhU0LU58qvqM=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.0.7", + "pause-stream": "0.0.11", + "split": "0.2.10", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "evented-logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/evented-logger/-/evented-logger-1.0.1.tgz", + "integrity": "sha1-n+1Zxc7MhzFuzv25X76RDwPmNqc=", + "dev": true, + "requires": { + "bane": "1.0.0", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "dev": true, + "requires": { + "clone-regexp": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "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=", + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", + "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.1", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.0.6", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.1", + "serve-static": "1.12.1", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.2" + }, + "dependencies": { + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "send": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", + "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", + "dev": true, + "requires": { + "debug": "2.6.1", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.0", + "http-errors": "1.6.2", + "mime": "1.3.4", + "ms": "0.7.2", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", + "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19", + "jschardet": "1.6.0", + "tmp": "0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "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, + "requires": { + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "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, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "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 + }, + "faye": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/faye/-/faye-0.8.11.tgz", + "integrity": "sha1-BrJfIsm+Uevm/m2NWd7m5UZ1GWc=", + "dev": true, + "requires": { + "cookiejar": "2.1.1", + "faye-websocket": "0.11.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "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=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/find/-/find-0.2.7.tgz", + "integrity": "sha1-evvQD48IxbYi+Xzab3FBc9VHuz8=", + "dev": true, + "requires": { + "traverse-chain": "0.1.0" + } + }, + "find-parent-dir": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.1.0.tgz", + "integrity": "sha1-EBuOyk+ye5QmMYei+txWuVyqh9Q=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "fizzy-ui-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.5.tgz", + "integrity": "sha1-1y3rx00snSctvLt7ABcHiX9sMhA=", + "requires": { + "desandro-matches-selector": "2.0.2" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "1.1.2" + } + }, + "formidable": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz", + "integrity": "sha1-aPYzJaA15kS297s9ESQ7l2HeGzA=", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-extra": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", + "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "fs-watch-tree": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/fs-watch-tree/-/fs-watch-tree-0.2.5.tgz", + "integrity": "sha1-tIoBTJgw/1PlI1bqIwVsHA1suS0=", + "dev": true, + "requires": { + "minimatch": "0.2.14", + "when": "https://github.com/cujojs/when/tarball/1.3.0" + }, + "dependencies": { + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "when": { + "version": "https://github.com/cujojs/when/tarball/1.3.0", + "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "nan": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "ansi-regex": "2.1.1" } }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, "dev": true } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", @@ -5500,7 +7407,24 @@ "dev": true, "requires": { "browserify-zlib": "0.1.4", - "concat-stream": "1.6.0" + "concat-stream": "1.5.2" + }, + "dependencies": { + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + } } }, "handlebars": { @@ -5589,6 +7513,25 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", @@ -5616,6 +7559,17 @@ "integrity": "sha1-3A0FuNybEQ8TvOUsuW/R4Ma8eRw=", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", @@ -5649,6 +7603,12 @@ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", "dev": true }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", @@ -5706,7 +7666,7 @@ "dev": true, "requires": { "caseless": "0.11.0", - "concat-stream": "1.6.0", + "concat-stream": "1.5.2", "http-response-object": "1.1.0" }, "dependencies": { @@ -5762,6 +7722,12 @@ "sshpk": "1.13.1" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "https-proxy-agent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", @@ -5837,6 +7803,23 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", @@ -5912,6 +7895,22 @@ } } }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "dev": true, + "requires": { + "JSONStream": "1.3.1", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.6", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", @@ -5945,6 +7944,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "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, + "requires": { + "binary-extensions": "1.10.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -6381,12 +8389,40 @@ "through2": "0.6.5" }, "dependencies": { + "JSONStream": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", + "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": "2.3.8" + } + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "dev": true + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, "stream-combiner": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", @@ -6396,6 +8432,16 @@ "duplexer": "0.1.1", "through": "2.3.8" } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } } } }, @@ -6405,9 +8451,9 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, "jsonpointer": { @@ -6467,6 +8513,17 @@ "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==", "dev": true }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -6503,6 +8560,30 @@ "requires": { "split2": "0.2.1", "through2": "0.6.5" + }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } } }, "levn": { @@ -6515,6 +8596,15 @@ "type-check": "0.3.2" } }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true, + "requires": { + "astw": "2.2.0" + } + }, "livereload-js": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", @@ -6777,6 +8867,12 @@ "integrity": "sha1-jMP7NcLZSsxEOhhj4C+kB5nqbyg=", "dev": true }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, "lodash.mergewith": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", @@ -6989,6 +9085,28 @@ } } }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7130,6 +9248,16 @@ "regex-cache": "0.4.4" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, "mime": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", @@ -7154,6 +9282,18 @@ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -7271,7 +9411,62 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "1.0.0" + } + } + } + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "dev": true, + "requires": { + "JSONStream": "1.3.1", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "defined": "1.0.0", + "detective": "4.5.0", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" } } } @@ -7734,6 +9929,12 @@ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -7765,6 +9966,15 @@ "get-size": "2.0.2" } }, + "outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", + "dev": true, + "requires": { + "shell-quote": "1.6.1" + } + }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -7837,9 +10047,9 @@ } }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, "paperboy": { @@ -7848,6 +10058,28 @@ "integrity": "sha1-D/NSBMUyKJ8BVrV3RW5vWB7TSLw=", "dev": true }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -7890,6 +10122,12 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -7915,6 +10153,12 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7954,6 +10198,19 @@ "resolve-protobuf-schema": "2.0.0" } }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -8890,6 +11147,12 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -9016,6 +11279,19 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -9031,6 +11307,18 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, "quickselect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.0.0.tgz", @@ -9172,6 +11460,15 @@ } } }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -9292,6 +11589,47 @@ "gather-stream": "1.0.0" } }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -9335,6 +11673,50 @@ "string_decoder": "0.10.31" } }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -9388,11 +11770,28 @@ "integrity": "sha1-cDI2J/GB5vqMal2vf9zdxckZDmQ=", "dev": true }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -9401,6 +11800,40 @@ "is-equal-shallow": "0.1.3" } }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -9556,6 +11989,16 @@ "glob": "7.1.2" } }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, "rollup": { "version": "0.47.6", "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.47.6.tgz", @@ -9754,6 +12197,12 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "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 + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -9764,6 +12213,37 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.9" + }, + "dependencies": { + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -10018,6 +12498,30 @@ "dev": true, "requires": { "through2": "0.6.5" + }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } } }, "sprintf-js": { @@ -10104,17 +12608,59 @@ "stacktrace-gps": "3.0.2" } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stdin": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", - "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", - "dev": true - }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stdin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", + "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -10124,6 +12670,93 @@ "duplexer": "0.1.1" } }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "stream-logger": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-logger/-/stream-logger-1.0.1.tgz", @@ -10133,6 +12766,48 @@ "evented-logger": "1.0.1" } }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "string-argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", @@ -11225,6 +13900,23 @@ } } }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "sugarss": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz", @@ -11331,6 +14023,49 @@ "get-port": "3.2.0", "http-response-object": "1.1.0", "then-request": "2.2.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } } }, "synesthesia": { @@ -11350,6 +14085,23 @@ } } }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -11538,7 +14290,7 @@ "dev": true, "requires": { "caseless": "0.11.0", - "concat-stream": "1.6.0", + "concat-stream": "1.5.2", "http-basic": "2.5.1", "http-response-object": "1.1.0", "promise": "7.3.1", @@ -11583,25 +14335,43 @@ "dev": true }, "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "1.0.34", + "readable-stream": "2.3.3", "xtend": "4.0.1" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" } } } @@ -11618,6 +14388,15 @@ "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", "dev": true }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "0.11.10" + } + }, "tiny-emitter": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", @@ -11698,6 +14477,12 @@ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -11759,6 +14544,12 @@ "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", "dev": true }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -11844,6 +14635,12 @@ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=" }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true + }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", @@ -11898,6 +14695,24 @@ "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -11990,6 +14805,15 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, "walk": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", @@ -11998,6 +14822,21 @@ "foreachasync": "3.0.0" } }, + "watchify": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.9.0.tgz", + "integrity": "sha1-8HX9LoqGrN6Eztum5cKgvt1SPZ4=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "browserify": "14.5.0", + "chokidar": "1.7.0", + "defined": "1.0.0", + "outpipe": "1.1.1", + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -12061,6 +14900,9 @@ "whatwg-fetch": "2.0.3" } }, + "worldview-options-eosdis": { + "version": "github:nasa-gibs/worldview-options-eosdis#790a7104bf06734bf27ef90a481f995623e631c8" + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 57bb7e51a4..48253186bb 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,7 @@ "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", "stylelint": "^8.0.0", - "watchify": "^3.9.0", - + "watchify": "^3.9.0" }, "dependencies": { "babel-polyfill": "6.16.0", @@ -91,4 +90,4 @@ "worldview-components": "^1.5.1", "worldview-options-eosdis": "nasa-gibs/worldview-options-eosdis#v2.1.2" } -} \ No newline at end of file +} From 8814a6e078754621fc325b653dc07efd464c7184 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 14:16:36 -0400 Subject: [PATCH 006/242] Update package syntax npm adds github: automatically --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48253186bb..0b5684c4bd 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,6 @@ "react": "15.3.1", "react-dom": "15.3.1", "worldview-components": "^1.5.1", - "worldview-options-eosdis": "nasa-gibs/worldview-options-eosdis#v2.1.2" + "worldview-options-eosdis": "github:nasa-gibs/worldview-options-eosdis#v2.1.2" } } From 7670b48b1c10d69cde93e232403a571550ec67dd Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 14:40:48 -0400 Subject: [PATCH 007/242] Update linting to use module rules --- .eslintrc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.eslintrc b/.eslintrc index 82c47742f5..4edb5dddef 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,7 +5,10 @@ }, "parserOptions": { "ecmaVersion": 6, - "sourceType": "script" + "sourceType": "module", + "ecmaFeatures": { + "jsx": false + } }, "extends": "standard", "rules": { @@ -15,13 +18,6 @@ "overrides": [ { "files": [ "web/**/*.js", "test/**/*.js" ], - "parserOptions": { - "ecmaVersion": 5, - "sourceType": "script", - "ecmaFeatures": { - "jsx": false - } - }, "rules": { "no-octal": "warn", "no-unused-vars": "warn", From 032f0e1cd77151b8c5193bae2911a7d2cc46343f Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 14:41:11 -0400 Subject: [PATCH 008/242] Clean up main file Run linter and remove some dead lines --- web/js/wv.main.js | 105 +++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 75 deletions(-) diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 30ab946935..13c1db94a0 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -6,15 +6,14 @@ import {dateParse} from './date/wv.date'; // export default function parse!!! import dateModel from './date/wv.date.model'; import DateLabel from './date/wv.date.label'; import DateWheels from './date/wv.date.wheels'; -//Timeline -import Timeline from './date/wv.date.timeline'; +// Timeline +import Timeline from './date/wv.date.timeline'; import TimelineData from './date/wv.date.timeline.data'; import TimelineConfig from './date/wv.date.timeline.config'; import TimelineZoom from './date/wv.date.timeline.zoom'; import TimelineTicks from './date/wv.date.timeline.ticks'; import TimelinePick from './date/wv.date.timeline.pick'; import TimelinePan from './date/wv.date.timeline.pan'; -import TimelineConfig from './date/wv.date.timeline.config'; import TimelineInput from './date/wv.date.timeline.input'; // Layers import {layerParse, layerValidate} from './layers/wv.layers';// export parse as layerParse. etc... @@ -87,7 +86,6 @@ window.onload = () => { var state = util.fromQueryString(location.search); var parameters = util.fromQueryString(location.search); - var main = function() { if (parameters.elapsed) { startTime = new Date() @@ -95,20 +93,13 @@ window.onload = () => { } else { elapsed = function() {}; } - elapsed("start"); - /* May be included in next version - yepnope({ - test: parameters.debug, - yep: ['js/wv.debug.js'], - complete: loadConfig - }); - */ + elapsed('start'); loadConfig(); }; var loadConfig = function() { - elapsed("loading config"); - var configURI = Brand.url("config/wv.json"); + elapsed('loading config'); + var configURI = Brand.url('config/wv.json'); var promise = $.getJSON(configURI); promise .done(util.wrap(onConfigLoaded)) @@ -117,7 +108,7 @@ window.onload = () => { }; var onConfigLoaded = function(data) { - elapsed("config loaded"); + elapsed('config loaded'); config = data; config.parameters = parameters; @@ -161,7 +152,7 @@ window.onload = () => { }; var init = function() { - elapsed("init"); + elapsed('init'); // If at the beginning of the day, wait on the previous day until GIBS // catches up (about three hours) var initialDate; @@ -234,14 +225,13 @@ window.onload = () => { models.proj.change = ProjChange(models, config); } - elapsed("ui"); + elapsed('ui'); // Create widgets ui.proj = ProjUI(models, config); ui.sidebar = LayersSidebar(models, config); ui.activeLayers = LayersActive(models, ui, config); ui.addModal = LayersModal(models, ui, config); - function timelineInit() { ui.timeline = Timeline(models, config, ui); ui.timeline.data = TimelineData(models, config, ui); @@ -285,7 +275,7 @@ window.onload = () => { ui.alert = NotificationsUI(ui, config); } - //FIXME: Old hack + // FIXME: Old hack $(window) .resize(function() { if (browser.small) { @@ -298,84 +288,71 @@ window.onload = () => { }); document.activeElement.blur(); - $("input") + $('input') .blur(); - $("#eventsHolder") + $('#eventsHolder') .hide(); if (config.features.dataDownload) { models.data.events - .on("activate", function() { - ui.sidebar.selectTab("download"); + .on('activate', function() { + ui.sidebar.selectTab('download'); }) - .on("queryResults", function() { + .on('queryResults', function() { ui.data.onViewChange(); }); - ui.map.events.on("extent", function() { + ui.map.events.on('extent', function() { ui.data.onViewChange(); }); // FIXME: This is a hack - models.map.events.on("projection", models.data.updateProjection); + models.map.events.on('projection', models.data.updateProjection); } // Sink all focus on inputs if click unhandled $(document) .click(function(event) { - if (event.target.nodeName !== "INPUT") { - $("input") + if (event.target.nodeName !== 'INPUT') { + $('input') .blur(); } }); // Console notifications if (Brand.release()) { - console.info(Brand.NAME + " - Version " + Brand.VERSION + - " - " + Brand.BUILD_TIMESTAMP); + console.info(Brand.NAME + ' - Version ' + Brand.VERSION + + ' - ' + Brand.BUILD_TIMESTAMP); } else { - console.warn("Development version"); + console.warn('Development version'); } debug.layers(ui, models, config); errorReport(); - //wv.debug.error(parameters); - models.wv.events.trigger("startup"); - elapsed("done"); + models.wv.events.trigger('startup'); + elapsed('done'); // Reset Worldview when clicking on logo $(document).click(function(e) { - if (e.target.id == "wv-logo") resetWorldview(e); + if (e.target.id === 'wv-logo') resetWorldview(e); }); }; - var resetWorldview = function(e){ + var resetWorldview = function(e) { e.preventDefault(); - if (window.location.search === "") return; // Nothing to reset - var msg = "Do you want to reset Worldview to its defaults? You will lose your current state."; - if (confirm(msg)) document.location.href = "/"; + if (window.location.search === '') return; // Nothing to reset + var msg = 'Do you want to reset Worldview to its defaults? You will lose your current state.'; + if (confirm(msg)) document.location.href = '/'; }; var errorReport = function() { var layersRemoved = 0; _.each(errors, function(error) { - var cause = (error.cause) ? ": " + error.cause : ""; + var cause = (error.cause) ? ': ' + error.cause : ''; util.warn(error.message + cause); if (error.layerRemoved) { layersRemoved = layersRemoved + 1; } }); - - if (layersRemoved > 0) { - // Remove for now until new GIBS has settled down. - /* - wv.ui.notify( - "Incomplete configuration

" + - layersRemoved + " layer(s) were removed

" + - "Contact us at " + - "" + - "@MAIL@"); - */ - } }; var elapsed = function(message) { @@ -385,27 +362,5 @@ window.onload = () => { console.log(t, message); }; - /* - var debuggingFeatures = function(config) { - // Install a black palette which can be used to find "holes" in - // LUT mappings. - if ( config.parameters.debugPalette ) { - var debugPalette = Worldview.Palette.Palette({ - id: "__DEBUG", - name: "Debug", - stops: [{at: 0, r: 0, g: 0, b: 0, a: 0}] - }); - config.palettes["__DEBUG"] = debugPalette; - config.paletteOrder.unshift("__DEBUG"); - } - - // Test error dialog - if ( config.parameters.showError ) { - *** SHOW ERROR - } - }; - */ - util.wrap(main)(); - -}; \ No newline at end of file +}; From 79c25f93a3993e64d5ceae0fb68ec94e0092f2f7 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 15:19:35 -0400 Subject: [PATCH 009/242] Clean up names and formatting --- web/js/wv.main.js | 164 +++++++++++++++++++++++----------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 13c1db94a0..ecfff21bfb 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,79 +1,79 @@ +// External Dependencies +import $ from 'jquery'; +import _ from 'lodash'; +import {GA as googleAnalytics} from 'worldview-components'; + // Utils -import util from './util/wv.util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... -import browser from './util/wv.util.browser'; +import util from './util/util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... +import browser from './util/util.browser'; // Date -import {dateParse} from './date/wv.date'; // export default function parse!!! -import dateModel from './date/wv.date.model'; -import DateLabel from './date/wv.date.label'; -import DateWheels from './date/wv.date.wheels'; +import {dateParser} from './date/date'; // export default function parse!!! +import DateModel from './date/date.model'; +import DateLabel from './date/date.label'; +import DateWheels from './date/date.wheels'; // Timeline -import Timeline from './date/wv.date.timeline'; -import TimelineData from './date/wv.date.timeline.data'; -import TimelineConfig from './date/wv.date.timeline.config'; -import TimelineZoom from './date/wv.date.timeline.zoom'; -import TimelineTicks from './date/wv.date.timeline.ticks'; -import TimelinePick from './date/wv.date.timeline.pick'; -import TimelinePan from './date/wv.date.timeline.pan'; -import TimelineInput from './date/wv.date.timeline.input'; +import Timeline from './date/date.timeline'; +import TimelineData from './date/date.timeline.data'; +import TimelineConfig from './date/date.timeline.config'; +import TimelineZoom from './date/date.timeline.zoom'; +import TimelineTicks from './date/date.timeline.ticks'; +import TimelinePick from './date/date.timeline.pick'; +import TimelinePan from './date/date.timeline.pan'; +import TimelineInput from './date/date.timeline.input'; // Layers -import {layerParse, layerValidate} from './layers/wv.layers';// export parse as layerParse. etc... -import LayersModel from './layers/wv.layers.model'; -import LayersModal from './layers/wv.layers.modal'; -import LayersSidebar from './layers/wv.layers.sidebar'; -import LayersActive from './layers/wv.layers.active'; +import {layerParser, layerValidate} from './layers/layers'; // export parse as layerParser. etc... +import LayersModel from './layers/layers.model'; +import LayersModal from './layers/layers.modal'; +import LayersSidebar from './layers/layers.sidebar'; +import LayersActive from './layers/layers.active'; // Map -import {mapParse} from './map/wv.map'; -import MapModel from './map/wv.map.model'; -import MapUI from './map/wv.map.ui'; -import MapRotate from './map/wv.map.rotate'; -import MapRunningData from './map/wv.map.runningdata'; -import MapLayerBuilder from './map/wv.map.layerbuilder'; -import MapDatelineBuilder from './map/wv.map.datelinebuilder'; -import MapPrecacheTile from './map/wv.map.precachetile'; -import MapAnimate from './map/wv.map.animate'; +import {mapParser} from './map/map'; +import MapModel from './map/map.model'; +import MapUI from './map/map.ui'; +import MapRotate from './map/map.rotate'; +import MapRunningData from './map/map.runningdata'; +import MapLayerBuilder from './map/map.layerbuilder'; +import MapDatelineBuilder from './map/map.datelinebuilder'; +import MapPrecacheTile from './map/map.precachetile'; +import MapAnimate from './map/map.animate'; // Animation -import {animParse} from './animation/wv.anim'; -import AnimModel from './animation/wv.anim.model'; -import AnimUI from './animation/wv.anim.ui'; -import AnimWidget from './animation/animation-widget'; -import AnimRangeselect from './animation/wv.anim.rangeselect'; -import AnimGIF from './animation/wv.anim.gif'; -// palettes -import {palettesParse, paletteRequirements} from './palettes/wv.palettes'; -import PalettesModel from './palettes/wv.palettes.model'; +import {animationParser} from './animation/anim'; +import AnimationModel from './animation/anim.model'; +import AnimationUI from './animation/anim.ui'; +import AnimationWidget from './animation/animation-widget'; +import AnimationRangeselect from './animation/anim.rangeselect'; +import AnimationGIF from './animation/anim.gif'; +// Palettes +import {palettesParser, paletteRequirements} from './palettes/palettes'; +import PalettesModel from './palettes/palettes.model'; // Data -import DataParse from './data/wv.data'; -import DataModel from './data/wv.data.model'; -import DataUI from './data/wv.data.ui'; +import dataParser from './data/data'; +import DataModel from './data/data.model'; +import DataUI from './data/data.ui'; // NaturalEvents -import EventsModel from './naturalEvents/wv.naturalEvents.model'; -import EventsUI from './naturalEvents/wv.naturalEvents.ui'; -import EventsRequest from './naturalEvents/wv.naturalEvents.request'; +import EventsModel from './naturalEvents/naturalEvents.model'; +import EventsUI from './naturalEvents/naturalEvents.ui'; +import EventsRequest from './naturalEvents/naturalEvents.request'; // Image -import ImageRubberband from './image/wv.image.rubberband'; -import ImagePanel from './image/wv.image.panel'; -// notifications -import NotificationsUI from './notifications/wv.notifications.ui'; +import ImageRubberband from './image/image.rubberband'; +import ImagePanel from './image/image.panel'; +// Notifications +import NotificationsUI from './notifications/notifications.ui'; // UI -import {indicateDelayed} from './ui/wv.ui.indicator'; // not a class, export object +import {loadingIndicator} from './ui/ui.indicator'; // not a class, export object // Link -import LinkModel from './link/wv.link.model'; -import LinkUI from './link/wv.link.ui'; -import LinkInfo from './link/wv.link.info'; - -// projections -import projParse from './proj/wv.proj'; -import ProjModel from './proj/wv.proj.model'; -import ProjUI from './proj/wv.proj.ui'; -import ProjChange from './proj/wv.proj.change'; -// other -import {debugConfig, debug} from './wv.debug'; -import Brand from './wv.brand'; -import Tour from './wv.tour'; -// External Dependencies -import $ from 'Jquery'; -import _ from 'lodash'; -import {GA as googleAnalytics} from 'worldview-components'; +import LinkModel from './link/link.model'; +import LinkUI from './link/link.ui'; +import LinkInfo from './link/link.info'; +// Projections +import projectionParser from './proj/proj'; +import ProjectionModel from './proj/proj.model'; +import ProjectionUI from './proj/proj.ui'; +import ProjectionChange from './proj/proj.change'; +// Other +import {debugConfig, debug} from './debug'; +import Brand from './brand'; +import Tour from './tour'; // Document ready function window.onload = () => { @@ -104,7 +104,7 @@ window.onload = () => { promise .done(util.wrap(onConfigLoaded)) .fail(util.error); - indicateDelayed(promise, 1000); + loadingIndicator(promise, 1000); }; var onConfigLoaded = function(data) { @@ -127,17 +127,17 @@ window.onload = () => { layerValidate(errors, config); parsers = [ - projParse, - layerParse, - dateParse, - mapParse, - palettesParse + projectionParser, + layerParser, + dateParser, + mapParser, + palettesParser ]; if (config.features.dataDownload) { - parsers.push(DataParse); + parsers.push(dataParser); } if (config.features.animation) { - parsers.push(animParse); + parsers.push(animationParser); } _.each(parsers, function(parser) { parser(state, errors, config); @@ -176,10 +176,10 @@ window.onload = () => { wvx.models = models; wvx.ui = ui; - models.proj = ProjModel(config); + models.proj = ProjectionModel(config); models.palettes = PalettesModel(models, config); models.layers = LayersModel(models, config); - models.date = dateModel(config, { + models.date = DateModel(config, { initial: initialDate }); models.map = MapModel(models, config); @@ -206,7 +206,7 @@ window.onload = () => { ui.map = MapUI(models, config, mapComponents); ui.map.animate = MapAnimate(models, config, ui); if (config.features.animation) { - models.anim = AnimModel(models, config); + models.anim = AnimationModel(models, config); models.link.register(models.anim); } if (config.features.dataDownload) { @@ -222,12 +222,12 @@ window.onload = () => { models.link.load(state); // needs to be loaded twice if (config.features.arcticProjectionChange) { - models.proj.change = ProjChange(models, config); + models.proj.change = ProjectionChange(models, config); } elapsed('ui'); // Create widgets - ui.proj = ProjUI(models, config); + ui.proj = ProjectionUI(models, config); ui.sidebar = LayersSidebar(models, config); ui.activeLayers = LayersActive(models, ui, config); ui.addModal = LayersModal(models, ui, config); @@ -243,10 +243,10 @@ window.onload = () => { ui.timeline.input = TimelineInput(models, config, ui); if (config.features.animation) { ui.anim = {}; - ui.anim.rangeselect = AnimRangeselect(models, config, ui); // SETS STATE: NEEDS TO LOAD BEFORE ANIMATION WIDGET - ui.anim.widget = AnimWidget(models, config, ui); - ui.anim.gif = AnimGIF(models, config, ui); - ui.anim.ui = AnimUI(models, ui); + ui.anim.rangeselect = AnimationRangeselect(models, config, ui); // SETS STATE: NEEDS TO LOAD BEFORE ANIMATION WIDGET + ui.anim.widget = AnimationWidget(models, config, ui); + ui.anim.gif = AnimationGIF(models, config, ui); + ui.anim.ui = AnimationUI(models, ui); } ui.dateLabel = DateLabel(models); From d4112e4e518c1c0a2c7470f52c71d4ccd8c3901f Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 31 Oct 2017 15:58:59 -0400 Subject: [PATCH 010/242] Rename natural events vars for clarity --- web/js/wv.main.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web/js/wv.main.js b/web/js/wv.main.js index ecfff21bfb..8dfecb8b8c 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -51,9 +51,9 @@ import dataParser from './data/data'; import DataModel from './data/data.model'; import DataUI from './data/data.ui'; // NaturalEvents -import EventsModel from './naturalEvents/naturalEvents.model'; -import EventsUI from './naturalEvents/naturalEvents.ui'; -import EventsRequest from './naturalEvents/naturalEvents.request'; +import NaturalEventsModel from './naturalEvents/naturalEvents.model'; +import NaturalEventsUI from './naturalEvents/naturalEvents.ui'; +import NaturalEventsRequest from './naturalEvents/naturalEvents.request'; // Image import ImageRubberband from './image/image.rubberband'; import ImagePanel from './image/image.panel'; @@ -214,7 +214,7 @@ window.onload = () => { models.link.register(models.data); } if (config.features.naturalEvents) { - models.naturalEvents = EventsModel(models, config, ui); + models.naturalEvents = NaturalEventsModel(models, config, ui); models.link.register(models.naturalEvents); } // HACK: Map needs permalink state loaded before starting. But @@ -266,7 +266,7 @@ window.onload = () => { ui.data.render(); } if (config.features.naturalEvents) { - ui.naturalEvents = EventsUI(models, ui, config, EventsRequest(models, ui, config)); + ui.naturalEvents = NaturalEventsUI(models, ui, config, NaturalEventsRequest(models, ui, config)); } ui.link = LinkUI(models, config); ui.tour = Tour(models, ui, config); From 6af35d9d8c8fa7ee3639824406f2f83ca97cbbc6 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Wed, 1 Nov 2017 12:46:48 -0400 Subject: [PATCH 011/242] Make preliminary build task work * Use updated preset * Include jquery as dependency * Correct import statements * Stub index.js * Remove globals from linter rules * White space fixes --- .eslintrc | 9 - package-lock.json | 443 ++++++++++++++++++++++++++++++++++------------ package.json | 5 +- tasks/build-js | 20 +-- web/js/index.js | 1 + web/js/stub.js | 8 + web/js/wv.main.js | 10 +- 7 files changed, 348 insertions(+), 148 deletions(-) create mode 100644 web/js/index.js create mode 100644 web/js/stub.js diff --git a/.eslintrc b/.eslintrc index 4edb5dddef..2c87370844 100644 --- a/.eslintrc +++ b/.eslintrc @@ -52,15 +52,6 @@ "standard/computed-property-even-spacing": "warn", "wrap-iife": "warn", "new-cap": "warn" - }, - "globals": { - "wv": true, - "wvx": true, - "WVC": true, - "buster": true, - "jQuery": true, - "$": true, - "_": true } } ] diff --git a/package-lock.json b/package-lock.json index 7c90688daf..6fd5a2d622 100644 --- a/package-lock.json +++ b/package-lock.json @@ -620,6 +620,17 @@ } } }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", @@ -652,6 +663,17 @@ } } }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", @@ -714,6 +736,19 @@ } } }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", @@ -756,6 +791,35 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", @@ -998,6 +1062,17 @@ "regexpu-core": "2.0.0" } }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", @@ -1027,13 +1102,15 @@ "regenerator-runtime": "0.9.6" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoping": "6.26.0", @@ -1056,7 +1133,19 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.6.1", + "invariant": "2.2.2", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } } }, "babel-register": { @@ -5170,13 +5259,15 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "optional": true, "requires": { @@ -5186,18 +5277,21 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.1.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -5207,42 +5301,49 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { @@ -5251,7 +5352,8 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { "inherits": "2.0.3" @@ -5259,7 +5361,8 @@ }, "boom": { "version": "2.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.16.3" @@ -5267,7 +5370,8 @@ }, "brace-expansion": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { "balanced-match": "0.4.2", @@ -5276,29 +5380,34 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, "optional": true }, "co": { "version": "4.6.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -5306,22 +5415,26 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "optional": true, "requires": { @@ -5330,7 +5443,8 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, "requires": { @@ -5339,7 +5453,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5347,7 +5462,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "optional": true, "requires": { @@ -5356,24 +5472,28 @@ }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { @@ -5382,24 +5502,28 @@ }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "optional": true, "requires": { @@ -5410,12 +5534,14 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -5426,7 +5552,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "optional": true, "requires": { @@ -5437,7 +5564,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -5453,7 +5581,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "optional": true, "requires": { @@ -5462,7 +5591,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5470,7 +5600,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5483,18 +5614,21 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "har-schema": { "version": "1.0.5", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "optional": true, "requires": { @@ -5504,13 +5638,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "optional": true, "requires": { @@ -5522,12 +5658,14 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "optional": true, "requires": { @@ -5538,7 +5676,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -5547,18 +5686,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.4", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -5566,24 +5708,28 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true, "requires": { @@ -5592,19 +5738,22 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "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", - "bundled": true, + "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, "requires": { @@ -5613,19 +5762,22 @@ }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "optional": true, "requires": { @@ -5637,7 +5789,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5645,12 +5798,14 @@ }, "mime-db": { "version": "1.27.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { "mime-db": "1.27.0" @@ -5658,7 +5813,8 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -5666,12 +5822,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -5679,7 +5837,8 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, @@ -5692,7 +5851,8 @@ }, "node-pre-gyp": { "version": "0.6.36", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", "dev": true, "optional": true, "requires": { @@ -5709,7 +5869,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -5719,7 +5880,8 @@ }, "npmlog": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "dev": true, "optional": true, "requires": { @@ -5731,24 +5893,28 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -5756,19 +5922,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, "optional": true, "requires": { @@ -5778,35 +5947,41 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "optional": true, "requires": { @@ -5818,7 +5993,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -5826,7 +6002,8 @@ }, "readable-stream": { "version": "2.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -5840,7 +6017,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "optional": true, "requires": { @@ -5870,7 +6048,8 @@ }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { "glob": "7.1.2" @@ -5878,30 +6057,35 @@ }, "safe-buffer": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "semver": { "version": "5.3.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "optional": true, "requires": { @@ -5910,7 +6094,8 @@ }, "sshpk": { "version": "1.13.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "optional": true, "requires": { @@ -5927,7 +6112,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5935,7 +6121,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -5945,7 +6132,8 @@ }, "string_decoder": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -5953,13 +6141,15 @@ }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -5967,13 +6157,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { "block-stream": "0.0.9", @@ -5983,7 +6175,8 @@ }, "tar-pack": { "version": "3.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "dev": true, "optional": true, "requires": { @@ -5999,7 +6192,8 @@ }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "optional": true, "requires": { @@ -6008,7 +6202,8 @@ }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "optional": true, "requires": { @@ -6017,30 +6212,35 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "optional": true, "requires": { @@ -6049,7 +6249,8 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -6058,7 +6259,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } @@ -8247,6 +8449,11 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "jquery": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" + }, "js-base64": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", diff --git a/package.json b/package.json index 0b5684c4bd..8d54e76e1e 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "devDependencies": { "autoprefixer": "7.1.1", "babel-core": "^6.26.0", - "babel-preset-es2015": "^6.24.1", - "babelify": "^7.3.0", "babel-eslint": "^7.2.3", + "babel-preset-env": "^1.6.1", + "babelify": "^7.3.0", "browserify": "^14.4.0", "browserstack-capabilities": "^0.4.0", "browserstack-local": "^1.3.0", @@ -81,6 +81,7 @@ "gifshot": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", "isotope-layout": "3.0.x", "isotope-packery": "2.x.x", + "jquery": "^2.1.4", "lodash": "4.15.0", "openlayers": "4.3.1", "perfect-scrollbar": "0.7.x", diff --git a/tasks/build-js b/tasks/build-js index 534d88cb57..2505ad18e1 100644 --- a/tasks/build-js +++ b/tasks/build-js @@ -1,12 +1,12 @@ #!/usr/bin/env node // template from https://github.com/petesaia/node-native-task-runner/blob/master/bin/build-js -//const UglifyJS = require('uglify-js'); +// const UglifyJS = require('uglify-js'); const fs = require('fs'); const browserify = require('browserify'); const watchify = require('watchify'); -const entry = 'wv.main.js'; +const entry = 'index.js'; const output = './build/js.js'; const outputMin = './build/js.mins.js'; @@ -15,20 +15,12 @@ const outputMin = './build/js.mins.js'; process.env.NODE_ENV = 'development'; const b = browserify(entry, { - debug: true, - sourceMaps: true, + debug: true, // Makes bundle size larger cache: {}, packageCache: {}, plugin: [process.env.NODE_ENV !== 'production' ? watchify : null], basedir: './web/js' -}) - .transform('babelify', { - plugins: [ ], - presets: [ - 'es2015', - 'react' - ] - }); +}).transform('babelify', { presets: ['env'] }); function bundle() { const stream = fs.createWriteStream(output); @@ -46,7 +38,7 @@ function bundle() { console.error(err); this.emit('end'); }) - .pipe(stream) + .pipe(stream); stream.on('finish', function() { if (process.env.NODE_ENV === 'production') { @@ -75,4 +67,4 @@ function bundle() { bundle(); -b.on('update', bundle); \ No newline at end of file +b.on('update', bundle); diff --git a/web/js/index.js b/web/js/index.js new file mode 100644 index 0000000000..b5291dde1c --- /dev/null +++ b/web/js/index.js @@ -0,0 +1 @@ +export { default as stub } from './stub'; diff --git a/web/js/stub.js b/web/js/stub.js new file mode 100644 index 0000000000..3f858af9dc --- /dev/null +++ b/web/js/stub.js @@ -0,0 +1,8 @@ +/* This file is just a stub to test the browserify build task */ + +import { jQuery as $ } from 'jquery'; +import { GA } from 'worldview-components'; + +export default function () { + console.log($, GA); +}; diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 8dfecb8b8c..45ff3591a9 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,6 +1,6 @@ // External Dependencies -import $ from 'jquery'; -import _ from 'lodash'; +import { jQuery as $ } from 'jquery'; +import { each } from 'lodash'; import {GA as googleAnalytics} from 'worldview-components'; // Utils @@ -119,7 +119,7 @@ window.onload = () => { // Load any additional scripts as needed if (config.scripts) { - _.each(config.scripts, function(script) { + each(config.scripts, function(script) { $.getScript(script); }); } @@ -139,7 +139,7 @@ window.onload = () => { if (config.features.animation) { parsers.push(animationParser); } - _.each(parsers, function(parser) { + each(parsers, function(parser) { parser(state, errors, config); }); requirements = [ @@ -346,7 +346,7 @@ window.onload = () => { var errorReport = function() { var layersRemoved = 0; - _.each(errors, function(error) { + each(errors, function(error) { var cause = (error.cause) ? ': ' + error.cause : ''; util.warn(error.message + cause); if (error.layerRemoved) { From 5d7b15e3ecb0f7c7e838dc7a035ee196096f7e86 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Wed, 1 Nov 2017 13:00:45 -0400 Subject: [PATCH 012/242] Fix linting errors --- Gruntfile.js | 2 +- test/util/wv.util-test.js | 64 +++++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 42501983b7..dd61d22316 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -45,7 +45,7 @@ module.exports = function(grunt) { var hasOptionsDirectory = fs.existsSync('options'); var optionsPath = hasOptionsDirectory ? 'options' : 'node_modules/worldview-options-eosdis'; - var options = hasOptionsDirectory ? grunt.file.readJSON("options/package.json") : grunt.file.readJSON("node_modules/worldview-options-eosdis/package.json"); + var options = hasOptionsDirectory ? grunt.file.readJSON('options/package.json') : grunt.file.readJSON('node_modules/worldview-options-eosdis/package.json'); // Lists of JavaScript and CSS files to include and in the correct // order diff --git a/test/util/wv.util-test.js b/test/util/wv.util-test.js index 2ea2fe9d01..3e69f928a4 100644 --- a/test/util/wv.util-test.js +++ b/test/util/wv.util-test.js @@ -56,19 +56,19 @@ buster.testCase('wv.util', (function () { }; self['parseTimestampUTC: Parses valid timestamp'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15, 11, 22, 33)); + var answer = new Date(Date.UTC(2013, 2, 15, 11, 22, 33)); var result = wv.util.parseTimestampUTC('2013-03-15T11:22:33Z'); buster.assert.equals(result.getTime(), answer.getTime()); }; self['parseTimestampUTC: Parses valid timestamp without Z'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15, 11, 22, 33)); + var answer = new Date(Date.UTC(2013, 2, 15, 11, 22, 33)); var result = wv.util.parseTimestampUTC('2013-03-15T11:22:33'); buster.assert.equals(result.getTime(), answer.getTime()); }; self['parseDateUTC: Parses valid date'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15)); + var answer = new Date(Date.UTC(2013, 2, 15)); var result = wv.util.parseDateUTC('2013-03-15'); buster.assert.equals(result.getTime(), answer.getTime()); }; @@ -109,7 +109,7 @@ buster.testCase('wv.util', (function () { }; self['clearTimeUTC: Time set to UTC midnight'] = function () { - var d = new Date(2013, 02, 15, 12, 34, 56, 789); + var d = new Date(2013, 2, 15, 12, 34, 56, 789); wv.util.clearTimeUTC(d); buster.assert.equals(2013, d.getUTCFullYear()); buster.assert.equals(2, d.getUTCMonth()); @@ -153,37 +153,37 @@ buster.testCase('wv.util', (function () { }; self['dateAdd: Adds days'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'day', 4); buster.assert.equals(result.getDate(), 5); }; self['dateAdd: Adds months'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'month', 4); buster.assert.equals(result.getMonth(), 5); }; self['dateAdd: Adds years'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'year', 4); buster.assert.equals(result.getFullYear(), 2015); }; self['dateAdd: Throws error on invalid interval'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); buster.assert.exception(function () { wv.util.dateAdd(d, 'foo', 5); }); }; self['daysInMonth: Feb, non-leap'] = function () { - var d = new Date(2015, 01, 15); + var d = new Date(2015, 1, 15); buster.assert.equals(wv.util.daysInMonth(d), 28); }; self['daysInMonth: Feb, leap'] = function () { - var d = new Date(2016, 01, 15); + var d = new Date(2016, 1, 15); buster.assert.equals(wv.util.daysInMonth(d), 29); }; @@ -212,27 +212,27 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Day up'] = function () { - var d = new Date(Date.UTC(2014, 01, 15)); + var d = new Date(Date.UTC(2014, 1, 15)); d = wv.util.rollDate(d, 'day', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 16))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 16))); }; self['rollDate: Day up, roll'] = function () { - var d = new Date(Date.UTC(2014, 01, 28)); + var d = new Date(Date.UTC(2014, 1, 28)); d = wv.util.rollDate(d, 'day', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 1))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 1))); }; self['rollDate: Day down'] = function () { - var d = new Date(Date.UTC(2014, 01, 15)); + var d = new Date(Date.UTC(2014, 1, 15)); d = wv.util.rollDate(d, 'day', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 14))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 14))); }; self['rollDate: Day down, roll'] = function () { - var d = new Date(Date.UTC(2014, 01, 01)); + var d = new Date(Date.UTC(2014, 1, 1)); d = wv.util.rollDate(d, 'day', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 28))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 28))); }; self['rollDate: Day up, roll over max'] = function () { @@ -264,9 +264,9 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Month up'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'month', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 06, 15))); + buster.assert.equals(d, new Date(Date.UTC(2014, 6, 15))); }; self['rollDate: Month up, roll'] = function () { @@ -276,9 +276,9 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Month down'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'month', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 04, 15))); + buster.assert.equals(d, new Date(Date.UTC(2014, 4, 15))); }; self['rollDate: Month down, roll'] = function () { @@ -336,31 +336,31 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Year up'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'year', 1); - buster.assert.equals(d, new Date(Date.UTC(2015, 05, 15))); + buster.assert.equals(d, new Date(Date.UTC(2015, 5, 15))); }; self['rollDate: Year down'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'year', -1); - buster.assert.equals(d, new Date(Date.UTC(2013, 05, 15))); + buster.assert.equals(d, new Date(Date.UTC(2013, 5, 15))); }; self['rollDate: Year up, roll over max'] = function () { - var minDate = new Date(Date.UTC(2000, 03, 12)); - var maxDate = new Date(Date.UTC(2015, 06, 16)); + var minDate = new Date(Date.UTC(2000, 3, 12)); + var maxDate = new Date(Date.UTC(2015, 6, 16)); var d = new Date(Date.UTC(2015, 0, 1)); d = wv.util.rollDate(d, 'year', 1, minDate, maxDate); - buster.assert.equals(d, new Date(Date.UTC(2000, 03, 12))); + buster.assert.equals(d, new Date(Date.UTC(2000, 3, 12))); }; self['rollDate: Year down, roll over min'] = function () { - var minDate = new Date(Date.UTC(2000, 03, 12)); - var maxDate = new Date(Date.UTC(2015, 06, 16)); + var minDate = new Date(Date.UTC(2000, 3, 12)); + var maxDate = new Date(Date.UTC(2015, 6, 16)); var d = new Date(Date.UTC(2000, 8, 1)); d = wv.util.rollDate(d, 'year', -1, minDate, maxDate); - buster.assert.equals(d, new Date(Date.UTC(2015, 06, 16))); + buster.assert.equals(d, new Date(Date.UTC(2015, 6, 16))); }; self['formatDMS: zero'] = function () { From 89f4b82ee19ff9164f9a8df3a36a57e7afc0a01d Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 1 Nov 2017 15:07:54 -0400 Subject: [PATCH 013/242] Converted link pages to use imports. --- web/js/link/wv.link.model.js | 9 +++++---- web/js/link/wv.link.ui.js | 36 +++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/web/js/link/wv.link.model.js b/web/js/link/wv.link.model.js index da4b7cddaf..6e2aa433c7 100644 --- a/web/js/link/wv.link.model.js +++ b/web/js/link/wv.link.model.js @@ -1,7 +1,8 @@ -var wv = wv || {}; -wv.link = wv.link || {}; +import $ from 'jquery'; +import _ from 'lodash'; +import util from './util/util'; -wv.link.model = wv.link.model || function (config) { +export function linkModel(config) { var self = {}; var DEBUG_SHORTEN_LINK = 'http://go.nasa.gov/1iKIZ4j'; var ENCODING_EXCEPTIONS = [ @@ -21,7 +22,7 @@ wv.link.model = wv.link.model || function (config) { var mock = ''; var components = []; - self.events = wv.util.events(); + self.events = util.events(); var init = function () { if (config && config.parameters && config.parameters.shorten) { diff --git a/web/js/link/wv.link.ui.js b/web/js/link/wv.link.ui.js index ef119cfe4e..b709744f7a 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/wv.link.ui.js @@ -1,7 +1,13 @@ -var wv = wv || {}; -wv.link = wv.link || {}; +import $ from 'jquery'; +import _ from 'lodash'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import Clipboard from 'clipboard'; +import {GA as googleAnalytics} from 'worldview-components'; +import util from './util/util'; +import wvui from './ui/ui'; -wv.link.ui = wv.link.ui || function (models, config) { +export function linkUI(models, config) { var self = {}; var id = 'wv-link-button'; var selector = '#' + id; @@ -29,11 +35,11 @@ wv.link.ui = wv.link.ui || function (models, config) { .click(function () { var checked = $('#wv-link-button-check') .prop('checked'); - WVC.GA.event('Link', 'Click', 'Share link Button'); + googleAnalytics.event('Link', 'Click', 'Share link Button'); if (checked) { self.show(); } else { - wv.ui.closeDialog(); + wvui.closeDialog(); } }); models.link.events.on('update', replaceHistoryState); @@ -41,7 +47,7 @@ wv.link.ui = wv.link.ui || function (models, config) { // Calls toQueryString to fetch updated state and returns URL var replaceHistoryState = _.throttle(function () { - if (wv.util.browser.history) { + if (util.browser.history) { window.history.replaceState('', '@OFFICIAL_NAME@', '?' + models.link.toQueryString()); } }, 2000, { @@ -118,7 +124,7 @@ wv.link.ui = wv.link.ui || function (models, config) { }; self.show = function () { - var $dialog = wv.ui.getDialog(); + var $dialog = wvui.getDialog(); var item = '
' + '
' + '' + @@ -135,11 +141,11 @@ wv.link.ui = wv.link.ui || function (models, config) { item += '
'; var dialogWidth = '300'; - if (wv.util.browser.small) { + if (util.browser.small) { dialogWidth = '242'; } - Widget = self.initWidget(); + var Widget = self.initWidget(); // Render Dialog Box Content self.reactComponent = ReactDOM.render(Widget, $dialog[0]); @@ -182,14 +188,14 @@ wv.link.ui = wv.link.ui || function (models, config) { $button.button('refresh'); models.link.events.off('update', updateLink); }); - if (wv.util.browser.small) { - wv.ui.positionDialog($dialog, { + if (util.browser.small) { + wvui.positionDialog($dialog, { my: 'left top', at: 'left+58 bottom+5', of: '#wv-toolbar' }); } else { - wv.ui.positionDialog($dialog, { + wvui.positionDialog($dialog, { my: 'left top', at: 'left bottom+5', of: $label @@ -209,7 +215,7 @@ wv.link.ui = wv.link.ui || function (models, config) { .prop('checked'); if (checked) { var promise = models.link.shorten(); - WVC.GA.event('Link', 'Check', 'Shorten'); + googleAnalytics.event('Link', 'Check', 'Shorten'); $('#permalink_content') .val('Please wait...'); promise.done(function (result) { @@ -226,7 +232,7 @@ wv.link.ui = wv.link.ui || function (models, config) { } else { $('#permalink_content') .val(models.link.get()); - WVC.GA.event('Link', 'Check', 'Lengthen'); + googleAnalytics.event('Link', 'Check', 'Lengthen'); } $('#permalink_content') .focus(); @@ -237,7 +243,7 @@ wv.link.ui = wv.link.ui || function (models, config) { var error = function () { console.warn('Unable to shorten URL'); console.warn.apply(console, arguments); - wv.ui.notify('Unable to shorten the permalink at this time. ' + + wvui.notify('Unable to shorten the permalink at this time. ' + 'Please try again later.'); }; From a1f2676b810269f79ae1e44969ed4b415a53a2d0 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Wed, 1 Nov 2017 17:04:39 -0400 Subject: [PATCH 014/242] Fix jquery import --- web/js/wv.main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 45ff3591a9..51ecc6ef0f 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,5 +1,5 @@ // External Dependencies -import { jQuery as $ } from 'jquery'; +import $ from 'jquery'; import { each } from 'lodash'; import {GA as googleAnalytics} from 'worldview-components'; From 4d6f16a3ef0ca7effa46c610216ee8ed8e0cfbdf Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Wed, 1 Nov 2017 17:14:57 -0400 Subject: [PATCH 015/242] exported individual worker functions in wv.map.js --- .eslintrc | 9 - web/js/map/wv.map.js | 552 ++++++++++++++++++++----------------------- web/js/wv.main.js | 2 +- 3 files changed, 263 insertions(+), 300 deletions(-) diff --git a/.eslintrc b/.eslintrc index 4edb5dddef..2c87370844 100644 --- a/.eslintrc +++ b/.eslintrc @@ -52,15 +52,6 @@ "standard/computed-property-even-spacing": "warn", "wrap-iife": "warn", "new-cap": "warn" - }, - "globals": { - "wv": true, - "wvx": true, - "WVC": true, - "buster": true, - "jQuery": true, - "$": true, - "_": true } } ] diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index ccf4f87db4..55e5d4c7a5 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,318 +1,290 @@ -var wv = wv || {}; -wv.map = wv.map || {}; /* - * @Class + * Checks to see if an extents string is found. If it exist + * then it is changed from a string to an array which is then + * made a global object. + * + * @method parse + * @static + * + * @param {string} extents string + * + * @param {obj} Error + * + * @returns {void} + * + * @todo would benefit by returning the array instead of attaching it to a global var */ -wv.map = (function (self) { - self.CRS_WGS_84 = 'EPSG:4326'; - - self.CRS_WGS_84_QUERY_EXTENT = [-180, -60, 180, 60]; - - /* - * Checks to see if an extents string is found. If it exist - * then it is changed from a string to an array which is then - * made a global object. - * - * @method parse - * @static - * - * @param {string} extents string - * - * @param {obj} Error - * - * @returns {void} - * - * @todo would benefit by returning the array instead of attaching it to a global var - */ - self.parse = function (state, errors) { - // 1.1 support - if (state.map) { - state.v = state.map; - delete state.map; - } - if (state.v) { - var extent = _.map(state.v.split(','), function (str) { - return parseFloat(str); +export function parse(state, errors) { + // 1.1 support + if (state.map) { + state.v = state.map; + delete state.map; + } + if (state.v) { + var extent = _.map(state.v.split(','), function (str) { + return parseFloat(str); + }); + var valid = wv.map.isExtentValid(extent); + if (!valid) { + errors.push({ + message: 'Invalid extent: ' + state.v }); - var valid = wv.map.isExtentValid(extent); - if (!valid) { - errors.push({ - message: 'Invalid extent: ' + state.v - }); - delete state.v; - } else { - state.v = extent; - } + delete state.v; + } else { + state.v = extent; } - }; + } +}; - /** - * Determines if an exent object contains valid values. - * - * @method isExtentValid - * @static - * - * @param extent {OpenLayers.Bound} The extent to check. - * - * @return {boolean} False if any of the values is NaN, otherwise returns - * true. - */ - self.isExtentValid = function (extent) { - if (_.isUndefined(extent)) { +/** + * Determines if an exent object contains valid values. + * + * @method isExtentValid + * @static + * + * @param extent {OpenLayers.Bound} The extent to check. + * + * @return {boolean} False if any of the values is NaN, otherwise returns + * true. + */ +export function isExtentValid(extent) { + if (_.isUndefined(extent)) { + return false; + } + var valid = true; + if (extent.toArray) { + extent = extent.toArray(); + } + _.each(extent, function (value) { + if (isNaN(value)) { + valid = false; return false; } - var valid = true; - if (extent.toArray) { - extent = extent.toArray(); - } - _.each(extent, function (value) { - if (isNaN(value)) { - valid = false; - return false; - } - }); - return valid; - }; - - /** - * Scheduler used to render canvas tiles. - * - * @attribute TILE_SCHEDULER {Scheduler} - * @static - * @readOnly - */ - self.tileScheduler = _.once(function () { - if (wv.util.browser.webWorkers) { - return wv.map.palette.scheduler({ - script: 'js/map/wv.map.tileworker.js?v=' + wv.brand.BUILD_NONCE, - max: 4 - }); - } }); + return valid; +}; - /** - * Sets the opacity of a layer. Since the backbuffer can interfere with - * tile layers that have transparency, the transition effect is set to - * none if the opacity is not equal to one. - * - * @method setOpacity - * @static - * - * @param layer {OpenLayers.Layer} The layer to set the opacity - * @param opacity {float} A value from 0 (transparent) to 1 (opaque). - */ - self.setOpacity = function (layer, opacity) { - layer.setOpacity(opacity); - if (opacity === 1) { - var effect = layer.originalTransitionEffect || 'resize'; - layer.transitionEffect = effect; - } else { - layer.originalTransitionEffect = layer.transitionEffect; - layer.transitionEffect = 'none'; - } - }; +/** + * Sets the opacity of a layer. Since the backbuffer can interfere with + * tile layers that have transparency, the transition effect is set to + * none if the opacity is not equal to one. + * + * @method setOpacity + * @static + * + * @param layer {OpenLayers.Layer} The layer to set the opacity + * @param opacity {float} A value from 0 (transparent) to 1 (opaque). + */ +export function setOpacity(layer, opacity) { + layer.setOpacity(opacity); + if (opacity === 1) { + var effect = layer.originalTransitionEffect || 'resize'; + layer.transitionEffect = effect; + } else { + layer.originalTransitionEffect = layer.transitionEffect; + layer.transitionEffect = 'none'; + } +}; - /** - * Sets the visibility of a layer. If the layer is supposed to be not - * visible, this actually sets the opacity to zero. This allows the - * quick transition effects between days. - * - * @method setVisibility - * @static - * - * @param layer {OpenLayers.Layer} The layer to set the visibility. - * - * @param visible {boolean} True if the layer should be visible, otherwise - * false. - * - * @param opacity {float} The opacity that this layer should be if it - * is visible. A value from 0 (transparent) to 1 (opaque). - */ - self.setVisibility = function (layer, visible, opacity) { - if (layer.isControl) { - layer.setVisibility(visible); - } else { - var actualOpacity = (visible) ? opacity : 0; - layer.div.style.opacity = actualOpacity; - if (visible && opacity > 0 && !layer.getVisibility()) { - layer.setVisibility(true); - } +/** + * Sets the visibility of a layer. If the layer is supposed to be not + * visible, this actually sets the opacity to zero. This allows the + * quick transition effects between days. + * + * @method setVisibility + * @static + * + * @param layer {OpenLayers.Layer} The layer to set the visibility. + * + * @param visible {boolean} True if the layer should be visible, otherwise + * false. + * + * @param opacity {float} The opacity that this layer should be if it + * is visible. A value from 0 (transparent) to 1 (opaque). + */ +export function setVisibility(layer, visible, opacity) { + if (layer.isControl) { + layer.setVisibility(visible); + } else { + var actualOpacity = (visible) ? opacity : 0; + layer.div.style.opacity = actualOpacity; + if (visible && opacity > 0 && !layer.getVisibility()) { + layer.setVisibility(true); } - }; + } +}; - /** - * Gets the layer object by the name - * - * @method getLayerByName - * @static - * - * @param map {object} open layer map object - * - * @param name {string} name of layer object to return - * - * @return {obj} Layer object - * - */ - self.getLayerByName = function (map, name) { - var layers = map.getLayers() - .getArray(); - return _.find(layers, { - 'wvname': name - }); - }; +/** + * Gets the layer object by the name + * + * @method getLayerByName + * @static + * + * @param map {object} open layer map object + * + * @param name {string} name of layer object to return + * + * @return {obj} Layer object + * + */ +export function getLayerByName(map, name) { + var layers = map.getLayers() + .getArray(); + return _.find(layers, { + 'wvname': name + }); +}; - /** - * Checks if a polygon's coordinate length is within a set distance - * - * @method isPolygonValid - * @static - * - * @param polygon {object} Geometry of a polygon - * - * @param maxDistance {number} max length of a polygon - * - * @return {boolean} - * - * @todo relocate this utility function - * - */ - self.isPolygonValid = function (polygon, maxDistance) { - var outerRing = polygon.getLinearRing(0); - var points = outerRing.getCoordinates(); - for (var i = 0; i < points.length - 1; i++) { - var p1 = points[i]; - var p2 = points[i + 1]; - if (Math.abs(p2[0] - p1[0]) > maxDistance) { - return false; - } +/** + * Checks if a polygon's coordinate length is within a set distance + * + * @method isPolygonValid + * @static + * + * @param polygon {object} Geometry of a polygon + * + * @param maxDistance {number} max length of a polygon + * + * @return {boolean} + * + * @todo relocate this utility function + * + */ +export function isPolygonValid(polygon, maxDistance) { + var outerRing = polygon.getLinearRing(0); + var points = outerRing.getCoordinates(); + for (var i = 0; i < points.length - 1; i++) { + var p1 = points[i]; + var p2 = points[i + 1]; + if (Math.abs(p2[0] - p1[0]) > maxDistance) { + return false; } - return true; - }; + } + return true; +}; - /** - * Switches the x coordinate values of Polygon - * exterior linestring to in the right coordinate value. - * -- Reason -- - * when the coordinate of the linestring - * crosses the antimeridian(180 degrees away from the - * prime meridian), the value of x goes from 180 to - * -180. It needs to be 181. - * - * @method adjustAntiMeridian - * @static - * - * @param polygon {object} GeoJSON poylgon geomtry Object - * - * @param adjustSign {number} a value of 1 or -1 - * - * @return {obj} Adjusted GeoJSON poylgon geomtry Object - * - * @todo relocate this utility function - */ - self.adjustAntiMeridian = function (polygon, adjustSign) { - var outerRing = polygon.getLinearRing(0); - var points = outerRing.getCoordinates() - .slice(); +/** + * Switches the x coordinate values of Polygon + * exterior linestring to in the right coordinate value. + * -- Reason -- + * when the coordinate of the linestring + * crosses the antimeridian(180 degrees away from the + * prime meridian), the value of x goes from 180 to + * -180. It needs to be 181. + * + * @method adjustAntiMeridian + * @static + * + * @param polygon {object} GeoJSON poylgon geomtry Object + * + * @param adjustSign {number} a value of 1 or -1 + * + * @return {obj} Adjusted GeoJSON poylgon geomtry Object + * + * @todo relocate this utility function + */ +export function adjustAntiMeridian(polygon, adjustSign) { + var outerRing = polygon.getLinearRing(0); + var points = outerRing.getCoordinates() + .slice(); - for (var i = 0; i < points.length; i++) { - if (adjustSign > 0 && points[i][0] < 0) { - points[i] = [points[i][0] + 360, points[i][1]]; - } - if (adjustSign < 0 && points[i][0] > 0) { - points[i] = [points[i][0] - 360, points[i][1]]; - } + for (var i = 0; i < points.length; i++) { + if (adjustSign > 0 && points[i][0] < 0) { + points[i] = [points[i][0] + 360, points[i][1]]; } - return new ol.geom.Polygon([points]); - }; + if (adjustSign < 0 && points[i][0] > 0) { + points[i] = [points[i][0] - 360, points[i][1]]; + } + } + return new ol.geom.Polygon([points]); +}; - /** - * Gets distance between two (x,y) points - * - * @method distance2D - * @static - * - * @param p1 {number} First Point - * - * @param p2 {number} second point - * - * @return {number} length of distance - * - * @todo relocate this utility function - * - */ - self.distance2D = function (p1, p2) { - return Math.sqrt(Math.pow(p1[0] - p2[0], 2) + - (Math.pow(p1[1] - p2[1], 2))); - }; +/** + * Gets distance between two (x,y) points + * + * @method distance2D + * @static + * + * @param p1 {number} First Point + * + * @param p2 {number} second point + * + * @return {number} length of distance + * + * @todo relocate this utility function + * + */ +export function distance2D(p1, p2) { + return Math.sqrt(Math.pow(p1[0] - p2[0], 2) + + (Math.pow(p1[1] - p2[1], 2))); +}; - /** - * Gets distance between two values on the same axis - * - * @method distanceX - * @static - * - * @param p1 {number} First Point - * - * @param p1 {number} Second Point - * - * @return {number} distance between value one - * - * @todo relocate this utility function - * - */ - self.distanceX = function (p1, p2) { - return Math.abs(p2 - p1); - }; +/** + * Gets distance between two values on the same axis + * + * @method distanceX + * @static + * + * @param p1 {number} First Point + * + * @param p1 {number} Second Point + * + * @return {number} distance between value one + * + * @todo relocate this utility function + * + */ +export function distanceX(p1, p2) { + return Math.abs(p2 - p1); +}; - /** - * Gets distance between two values on the same axis - * - * @method distanceX - * @static - * - * @param p1 {number} First Point - * - * @param p1 {number} Second Point - * - * @return {number} distance between value one - * - * @todo relocate this utility function - * - */ - self.interpolate2D = function (p1, p2, amount) { - var distX = p2[0] - p1[0]; - var distY = p2[1] - p1[1]; +/** + * Gets distance between two values on the same axis + * + * @method distanceX + * @static + * + * @param p1 {number} First Point + * + * @param p1 {number} Second Point + * + * @return {number} distance between value one + * + * @todo relocate this utility function + * + */ +export function interpolate2D(p1, p2, amount) { + var distX = p2[0] - p1[0]; + var distY = p2[1] - p1[1]; - var interpX = p1[0] + (distX * amount); - var interpY = p1[1] + (distY * amount); + var interpX = p1[0] + (distX * amount); + var interpY = p1[1] + (distY * amount); - return [interpX, interpY]; - }; + return [interpX, interpY]; +}; - /** - * If the geometry has a multipolygon list. This method returns - * a single multipolygon list object - * - * @method toPolys - * @static - * - * @param geom {object} GeoJSON geomtry Object - * - * @return {object} GeoJSON multipolygon list object - * - * @todo relocate this utility function - * - */ - self.toPolys = function (geom) { - if (geom.getPolygons) { - return geom.getPolygons(); - } - return [geom]; - }; +/** + * If the geometry has a multipolygon list. This method returns + * a single multipolygon list object + * + * @method toPolys + * @static + * + * @param geom {object} GeoJSON geomtry Object + * + * @return {object} GeoJSON multipolygon list object + * + * @todo relocate this utility function + * + */ +export function toPolys(geom) { + if (geom.getPolygons) { + return geom.getPolygons(); + } + return [geom]; +}; - return self; -})(wv.map || {}); /* FIXME OL3 wv.map.mock = function() { diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 8dfecb8b8c..cac38829c9 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -27,7 +27,7 @@ import LayersModal from './layers/layers.modal'; import LayersSidebar from './layers/layers.sidebar'; import LayersActive from './layers/layers.active'; // Map -import {mapParser} from './map/map'; +import {parse as mapParser} from './map/map'; import MapModel from './map/map.model'; import MapUI from './map/map.ui'; import MapRotate from './map/map.rotate'; From 80985adfde09839dc56f60557ec19e1feba1bf90 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 1 Nov 2017 15:07:54 -0400 Subject: [PATCH 016/242] Converted link pages to use imports. --- web/js/link/wv.link.model.js | 9 +++++---- web/js/link/wv.link.ui.js | 36 +++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/web/js/link/wv.link.model.js b/web/js/link/wv.link.model.js index da4b7cddaf..6e2aa433c7 100644 --- a/web/js/link/wv.link.model.js +++ b/web/js/link/wv.link.model.js @@ -1,7 +1,8 @@ -var wv = wv || {}; -wv.link = wv.link || {}; +import $ from 'jquery'; +import _ from 'lodash'; +import util from './util/util'; -wv.link.model = wv.link.model || function (config) { +export function linkModel(config) { var self = {}; var DEBUG_SHORTEN_LINK = 'http://go.nasa.gov/1iKIZ4j'; var ENCODING_EXCEPTIONS = [ @@ -21,7 +22,7 @@ wv.link.model = wv.link.model || function (config) { var mock = ''; var components = []; - self.events = wv.util.events(); + self.events = util.events(); var init = function () { if (config && config.parameters && config.parameters.shorten) { diff --git a/web/js/link/wv.link.ui.js b/web/js/link/wv.link.ui.js index ef119cfe4e..b709744f7a 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/wv.link.ui.js @@ -1,7 +1,13 @@ -var wv = wv || {}; -wv.link = wv.link || {}; +import $ from 'jquery'; +import _ from 'lodash'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import Clipboard from 'clipboard'; +import {GA as googleAnalytics} from 'worldview-components'; +import util from './util/util'; +import wvui from './ui/ui'; -wv.link.ui = wv.link.ui || function (models, config) { +export function linkUI(models, config) { var self = {}; var id = 'wv-link-button'; var selector = '#' + id; @@ -29,11 +35,11 @@ wv.link.ui = wv.link.ui || function (models, config) { .click(function () { var checked = $('#wv-link-button-check') .prop('checked'); - WVC.GA.event('Link', 'Click', 'Share link Button'); + googleAnalytics.event('Link', 'Click', 'Share link Button'); if (checked) { self.show(); } else { - wv.ui.closeDialog(); + wvui.closeDialog(); } }); models.link.events.on('update', replaceHistoryState); @@ -41,7 +47,7 @@ wv.link.ui = wv.link.ui || function (models, config) { // Calls toQueryString to fetch updated state and returns URL var replaceHistoryState = _.throttle(function () { - if (wv.util.browser.history) { + if (util.browser.history) { window.history.replaceState('', '@OFFICIAL_NAME@', '?' + models.link.toQueryString()); } }, 2000, { @@ -118,7 +124,7 @@ wv.link.ui = wv.link.ui || function (models, config) { }; self.show = function () { - var $dialog = wv.ui.getDialog(); + var $dialog = wvui.getDialog(); var item = '
' + '
' + '' + @@ -135,11 +141,11 @@ wv.link.ui = wv.link.ui || function (models, config) { item += '
'; var dialogWidth = '300'; - if (wv.util.browser.small) { + if (util.browser.small) { dialogWidth = '242'; } - Widget = self.initWidget(); + var Widget = self.initWidget(); // Render Dialog Box Content self.reactComponent = ReactDOM.render(Widget, $dialog[0]); @@ -182,14 +188,14 @@ wv.link.ui = wv.link.ui || function (models, config) { $button.button('refresh'); models.link.events.off('update', updateLink); }); - if (wv.util.browser.small) { - wv.ui.positionDialog($dialog, { + if (util.browser.small) { + wvui.positionDialog($dialog, { my: 'left top', at: 'left+58 bottom+5', of: '#wv-toolbar' }); } else { - wv.ui.positionDialog($dialog, { + wvui.positionDialog($dialog, { my: 'left top', at: 'left bottom+5', of: $label @@ -209,7 +215,7 @@ wv.link.ui = wv.link.ui || function (models, config) { .prop('checked'); if (checked) { var promise = models.link.shorten(); - WVC.GA.event('Link', 'Check', 'Shorten'); + googleAnalytics.event('Link', 'Check', 'Shorten'); $('#permalink_content') .val('Please wait...'); promise.done(function (result) { @@ -226,7 +232,7 @@ wv.link.ui = wv.link.ui || function (models, config) { } else { $('#permalink_content') .val(models.link.get()); - WVC.GA.event('Link', 'Check', 'Lengthen'); + googleAnalytics.event('Link', 'Check', 'Lengthen'); } $('#permalink_content') .focus(); @@ -237,7 +243,7 @@ wv.link.ui = wv.link.ui || function (models, config) { var error = function () { console.warn('Unable to shorten URL'); console.warn.apply(console, arguments); - wv.ui.notify('Unable to shorten the permalink at this time. ' + + wvui.notify('Unable to shorten the permalink at this time. ' + 'Please try again later.'); }; From 10d62a7c9db8f81004f5cbfb17b5dcafad4e7e45 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 08:45:28 -0400 Subject: [PATCH 017/242] Imported Share from wvc --- web/js/link/wv.link.ui.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/js/link/wv.link.ui.js b/web/js/link/wv.link.ui.js index b709744f7a..8e251ac3e5 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/wv.link.ui.js @@ -3,7 +3,7 @@ import _ from 'lodash'; import React from 'react'; import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; -import {GA as googleAnalytics} from 'worldview-components'; +import Share, {GA as googleAnalytics} from 'worldview-components'; import util from './util/util'; import wvui from './ui/ui'; @@ -12,7 +12,7 @@ export function linkUI(models, config) { var id = 'wv-link-button'; var selector = '#' + id; var $button, $label; - var widgetFactory = React.createFactory(WVC.Share); + var widgetFactory = React.createFactory(Share); var clipboard = new Clipboard('.copy-btn'); var init = function () { @@ -145,7 +145,7 @@ export function linkUI(models, config) { dialogWidth = '242'; } - var Widget = self.initWidget(); + Widget = self.initWidget(); // Render Dialog Box Content self.reactComponent = ReactDOM.render(Widget, $dialog[0]); From 6571a768264f5e8e945c24722829c89715629ac0 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 08:50:26 -0400 Subject: [PATCH 018/242] Removed var from Widget --- web/js/link/wv.link.ui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/link/wv.link.ui.js b/web/js/link/wv.link.ui.js index 53af0b89a7..8e251ac3e5 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/wv.link.ui.js @@ -145,7 +145,7 @@ export function linkUI(models, config) { dialogWidth = '242'; } - var Widget = self.initWidget(); + Widget = self.initWidget(); // Render Dialog Box Content self.reactComponent = ReactDOM.render(Widget, $dialog[0]); From d993f5d0fa75246ee9595bb72b84ac7c34ff07cf Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 09:07:23 -0400 Subject: [PATCH 019/242] Only import needed lodash functions --- web/js/link/wv.link.model.js | 18 +++++++++--------- web/js/link/wv.link.ui.js | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/web/js/link/wv.link.model.js b/web/js/link/wv.link.model.js index 6e2aa433c7..4c21e46d96 100644 --- a/web/js/link/wv.link.model.js +++ b/web/js/link/wv.link.model.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import _ from 'lodash'; +import { each, map, isArray, isObject } from 'lodash'; import util from './util/util'; export function linkModel(config) { @@ -43,19 +43,19 @@ export function linkModel(config) { // Returns a serialized string containing information of the current session self.toQueryString = function () { var state = {}; - _.each(components, function (component) { + each(components, function (component) { component.save(state); }); - var strings = _.map(state, function (value, key) { - if (_.isArray(value)) { + var strings = map(state, function (value, key) { + if (isArray(value)) { var parts = []; - _.each(value, function (item) { + each(value, function (item) { var part = ''; - if (_.isObject(item)) { + if (isObject(item)) { part = item.id; if (item.attributes && item.attributes.length > 0) { var attributes = []; - _.each(item.attributes, function (attribute) { + each(item.attributes, function (attribute) { if (attribute.value) { attributes.push(attribute.id + '=' + attribute.value); } else { @@ -108,14 +108,14 @@ export function linkModel(config) { self.load = function (state, errors) { errors = errors || []; - _.each(components, function (component) { + each(components, function (component) { component.load(state, errors); }); }; var encode = function (value) { var encoded = encodeURIComponent(value); - _.each(ENCODING_EXCEPTIONS, function (exception) { + each(ENCODING_EXCEPTIONS, function (exception) { encoded = encoded.replace(exception.match, exception.replace); }); return encoded; diff --git a/web/js/link/wv.link.ui.js b/web/js/link/wv.link.ui.js index 8e251ac3e5..0561abaef0 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/wv.link.ui.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import _ from 'lodash'; +import { throttle } from 'lodash'; import React from 'react'; import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; @@ -46,7 +46,7 @@ export function linkUI(models, config) { }; // Calls toQueryString to fetch updated state and returns URL - var replaceHistoryState = _.throttle(function () { + var replaceHistoryState = throttle(function () { if (util.browser.history) { window.history.replaceState('', '@OFFICIAL_NAME@', '?' + models.link.toQueryString()); } @@ -145,7 +145,7 @@ export function linkUI(models, config) { dialogWidth = '242'; } - Widget = self.initWidget(); + var Widget = self.initWidget(); // Render Dialog Box Content self.reactComponent = ReactDOM.render(Widget, $dialog[0]); From 7a8a60cb109b08489e1a0cde5d00a0eae07f5d23 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 09:58:06 -0400 Subject: [PATCH 020/242] Exported layers.info. Removed `wv` from completed files. Created stubs. --- web/js/layers/{wv.layers.info.js => layers.info.js} | 12 +++++------- web/js/link/{wv.link.model.js => link.model.js} | 2 +- web/js/link/{wv.link.ui.js => link.ui.js} | 4 ++-- web/js/stub.js | 5 ++++- web/js/ui/ui.js | 1 + web/js/util/util.js | 1 + web/js/wv.main.js | 9 ++++----- 7 files changed, 18 insertions(+), 16 deletions(-) rename web/js/layers/{wv.layers.info.js => layers.info.js} (86%) rename web/js/link/{wv.link.model.js => link.model.js} (98%) rename web/js/link/{wv.link.ui.js => link.ui.js} (99%) create mode 100644 web/js/ui/ui.js create mode 100644 web/js/util/util.js diff --git a/web/js/layers/wv.layers.info.js b/web/js/layers/layers.info.js similarity index 86% rename from web/js/layers/wv.layers.info.js rename to web/js/layers/layers.info.js index 7e60560e4c..77787483cf 100644 --- a/web/js/layers/wv.layers.info.js +++ b/web/js/layers/layers.info.js @@ -1,7 +1,7 @@ -var wv = wv || {}; -wv.layers = wv.layers || {}; +import $ from 'jquery'; +import wvui from '../ui/ui'; -wv.layers.info = wv.layers.info || function (config, models, layer) { +export function layersInfo(config, models, layer) { var $dialog; var self = {}; @@ -12,7 +12,7 @@ wv.layers.info = wv.layers.info || function (config, models, layer) { var loaded = function (custom) { var names; - $dialog = wv.ui.getDialog(); + $dialog = wvui.getDialog(); $dialog .attr('id', 'wv-layers-info-dialog') .attr('data-layer', layer.id); @@ -54,14 +54,12 @@ wv.layers.info = wv.layers.info || function (config, models, layer) { var dispose = function () { $dialog = null; - wv.ui.closeDialog(); + wvui.closeDialog(); }; var renderDescription = function ($dialog) { var $layerMeta = $('
') .addClass('layer-metadata source-metadata'); - var $layerMetaTitle = $('Layer Description') - .addClass('layer-metadata-title'); if (layer.description) { $.get('config/metadata/' + layer.description + '.html') diff --git a/web/js/link/wv.link.model.js b/web/js/link/link.model.js similarity index 98% rename from web/js/link/wv.link.model.js rename to web/js/link/link.model.js index 4c21e46d96..3d3f9e0659 100644 --- a/web/js/link/wv.link.model.js +++ b/web/js/link/link.model.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { each, map, isArray, isObject } from 'lodash'; -import util from './util/util'; +import util from '../util/util'; export function linkModel(config) { var self = {}; diff --git a/web/js/link/wv.link.ui.js b/web/js/link/link.ui.js similarity index 99% rename from web/js/link/wv.link.ui.js rename to web/js/link/link.ui.js index 0561abaef0..955116419d 100644 --- a/web/js/link/wv.link.ui.js +++ b/web/js/link/link.ui.js @@ -4,8 +4,8 @@ import React from 'react'; import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; import Share, {GA as googleAnalytics} from 'worldview-components'; -import util from './util/util'; -import wvui from './ui/ui'; +import util from '../util/util'; +import wvui from '../ui/ui'; export function linkUI(models, config) { var self = {}; diff --git a/web/js/stub.js b/web/js/stub.js index 3f858af9dc..4e2faad4b4 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -2,7 +2,10 @@ import { jQuery as $ } from 'jquery'; import { GA } from 'worldview-components'; +import linkModel from './link/link.model'; +import linkUI from './link/link.ui'; +import layersInfo from './layers/layers.info'; export default function () { - console.log($, GA); + console.log($, GA, linkUI, linkModel, layersInfo); }; diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js new file mode 100644 index 0000000000..a9dd4dcfda --- /dev/null +++ b/web/js/ui/ui.js @@ -0,0 +1 @@ +export default function () {}; diff --git a/web/js/util/util.js b/web/js/util/util.js new file mode 100644 index 0000000000..a9dd4dcfda --- /dev/null +++ b/web/js/util/util.js @@ -0,0 +1 @@ +export default function () {}; diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 51ecc6ef0f..3f68274ae8 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -62,9 +62,8 @@ import NotificationsUI from './notifications/notifications.ui'; // UI import {loadingIndicator} from './ui/ui.indicator'; // not a class, export object // Link -import LinkModel from './link/link.model'; -import LinkUI from './link/link.ui'; -import LinkInfo from './link/link.info'; +import linkModel from './link/link.model'; +import linkUI from './link/link.ui'; // Projections import projectionParser from './proj/proj'; import ProjectionModel from './proj/proj.model'; @@ -183,7 +182,7 @@ window.onload = () => { initial: initialDate }); models.map = MapModel(models, config); - models.link = LinkModel(config); + models.link = linkModel(config); models.link .register(models.proj) @@ -268,7 +267,7 @@ window.onload = () => { if (config.features.naturalEvents) { ui.naturalEvents = NaturalEventsUI(models, ui, config, NaturalEventsRequest(models, ui, config)); } - ui.link = LinkUI(models, config); + ui.link = linkUI(models, config); ui.tour = Tour(models, ui, config); ui.info = LinkInfo(ui, config); if (config.features.alert) { From bf02777e864fbcca3f411438b7a66e07b964f6b4 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 10:42:12 -0400 Subject: [PATCH 021/242] updates --- package-lock.json | 327 ++-------------------------------------------- package.json | 3 +- web/js/index.js | 1 + web/js/stub.js | 4 +- 4 files changed, 12 insertions(+), 323 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fd5a2d622..8da3fe25d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -438,11 +438,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "autobind-decorator": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/autobind-decorator/-/autobind-decorator-1.4.3.tgz", - "integrity": "sha1-TJb/p3sQYi7eJPEQ9du/VmkUF9E=" - }, "autoprefixer": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.1.tgz", @@ -2284,11 +2279,6 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" - }, "clean-css": { "version": "3.4.28", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", @@ -2623,7 +2613,8 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true }, "component-bind": { "version": "1.0.0", @@ -3217,261 +3208,6 @@ "es5-ext": "0.10.35" } }, - "d3": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", - "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", - "requires": { - "d3-array": "1.2.1", - "d3-axis": "1.0.8", - "d3-brush": "1.0.4", - "d3-chord": "1.0.4", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-dsv": "1.0.7", - "d3-ease": "1.0.3", - "d3-force": "1.1.0", - "d3-format": "1.2.0", - "d3-geo": "1.8.1", - "d3-hierarchy": "1.1.5", - "d3-interpolate": "1.1.5", - "d3-path": "1.0.5", - "d3-polygon": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-queue": "3.0.7", - "d3-random": "1.1.0", - "d3-request": "1.0.6", - "d3-scale": "1.0.6", - "d3-selection": "1.1.0", - "d3-shape": "1.2.0", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5", - "d3-timer": "1.0.7", - "d3-transition": "1.1.0", - "d3-voronoi": "1.1.2", - "d3-zoom": "1.6.0" - } - }, - "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" - }, - "d3-axis": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", - "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" - }, - "d3-brush": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", - "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", - "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" - } - }, - "d3-chord": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", - "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", - "requires": { - "d3-array": "1.2.1", - "d3-path": "1.0.5" - } - }, - "d3-collection": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", - "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" - }, - "d3-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", - "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" - }, - "d3-dispatch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", - "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" - }, - "d3-drag": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", - "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", - "requires": { - "d3-dispatch": "1.0.3", - "d3-selection": "1.1.0" - } - }, - "d3-dsv": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", - "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", - "requires": { - "commander": "2.11.0", - "iconv-lite": "0.4.19", - "rw": "1.3.3" - } - }, - "d3-ease": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", - "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" - }, - "d3-force": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", - "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", - "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-timer": "1.0.7" - } - }, - "d3-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", - "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" - }, - "d3-geo": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", - "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", - "requires": { - "d3-array": "1.2.1" - } - }, - "d3-hierarchy": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", - "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" - }, - "d3-interpolate": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", - "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", - "requires": { - "d3-color": "1.0.3" - } - }, - "d3-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", - "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" - }, - "d3-polygon": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", - "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" - }, - "d3-quadtree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", - "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" - }, - "d3-queue": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", - "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" - }, - "d3-random": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", - "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" - }, - "d3-request": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", - "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", - "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-dsv": "1.0.7", - "xmlhttprequest": "1.8.0" - } - }, - "d3-scale": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", - "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", - "requires": { - "d3-array": "1.2.1", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-format": "1.2.0", - "d3-interpolate": "1.1.5", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5" - } - }, - "d3-selection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", - "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" - }, - "d3-shape": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", - "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", - "requires": { - "d3-path": "1.0.5" - } - }, - "d3-time": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", - "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" - }, - "d3-time-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", - "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", - "requires": { - "d3-time": "1.0.7" - } - }, - "d3-timer": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", - "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" - }, - "d3-transition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", - "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", - "requires": { - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-ease": "1.0.3", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-timer": "1.0.7" - } - }, - "d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" - }, - "d3-zoom": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", - "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", - "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -7941,11 +7677,6 @@ "extend": "3.0.1" } }, - "icheck": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", - "integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=" - }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -8450,9 +8181,9 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "jquery": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", - "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=" }, "js-base64": { "version": "2.3.2", @@ -11384,16 +11115,6 @@ "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.3.tgz", "integrity": "sha1-hTTXa/RnPDuqOoK7oBvSlcww8U8=" }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -11729,22 +11450,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.1.tgz", "integrity": "sha1-bULNK2TIxeC2k/P/rsMB5uYn4k4=" }, - "react-draggable": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-2.2.6.tgz", - "integrity": "sha1-OoBuEPLaa6v+pBNr5lEOibDXaQE=", - "requires": { - "classnames": "2.2.5" - } - }, - "react-input-range": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-input-range/-/react-input-range-1.0.2.tgz", - "integrity": "sha1-Wlwrr/q5E0puS2fsi9jq39hHtFE=", - "requires": { - "autobind-decorator": "1.4.3" - } - }, "read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", @@ -12281,11 +11986,6 @@ "is-promise": "2.1.0" } }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -15094,19 +14794,6 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, - "worldview-components": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/worldview-components/-/worldview-components-1.5.1.tgz", - "integrity": "sha1-4trrYe7bjSeGUlr9XA6raBvXUaI=", - "requires": { - "d3": "4.11.0", - "icheck": "1.0.2", - "prop-types": "15.6.0", - "react-draggable": "2.2.6", - "react-input-range": "1.0.2", - "whatwg-fetch": "2.0.3" - } - }, "worldview-options-eosdis": { "version": "github:nasa-gibs/worldview-options-eosdis#790a7104bf06734bf27ef90a481f995623e631c8" }, @@ -15154,7 +14841,9 @@ "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true, + "optional": true }, "xmlhttprequest-ssl": { "version": "1.5.4", diff --git a/package.json b/package.json index 8d54e76e1e..47b599e78a 100644 --- a/package.json +++ b/package.json @@ -81,14 +81,13 @@ "gifshot": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", "isotope-layout": "3.0.x", "isotope-packery": "2.x.x", - "jquery": "^2.1.4", + "jquery": "^2.2.4", "lodash": "4.15.0", "openlayers": "4.3.1", "perfect-scrollbar": "0.7.x", "promise-queue": "2.2.3", "react": "15.3.1", "react-dom": "15.3.1", - "worldview-components": "^1.5.1", "worldview-options-eosdis": "github:nasa-gibs/worldview-options-eosdis#v2.1.2" } } diff --git a/web/js/index.js b/web/js/index.js index b5291dde1c..234802f748 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1 +1,2 @@ export { default as stub } from './stub'; +export { parse as mapParser } from './map/wv.map.js'; \ No newline at end of file diff --git a/web/js/stub.js b/web/js/stub.js index 3f858af9dc..c422a7dd7e 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -1,8 +1,8 @@ /* This file is just a stub to test the browserify build task */ import { jQuery as $ } from 'jquery'; -import { GA } from 'worldview-components'; +import { DateSelector } from 'worldview-components'; export default function () { - console.log($, GA); + console.log($, DateSelector); }; From 2a05051a5b006aee4671340459e5961df036c133 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 11:34:23 -0400 Subject: [PATCH 022/242] exported datelineBuilder --- web/js/map/wv.map.datelinebuilder.js | 68 ++++++++++++++-------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/wv.map.datelinebuilder.js index 80f87405c8..b68619fab6 100644 --- a/web/js/map/wv.map.datelinebuilder.js +++ b/web/js/map/wv.map.datelinebuilder.js @@ -1,13 +1,15 @@ -var wv = wv || {}; -wv.map = wv.map || {}; +import React from 'react'; +import ReactDOM from 'React-dom'; +import WVC from 'worldview-components'; +import ol from 'openlayers'; -/* - * @Class - */ -wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { +import util from '../util/util.js'; + +var map, overlay1, overlay2, textFactory, lineFactory, textOverlay1, textOverlay2, + lineLeft, lineRight, textLeft, textRight, proj; + +export default function datelinebuilder(models, config) { var self = {}; - var map, overlay1, overlay2, textFactory, lineFactory, textOverlay1, textOverlay2, - lineLeft, lineRight, textLeft, textRight, proj; /* * Sets globals and event listeners * @@ -21,7 +23,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {object} React Component */ - self.init = function (Parent, olMap, date) { + self.init = function(Parent, olMap, date) { var dimensions; map = olMap; lineFactory = React.createFactory(WVC.DateLine); @@ -29,28 +31,28 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { drawDatelines(map, date); proj = models.proj.selected.id; - Parent.events.on('moveend', function () { + Parent.events.on('moveend', function() { if (!isGeoProjection()) { return; } updateLineVisibility(true); dimensions = position(map); update(dimensions); }); - Parent.events.on('drag', function () { + Parent.events.on('drag', function() { if (!isGeoProjection()) { return; } updateLineVisibility(false); }); - Parent.events.on('movestart', function () { + Parent.events.on('movestart', function() { if (!isGeoProjection()) { return; } updateLineVisibility(false); }); - models.date.events.on('select', function () { + models.date.events.on('select', function() { updateDate(models.date.selected); }); - models.proj.events.on('select', function () { + models.proj.events.on('select', function() { proj = models.proj.selected.id; }); }; - var isGeoProjection = function () { + var isGeoProjection = function() { if (proj === 'geographic') { return true; } @@ -72,7 +74,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {object} React Component */ - var setLineDefaults = function (Factory, height, lineX, overlay, reactCase, tooltip) { + var setLineDefaults = function(Factory, height, lineX, overlay, reactCase, tooltip) { var props = { height: height, lineOver: onHover, @@ -97,10 +99,10 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {object} React Component */ - var setTextDefaults = function (Factory, reactCase, date) { + var setTextDefaults = function(Factory, reactCase, date) { var props = { - dateLeft: wv.util.toISOStringDate(wv.util.dateAdd(date, 'day', 1)), - dateRight: wv.util.toISOStringDate(date) + dateLeft: util.toISOStringDate(util.dateAdd(date, 'day', 1)), + dateRight: util.toISOStringDate(date) }; return ReactDOM.render(initWidget(Factory, props), reactCase); }; @@ -116,7 +118,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {object} React Component */ - var initWidget = function (Factory, props) { + var initWidget = function(Factory, props) { return Factory(props); }; @@ -130,7 +132,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var updateLineVisibility = function (boo) { + var updateLineVisibility = function(boo) { var state = { active: boo }; @@ -148,7 +150,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var drawDatelines = function (map, date) { + var drawDatelines = function(map, date) { var height, leftLineCase, rightLineCase, leftTextCase, rightTextCase; leftLineCase = document.createElement('div'); @@ -168,7 +170,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { map.addOverlay(textOverlay2); textLeft = setTextDefaults(textFactory, leftTextCase, date); - textRight = setTextDefaults(textFactory, rightTextCase, wv.util.dateAdd(date, 'day', -1)); + textRight = setTextDefaults(textFactory, rightTextCase, util.dateAdd(date, 'day', -1)); lineLeft = setLineDefaults(lineFactory, height, -180, textOverlay1, leftLineCase, textLeft); lineRight = setLineDefaults(lineFactory, height, 180, textOverlay2, rightLineCase, textRight); }; @@ -186,7 +188,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var onHover = function (pixels, overlay, lineX, tooltip) { + var onHover = function(pixels, overlay, lineX, tooltip) { var coords; coords = map.getCoordinateFromPixel(pixels); overlay.setPosition([lineX, coords[1]]); @@ -206,7 +208,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var onMouseOut = function (tooltip) { + var onMouseOut = function(tooltip) { tooltip.setState({ active: false }); @@ -222,15 +224,15 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var updateDate = function (date) { + var updateDate = function(date) { var leftState, rightState; leftState = { - dateLeft: wv.util.toISOStringDate(wv.util.dateAdd(date, 'day', 1)), - dateRight: wv.util.toISOStringDate(date) + dateLeft: util.toISOStringDate(util.dateAdd(date, 'day', 1)), + dateRight: util.toISOStringDate(date) }; rightState = { - dateLeft: wv.util.toISOStringDate(date), - dateRight: wv.util.toISOStringDate(wv.util.dateAdd(date, 'day', -1)) + dateLeft: util.toISOStringDate(date), + dateRight: util.toISOStringDate(util.dateAdd(date, 'day', -1)) }; textLeft.setState(leftState); textRight.setState(rightState); @@ -246,7 +248,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var position = function (map) { + var position = function(map) { var extent, top, topY, bottomY, bottom, height, startY, topExtent, bottomExtent; if (map.getSize()[0] === 0) { @@ -287,7 +289,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var update = function (dimensions) { + var update = function(dimensions) { var state = { height: dimensions[0] }; @@ -308,7 +310,7 @@ wv.map.datelinebuilder = wv.map.datelinebuilder || function (models, config) { * * @returns {void} */ - var drawOverlay = function (coordinate, el) { + var drawOverlay = function(coordinate, el) { var overlay = new ol.Overlay({ element: el, stopEvent: false From f235f25e45c3c376fa4c51727520edc5cb36447c Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 11:40:32 -0400 Subject: [PATCH 023/242] Exported layer functions & layersAdd. Changed linkUI to linkUi. --- .../{wv.layers.add.js => layers.add.js} | 65 ++++----- web/js/layers/layers.js | 127 +++++++++++++++++ web/js/layers/wv.layers.js | 131 ------------------ web/js/link/link.ui.js | 2 +- web/js/stub.js | 6 +- web/js/wv.main.js | 6 +- 6 files changed, 165 insertions(+), 172 deletions(-) rename web/js/layers/{wv.layers.add.js => layers.add.js} (88%) create mode 100644 web/js/layers/layers.js delete mode 100644 web/js/layers/wv.layers.js diff --git a/web/js/layers/wv.layers.add.js b/web/js/layers/layers.add.js similarity index 88% rename from web/js/layers/wv.layers.add.js rename to web/js/layers/layers.add.js index acf4edcc8c..8b19b02ea5 100644 --- a/web/js/layers/wv.layers.add.js +++ b/web/js/layers/layers.add.js @@ -1,13 +1,8 @@ -/** - * @module wv.layers - */ -var wv = wv || {}; -wv.layers = wv.layers || {}; - -/** - * @class wv.layers.add - */ -wv.layers.add = wv.layers.add || function (models, ui, config) { +import $ from 'jquery'; +import { each, find, throttle } from 'lodash'; +import util from '../util/util'; + +export function layersAdd(models, ui, config) { var jsp = null; var model = models.layers; @@ -19,7 +14,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { var visible = {}; var init = function () { - _.each(config.layers, function (layer) { + each(config.layers, function (layer) { visible[layer.id] = true; }); @@ -50,7 +45,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { $(self.selector) .empty(); - var tabs_height = $('.ui-tabs-nav') + var tabsHeight = $('.ui-tabs-nav') .outerHeight(true); $(self.selector) .addClass('selector'); @@ -59,7 +54,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { .height( $(self.selector) .parent() - .outerHeight() - tabs_height + .outerHeight() - tabsHeight ); var $form = $('
') @@ -130,7 +125,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { .addClass('category') .addClass('scroll-pane'); - _.each(config.layerOrder, function (layerId) { + each(config.layerOrder, function (layerId) { var layer = config.layers[layerId]; if (!layer) { console.warn('In layer order but not defined', layerId); @@ -183,7 +178,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { if (group === 'baselayers') { $checkbox.attr('name', group); } - if (_.find(model.active, { + if (find(model.active, { id: layer.id })) { $checkbox.attr('checked', 'checked'); @@ -199,31 +194,31 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { var adjustCategoryHeights = function () { var heights = []; - var facets_height = + var facetsHeight = $(self.selector + 'facetedSearch') .outerHeight(true); - var container_height = + var containerHeight = $(self.selector) - .outerHeight(true) - facets_height; + .outerHeight(true) - facetsHeight; $(self.selector + 'content') - .height(container_height); + .height(containerHeight); var labelHeight = 0; $(self.selector + 'content .head') .each(function () { labelHeight += $(this) .outerHeight(true); }); - container_height -= labelHeight; + containerHeight -= labelHeight; $.each(['baselayers', 'overlays'], function (i, group) { - var actual_height = 0; + var actualHeight = 0; var count = 0; $(self.selector + group + ' li') .each(function () { var layerId = decodeURIComponent($(this) .attr('data-layer')); if (visible[layerId]) { - actual_height += $(this) + actualHeight += $(this) .outerHeight(true); count++; } @@ -231,16 +226,16 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { heights.push({ name: self.id + group, - height: actual_height, + height: actualHeight, count: count }); }); - if (heights[0].height + heights[1].height > container_height) { - if (heights[0].height > container_height / 2) { - heights[0].height = container_height / 2; + if (heights[0].height + heights[1].height > containerHeight) { + if (heights[0].height > containerHeight / 2) { + heights[0].height = containerHeight / 2; } - heights[1].height = container_height - heights[0].height; + heights[1].height = containerHeight - heights[0].height; } $('#' + heights[0].name) .css('height', heights[0].height + 'px'); @@ -261,12 +256,12 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { }; var resize = function () { - var tabs_height = $('.ui-tabs-nav') + var tabsHeight = $('.ui-tabs-nav') .outerHeight(true); $(self.selector) .height($(self.selector) .parent() - .outerHeight() - tabs_height); + .outerHeight() - tabsHeight); if (jsp) { var api = jsp.data('jsp'); @@ -274,7 +269,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { api.destroy(); } } - if (wv.util.browser.ie) { + if (util.browser.ie) { jsp = $('.' + self.id + 'category') .jScrollPane({ verticalDragMinHeight: 20, @@ -305,13 +300,13 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { var onLayerAdded = function (layer) { var $element = $('#selectorbox [data-layer=\'' + - wv.util.jqueryEscape(layer.id) + '\']'); + util.jqueryEscape(layer.id) + '\']'); $element.iCheck('check'); }; var onLayerRemoved = function (layer) { var $element = $('#selectorbox [data-layer=\'' + - wv.util.jqueryEscape(layer.id) + '\']'); + util.jqueryEscape(layer.id) + '\']'); $element.iCheck('uncheck'); }; @@ -322,7 +317,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { }; var adjustTitles = function () { - _.each(config.layers, function (def) { + each(config.layers, function (def) { var names = models.layers.getTitles(def.id); $('#selectorbox [data-layer=\'' + encodeURIComponent(def.id) + '\'] .title') @@ -405,7 +400,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { return filtered; }; - var filter = _.throttle(function () { + var filter = throttle(function () { var search = searchTerms(); $.each(config.layers, function (layerId, layer) { var fproj = filterProjection(layer); @@ -413,7 +408,7 @@ wv.layers.add = wv.layers.add || function (models, ui, config) { var filtered = fproj || fterms; var display = filtered ? 'none' : 'block'; var selector = '#selectorbox li[data-layer=\'' + - wv.util.jqueryEscape(layerId) + '\']'; + util.jqueryEscape(layerId) + '\']'; $(selector) .css('display', display); visible[layer.id] = !filtered; diff --git a/web/js/layers/layers.js b/web/js/layers/layers.js new file mode 100644 index 0000000000..ebb12ce616 --- /dev/null +++ b/web/js/layers/layers.js @@ -0,0 +1,127 @@ +import { cloneDeep, each, remove } from 'lodash'; + +// Permalink versions 1.0 and 1.1 +var parse11 = function (state, errors, config) { + var str = state.products; + var layers = []; + var ids = str.split(/[~,\.]/); + each(ids, function (id) { + if (id === 'baselayers' || id === 'overlays') { + return; + } + var visible = true; + if (id.startsWith('!')) { + visible = false; + id = id.substring(1); + } + if (config.redirects && config.redirects.layers) { + id = config.redirects.layers[id] || id; + } + if (!config.layers[id]) { + errors.push({ + message: 'No such layer: ' + id + }); + return; + } + var lstate = { + id: id, + attributes: [] + }; + if (!visible) { + lstate.attributes.push({ + id: 'hidden', + value: true + }); + } + layers.push(lstate); + }); + state.l = layers; +}; + +// Permalink version 1.2 +var parse12 = function (state, errors, config) { + var parts; + var str = state.l; + // Split by layer definitions (commas not in parens) + var layerDefs = str.match(/[^\(,]+(\([^\)]*\))?,?/g); + var lstates = []; + each(layerDefs, function (layerDef) { + // Get the text before any paren or comma + var layerId = layerDef.match(/[^\(,]+/)[0]; + if (config.redirects && config.redirects.layers) { + layerId = config.redirects.layers[layerId] || layerId; + } + var lstate = { + id: layerId, + attributes: [] + }; + // Everything inside parens + var arrayAttr = layerDef.match(/\(.*\)/); + if (arrayAttr) { + // Get single match and remove parens + var strAttr = arrayAttr[0].replace(/[\(\)]/g, ''); + // Key value pairs + var kvps = strAttr.split(','); + each(kvps, function (kvp) { + parts = kvp.split('='); + if (parts.length === 1) { + lstate.attributes.push({ + id: parts[0], + value: true + }); + } else { + lstate.attributes.push({ + id: parts[0], + value: parts[1] + }); + } + }); + } + lstates.push(lstate); + }); + state.l = lstates; +}; + +export function parse(state, errors, config) { + if (state.l) { + parse12(state, errors, config); + } + if (state.products) { + parse11(state, errors, config); + } +}; + +export function validate(errors, config) { + var error = function (layerId, cause) { + errors.push({ + message: 'Invalid layer: ' + layerId, + cause: cause, + layerRemoved: true + }); + delete config.layers[layerId]; + remove(config.layerOrder.baselayers, function (e) { + return e === layerId; + }); + remove(config.layerOrder.overlays, function (e) { + return e === layerId; + }); + }; + + var layers = cloneDeep(config.layers); + each(layers, function (layer) { + if (!layer.group) { + error(layer.id, 'No group defined'); + return; + } + if (!layer.projections) { + error(layer.id, 'No projections defined'); + } + }); + + var orders = cloneDeep(config.layerOrder); + each(orders, function (layerId) { + if (!config.layers[layerId]) { + error(layerId, 'No configuration'); + } + }); +}; diff --git a/web/js/layers/wv.layers.js b/web/js/layers/wv.layers.js deleted file mode 100644 index af3edaab9a..0000000000 --- a/web/js/layers/wv.layers.js +++ /dev/null @@ -1,131 +0,0 @@ -var wv = wv || {}; - -wv.layers = (function (self) { - self.parse = function (state, errors, config) { - if (state.l) { - parse12(state, errors, config); - } - if (state.products) { - parse11(state, errors, config); - } - }; - - // Permalink versions 1.0 and 1.1 - var parse11 = function (state, errors, config) { - var str = state.products; - var layers = []; - var hidden = {}; - var ids = str.split(/[~,\.]/); - _.each(ids, function (id) { - if (id === 'baselayers' || id == 'overlays') { - return; - } - var visible = true; - if (id.startsWith('!')) { - visible = false; - id = id.substring(1); - } - if (config.redirects && config.redirects.layers) { - id = config.redirects.layers[id] || id; - } - if (!config.layers[id]) { - errors.push({ - message: 'No such layer: ' + id - }); - return; - } - var lstate = { - id: id, - attributes: [] - }; - if (!visible) { - lstate.attributes.push({ - id: 'hidden', - value: true - }); - } - layers.push(lstate); - }); - state.l = layers; - }; - - // Permalink version 1.2 - var parse12 = function (state, errors, config) { - var str = state.l; - // Split by layer definitions (commas not in parens) - var layerDefs = str.match(/[^\(,]+(\([^\)]*\))?,?/g); - var lstates = []; - _.each(layerDefs, function (layerDef) { - // Get the text before any paren or comma - var layerId = layerDef.match(/[^\(,]+/)[0]; - if (config.redirects && config.redirects.layers) { - layerId = config.redirects.layers[layerId] || layerId; - } - var lstate = { - id: layerId, - attributes: [] - }; - // Everything inside parens - var arrayAttr = layerDef.match(/\(.*\)/); - if (arrayAttr) { - // Get single match and remove parens - var strAttr = arrayAttr[0].replace(/[\(\)]/g, ''); - // Key value pairs - var kvps = strAttr.split(','); - _.each(kvps, function (kvp) { - parts = kvp.split('='); - if (parts.length === 1) { - lstate.attributes.push({ - id: parts[0], - value: true - }); - } else { - lstate.attributes.push({ - id: parts[0], - value: parts[1] - }); - } - }); - } - lstates.push(lstate); - }); - state.l = lstates; - }; - - self.validate = function (errors, config) { - var error = function (layerId, cause) { - errors.push({ - message: 'Invalid layer: ' + layerId, - cause: cause, - layerRemoved: true - }); - delete config.layers[layerId]; - _.remove(config.layerOrder.baselayers, function (e) { - return e === layerId; - }); - _.remove(config.layerOrder.overlays, function (e) { - return e === layerId; - }); - }; - - var layers = _.cloneDeep(config.layers); - _.each(layers, function (layer) { - if (!layer.group) { - error(layer.id, 'No group defined'); - return; - } - if (!layer.projections) { - error(layer.id, 'No projections defined'); - } - }); - - var orders = _.cloneDeep(config.layerOrder); - _.each(orders, function (layerId) { - if (!config.layers[layerId]) { - error(layerId, 'No configuration'); - } - }); - }; - - return self; -})(wv.layers || {}); diff --git a/web/js/link/link.ui.js b/web/js/link/link.ui.js index 955116419d..7481015554 100644 --- a/web/js/link/link.ui.js +++ b/web/js/link/link.ui.js @@ -7,7 +7,7 @@ import Share, {GA as googleAnalytics} from 'worldview-components'; import util from '../util/util'; import wvui from '../ui/ui'; -export function linkUI(models, config) { +export function linkUi(models, config) { var self = {}; var id = 'wv-link-button'; var selector = '#' + id; diff --git a/web/js/stub.js b/web/js/stub.js index 4e2faad4b4..542cdd8746 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -3,9 +3,11 @@ import { jQuery as $ } from 'jquery'; import { GA } from 'worldview-components'; import linkModel from './link/link.model'; -import linkUI from './link/link.ui'; +import linkUi from './link/link.ui'; +import { parse as layerParse, validate as layerValidate } from './layers/layers'; +import layersAdd from './layers/layers.add'; import layersInfo from './layers/layers.info'; export default function () { - console.log($, GA, linkUI, linkModel, layersInfo); + console.log($, GA, linkUi, linkModel, layerParse, layerValidate, layersAdd, layersInfo); }; diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 3f68274ae8..4f3a72458c 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -21,7 +21,7 @@ import TimelinePick from './date/date.timeline.pick'; import TimelinePan from './date/date.timeline.pan'; import TimelineInput from './date/date.timeline.input'; // Layers -import {layerParser, layerValidate} from './layers/layers'; // export parse as layerParser. etc... +import {parse as layerParser, validate as layerValidate} from './layers/layers'; // export parse as layerParser. etc... import LayersModel from './layers/layers.model'; import LayersModal from './layers/layers.modal'; import LayersSidebar from './layers/layers.sidebar'; @@ -63,7 +63,7 @@ import NotificationsUI from './notifications/notifications.ui'; import {loadingIndicator} from './ui/ui.indicator'; // not a class, export object // Link import linkModel from './link/link.model'; -import linkUI from './link/link.ui'; +import linkUi from './link/link.ui'; // Projections import projectionParser from './proj/proj'; import ProjectionModel from './proj/proj.model'; @@ -267,7 +267,7 @@ window.onload = () => { if (config.features.naturalEvents) { ui.naturalEvents = NaturalEventsUI(models, ui, config, NaturalEventsRequest(models, ui, config)); } - ui.link = linkUI(models, config); + ui.link = linkUi(models, config); ui.tour = Tour(models, ui, config); ui.info = LinkInfo(ui, config); if (config.features.alert) { From 9821196a0271b484299fc88ee77aed4ef6c83496 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 11:41:21 -0400 Subject: [PATCH 024/242] Modularize utils --- web/js/brand.js | 2 + web/js/index.js | 2 + web/js/polyfill.js | 220 ++++++++++ web/js/ui/ui.js | 2 + web/js/util/browser.js | 212 +++++++++ web/js/util/{wv.util.events.js => events.js} | 11 +- web/js/util/{wv.util.load.js => load.js} | 18 +- web/js/util/{wv.util.js => util.js} | 47 +- web/js/util/wv.util.browser.js | 438 ------------------- web/js/wv.main.js | 3 + 10 files changed, 482 insertions(+), 473 deletions(-) create mode 100644 web/js/brand.js create mode 100644 web/js/polyfill.js create mode 100644 web/js/ui/ui.js create mode 100644 web/js/util/browser.js rename web/js/util/{wv.util.events.js => events.js} (82%) rename web/js/util/{wv.util.load.js => load.js} (70%) rename web/js/util/{wv.util.js => util.js} (96%) delete mode 100644 web/js/util/wv.util.browser.js diff --git a/web/js/brand.js b/web/js/brand.js new file mode 100644 index 0000000000..a28a274a4e --- /dev/null +++ b/web/js/brand.js @@ -0,0 +1,2 @@ +/* This file is just a stub to test the browserify build task */ +export default function () {}; diff --git a/web/js/index.js b/web/js/index.js index b5291dde1c..4038d587e5 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1 +1,3 @@ export { default as stub } from './stub'; +export { default as polyfill } from './polyfill'; +export { default as util } from './util/util'; diff --git a/web/js/polyfill.js b/web/js/polyfill.js new file mode 100644 index 0000000000..44f3410dd5 --- /dev/null +++ b/web/js/polyfill.js @@ -0,0 +1,220 @@ +// =========================================================================== +// Polyfills and browser quirks - DEPRECATED +// This file is full of lots of old hacks, that are kept around to avoid +// breaking things, but they should be removed when possible. +// Now that we're transpiling code, YOU SHOULD NOT ADD TO THIS FILE +// =========================================================================== + +import $ from 'jquery'; +import { default as browser } from './util/browser.js'; + +export default function () { + /* + * Date.toISOString + * + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString + */ + if (!Date.prototype.toISOString) { + (function () { + function pad (number) { + if (number < 10) { + return '0' + number; + } + return number; + } + + Date.prototype.toISOString = function () { + return this.getUTCFullYear() + + '-' + pad(this.getUTCMonth() + 1) + + '-' + pad(this.getUTCDate()) + + 'T' + pad(this.getUTCHours()) + + ':' + pad(this.getUTCMinutes()) + + ':' + pad(this.getUTCSeconds()) + + '.' + (this.getUTCMilliseconds() / 1000) + .toFixed(3) + .slice(2, 5) + + 'Z'; + }; + }()); + } + + /* + * console + */ + if (!window.console) { + (function () { + window.console = { + log: function () {}, + warn: function () {}, + info: function () {}, + error: function () {} + }; + })(); + } + + /* + * Get rid of address bar on iphone/ipod + */ + (function () { + var execute = function () { + window.scrollTo(0, 0); + if (document.body) { + document.body.style.height = '100%'; + if (!(/(iphone|ipod)/.test(navigator.userAgent.toLowerCase()))) { + if (document.body.parentNode) { + document.body.parentNode.style.height = '100%'; + } + } + } + }; + setTimeout(execute, 700); + setTimeout(execute, 1500); + })(); + + /* + * Hide the URL bar + */ + (function () { + window.scrollTo(0, 0); + })(); + + /* + * setTimeout that properly sets this and allows arguments. The only case where + * this is helpful at the moment is IE9 -- only attempt to do this in that case + * + * https://developer.mozilla.org/en-US/docs/Web/API/Window.setTimeout + */ + if (browser.ie && browser.version <= 9) { + (function () { + var __nativeST__ = window.setTimeout, + __nativeSI__ = window.setInterval; + + window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) { + var oThis = this, + aArgs = Array.prototype.slice.call(arguments, 2); + return __nativeST__(vCallback instanceof Function ? function () { + vCallback.apply(oThis, aArgs); + } : vCallback, nDelay); + }; + + window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) { + var oThis = this, + aArgs = Array.prototype.slice.call(arguments, 2); + return __nativeSI__(vCallback instanceof Function ? function () { + vCallback.apply(oThis, aArgs); + } : vCallback, nDelay); + }; + })(); + } + + /* + * String.contains + * + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains + */ + if (!('contains' in String.prototype)) { + (function () { + String.prototype.contains = function (str, startIndex) { + return String.prototype.indexOf.call(this, str, + startIndex) !== -1; + }; + })(); + } + + /* + * String.startsWith + * + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + */ + if (!String.prototype.startsWith) { + (function () { + Object.defineProperty(String.prototype, 'startsWith', { + enumerable: false, + configurable: false, + writable: false, + value: function (searchString, position) { + position = position || 0; + return this.indexOf(searchString, position) === position; + } + }); + })(); + } + + /* + * String.endsWith + * + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + */ + if (!String.prototype.endsWith) { + (function () { + Object.defineProperty(String.prototype, 'endsWith', { + enumerable: false, + configurable: false, + writable: false, + value: function (searchString, position) { + position = position || this.length; + position = position - searchString.length; + var lastIndex = this.lastIndexOf(searchString); + return lastIndex !== -1 && lastIndex === position; + } + }); + })(); + } + + /* + * Mobile device quirks. This section is mostly overwriting things that jquery.mobile is adding + */ + (function () { + if (navigator.userAgent.match(/Android/i) || + navigator.userAgent.match(/webOS/i) || + navigator.userAgent.match(/iPhone/i) || + navigator.userAgent.match(/iPad/i) || + navigator.userAgent.match(/iPod/i) || + navigator.userAgent.match(/BlackBerry/i) || + navigator.userAgent.match(/Windows Phone/i) + ) { + mobile = true; + if (!(window.orientation == 90 || window.orientation == -90)) { + portrait = true; + } + } + + if (navigator.userAgent.indexOf('iPhone') != -1 || navigator.userAgent.indexOf('Android') != -1) { + // In Safari, the true version is after "Safari" + if (navigator.userAgent.indexOf('Safari') != -1) { + // Set a variable to use later + mobileSafari = true; + } + addEventListener('load', function () { + if (mobile) { + $('.layerPicker a[href=\'#DataDownload\']') + .hide(); + } + setHeight(); + window.scrollTo(0, 1); + $('#app, .ui-mobile, .ui-mobile .ui-page') + .css('min-height', 0); + }, false); + addEventListener('orientationchange', function () { + window.scrollTo(0, 1); + setHeight(); + }, false); + } + + // Set the div height + function setHeight ($body) { + if (navigator.userAgent.match(/(iPad|iPhone|iPod touch);.*CPU.*OS 6_\d/i)) { + var new_height = $(window) + .height(); + // if mobileSafari 6 add +60px + new_height += 60; + $('#app') + .css('min-height', 0) + .css('height', new_height); + } else { + $('#app, .ui-mobile, .ui-mobile .ui-page') + .css('min-height', 0); + } + } + })(); +} diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js new file mode 100644 index 0000000000..a28a274a4e --- /dev/null +++ b/web/js/ui/ui.js @@ -0,0 +1,2 @@ +/* This file is just a stub to test the browserify build task */ +export default function () {}; diff --git a/web/js/util/browser.js b/web/js/util/browser.js new file mode 100644 index 0000000000..95654cbd98 --- /dev/null +++ b/web/js/util/browser.js @@ -0,0 +1,212 @@ +import $ from 'jquery'; + +export default (function () { + var self = {}; + + /** + * True if Internet Explorer was detected in the user-agent string. + * + * @attribute ie + * @type Boolean + */ + self.ie = false; + + /** + * True if Safari was detected in the user-agent string. + * + * @attribute safari + * @type Boolean + */ + self.safari = false; + + self.firefox = false; + + /** + * Major version number of the browser detected in the user-agent string. + * If the version is not important for Worldview at the moment, this + * value will be null. + * + * @attribute version + * @type Number + */ + self.version = null; + + /** + * True if the screen size is small enough (width less than 740px) to + * require special mobile device behavior. + * + * @attribute small + * @type Boolean + */ + self.small = false; + self.constrained = false; + + /** + * True if this browser properly supports cross-origin resource + * sharing. + * + * @attribute cors + * @type Boolean + */ + self.cors = true; + + /** + * True if this browser properly supports web workers. + * + * @attribute webWorkers + * @type Boolean + */ + self.webWorkers = true; + + /** + * True if local storage is available in the browser. This will return + * false if local storage is supported, but cannot be used because + * it is running in private mode. + * + * @attribute localStorage + * @type Boolean + */ + self.localStorage = false; + self.history = true; + self.touchDevice = false; + + self.mobileWidth = 740; + self.constrainedHeight = 320; + + var init = function () { + var tests = self.tests; + + if (tests.safari()) { + self.safari = true; + self.version = tests.safariVersion(); + } else if (tests.ie()) { + self.ie = true; + self.version = tests.ieVersion(); + } else if (tests.firefox()) { + self.firefox = true; + } + + self.cors = tests.cors(); + self.webWorkers = tests.webWorkers(); + self.localStorage = tests.localStorage(); + self.small = tests.small(); + self.history = tests.history(); + self.touchDevice = tests.touchDevice(); + + var onResize = function () { + self.small = tests.small(); + self.constrained = tests.constrained(); + }; + $(window) + .on('resize', onResize); + $(function () { + onResize(); + }); + }; + + // The following functions should not be used directly. Use the values + // set in the init function. These functions are useful for testing. + self.tests = {}; + + self.tests.navigator = function () { + return navigator; + }; + + self.tests.window = function (property) { + // Some browsers throw an error when attempting to access restricted Window objects + try { + return window[property]; + } catch (error) { + return false; + } + }; + + self.tests.safari = function () { + var navigator = self.tests.navigator(); + if (/ Chrome\//.test(navigator.userAgent)) { + return false; + } + return (/ Safari\//) + .test(navigator.userAgent); + }; + + self.tests.safariVersion = function () { + var navigator = self.tests.navigator(); + var version = navigator.userAgent.match(/ Version\/([^ ]+)/); + if (version) { + return parseInt(version[1].split('.')[0]); + } + }; + + self.tests.ie = function () { + var navigator = self.tests.navigator(); + if (/MSIE /.test(navigator.userAgent)) { + return true; + } + // IE 11 + return navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent); + }; + + self.tests.firefox = function () { + return navigator.userAgent.toLowerCase() + .indexOf('firefox') > -1; + }; + + self.tests.touchDevice = function () { + var el = document.createElement('div'); + el.setAttribute('ontouchstart', 'return;'); + return typeof el.ontouchstart === 'function'; + }; + + self.tests.ieVersion = function () { + var navigator = self.tests.navigator(); + var version = navigator.userAgent.match(/MSIE ([\d\.]+)/); + if (version) { + return parseInt(version[1].split('.')[0]); + } + }; + + self.tests.cors = function () { + if (self.tests.safari() && self.tests.safariVersion() <= 6) { + return false; + } + return !self.tests.ie(); + }; + + self.tests.webWorkers = function () { + return self.tests.window('Worker'); + }; + + self.tests.localStorage = function () { + if (!self.tests.window('localStorage')) { + return false; + } + try { + var uid = new Date(); + var result; + localStorage.setItem(uid, uid); + result = localStorage.getItem(uid) == uid; + localStorage.removeItem(uid); + return result && true; + } catch (error) { + return false; + } + }; + + self.tests.small = function () { + return $(window) + .width() < self.mobileWidth; + }; + + self.tests.constrained = function () { + return $(window) + .height() < self.constrainedHeight; + }; + + self.tests.history = function () { + return window.history && window.history.replaceState; + }; + + init(); + return self; +})(); diff --git a/web/js/util/wv.util.events.js b/web/js/util/events.js similarity index 82% rename from web/js/util/wv.util.events.js rename to web/js/util/events.js index 3ea4fc0bad..becc3c65fd 100644 --- a/web/js/util/wv.util.events.js +++ b/web/js/util/events.js @@ -1,7 +1,6 @@ -var wv = wv || {}; -wv.util = wv.util || {}; +import { each, pull } from 'lodash'; -wv.util.events = wv.util.events || function () { +export default function () { var self = {}; // Object of event types. Each event type is an array of listeners. @@ -24,7 +23,7 @@ wv.util.events = wv.util.events || function () { self.off = function (event, callback) { var listeners = events[event]; if (listeners) { - _.pull(listeners, callback); + pull(listeners, callback); } return self; }; @@ -42,10 +41,10 @@ wv.util.events = wv.util.events || function () { return; } var eventArguments = Array.prototype.slice.call(arguments, 1); - _.each(events[event], function (listener) { + each(events[event], function (listener) { listener.apply(self, eventArguments); }); - _.each(allListeners, function (listener) { + each(allListeners, function (listener) { listener.apply(self, eventArguments); }); return self; diff --git a/web/js/util/wv.util.load.js b/web/js/util/load.js similarity index 70% rename from web/js/util/wv.util.load.js rename to web/js/util/load.js index e78f9bdadf..e5ba0b2f66 100644 --- a/web/js/util/wv.util.load.js +++ b/web/js/util/load.js @@ -1,7 +1,9 @@ -var wv = wv || {}; -wv.util = wv.util || {}; +import $ from 'jquery'; +import { size } from 'lodash'; +import { default as uiUtils } from '../ui/ui.js'; +import { default as brand } from '../brand.js'; -wv.util.load = wv.util.load || (function () { +export default (function () { var self = {}; var configPromises = {}; var loading = 0; @@ -16,14 +18,14 @@ wv.util.load = wv.util.load || (function () { .fail(promise.reject); return promise; } - if (root[attr] && _.size(root[attr]) > 0) { + if (root[attr] && size(root[attr]) > 0) { promise.resolve(root[attr]); } else { loading += 1; - promise = $.getJSON(wv.brand.url(url)); + promise = $.getJSON(brand.url(url)); if (loading === 1) { indicatorTimeout = setTimeout(function () { - indicatorId = wv.ui.indicator.loading(); + indicatorId = uiUtils.indicator.loading(); }, 2000); } promise.done(function (result) { @@ -35,10 +37,10 @@ wv.util.load = wv.util.load || (function () { if (loading === 0) { clearTimeout(indicatorTimeout); indicatorTimeout = null; - wv.ui.indicator.hide(indicatorId); + uiUtils.indicator.hide(indicatorId); } }) - .fail(wv.util.error); + .fail(uiUtils.error); configPromises[url] = promise; } diff --git a/web/js/util/wv.util.js b/web/js/util/util.js similarity index 96% rename from web/js/util/wv.util.js rename to web/js/util/util.js index a9697162e0..579bd6665f 100644 --- a/web/js/util/wv.util.js +++ b/web/js/util/util.js @@ -1,16 +1,21 @@ -/** - * @module wv.util - */ -var wv = wv || {}; - -/** - * General utilities - * - * @class wv.util - * @static - */ -wv.util = (function (self) { +/* global ntptEventTag */ + +import $ from 'jquery'; +import { each, isNull } from 'lodash'; +import { default as uiUtils } from '../ui/ui.js'; +import { default as browser } from './browser.js'; +import { default as events } from './events.js'; +import { default as load } from './load.js'; + +export default (function () { + var self = {}; var canvas = null; + + // Export other util methods + self.browser = browser; + self.events = events; + self.load = load; + // Needed anymore? self.LAYER_GROUPS = { baselayers: { @@ -104,9 +109,9 @@ wv.util = (function (self) { self.toQueryString = function (kvps, exceptions) { exceptions = exceptions || {}; var parts = []; - _.each(kvps, function (value, key) { + each(kvps, function (value, key) { var part = key + '=' + encodeURIComponent(value); - _.each(exceptions, function (exception) { + each(exceptions, function (exception) { var regexp = new RegExp(exception, 'ig'); var decoded = decodeURIComponent(exception); part = part.replace(regexp, decoded); @@ -446,7 +451,7 @@ wv.util = (function (self) { day = daysInMonth; } var newDate = new Date(Date.UTC(year, month, day)); - newDate = new Date(wv.util.clamp(newDate, minDate, maxDate)); + newDate = new Date(self.clamp(newDate, minDate, maxDate)); return newDate; }; @@ -475,7 +480,7 @@ wv.util = (function (self) { */ self.fromCompactTimestamp = function (str) { var v = str.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{3})/); - if (_.isNull(v)) { + if (isNull(v)) { throw new Error('Invalid timestamp:' + str); } return new Date(Date.UTC( @@ -530,7 +535,7 @@ wv.util = (function (self) { * @param {Exception} cause The exception object that caused the error */ self.error = function (message, cause) { - wv.ui.error(message, cause); + uiUtils.error(message, cause); }; /** @@ -638,7 +643,7 @@ wv.util = (function (self) { try { return func.apply(func, arguments); } catch (error) { - wv.util.error(error); + self.error(error); } }; }; @@ -742,7 +747,7 @@ wv.util = (function (self) { }; self.setCoordinateFormat = function (type) { - if (!wv.util.browser.localStorage) return; + if (!browser.localStorage) return; if (type !== 'latlon-dd' && type !== 'latlon-dms') { throw new Error('Invalid coordinate format: ' + type); } @@ -750,7 +755,7 @@ wv.util = (function (self) { }; self.getCoordinateFormat = function () { - if (!wv.util.browser.localStorage) return 'latlon-dd'; + if (!browser.localStorage) return 'latlon-dd'; return localStorage.getItem('coordinateFormat') || 'latlon-dd'; }; @@ -786,4 +791,4 @@ wv.util = (function (self) { }; return self; -})(wv.util || {}); +})(); diff --git a/web/js/util/wv.util.browser.js b/web/js/util/wv.util.browser.js deleted file mode 100644 index 029a803829..0000000000 --- a/web/js/util/wv.util.browser.js +++ /dev/null @@ -1,438 +0,0 @@ -/** - * @module wv.util - */ -var wv = wv || {}; -wv.util = wv.util || {}; - -/** - * Feature detection and user-agent sniffing for web browser. - * - * Including this script will also install polyfills and work around - * browser quirks as needed. - * - * @class wv.util.browser - * @static - */ -wv.util.browser = wv.util.browser || (function () { - var self = {}; - - /** - * True if Internet Explorer was detected in the user-agent string. - * - * @attribute ie - * @type Boolean - */ - self.ie = false; - - /** - * True if Safari was detected in the user-agent string. - * - * @attribute safari - * @type Boolean - */ - self.safari = false; - - self.firefox = false; - - /** - * Major version number of the browser detected in the user-agent string. - * If the version is not important for Worldview at the moment, this - * value will be null. - * - * @attribute version - * @type Number - */ - self.version = null; - - /** - * True if the screen size is small enough (width less than 740px) to - * require special mobile device behavior. - * - * @attribute small - * @type Boolean - */ - self.small = false; - self.constrained = false; - - /** - * True if this browser properly supports cross-origin resource - * sharing. - * - * @attribute cors - * @type Boolean - */ - self.cors = true; - - /** - * True if this browser properly supports web workers. - * - * @attribute webWorkers - * @type Boolean - */ - self.webWorkers = true; - - /** - * True if local storage is available in the browser. This will return - * false if local storage is supported, but cannot be used because - * it is running in private mode. - * - * @attribute localStorage - * @type Boolean - */ - self.localStorage = false; - self.history = true; - self.touchDevice = false; - - self.mobileWidth = 740; - self.constrainedHeight = 320; - - var init = function () { - var tests = self.tests; - - if (tests.safari()) { - self.safari = true; - self.version = tests.safariVersion(); - } else if (tests.ie()) { - self.ie = true; - self.version = tests.ieVersion(); - } else if (tests.firefox()) { - self.firefox = true; - } - - self.cors = tests.cors(); - self.webWorkers = tests.webWorkers(); - self.localStorage = tests.localStorage(); - self.small = tests.small(); - self.history = tests.history(); - self.touchDevice = tests.touchDevice(); - - var onResize = function () { - self.small = tests.small(); - self.constrained = tests.constrained(); - }; - $(window) - .on('resize', onResize); - $(function () { - onResize(); - }); - }; - - // The following functions should not be used directly. Use the values - // set in the init function. These functions are useful for testing. - self.tests = {}; - - self.tests.navigator = function () { - return navigator; - }; - - self.tests.window = function (property) { - // Some browsers throw an error when attempting to access restricted Window objects - try { - return window[property]; - } catch (error) { - return false; - } - }; - - self.tests.safari = function () { - var navigator = self.tests.navigator(); - if (/ Chrome\//.test(navigator.userAgent)) { - return false; - } - return (/ Safari\//) - .test(navigator.userAgent); - }; - - self.tests.safariVersion = function () { - var navigator = self.tests.navigator(); - var version = navigator.userAgent.match(/ Version\/([^ ]+)/); - if (version) { - return parseInt(version[1].split('.')[0]); - } - }; - - self.tests.ie = function () { - var navigator = self.tests.navigator(); - if (/MSIE /.test(navigator.userAgent)) { - return true; - } - // IE 11 - return navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent); - }; - - self.tests.firefox = function () { - return navigator.userAgent.toLowerCase() - .indexOf('firefox') > -1; - }; - - self.tests.touchDevice = function () { - var el = document.createElement('div'); - el.setAttribute('ontouchstart', 'return;'); - return typeof el.ontouchstart === 'function'; - }; - - self.tests.ieVersion = function () { - var navigator = self.tests.navigator(); - var version = navigator.userAgent.match(/MSIE ([\d\.]+)/); - if (version) { - return parseInt(version[1].split('.')[0]); - } - }; - - self.tests.cors = function () { - if (self.tests.safari() && self.tests.safariVersion() <= 6) { - return false; - } - return !self.tests.ie(); - }; - - self.tests.webWorkers = function () { - return self.tests.window('Worker'); - }; - - self.tests.localStorage = function () { - if (!self.tests.window('localStorage')) { - return false; - } - try { - var uid = new Date(); - var result; - localStorage.setItem(uid, uid); - result = localStorage.getItem(uid) == uid; - localStorage.removeItem(uid); - return result && true; - } catch (error) { - return false; - } - }; - - self.tests.small = function () { - return $(window) - .width() < self.mobileWidth; - }; - - self.tests.constrained = function () { - return $(window) - .height() < self.constrainedHeight; - }; - - self.tests.history = function () { - return window.history && window.history.replaceState; - }; - - init(); - return self; -})(); - -// =========================================================================== -// Polyfills and browser quirks -// =========================================================================== - -/* - * Date.toISOString - * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString - */ -if (!Date.prototype.toISOString) { - (function () { - function pad (number) { - if (number < 10) { - return '0' + number; - } - return number; - } - - Date.prototype.toISOString = function () { - return this.getUTCFullYear() + - '-' + pad(this.getUTCMonth() + 1) + - '-' + pad(this.getUTCDate()) + - 'T' + pad(this.getUTCHours()) + - ':' + pad(this.getUTCMinutes()) + - ':' + pad(this.getUTCSeconds()) + - '.' + (this.getUTCMilliseconds() / 1000) - .toFixed(3) - .slice(2, 5) + - 'Z'; - }; - }()); -} - -/* - * console - */ -if (!window.console) { - (function () { - window.console = { - log: function () {}, - warn: function () {}, - info: function () {}, - error: function () {} - }; - })(); -} - -/* - * Get rid of address bar on iphone/ipod - */ -(function () { - var execute = function () { - window.scrollTo(0, 0); - if (document.body) { - document.body.style.height = '100%'; - if (!(/(iphone|ipod)/.test(navigator.userAgent.toLowerCase()))) { - if (document.body.parentNode) { - document.body.parentNode.style.height = '100%'; - } - } - } - }; - setTimeout(execute, 700); - setTimeout(execute, 1500); -})(); - -/* - * Hide the URL bar - */ -(function () { - window.scrollTo(0, 0); -})(); - -/* - * setTimeout that properly sets this and allows arguments. The only case where - * this is helpful at the moment is IE9 -- only attempt to do this in that case - * - * https://developer.mozilla.org/en-US/docs/Web/API/Window.setTimeout - */ -if (wv.util.browser.ie && wv.util.browser.version <= 9) { - (function () { - var __nativeST__ = window.setTimeout, - __nativeSI__ = window.setInterval; - - window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) { - var oThis = this, - aArgs = Array.prototype.slice.call(arguments, 2); - return __nativeST__(vCallback instanceof Function ? function () { - vCallback.apply(oThis, aArgs); - } : vCallback, nDelay); - }; - - window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) { - var oThis = this, - aArgs = Array.prototype.slice.call(arguments, 2); - return __nativeSI__(vCallback instanceof Function ? function () { - vCallback.apply(oThis, aArgs); - } : vCallback, nDelay); - }; - })(); -} - -/* - * String.contains - * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains - */ -if (!('contains' in String.prototype)) { - (function () { - String.prototype.contains = function (str, startIndex) { - return String.prototype.indexOf.call(this, str, - startIndex) !== -1; - }; - })(); -} - -/* - * String.startsWith - * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - */ -if (!String.prototype.startsWith) { - (function () { - Object.defineProperty(String.prototype, 'startsWith', { - enumerable: false, - configurable: false, - writable: false, - value: function (searchString, position) { - position = position || 0; - return this.indexOf(searchString, position) === position; - } - }); - })(); -} - -/* - * String.endsWith - * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - */ -if (!String.prototype.endsWith) { - (function () { - Object.defineProperty(String.prototype, 'endsWith', { - enumerable: false, - configurable: false, - writable: false, - value: function (searchString, position) { - position = position || this.length; - position = position - searchString.length; - var lastIndex = this.lastIndexOf(searchString); - return lastIndex !== -1 && lastIndex === position; - } - }); - })(); -} - -/* - * Mobile device quirks. This section is mostly overwriting things that jquery.mobile is adding - */ -(function () { - if (navigator.userAgent.match(/Android/i) || - navigator.userAgent.match(/webOS/i) || - navigator.userAgent.match(/iPhone/i) || - navigator.userAgent.match(/iPad/i) || - navigator.userAgent.match(/iPod/i) || - navigator.userAgent.match(/BlackBerry/i) || - navigator.userAgent.match(/Windows Phone/i) - ) { - mobile = true; - if (!(window.orientation == 90 || window.orientation == -90)) { - portrait = true; - } - } - - if (navigator.userAgent.indexOf('iPhone') != -1 || navigator.userAgent.indexOf('Android') != -1) { - // In Safari, the true version is after "Safari" - if (navigator.userAgent.indexOf('Safari') != -1) { - // Set a variable to use later - mobileSafari = true; - } - addEventListener('load', function () { - if (mobile) { - $('.layerPicker a[href=\'#DataDownload\']') - .hide(); - } - setHeight(); - window.scrollTo(0, 1); - $('#app, .ui-mobile, .ui-mobile .ui-page') - .css('min-height', 0); - }, false); - addEventListener('orientationchange', function () { - window.scrollTo(0, 1); - setHeight(); - }, false); - } - - // Set the div height - function setHeight ($body) { - if (navigator.userAgent.match(/(iPad|iPhone|iPod touch);.*CPU.*OS 6_\d/i)) { - var new_height = $(window) - .height(); - // if mobileSafari 6 add +60px - new_height += 60; - $('#app') - .css('min-height', 0) - .css('height', new_height); - } else { - $('#app, .ui-mobile, .ui-mobile .ui-page') - .css('min-height', 0); - } - } -})(); diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 51ecc6ef0f..6a4fb01b76 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -75,6 +75,9 @@ import {debugConfig, debug} from './debug'; import Brand from './brand'; import Tour from './tour'; +import { default as polyfill } from './polyfill'; +polyfill(); // Polyfills some browser features + // Document ready function window.onload = () => { var errors = []; From df6b03cf6710a75ab996f4331ae4a6da56888c6c Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 11:50:10 -0400 Subject: [PATCH 025/242] added dependencies to wv.map --- web/js/map/wv.map.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index 55e5d4c7a5..2ae77e9986 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,4 +1,5 @@ - +import _ from 'lodash'; +import ol from 'openlayers'; /* * Checks to see if an extents string is found. If it exist * then it is changed from a string to an array which is then @@ -25,7 +26,7 @@ export function parse(state, errors) { var extent = _.map(state.v.split(','), function (str) { return parseFloat(str); }); - var valid = wv.map.isExtentValid(extent); + var valid = isExtentValid(extent); if (!valid) { errors.push({ message: 'Invalid extent: ' + state.v @@ -48,7 +49,7 @@ export function parse(state, errors) { * @return {boolean} False if any of the values is NaN, otherwise returns * true. */ -export function isExtentValid(extent) { +var isExtentValid = function(extent) { if (_.isUndefined(extent)) { return false; } @@ -285,7 +286,6 @@ export function toPolys(geom) { return [geom]; }; - /* FIXME OL3 wv.map.mock = function() { From 4643abb181940864585babd04b63fe27f26e41cd Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 12:02:31 -0400 Subject: [PATCH 026/242] updated stub --- web/js/stub.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/js/stub.js b/web/js/stub.js index c422a7dd7e..13e0b7ebba 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -2,7 +2,9 @@ import { jQuery as $ } from 'jquery'; import { DateSelector } from 'worldview-components'; +import { parse as mapParser } from './map/wv.map'; +import builder from './map/wv.map.datelinebuilder'; export default function () { - console.log($, DateSelector); + console.log($, DateSelector, mapParser, builder); }; From fc03ad83485c55f237f0dc94193991f53dff4c84 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 12:14:31 -0400 Subject: [PATCH 027/242] Exported layersActive. Changed wvui to uiUtils. --- .../{wv.layers.active.js => layers.active.js} | 69 +++++++++---------- web/js/layers/layers.info.js | 6 +- web/js/link/link.ui.js | 12 ++-- web/js/stub.js | 5 +- 4 files changed, 46 insertions(+), 46 deletions(-) rename web/js/layers/{wv.layers.active.js => layers.active.js} (92%) diff --git a/web/js/layers/wv.layers.active.js b/web/js/layers/layers.active.js similarity index 92% rename from web/js/layers/wv.layers.active.js rename to web/js/layers/layers.active.js index 1e217f21bc..8049242163 100644 --- a/web/js/layers/wv.layers.active.js +++ b/web/js/layers/layers.active.js @@ -1,15 +1,14 @@ -/** - * @module wv.layers - */ -var wv = wv || {}; -wv.layers = wv.layers || {}; - -/** - * @class wv.layers.active - */ -wv.layers.active = wv.layers.active || function (models, ui, config) { +import $ from 'jquery'; +import { each, eachRight } from 'lodash'; +import util from '../util/util'; +import uiUtils from '../ui/ui'; +import layersInfo from '../layers/layers.info'; +import layersOptions from '../layers/layers.options'; +import palettesLegend from './palettes/palettes.legend'; + +export function layersActive(models, ui, config) { var model = models.layers; - var groups = wv.util.LAYER_GROUPS; + var groups = util.LAYER_GROUPS; var legends = {}; var self = {}; self.id = 'products'; @@ -49,7 +48,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { var $container = $('
', {class: 'layer-container bank'}); $(self.selector).empty().append($container); - _.eachRight(groups, function (group) { + eachRight(groups, function (group) { renderGroup($container, group); }); @@ -90,7 +89,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { $('.layer-container ul.category') .bind('sortstop', moveLayer); - _.each(model.get({ + each(model.get({ group: 'overlays' }), function (layer) { if (layer.palette) { @@ -113,7 +112,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { $parent.append($header); - _.each(model.get({ + each(model.get({ group: group.id }), function (layer) { renderLayer($container, group, layer); @@ -211,7 +210,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { } else { $infoButton.on('click', toggleInfoPanel); } - if (wv.util.browser.small) { + if (util.browser.small) { $infoButton.hide(); } @@ -225,7 +224,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { .attr('title', 'Layer options for ' + names.title) .addClass('wv-layers-options'); $editButton.on('click', toggleOptionsPanel); - if (wv.util.browser.small) { + if (util.browser.small) { $editButton.hide(); } @@ -274,12 +273,12 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { var thisLayer = config.layers[thisLayerId]; if ($i.length === 0) { - wv.layers.info(config, models, thisLayer); + layersInfo(config, models, thisLayer); } else if ($i.attr('data-layer') !== thisLayerId) { - wv.ui.closeDialog(); - wv.layers.info(config, models, thisLayer); + uiUtils.closeDialog(); + layersInfo(config, models, thisLayer); } else { - wv.ui.closeDialog(); + uiUtils.closeDialog(); } }; @@ -290,12 +289,12 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { .attr('data-layer'); var thisLayer = config.layers[thisLayerId]; if ($d.length === 0) { - wv.layers.options(config, models, thisLayer); + layersOptions(config, models, thisLayer); } else if ($d.attr('data-layer') !== thisLayerId) { - wv.ui.closeDialog(); - wv.layers.options(config, models, thisLayer); + uiUtils.closeDialog(); + layersOptions(config, models, thisLayer); } else { - wv.ui.closeDialog(); + uiUtils.closeDialog(); } }; @@ -308,8 +307,8 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { var renderLegendCanvas = function (layer) { var selector = '.wv-palette[data-layer=\'' + - wv.util.jqueryEscape(layer.id) + '\']'; - legends[layer.id] = wv.palettes.legend({ + util.jqueryEscape(layer.id) + '\']'; + legends[layer.id] = palettesLegend({ selector: selector, config: config, models: models, @@ -332,18 +331,18 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { var maxHeight; // If on a mobile device, use the native scroll bars - if (!wv.util.browser.small) { + if (!util.browser.small) { $('.wv-layers-options').show(); $('.wv-layers-info').show(); } else { $('.wv-layers-options').hide(); $('.wv-layers-info').hide(); - wv.ui.closeDialog(); + uiUtils.closeDialog(); } // FIXME: -10 here is the timeline's bottom position from page, fix // after timeline markup is corrected to be loaded first - if (wv.util.browser.small) { + if (util.browser.small) { maxHeight = windowHeight - tabBarHeight - footerHeight - distanceFromTop - 10 - 5; } else { // FIXME: Hack, the timeline sometimes renders twice as large of a height and @@ -376,7 +375,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { var onLayerRemoved = function (layer) { var layerSelector = '#' + layer.group + '-' + - wv.util.jqueryEscape(layer.id); + util.jqueryEscape(layer.id); $(layerSelector) .remove(); if (legends[layer.id]) { @@ -450,7 +449,7 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { }; var onPaletteUpdateAll = function () { - _.each(legends, function (legend) { + each(legends, function (legend) { legend.update(); }); }; @@ -462,8 +461,8 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { setTimeout(render, 1); }; var onZoomChange = function () { - _.each(groups, function (group) { - _.each(model.get({ + each(groups, function (group) { + each(model.get({ group: group.id }), function (layer) { var $layer = $('#products li.productsitem[data-layer="' + @@ -473,8 +472,8 @@ wv.layers.active = wv.layers.active || function (models, ui, config) { }); }; var onDateChange = function () { - _.each(groups, function (group) { - _.each(model.get({ + each(groups, function (group) { + each(model.get({ group: group.id }), function (layer) { var $layer = $('#' + group.id + '-' + encodeURIComponent(layer.id)); diff --git a/web/js/layers/layers.info.js b/web/js/layers/layers.info.js index 77787483cf..96cb56d38a 100644 --- a/web/js/layers/layers.info.js +++ b/web/js/layers/layers.info.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import wvui from '../ui/ui'; +import uiUtils from '../ui/ui'; export function layersInfo(config, models, layer) { var $dialog; @@ -12,7 +12,7 @@ export function layersInfo(config, models, layer) { var loaded = function (custom) { var names; - $dialog = wvui.getDialog(); + $dialog = uiUtils.getDialog(); $dialog .attr('id', 'wv-layers-info-dialog') .attr('data-layer', layer.id); @@ -54,7 +54,7 @@ export function layersInfo(config, models, layer) { var dispose = function () { $dialog = null; - wvui.closeDialog(); + uiUtils.closeDialog(); }; var renderDescription = function ($dialog) { diff --git a/web/js/link/link.ui.js b/web/js/link/link.ui.js index 7481015554..8273d3f7af 100644 --- a/web/js/link/link.ui.js +++ b/web/js/link/link.ui.js @@ -5,7 +5,7 @@ import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; import Share, {GA as googleAnalytics} from 'worldview-components'; import util from '../util/util'; -import wvui from '../ui/ui'; +import uiUtils from '../ui/ui'; export function linkUi(models, config) { var self = {}; @@ -39,7 +39,7 @@ export function linkUi(models, config) { if (checked) { self.show(); } else { - wvui.closeDialog(); + uiUtils.closeDialog(); } }); models.link.events.on('update', replaceHistoryState); @@ -124,7 +124,7 @@ export function linkUi(models, config) { }; self.show = function () { - var $dialog = wvui.getDialog(); + var $dialog = uiUtils.getDialog(); var item = '
' + '
' + '' + @@ -189,13 +189,13 @@ export function linkUi(models, config) { models.link.events.off('update', updateLink); }); if (util.browser.small) { - wvui.positionDialog($dialog, { + uiUtils.positionDialog($dialog, { my: 'left top', at: 'left+58 bottom+5', of: '#wv-toolbar' }); } else { - wvui.positionDialog($dialog, { + uiUtils.positionDialog($dialog, { my: 'left top', at: 'left bottom+5', of: $label @@ -243,7 +243,7 @@ export function linkUi(models, config) { var error = function () { console.warn('Unable to shorten URL'); console.warn.apply(console, arguments); - wvui.notify('Unable to shorten the permalink at this time. ' + + uiUtils.notify('Unable to shorten the permalink at this time. ' + 'Please try again later.'); }; diff --git a/web/js/stub.js b/web/js/stub.js index 542cdd8746..355fbb4d99 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -4,10 +4,11 @@ import { jQuery as $ } from 'jquery'; import { GA } from 'worldview-components'; import linkModel from './link/link.model'; import linkUi from './link/link.ui'; -import { parse as layerParse, validate as layerValidate } from './layers/layers'; +import { parse as layerParser, validate as layerValidate } from './layers/layers'; import layersAdd from './layers/layers.add'; +import layersActive from './layers/layers.active'; import layersInfo from './layers/layers.info'; export default function () { - console.log($, GA, linkUi, linkModel, layerParse, layerValidate, layersAdd, layersInfo); + console.log($, GA, linkUi, linkModel, layerParser, layerValidate, layersAdd, layersActive, layersInfo); }; From b1eb50873a9a7ac6654f5d52802838a40858e1e1 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 12:16:52 -0400 Subject: [PATCH 028/242] updated wv.map.js to only use required lodash functions and updated nomenclature --- web/js/map/wv.map.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index 2ae77e9986..4a70e58aeb 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,4 +1,7 @@ -import _ from 'lodash'; +import { + map as _map, each as _each, + isUndefined as _isUndefined, find as _find +} from 'lodash'; import ol from 'openlayers'; /* * Checks to see if an extents string is found. If it exist @@ -23,7 +26,7 @@ export function parse(state, errors) { delete state.map; } if (state.v) { - var extent = _.map(state.v.split(','), function (str) { + var extent = _map(state.v.split(','), function (str) { return parseFloat(str); }); var valid = isExtentValid(extent); @@ -50,14 +53,14 @@ export function parse(state, errors) { * true. */ var isExtentValid = function(extent) { - if (_.isUndefined(extent)) { + if (_isUndefined(extent)) { return false; } var valid = true; if (extent.toArray) { extent = extent.toArray(); } - _.each(extent, function (value) { + _each(extent, function (value) { if (isNaN(value)) { valid = false; return false; @@ -132,7 +135,7 @@ export function setVisibility(layer, visible, opacity) { export function getLayerByName(map, name) { var layers = map.getLayers() .getArray(); - return _.find(layers, { + return _find(layers, { 'wvname': name }); }; From 1c5169c791cde8bb679d73a887260071a391ba18 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 12:35:50 -0400 Subject: [PATCH 029/242] Name exports --- web/js/brand.js | 2 +- web/js/index.js | 6 +++--- web/js/polyfill.js | 6 +++--- web/js/stub.js | 10 +++++++--- web/js/ui/ui.js | 2 +- web/js/util/browser.js | 2 +- web/js/util/events.js | 2 +- web/js/util/load.js | 14 +++++++------- web/js/util/util.js | 12 ++++++------ web/js/wv.main.js | 7 +++---- 10 files changed, 33 insertions(+), 30 deletions(-) diff --git a/web/js/brand.js b/web/js/brand.js index a28a274a4e..5b5537ff50 100644 --- a/web/js/brand.js +++ b/web/js/brand.js @@ -1,2 +1,2 @@ /* This file is just a stub to test the browserify build task */ -export default function () {}; +export function brand () {}; diff --git a/web/js/index.js b/web/js/index.js index 4038d587e5..a8d5a2ba70 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1,3 +1,3 @@ -export { default as stub } from './stub'; -export { default as polyfill } from './polyfill'; -export { default as util } from './util/util'; +export { stub, stub2 } from './stub'; +export { polyfill } from './polyfill'; +export { util } from './util/util'; diff --git a/web/js/polyfill.js b/web/js/polyfill.js index 44f3410dd5..3dc24b4eb7 100644 --- a/web/js/polyfill.js +++ b/web/js/polyfill.js @@ -6,9 +6,9 @@ // =========================================================================== import $ from 'jquery'; -import { default as browser } from './util/browser.js'; +import util from './util/util.js'; -export default function () { +export function polyfill () { /* * Date.toISOString * @@ -84,7 +84,7 @@ export default function () { * * https://developer.mozilla.org/en-US/docs/Web/API/Window.setTimeout */ - if (browser.ie && browser.version <= 9) { + if (util.browser.ie && util.browser.version <= 9) { (function () { var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval; diff --git a/web/js/stub.js b/web/js/stub.js index 3f858af9dc..abb7db0dd3 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -1,8 +1,12 @@ /* This file is just a stub to test the browserify build task */ -import { jQuery as $ } from 'jquery'; -import { GA } from 'worldview-components'; +import $ from 'jquery'; +import GA from 'worldview-components'; -export default function () { +export function stub() { console.log($, GA); }; + +export const stub2 = (function() { + return 'stub'; +})(); diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js index a28a274a4e..d965ff4073 100644 --- a/web/js/ui/ui.js +++ b/web/js/ui/ui.js @@ -1,2 +1,2 @@ /* This file is just a stub to test the browserify build task */ -export default function () {}; +export function wvui () {}; diff --git a/web/js/util/browser.js b/web/js/util/browser.js index 95654cbd98..a736ec1924 100644 --- a/web/js/util/browser.js +++ b/web/js/util/browser.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -export default (function () { +export const browser = (function () { var self = {}; /** diff --git a/web/js/util/events.js b/web/js/util/events.js index becc3c65fd..bf454b8e30 100644 --- a/web/js/util/events.js +++ b/web/js/util/events.js @@ -1,6 +1,6 @@ import { each, pull } from 'lodash'; -export default function () { +export function events () { var self = {}; // Object of event types. Each event type is an array of listeners. diff --git a/web/js/util/load.js b/web/js/util/load.js index e5ba0b2f66..c2c809ef43 100644 --- a/web/js/util/load.js +++ b/web/js/util/load.js @@ -1,9 +1,9 @@ import $ from 'jquery'; -import { size } from 'lodash'; -import { default as uiUtils } from '../ui/ui.js'; -import { default as brand } from '../brand.js'; +import size from 'lodash'; +import wvui from '../ui/ui.js'; +import brand from '../brand.js'; -export default (function () { +export const load = (function () { var self = {}; var configPromises = {}; var loading = 0; @@ -25,7 +25,7 @@ export default (function () { promise = $.getJSON(brand.url(url)); if (loading === 1) { indicatorTimeout = setTimeout(function () { - indicatorId = uiUtils.indicator.loading(); + indicatorId = wvui.indicator.loading(); }, 2000); } promise.done(function (result) { @@ -37,10 +37,10 @@ export default (function () { if (loading === 0) { clearTimeout(indicatorTimeout); indicatorTimeout = null; - uiUtils.indicator.hide(indicatorId); + wvui.indicator.hide(indicatorId); } }) - .fail(uiUtils.error); + .fail(wvui.error); configPromises[url] = promise; } diff --git a/web/js/util/util.js b/web/js/util/util.js index 579bd6665f..564529ee4b 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -2,12 +2,12 @@ import $ from 'jquery'; import { each, isNull } from 'lodash'; -import { default as uiUtils } from '../ui/ui.js'; -import { default as browser } from './browser.js'; -import { default as events } from './events.js'; -import { default as load } from './load.js'; +import wvui from '../ui/ui.js'; +import browser from './browser.js'; +import events from './events.js'; +import load from './load.js'; -export default (function () { +export const util = (function () { var self = {}; var canvas = null; @@ -535,7 +535,7 @@ export default (function () { * @param {Exception} cause The exception object that caused the error */ self.error = function (message, cause) { - uiUtils.error(message, cause); + wvui.error(message, cause); }; /** diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 6a4fb01b76..e5c5714d2c 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -5,7 +5,6 @@ import {GA as googleAnalytics} from 'worldview-components'; // Utils import util from './util/util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... -import browser from './util/util.browser'; // Date import {dateParser} from './date/date'; // export default function parse!!! import DateModel from './date/date.model'; @@ -75,7 +74,7 @@ import {debugConfig, debug} from './debug'; import Brand from './brand'; import Tour from './tour'; -import { default as polyfill } from './polyfill'; +import polyfill from './polyfill'; polyfill(); // Polyfills some browser features // Document ready function @@ -255,7 +254,7 @@ window.onload = () => { ui.dateLabel = DateLabel(models); } if (config.startDate) { - if (!browser.small) { // If mobile device, do not build timeline + if (!util.browser.small) { // If mobile device, do not build timeline timelineInit(); } ui.dateWheels = DateWheels(models, config); @@ -281,7 +280,7 @@ window.onload = () => { // FIXME: Old hack $(window) .resize(function() { - if (browser.small) { + if (util.browser.small) { $('#productsHoldertabs li.first a') .trigger('click'); } From 5ea34c4df95f5f087e85e7308800b23810d045a3 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 12:44:47 -0400 Subject: [PATCH 030/242] Fix lodash imports --- web/js/util/events.js | 3 ++- web/js/util/load.js | 2 +- web/js/util/util.js | 3 ++- web/js/wv.main.js | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/web/js/util/events.js b/web/js/util/events.js index bf454b8e30..a70ed8c8de 100644 --- a/web/js/util/events.js +++ b/web/js/util/events.js @@ -1,4 +1,5 @@ -import { each, pull } from 'lodash'; +import each from 'lodash/each'; +import pull from 'lodash/pull'; export function events () { var self = {}; diff --git a/web/js/util/load.js b/web/js/util/load.js index c2c809ef43..0d8b15a044 100644 --- a/web/js/util/load.js +++ b/web/js/util/load.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import size from 'lodash'; +import size from 'lodash/size'; import wvui from '../ui/ui.js'; import brand from '../brand.js'; diff --git a/web/js/util/util.js b/web/js/util/util.js index 564529ee4b..5690cd9d3d 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -1,7 +1,8 @@ /* global ntptEventTag */ import $ from 'jquery'; -import { each, isNull } from 'lodash'; +import each from 'lodash/each'; +import isNull from 'lodash/isNull'; import wvui from '../ui/ui.js'; import browser from './browser.js'; import events from './events.js'; diff --git a/web/js/wv.main.js b/web/js/wv.main.js index e5c5714d2c..5a0d9036ea 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,6 +1,6 @@ // External Dependencies import $ from 'jquery'; -import { each } from 'lodash'; +import each from 'lodash/each'; import {GA as googleAnalytics} from 'worldview-components'; // Utils From 912f2b23052c42fc9a504df5286312781ba1ca34 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 13:02:42 -0400 Subject: [PATCH 031/242] Exported layer files. Updated lodash. Updated wvui naming. Create palettes stub. --- web/js/layers/layers.active.js | 17 ++-- web/js/layers/layers.add.js | 4 +- web/js/layers/layers.info.js | 6 +- web/js/layers/layers.js | 4 +- .../{wv.layers.modal.js => layers.modal.js} | 32 ++++--- .../{wv.layers.model.js => layers.model.js} | 83 +++++++++---------- ...wv.layers.options.js => layers.options.js} | 43 ++++++---- ...wv.layers.sidebar.js => layers.sidebar.js} | 28 +++---- web/js/link/link.model.js | 5 +- web/js/link/link.ui.js | 14 ++-- web/js/palettes/palettes.js | 1 + web/js/palettes/palettes.legend.js | 1 + web/js/stub.js | 8 +- web/js/wv.main.js | 2 +- 14 files changed, 131 insertions(+), 117 deletions(-) rename web/js/layers/{wv.layers.modal.js => layers.modal.js} (97%) rename web/js/layers/{wv.layers.model.js => layers.model.js} (84%) rename web/js/layers/{wv.layers.options.js => layers.options.js} (92%) rename web/js/layers/{wv.layers.sidebar.js => layers.sidebar.js} (93%) create mode 100644 web/js/palettes/palettes.js create mode 100644 web/js/palettes/palettes.legend.js diff --git a/web/js/layers/layers.active.js b/web/js/layers/layers.active.js index 8049242163..a114622f93 100644 --- a/web/js/layers/layers.active.js +++ b/web/js/layers/layers.active.js @@ -1,10 +1,11 @@ import $ from 'jquery'; -import { each, eachRight } from 'lodash'; +import each from 'lodash/each'; +import eachRight from 'lodash/eachRight'; import util from '../util/util'; -import uiUtils from '../ui/ui'; +import wvui from '../ui/ui'; import layersInfo from '../layers/layers.info'; import layersOptions from '../layers/layers.options'; -import palettesLegend from './palettes/palettes.legend'; +import palettesLegend from '../palettes/palettes.legend'; export function layersActive(models, ui, config) { var model = models.layers; @@ -275,10 +276,10 @@ export function layersActive(models, ui, config) { if ($i.length === 0) { layersInfo(config, models, thisLayer); } else if ($i.attr('data-layer') !== thisLayerId) { - uiUtils.closeDialog(); + wvui.closeDialog(); layersInfo(config, models, thisLayer); } else { - uiUtils.closeDialog(); + wvui.closeDialog(); } }; @@ -291,10 +292,10 @@ export function layersActive(models, ui, config) { if ($d.length === 0) { layersOptions(config, models, thisLayer); } else if ($d.attr('data-layer') !== thisLayerId) { - uiUtils.closeDialog(); + wvui.closeDialog(); layersOptions(config, models, thisLayer); } else { - uiUtils.closeDialog(); + wvui.closeDialog(); } }; @@ -337,7 +338,7 @@ export function layersActive(models, ui, config) { } else { $('.wv-layers-options').hide(); $('.wv-layers-info').hide(); - uiUtils.closeDialog(); + wvui.closeDialog(); } // FIXME: -10 here is the timeline's bottom position from page, fix diff --git a/web/js/layers/layers.add.js b/web/js/layers/layers.add.js index 8b19b02ea5..cef4f939c3 100644 --- a/web/js/layers/layers.add.js +++ b/web/js/layers/layers.add.js @@ -1,5 +1,7 @@ import $ from 'jquery'; -import { each, find, throttle } from 'lodash'; +import each from 'lodash/each'; +import find from 'lodash/find'; +import throttle from 'lodash/throttle'; import util from '../util/util'; export function layersAdd(models, ui, config) { diff --git a/web/js/layers/layers.info.js b/web/js/layers/layers.info.js index 96cb56d38a..77787483cf 100644 --- a/web/js/layers/layers.info.js +++ b/web/js/layers/layers.info.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import uiUtils from '../ui/ui'; +import wvui from '../ui/ui'; export function layersInfo(config, models, layer) { var $dialog; @@ -12,7 +12,7 @@ export function layersInfo(config, models, layer) { var loaded = function (custom) { var names; - $dialog = uiUtils.getDialog(); + $dialog = wvui.getDialog(); $dialog .attr('id', 'wv-layers-info-dialog') .attr('data-layer', layer.id); @@ -54,7 +54,7 @@ export function layersInfo(config, models, layer) { var dispose = function () { $dialog = null; - uiUtils.closeDialog(); + wvui.closeDialog(); }; var renderDescription = function ($dialog) { diff --git a/web/js/layers/layers.js b/web/js/layers/layers.js index ebb12ce616..f87c9201b2 100644 --- a/web/js/layers/layers.js +++ b/web/js/layers/layers.js @@ -1,4 +1,6 @@ -import { cloneDeep, each, remove } from 'lodash'; +import cloneDeep from 'lodash/cloneDeep'; +import each from 'lodash/each'; +import remove from 'lodash/remove'; // Permalink versions 1.0 and 1.1 var parse11 = function (state, errors, config) { diff --git a/web/js/layers/wv.layers.modal.js b/web/js/layers/layers.modal.js similarity index 97% rename from web/js/layers/wv.layers.modal.js rename to web/js/layers/layers.modal.js index 2495a54ea3..d9d2a1cfe8 100644 --- a/web/js/layers/wv.layers.modal.js +++ b/web/js/layers/layers.modal.js @@ -1,13 +1,11 @@ -/** - * @module wv.layers - */ -var wv = wv || {}; -wv.layers = wv.layers || {}; - -/** - * @class wv.layers.modal - */ -wv.layers.modal = wv.layers.modal || function (models, ui, config) { +import $ from 'jquery'; +import find from 'lodash/find'; +import indexOf from 'lodash/indexOf'; +import sortBy from 'lodash/sortBy'; +import startCase from 'lodash/startCase'; +import util from '../util/util'; + +export function layersModal(models, ui, config) { var model = models.layers; var self = {}; self.selector = '#layer-modal'; @@ -38,8 +36,8 @@ wv.layers.modal = wv.layers.modal || function (models, ui, config) { if (layer.subtitle) layer.subtitle = decodeHtml(layer.subtitle); return layer; }); - return _.sortBy(filteredLayers, function (layer) { - return _.indexOf(config.layerOrder, layer.id); + return sortBy(filteredLayers, function (layer) { + return indexOf(config.layerOrder, layer.id); }); }; @@ -543,7 +541,7 @@ wv.layers.modal = wv.layers.modal || function (models, ui, config) { }).on('ifChecked', addLayer) .on('ifUnchecked', removeLayer); - if (_.find(model.active, {id: layer.id})) { + if (find(model.active, {id: layer.id})) { $setting.attr('checked', 'checked'); } @@ -558,7 +556,7 @@ wv.layers.modal = wv.layers.modal || function (models, ui, config) { if (layer.layergroup && layer.layergroup.indexOf('reference_orbits') !== -1) { var orbitTitle; if (layer.daynight && layer.track) { - orbitTitle = _.startCase(layer.track) + '/' + _.startCase(layer.daynight); + orbitTitle = startCase(layer.track) + '/' + startCase(layer.daynight); } $label.empty() @@ -780,17 +778,17 @@ wv.layers.modal = wv.layers.modal || function (models, ui, config) { }; var onLayerAdded = function (layer) { - var $element = $(self.selector + ' [data-layer=\'' + wv.util.jqueryEscape(layer.id) + '\']'); + var $element = $(self.selector + ' [data-layer=\'' + util.jqueryEscape(layer.id) + '\']'); $element.iCheck('check'); }; var onLayerRemoved = function (layer) { - var $element = $(self.selector + ' [data-layer=\'' + wv.util.jqueryEscape(layer.id) + '\']'); + var $element = $(self.selector + ' [data-layer=\'' + util.jqueryEscape(layer.id) + '\']'); $element.iCheck('uncheck'); }; var unfocusInput = function () { - if (!wv.util.browser.small) { + if (!util.browser.small) { $('#layers-search-input').focus(); } else { $('#layers-search-input').blur(); diff --git a/web/js/layers/wv.layers.model.js b/web/js/layers/layers.model.js similarity index 84% rename from web/js/layers/wv.layers.model.js rename to web/js/layers/layers.model.js index 7fdcb3a10d..4016cee283 100644 --- a/web/js/layers/wv.layers.model.js +++ b/web/js/layers/layers.model.js @@ -1,17 +1,16 @@ -/** - * @module wv.layers - */ -var wv = wv || {}; -wv.layers = wv.layers || {}; +import each from 'lodash/each'; +import eachRight from 'lodash/eachRight'; +import filter from 'lodash/filter'; +import find from 'lodash/find'; +import findIndex from 'lodash/findIndex'; +import isUndefined from 'lodash/isUndefined'; +import util from '../util/util'; -/** - * @class wv.layers.model - */ -wv.layers.model = wv.layers.model || function (models, config) { +export function layersModel(models, config) { var self = {}; var split = 0; - self.events = wv.util.events(); + self.events = util.events(); self.active = []; @@ -22,7 +21,7 @@ wv.layers.model = wv.layers.model || function (models, config) { self.reset = function () { self.clear(); if (config.defaults && config.defaults.startingLayers) { - _.each(config.defaults.startingLayers, function (start) { + each(config.defaults.startingLayers, function (start) { self.add(start.id, start); }); } @@ -87,7 +86,7 @@ wv.layers.model = wv.layers.model || function (models, config) { // if the layer exists in the active layer list self.exists = function (layer) { var found = false; - _.each(self.active, function (current) { + each(self.active, function (current) { if (layer === current.id) { found = true; } @@ -98,7 +97,7 @@ wv.layers.model = wv.layers.model || function (models, config) { self.dateRange = function (spec) { spec = spec || {}; var projId = spec.projId || models.proj.selected.id; - var layers = (spec.layer) ? [_.find(self.active, { + var layers = (spec.layer) ? [find(self.active, { id: spec.layer })] : self.active; @@ -108,16 +107,16 @@ wv.layers.model = wv.layers.model || function (models, config) { if (ignoreRange) { return { start: new Date(Date.UTC(1970, 0, 1)), - end: wv.util.today() + end: util.today() }; } var min = Number.MAX_VALUE; var max = 0; var range = false; - _.each(layers, function (def) { + each(layers, function (def) { if (def.startDate) { range = true; - var start = wv.util.parseDateUTC(def.startDate) + var start = util.parseDateUTC(def.startDate) .getTime(); min = Math.min(min, start); } @@ -125,25 +124,25 @@ wv.layers.model = wv.layers.model || function (models, config) { // an ongoing product unless it is marked as inactive. if (def.inactive && def.endDate) { range = true; - var end = wv.util.parseDateUTC(def.endDate) + var end = util.parseDateUTC(def.endDate) .getTime(); max = Math.max(max, end); } else if (def.endDate) { range = true; - max = wv.util.today() + max = util.today() .getTime(); } // If there is a start date but no end date, this is a // product that is currently being created each day, set // the max day to today. if (def.startDate && !def.endDate) { - max = wv.util.today() + max = util.today() .getTime(); } }); if (range) { if (max === 0) { - max = wv.util.today() + max = util.today() .getTime(); } return { @@ -154,7 +153,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.add = function (id, spec) { - if (_.find(self.active, { + if (find(self.active, { id: id })) { return; @@ -165,12 +164,12 @@ wv.layers.model = wv.layers.model || function (models, config) { throw new Error('No such layer: ' + id); } def.visible = true; - if (!_.isUndefined(spec.visible)) { + if (!isUndefined(spec.visible)) { def.visible = spec.visible; - } else if (!_.isUndefined(spec.hidden)) { + } else if (!isUndefined(spec.hidden)) { def.visible = !spec.hidden; } - def.opacity = (_.isUndefined(spec.opacity)) ? 1.0 : spec.opacity; + def.opacity = (isUndefined(spec.opacity)) ? 1.0 : spec.opacity; if (def.group === 'overlays') { self.active.unshift(def); split += 1; @@ -182,7 +181,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.remove = function (id) { - var index = _.findIndex(self.active, { + var index = findIndex(self.active, { id: id }); var def = self.active[index]; @@ -197,7 +196,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.replace = function (idOld, idNew) { - var index = _.findIndex(self.active, { + var index = findIndex(self.active, { id: idOld }); if (index < 0) { @@ -215,7 +214,7 @@ wv.layers.model = wv.layers.model || function (models, config) { self.clear = function (projId) { projId = projId || models.proj.selected.id; var defs = self.active.slice(0); - _.each(defs, function (def) { + each(defs, function (def) { if (projId && def.projections[projId]) { self.remove(def.id); } @@ -223,7 +222,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.pushToBottom = function (id) { - var oldIndex = _.findIndex(self.active, { + var oldIndex = findIndex(self.active, { id: id }); if (oldIndex < 0) { @@ -241,7 +240,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.moveBefore = function (sourceId, targetId) { - var sourceIndex = _.findIndex(self.active, { + var sourceIndex = findIndex(self.active, { id: sourceId }); if (sourceIndex < 0) { @@ -249,7 +248,7 @@ wv.layers.model = wv.layers.model || function (models, config) { } var sourceDef = self.active[sourceIndex]; - var targetIndex = _.findIndex(self.active, { + var targetIndex = findIndex(self.active, { id: targetId }); if (targetIndex < 0) { @@ -266,7 +265,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.setVisibility = function (id, visible) { - var def = _.find(self.active, { + var def = find(self.active, { id: id }); if (def.visible !== visible) { @@ -277,7 +276,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.setOpacity = function (id, opacity) { - var def = _.find(self.active, { + var def = find(self.active, { id: id }); if (def.opacity !== opacity) { @@ -288,7 +287,7 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.isRenderable = function (id) { - var def = _.find(self.active, { + var def = find(self.active, { id: id }); if (!def) { @@ -304,7 +303,7 @@ wv.layers.model = wv.layers.model || function (models, config) { return true; } var obscured = false; - _.each(self.get({ + each(self.get({ group: 'baselayers' }), function (otherDef) { if (otherDef.id === def.id) { @@ -322,8 +321,8 @@ wv.layers.model = wv.layers.model || function (models, config) { self.save = function (state) { var defs = self.get(); state.l = state.l || []; - _.each(self.get(), function (def) { - var lstate = _.find(state.l, { + each(self.get(), function (def) { + var lstate = find(state.l, { id: def.id }); if (!lstate) { @@ -350,9 +349,9 @@ wv.layers.model = wv.layers.model || function (models, config) { }; self.load = function (state, errors) { - if (!_.isUndefined(state.l)) { + if (!isUndefined(state.l)) { self.clear(models.proj.selected.id); - _.eachRight(state.l, function (layerDef) { + eachRight(state.l, function (layerDef) { if (!config.layers[layerDef.id]) { errors.push({ message: 'No such layer: ' + layerDef.id @@ -361,12 +360,12 @@ wv.layers.model = wv.layers.model || function (models, config) { } var hidden = false; var opacity = 1.0; - _.each(layerDef.attributes, function (attr) { + each(layerDef.attributes, function (attr) { if (attr.id === 'hidden') { hidden = true; } if (attr.id === 'opacity') { - opacity = wv.util.clamp(parseFloat(attr.value), 0, 1); + opacity = util.clamp(parseFloat(attr.value), 0, 1); if (isNaN(opacity)) opacity = 0; // "opacity=0.0" is opacity in URL, resulting in NaN } }); @@ -382,10 +381,10 @@ wv.layers.model = wv.layers.model || function (models, config) { spec = spec || {}; var projId = spec.proj || models.proj.selected.id; var results = []; - var defs = _.filter(self.active, { + var defs = filter(self.active, { group: group }); - _.each(defs, function (def) { + each(defs, function (def) { // Skip if this layer isn't available for the selected projection if (!def.projections[projId]) { return; diff --git a/web/js/layers/wv.layers.options.js b/web/js/layers/layers.options.js similarity index 92% rename from web/js/layers/wv.layers.options.js rename to web/js/layers/layers.options.js index ade74978b2..00d43c9e21 100644 --- a/web/js/layers/wv.layers.options.js +++ b/web/js/layers/layers.options.js @@ -1,7 +1,14 @@ -var wv = wv || {}; -wv.layers = wv.layers || {}; - -wv.layers.options = wv.layers.options || function (config, models, layer) { +import $ from 'jquery'; +import each from 'lodash/each'; +import indexOf from 'lodash/indexOf'; +import isEqual from 'lodash/isEqual'; +import isUndefined from 'lodash/isUndefined'; +import parseInt from 'lodash/parseInt'; +import util from '../util/util'; +import wvui from '../ui/ui'; +import palettes from '../palettes/palettes'; + +export function layersOptions(config, models, layer) { var alignTo = '#products'; var $dialog; var $opacity; @@ -17,7 +24,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { canvas.width = 120; canvas.height = 10; if (config.features.customPalettes) { - wv.palettes.loadCustom(config) + palettes.loadCustom(config) .done(loaded); } else { loaded(); @@ -25,7 +32,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { }; var loaded = function (custom) { - $dialog = wv.ui.getDialog(); + $dialog = wvui.getDialog(); $dialog .attr('id', 'wv-layers-options-dialog') .attr('data-layer', layer.id); @@ -119,7 +126,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { .off('range', onRangeUpdate) .off('update', onPaletteUpdateAll); $dialog = null; - wv.ui.closeDialog(); + wvui.closeDialog(); }; var renderOpacity = function ($dialog) { @@ -167,7 +174,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { .addClass('wv-legend-buttons'); var legends = models.palettes.getLegends(layer.id); - _.each(legends, function (legend, index) { + each(legends, function (legend, index) { id = 'wv-legend-' + index; $panel.append('' + @@ -178,7 +185,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { $('.wv-legend-buttons input[type=\'radio\']') .change(function () { - index = _.parseInt($(this) + index = parseInt($(this) .val()); rerenderRange(); rerenderPaletteSelector(); @@ -265,11 +272,11 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { updateRangeLabels(); var palette = models.palettes.get(layer.id, index); - var imin = (_.isUndefined(palette.min)) ? 0 : palette.min; - var imax = (_.isUndefined(palette.max)) + var imin = (isUndefined(palette.min)) ? 0 : palette.min; + var imax = (isUndefined(palette.max)) ? palette.legend.tooltips.length - 1 : palette.max; current = [parseFloat($range.val()[0]), parseFloat($range.val()[1])]; - if (!_.isEqual(current, [imin, imax])) { + if (!isEqual(current, [imin, imax])) { $range.val([imin, imax]); } @@ -317,14 +324,14 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { .empty(); $pane.append(defaultLegend()); var recommended = layer.palette.recommended || []; - _.each(recommended, function (id) { + each(recommended, function (id) { var item = customLegend(id); if (item) { $pane.append(item); } }); - _.each(config.paletteOrder, function (id) { - if (_.indexOf(recommended, id) < 0) { + each(config.paletteOrder, function (id) { + if (indexOf(recommended, id) < 0) { var item = customLegend(id); if (item) { $pane.append(item); @@ -378,7 +385,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { }; var selectorItemScale = function (palette, id, description) { - wv.palettes.colorbar(canvas, palette); + palettes.colorbar(canvas, palette); var $row = $('
') .addClass('wv-palette-selector-row'); @@ -418,7 +425,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { .attr('for', 'wv-palette-radio-' + id); var $image = $('') .addClass('wv-palettes-class') - .css('background-color', wv.util.hexToRGB(color)) + .css('background-color', util.hexToRGB(color)) .html(' '); var $description = $('') .html(description) @@ -448,7 +455,7 @@ wv.layers.options = wv.layers.options || function (config, models, layer) { if ((source.type === 'continuous' && targetType === 'continuous') || (source.type === 'discrete' && targetType === 'continuous')) { - var translated = wv.palettes.translate(source.colors, + var translated = palettes.translate(source.colors, target.colors); return selectorItemScale(translated, id, target.name); } diff --git a/web/js/layers/wv.layers.sidebar.js b/web/js/layers/layers.sidebar.js similarity index 93% rename from web/js/layers/wv.layers.sidebar.js rename to web/js/layers/layers.sidebar.js index 0aa0e84189..2ba62855bc 100644 --- a/web/js/layers/wv.layers.sidebar.js +++ b/web/js/layers/layers.sidebar.js @@ -1,13 +1,7 @@ -/** - * @module wv.layers - */ -var wv = wv || {}; -wv.layers = wv.layers || {}; - -/** - * @class wv.layers.sidebar - */ -wv.layers.sidebar = wv.layers.sidebar || function (models, config) { +import $ from 'jquery'; +import util from '../util/util'; + +export function layersSidebar(models, config) { var collapsed = false; var collapseRequested = false; var productsIsOverflow = false; @@ -16,7 +10,7 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { self.id = 'productsHolder'; self.selector = '#productsHolder'; - self.events = wv.util.events(); + self.events = util.events(); var init = function () { render(); @@ -25,7 +19,7 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { models.proj.events.on('select', onProjectionChange); resize(); - if (wv.util.browser.localStorage) { + if (util.browser.localStorage) { if (localStorage.getItem('sidebarState') === 'collapsed') { self.collapseNow(); collapseRequested = true; @@ -70,7 +64,7 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { $('#' + self.id) .after($('.accordionToggler')); - if (wv.util.browser.localStorage) { + if (util.browser.localStorage) { localStorage.setItem('sidebarState', 'collapsed'); } }; @@ -101,7 +95,7 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { $('.accordionToggler') .appendTo('#' + self.id + 'toggleButtonHolder'); - if (wv.util.browser.localStorage) { + if (util.browser.localStorage) { localStorage.setItem('sidebarState', 'expanded'); } // Resize after browser repaints @@ -139,7 +133,7 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { // FIXME: -10 here is the timeline's bottom position from page, fix // after timeline markup is corrected to be loaded first var maxHeight = windowHeight - tabBarHeight - distanceFromTop - tabPadding; - if (!wv.util.browser.small) { + if (!util.browser.small) { maxHeight = maxHeight - timelineHeight - 10 - 5; } $tabPanel.css('max-height', maxHeight); @@ -259,10 +253,10 @@ wv.layers.sidebar = wv.layers.sidebar || function (models, config) { }; var resize = function () { - if (!mobile && wv.util.browser.small) { + if (!mobile && util.browser.small) { self.collapseNow(); mobile = true; - } else if (mobile && !wv.util.browser.small && !collapseRequested) { + } else if (mobile && !util.browser.small && !collapseRequested) { self.expandNow(); mobile = false; } diff --git a/web/js/link/link.model.js b/web/js/link/link.model.js index 3d3f9e0659..feb9f4dc6f 100644 --- a/web/js/link/link.model.js +++ b/web/js/link/link.model.js @@ -1,5 +1,8 @@ import $ from 'jquery'; -import { each, map, isArray, isObject } from 'lodash'; +import each from 'lodash/each'; +import map from 'lodash/map'; +import isArray from 'lodash/isArray'; +import isObject from 'lodash/isObject'; import util from '../util/util'; export function linkModel(config) { diff --git a/web/js/link/link.ui.js b/web/js/link/link.ui.js index 8273d3f7af..b7c6a8f8f5 100644 --- a/web/js/link/link.ui.js +++ b/web/js/link/link.ui.js @@ -1,11 +1,11 @@ import $ from 'jquery'; -import { throttle } from 'lodash'; +import throttle from 'lodash/throttle'; import React from 'react'; import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; import Share, {GA as googleAnalytics} from 'worldview-components'; import util from '../util/util'; -import uiUtils from '../ui/ui'; +import wvui from '../ui/ui'; export function linkUi(models, config) { var self = {}; @@ -39,7 +39,7 @@ export function linkUi(models, config) { if (checked) { self.show(); } else { - uiUtils.closeDialog(); + wvui.closeDialog(); } }); models.link.events.on('update', replaceHistoryState); @@ -124,7 +124,7 @@ export function linkUi(models, config) { }; self.show = function () { - var $dialog = uiUtils.getDialog(); + var $dialog = wvui.getDialog(); var item = '
' + '
' + '' + @@ -189,13 +189,13 @@ export function linkUi(models, config) { models.link.events.off('update', updateLink); }); if (util.browser.small) { - uiUtils.positionDialog($dialog, { + wvui.positionDialog($dialog, { my: 'left top', at: 'left+58 bottom+5', of: '#wv-toolbar' }); } else { - uiUtils.positionDialog($dialog, { + wvui.positionDialog($dialog, { my: 'left top', at: 'left bottom+5', of: $label @@ -243,7 +243,7 @@ export function linkUi(models, config) { var error = function () { console.warn('Unable to shorten URL'); console.warn.apply(console, arguments); - uiUtils.notify('Unable to shorten the permalink at this time. ' + + wvui.notify('Unable to shorten the permalink at this time. ' + 'Please try again later.'); }; diff --git a/web/js/palettes/palettes.js b/web/js/palettes/palettes.js new file mode 100644 index 0000000000..a9dd4dcfda --- /dev/null +++ b/web/js/palettes/palettes.js @@ -0,0 +1 @@ +export default function () {}; diff --git a/web/js/palettes/palettes.legend.js b/web/js/palettes/palettes.legend.js new file mode 100644 index 0000000000..a9dd4dcfda --- /dev/null +++ b/web/js/palettes/palettes.legend.js @@ -0,0 +1 @@ +export default function () {}; diff --git a/web/js/stub.js b/web/js/stub.js index 355fbb4d99..fd6815bfdc 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -8,7 +8,13 @@ import { parse as layerParser, validate as layerValidate } from './layers/layers import layersAdd from './layers/layers.add'; import layersActive from './layers/layers.active'; import layersInfo from './layers/layers.info'; +import layersModal from './layers/layers.modal'; +import layersModel from './layers/layers.model'; +import layersOptions from './layers/layers.options'; +import layersSidebar from './layers/layers.sidebar'; +import palettes from './palettes/palettes'; +import palettesLegend from './palettes/palettes.legend'; export default function () { - console.log($, GA, linkUi, linkModel, layerParser, layerValidate, layersAdd, layersActive, layersInfo); + console.log($, GA, linkUi, linkModel, layerParser, layerValidate, layersAdd, layersActive, layersInfo, layersModal, layersModel, layersOptions, layersSidebar, palettes, palettesLegend); }; diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 4f3a72458c..93020171f1 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,6 +1,6 @@ // External Dependencies import $ from 'jquery'; -import { each } from 'lodash'; +import each from 'lodash/each'; import {GA as googleAnalytics} from 'worldview-components'; // Utils From 6198a5acb54c54a6ad6eeb8a46d275ba892aeb0c Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 14:01:11 -0400 Subject: [PATCH 032/242] Exported palettes --- web/js/palettes/palettes.js | 188 +++++++++++- web/js/palettes/palettes.legend.js | 290 +++++++++++++++++- ...wv.palettes.model.js => palettes.model.js} | 100 +++--- web/js/palettes/wv.palettes.js | 186 ----------- web/js/palettes/wv.palettes.legend.js | 288 ----------------- web/js/stub.js | 3 +- 6 files changed, 528 insertions(+), 527 deletions(-) rename web/js/palettes/{wv.palettes.model.js => palettes.model.js} (84%) delete mode 100644 web/js/palettes/wv.palettes.js delete mode 100644 web/js/palettes/wv.palettes.legend.js diff --git a/web/js/palettes/palettes.js b/web/js/palettes/palettes.js index a9dd4dcfda..7d7cbdf78d 100644 --- a/web/js/palettes/palettes.js +++ b/web/js/palettes/palettes.js @@ -1 +1,187 @@ -export default function () {}; +import $ from 'jquery'; +import each from 'lodash/each'; +import find from 'lodash/find'; +import util from '../util/util'; +import wvui from '../ui/ui'; + +export const palettes = (function (self) { + var checkerboard; + + self.supported = true; + + var init = function () { + var browser = util.browser; + if (browser.ie || !browser.webWorkers || !browser.cors) { + self.supported = false; + } else { + drawCheckerboard(); + } + }; + + self.colorbar = function (target, colors) { + var canvas; + if (target.length) { + canvas = $(target) + .get(0); + } else { + canvas = target; + } + if (!canvas) { + return; + } + var g = canvas.getContext('2d'); + + g.fillStyle = checkerboard; + g.fillRect(0, 0, canvas.width, canvas.height); + if (colors) { + var bins = colors.length; + var binWidth = canvas.width / bins; + var drawWidth = Math.ceil(binWidth); + each(colors, function (color, i) { + g.fillStyle = util.hexToRGBA(color); + g.fillRect(Math.floor(binWidth * i), 0, drawWidth, + canvas.height); + }); + } + }; + + var drawCheckerboard = function () { + var size = 2; + var canvas = document.createElement('canvas'); + + canvas.width = size * 2; + canvas.height = size * 2; + + var g = canvas.getContext('2d'); + + // g.fillStyle = "rgb(102, 102, 102)"; + g.fillStyle = 'rgb(200, 200, 200)'; + g.fillRect(0, 0, size, size); + g.fillRect(size, size, size, size); + + // g.fillStyle = "rgb(153, 153, 153)"; + g.fillStyle = 'rgb(240, 240, 240)'; + g.fillRect(0, size, size, size); + g.fillRect(size, 0, size, size); + + checkerboard = g.createPattern(canvas, 'repeat'); + }; + + self.translate = function (source, target) { + var translation = []; + each(source, function (color, index) { + var sourcePercent = index / source.length; + var targetIndex = Math.floor(sourcePercent * target.length); + translation.push(target[targetIndex]); + }); + return translation; + }; + + self.lookup = function (sourcePalette, targetPalette) { + var lookup = {}; + each(sourcePalette.colors, function (sourceColor, index) { + var source = + parseInt(sourceColor.substring(0, 2), 16) + ',' + + parseInt(sourceColor.substring(2, 4), 16) + ',' + + parseInt(sourceColor.substring(4, 6), 16) + ',' + + '255'; + var targetColor = targetPalette.colors[index]; + var target = { + r: parseInt(targetColor.substring(0, 2), 16), + g: parseInt(targetColor.substring(2, 4), 16), + b: parseInt(targetColor.substring(4, 6), 16), + a: 255 + }; + lookup[source] = target; + }); + return lookup; + }; + + self.loadCustom = function (config) { + return util.load.config(config.palettes, + 'custom', 'config/palettes-custom.json'); + }; + + self.loadRendered = function (config, layerId) { + var layer = config.layers[layerId]; + return util.load.config(config.palettes.rendered, + layer.palette.id, 'config/palettes/' + layer.palette.id + '.json'); + }; + + self.requirements = function (state, config) { + var promises = []; + config.palettes = { + rendered: {}, + custom: {} + }; + each(state.l, function (qsLayer) { + var layerId = qsLayer.id; + if (config.layers[layerId] && config.layers[layerId].palette) { + promises.push(self.loadRendered(config, layerId)); + } + var custom = find(qsLayer.attributes, { + id: 'palette' + }); + if (custom) { + promises.push(self.loadCustom(config)); + } + }); + if (promises.length > 0) { + var promise = $.Deferred(); + $.when.apply(null, promises) + .then(promise.resolve) + .fail(promise.reject); + return promise; + } + }; + + // Only for permalink 1.1 support + self.parse = function (state, errors, config) { + if (state.palettes) { + if (!palettes.supported) { + // FIXME: This should go in errors + delete state.palettes; + wvui.notify('The custom palette feature is not supported ' + + 'with your web browser. Upgrade or try again in a ' + + 'different browser'); + return; + } + var parts = state.palettes.split('~'); + each(parts, function (part) { + var items = part.split(','); + var layerId = items[0]; + var paletteId = items[1]; + if (!config.layers[layerId]) { + errors.push({ + message: 'Invalid layer for palette ' + + paletteId + ': ' + layerId + }); + } else if (!config.layers[layerId].palette) { + errors.push({ + message: 'Layer ' + layerId + ' does not ' + + 'support palettes' + }); + } else { + var layer = find(state.l, { + id: layerId + }); + if (layer) { + layer.attributes.push({ + id: 'palette', + value: paletteId + }); + } else { + errors.push({ + message: 'Layer ' + layerId + ' is not ' + + 'active' + }); + } + } + }); + delete state.paletes; + } + }; + + init(); + return self; +})(); diff --git a/web/js/palettes/palettes.legend.js b/web/js/palettes/palettes.legend.js index a9dd4dcfda..990842a364 100644 --- a/web/js/palettes/palettes.legend.js +++ b/web/js/palettes/palettes.legend.js @@ -1 +1,289 @@ -export default function () {}; +import $ from 'jquery'; +import each from 'lodash/each'; +import first from 'lodash/first'; +import last from 'lodash/last'; +import util from '../util/util'; +import palettes from '../palettes/palettes'; + +export function palettesLegend(spec) { + var selector = spec.selector; + var config = spec.config; + var models = spec.models; + var model = spec.models.palettes; + var ui = spec.ui; + var layer = spec.layer; + var loaded = false; + var rendered = false; + + var self = {}; + + var init = function () { + var paletteId = layer.palette.id; + if (config.palettes.rendered[paletteId]) { + loaded = true; + render(); + } else { + palettes.loadRendered(config, layer.id) + .done(function () { + if (!loaded) { + loaded = true; + render(); + if (spec.onLoad) { + spec.onLoad(); + } + } + }); + } + }; + + var render = function () { + var $parent = $(selector); + var paletteId = layer.palette.id; + var palette = config.palettes.rendered[paletteId]; + + var $legendPanel = $('
') + .addClass('wv-palettes-panel') + .attr('data-layer', layer.id); + $parent.append($legendPanel); + var legends = model.getLegends(layer.id); + each(legends, function (legend, index) { + if ((legend.type === 'continuous') || + (legend.type === 'discrete')) { + renderScale($legendPanel, legend, index, layer.id); + } + if (legend.type === 'classification') { + renderClasses($legendPanel, legend, index); + } + }); + self.update(); + }; + + var renderScale = function ($legendPanel, legend, index, layerId) { + $container = $('
') + .addClass('wv-palettes-legend') + .attr('data-index', index); + $colorbar = $('') + .addClass('wv-palettes-colorbar') + .attr('id', legend.id) + .attr('data-index', index); + // set fixed canvas dimensions + $colorbar[0].width = 235; + $colorbar[0].height = 12; + + $container.append($colorbar); + + var $runningDataPointBar = $('
') + .addClass('wv-running-bar'); + var $runningDataPointLabel = $('') + .addClass('wv-running-label'); + + var $ranges = $('
') + .addClass('wv-palettes-ranges'); + var $min = $('
') + .addClass('wv-palettes-min'); + var $max = $('
') + .addClass('wv-palettes-max'); + var $title = $('
') + .addClass('wv-palettes-title'); + $container.prepend($title); + $ranges + .append($min) + .append($max) + .append($runningDataPointLabel); + $container + .append($ranges) + .append($runningDataPointBar); + + $colorbar.on('mousemove', function (e) { + showUnitHover(e, index); + }); + $colorbar.on('mouseout', hideUnitsOnMouseOut); + $legendPanel.append($container); + palettes.colorbar(selector + ' ' + + '[data-index=\'' + index + '\'] canvas', legend.colors); + }; + var renderClasses = function ($legendPanel, legend, index) { + // var $runningDataPointLabel = $("") + // .addClass("wv-running-category-label"); + var $panel = $('
') + .addClass('wv-palettes-legend') + .addClass('wv-palettes-classes') + // .append($runningDataPointLabel) + .attr('data-index', index); + $legendPanel + .attr('id', legend.id) + .append($panel); + }; + + var updateClasses = function (legend, index) { + var $panel = $(selector + ' [data-index=\'' + index + '\']'); + $panel.empty(); + each(legend.colors, function (color, classIndex) { + var $colorBox; + var $runningDataPointLabel = $('') + .addClass('wv-running-category-label'); + $colorBox = $('') + .attr('data-index', index) + .attr('data-class-index', classIndex) + .attr('data-hex', color) + .addClass('wv-palettes-class') + .html(' ') + .css('background-color', util.hexToRGB(color)) + .hover(highlightClass, unhighlightClass); + $panel.append($colorBox); + $panel.append($runningDataPointLabel); + // Calls running data + $colorBox.on('mouseenter', showClassUnitHover); + $colorBox.on('mouseout', hideUnitsOnMouseOut); + }); + var $detailPanel = $('
'); + each(legend.colors, function (color, classIndex) { + var label = legend.tooltips[classIndex]; + label = (legend.units) ? label + ' ' + legend.units : label; + var $row = $('
') + .addClass('wv-palettes-class-detail') + .attr('data-class-index', classIndex); + $colorBox = + $row.append( + $('') + .addClass('wv-palettes-class') + .html(' ') + .css('background-color', util.hexToRGB(color))) + .append($('') + .addClass('wv-palettes-class-label') + .attr('data-index', index) + .attr('data-class-index', classIndex) + .html(label)); + $detailPanel.append($row); + }); + if (!rendered) { + rendered = true; + } + }; + + self.update = function () { + if (!loaded) { + return; + } + var legends = model.getLegends(layer.id); + each(legends, function (legend, index) { + if ((legend.type === 'continuous') || + (legend.type === 'discrete')) { + palettes.colorbar(selector + ' ' + + '[data-index=\'' + index + '\'] canvas', legend.colors); + showUnitRange(index); + } else if (legend.type === 'classification') { + updateClasses(legend, index); + } + }); + }; + + var showUnitRange = function (index) { + if (!loaded) { + return; + } + var legends = model.getLegends(layer.id, index); + var entries = model.get(layer.id, index) + .entries; + each(legends, function (legend, index) { + var min = legend.minLabel || first(legend.tooltips); + var max = legend.maxLabel || last(legend.tooltips); + min = (legend.units) ? min + ' ' + legend.units : min; + max = (legend.units) ? max + ' ' + legend.units : max; + $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-min') + .html(min); + $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-max') + .html(max); + var title = legend.title || ' '; + if (legends.length === 1) { + $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-title') + .hide(); + } else { + $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-title') + .html(title); + } + }); + }; + /** + * get color from canvas bar and + * send it to data processing + * + * @method showUnitHover + * @static + * @param {MouseEvent} e + * @return {void} + */ + var showUnitHover = function (e, index) { + var rgba; + var pos; + var x; + var y; + var id; + var legends; + if (!loaded) { + return; + } + legends = model.getLegends(layer.id)[index]; + offset = $(e.currentTarget) + .offset(); + x = e.pageX - offset.left; + y = e.pageY - offset.top; + rgba = util.getCanvasPixelData(e.currentTarget, x, y); + hex = util.rgbaToHex(rgba[0], rgba[1], rgba[2]); + ui.map.runningdata.newLegend(legends, hex); + }; + + /** + * get color from data attr and + * send it to data processing and + * render legend + * + * @method showClassUnitHover + * @static + * @param {MouseEvent} e + * @return {void} + */ + var showClassUnitHover = function (e) { + var hex = $(this) + .data('hex'); + var legends = model.getLegends(layer.id)[0]; + ui.map.runningdata.newLegend(legends, hex); + }; + + /** + * get color from data attr and + * send it to data processing and + * render legend + * + * @method showClassUnitHover + * @static + * @param {MouseEvent} e + * @return {void} + */ + var hideUnitsOnMouseOut = function () { + ui.map.runningdata.clearAll(); + }; + + var highlightClass = function () { + legendIndex = $(this) + .attr('data-index'); + classIndex = $(this) + .attr('data-class-index'); + $('.wv-palettes-class-label[data-index=\'' + legendIndex + '\']' + + '[data-class-index=\'' + classIndex + '\']') + .addClass('wv-palettes-class-highlight'); + }; + + var unhighlightClass = function () { + legendIndex = $(this) + .attr('data-index'); + classIndex = $(this) + .attr('data-class-index'); + $('.wv-palettes-class-label[data-index=\'' + legendIndex + '\']' + + '[data-class-index=\'' + classIndex + '\']') + .removeClass('wv-palettes-class-highlight'); + }; + + init(); + return self; +}; diff --git a/web/js/palettes/wv.palettes.model.js b/web/js/palettes/palettes.model.js similarity index 84% rename from web/js/palettes/wv.palettes.model.js rename to web/js/palettes/palettes.model.js index b7e0c15ed1..02d0c8fff0 100644 --- a/web/js/palettes/wv.palettes.model.js +++ b/web/js/palettes/palettes.model.js @@ -1,26 +1,26 @@ -/** - * @module wv.palette - */ -var wv = wv || {}; -wv.palettes = wv.palettes || {}; - -/** - * @class wv.palette.model - */ -wv.palettes.model = wv.palettes.model || function (models, config) { +import each from 'lodash/each'; +import find from 'lodash/find'; +import cloneDeep from 'lodash/cloneDeep'; +import isNaN from 'lodash/isNaN'; +import isUndefined from 'lodash/isUndefined'; +import parseInt from 'lodash/parseInt'; +import util from '../util/util'; +import palettes from '../palettes/palettes'; + +export function palettesModel(models, config) { config.palettes = config.palettes || { rendered: {}, custom: {} }; var self = {}; - self.events = wv.util.events(); + self.events = util.events(); self.active = {}; self.getRendered = function (layerId, index) { var name = config.layers[layerId].palette.id; var palette = config.palettes.rendered[name]; - if (!_.isUndefined(index)) { + if (!isUndefined(index)) { palette = palette.maps[index]; } return palette; @@ -38,17 +38,17 @@ wv.palettes.model = wv.palettes.model || function (models, config) { self.active[layerId] = self.active[layerId] || {}; var active = self.active[layerId]; active.maps = active.maps || []; - _.each(self.getRendered(layerId) + each(self.getRendered(layerId) .maps, function (palette, index) { if (!active.maps[index]) { - active.maps[index] = _.cloneDeep(palette); + active.maps[index] = cloneDeep(palette); } }); }; self.allowed = function (layerId) { - if (!wv.palettes.supported) { + if (!palettes.supported) { return false; } return config.layers[layerId].palette; @@ -59,7 +59,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { throw new Error('Invalid layer: ' + layerId); } prepare(layerId); - index = (_.isUndefined(index)) ? 0 : index; + index = (isUndefined(index)) ? 0 : index; var active = self.active[layerId]; var palette = active.maps[index]; if (palette.custom === paletteId) { @@ -72,7 +72,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { }; self.clearCustom = function (layerId, index) { - index = (_.isUndefined(index)) ? 0 : index; + index = (isUndefined(index)) ? 0 : index; var active = self.active[layerId]; if (!active) { return; @@ -89,7 +89,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { self.setRange = function (layerId, min, max, squash, index) { prepare(layerId); - index = (_.isUndefined(index)) ? 0 : index; + index = (isUndefined(index)) ? 0 : index; var palette = self.active[layerId].maps[index]; if (min === 0) { min = undefined; @@ -122,7 +122,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { * @return {object} object including the entries and legend */ self.get = function (layerId, index) { - index = (_.isUndefined(index)) ? 0 : index; + index = (isUndefined(index)) ? 0 : index; if (self.active[layerId]) { return self.active[layerId].maps[index]; } @@ -200,8 +200,8 @@ wv.palettes.model = wv.palettes.model || function (models, config) { if (self.inUse() && !state.l) { throw new Error('No layers in state'); } - _.each(self.active, function (def, layerId) { - if (!_.find(models.layers.get(), { + each(self.active, function (def, layerId) { + if (!find(models.layers.get(), { id: layerId })) { return; @@ -215,7 +215,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { }; self.saveSingle = function (state, layerId) { - var attr = _.find(state.l, { + var attr = find(state.l, { id: layerId }) .attributes; @@ -288,7 +288,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { } } - var attr = _.find(state.l, { + var attr = find(state.l, { id: layerId }) .attributes; @@ -340,22 +340,22 @@ wv.palettes.model = wv.palettes.model || function (models, config) { }; self.load = function (state, errors) { - if (!wv.palettes.supported) { + if (!palettes.supported) { return; } - _.each(state.l, function (layerDef) { + each(state.l, function (layerDef) { var layerId = layerDef.id; var minValue, maxValue; var min = [], max = []; var squash = []; var count = 0; - _.each(layerDef.attributes, function (attr) { + each(layerDef.attributes, function (attr) { if (attr.id === 'palette') { count = self.getCount(layerId); - values = wv.util.toArray(attr.value.split(';')); - _.each(values, function (value, index) { + values = util.toArray(attr.value.split(';')); + each(values, function (value, index) { try { self.setCustom(layerId, value, index); } catch (error) { @@ -365,14 +365,14 @@ wv.palettes.model = wv.palettes.model || function (models, config) { } if (attr.id === 'min') { count = self.getCount(layerId); - values = wv.util.toArray(attr.value.split(';')); - _.each(values, function (value, index) { + values = util.toArray(attr.value.split(';')); + each(values, function (value, index) { if (value === '') { min.push(undefined); return; } minValue = parseFloat(value); - if (_.isNaN(minValue)) { + if (isNaN(minValue)) { errors.push('Invalid min value: ' + value); } else { min.push(findIndex(layerId, 'min', minValue, index)); @@ -381,14 +381,14 @@ wv.palettes.model = wv.palettes.model || function (models, config) { } if (attr.id === 'max') { count = self.getCount(layerId); - values = wv.util.toArray(attr.value.split(';')); - _.each(values, function (value, index) { + values = util.toArray(attr.value.split(';')); + each(values, function (value, index) { if (value === '') { max.push(undefined); return; } maxValue = parseFloat(value); - if (_.isNaN(maxValue)) { + if (isNaN(maxValue)) { errors.push('Invalid max value: ' + value); } else { max.push(findIndex(layerId, 'max', maxValue, index)); @@ -400,8 +400,8 @@ wv.palettes.model = wv.palettes.model || function (models, config) { if (attr.value === true) { squash[0] = true; } else { - values = wv.util.toArray(attr.value.split(';')); - _.each(values, function (value) { + values = util.toArray(attr.value.split(';')); + each(values, function (value) { squash.push(value === 'true'); }); } @@ -423,7 +423,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { var values = self.get(layerId, index) .entries.values; var result; - _.each(values, function (check, index) { + each(values, function (check, index) { var min = getMinValue(check); var max = getMaxValue(check); if (type === 'min' && value === min) { @@ -443,7 +443,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { self.inUse = function () { var layers = models.layers.get(); var found = false; - _.each(layers, function (layer) { + each(layers, function (layer) { if (self.active[layer.id]) { found = true; return false; @@ -456,7 +456,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { var use = false; var active = self.active[layerId].maps; - _.each(active, function (palette, index) { + each(active, function (palette, index) { if (palette.custom) { use = true; return false; @@ -469,7 +469,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { if (palette.max >= rendered.entries.values.length) { delete palette.max; } - if (!_.isUndefined(palette.min) || !_.isUndefined(palette.max)) { + if (!isUndefined(palette.min) || !isUndefined(palette.max)) { use = true; return false; } @@ -485,7 +485,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { } var active = self.active[layerId].maps; var lookup = {}; - _.each(active, function (palette, index) { + each(active, function (palette, index) { oldLegend = palette.legend; entries = palette.entries; legend = { @@ -511,7 +511,7 @@ wv.palettes.model = wv.palettes.model || function (models, config) { var targetCount = target.length; var indexCount = max - min; - _.each(source, function (color, index) { + each(source, function (color, index) { var newColor; if (index < min || index > max) { targetColor = '00000000'; @@ -534,15 +534,15 @@ wv.palettes.model = wv.palettes.model || function (models, config) { } legend.colors.push(targetColor); var lookupSource = - _.parseInt(color.substring(0, 2), 16) + ',' + - _.parseInt(color.substring(2, 4), 16) + ',' + - _.parseInt(color.substring(4, 6), 16) + ',' + - _.parseInt(color.substring(6, 8), 16); + parseInt(color.substring(0, 2), 16) + ',' + + parseInt(color.substring(2, 4), 16) + ',' + + parseInt(color.substring(4, 6), 16) + ',' + + parseInt(color.substring(6, 8), 16); var lookupTarget = { - r: _.parseInt(targetColor.substring(0, 2), 16), - g: _.parseInt(targetColor.substring(2, 4), 16), - b: _.parseInt(targetColor.substring(4, 6), 16), - a: _.parseInt(targetColor.substring(6, 8), 16) + r: parseInt(targetColor.substring(0, 2), 16), + g: parseInt(targetColor.substring(2, 4), 16), + b: parseInt(targetColor.substring(4, 6), 16), + a: parseInt(targetColor.substring(6, 8), 16) }; lookup[lookupSource] = lookupTarget; }); diff --git a/web/js/palettes/wv.palettes.js b/web/js/palettes/wv.palettes.js deleted file mode 100644 index 81b64ba3c8..0000000000 --- a/web/js/palettes/wv.palettes.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * @module wv.palettes - */ -var wv = wv || {}; - -wv.palettes = (function (self) { - var checkerboard; - - self.supported = true; - - var init = function () { - var browser = wv.util.browser; - if (browser.ie || !browser.webWorkers || !browser.cors) { - self.supported = false; - } else { - drawCheckerboard(); - } - }; - - self.colorbar = function (target, colors) { - var canvas; - if (target.length) { - canvas = $(target) - .get(0); - } else { - canvas = target; - } - if (!canvas) { - return; - } - var g = canvas.getContext('2d'); - - g.fillStyle = checkerboard; - g.fillRect(0, 0, canvas.width, canvas.height); - if (colors) { - var bins = colors.length; - var binWidth = canvas.width / bins; - var drawWidth = Math.ceil(binWidth); - _.each(colors, function (color, i) { - g.fillStyle = wv.util.hexToRGBA(color); - g.fillRect(Math.floor(binWidth * i), 0, drawWidth, - canvas.height); - }); - } - }; - - var drawCheckerboard = function () { - var size = 2; - var canvas = document.createElement('canvas'); - - canvas.width = size * 2; - canvas.height = size * 2; - - var g = canvas.getContext('2d'); - - // g.fillStyle = "rgb(102, 102, 102)"; - g.fillStyle = 'rgb(200, 200, 200)'; - g.fillRect(0, 0, size, size); - g.fillRect(size, size, size, size); - - // g.fillStyle = "rgb(153, 153, 153)"; - g.fillStyle = 'rgb(240, 240, 240)'; - g.fillRect(0, size, size, size); - g.fillRect(size, 0, size, size); - - checkerboard = g.createPattern(canvas, 'repeat'); - }; - - self.translate = function (source, target) { - var translation = []; - _.each(source, function (color, index) { - var sourcePercent = index / source.length; - var targetIndex = Math.floor(sourcePercent * target.length); - translation.push(target[targetIndex]); - }); - return translation; - }; - - self.lookup = function (sourcePalette, targetPalette) { - var lookup = {}; - _.each(sourcePalette.colors, function (sourceColor, index) { - var source = - parseInt(sourceColor.substring(0, 2), 16) + ',' + - parseInt(sourceColor.substring(2, 4), 16) + ',' + - parseInt(sourceColor.substring(4, 6), 16) + ',' + - '255'; - var targetColor = targetPalette.colors[index]; - var target = { - r: parseInt(targetColor.substring(0, 2), 16), - g: parseInt(targetColor.substring(2, 4), 16), - b: parseInt(targetColor.substring(4, 6), 16), - a: 255 - }; - lookup[source] = target; - }); - return lookup; - }; - - self.loadCustom = function (config) { - return wv.util.load.config(config.palettes, - 'custom', 'config/palettes-custom.json'); - }; - - self.loadRendered = function (config, layerId) { - var layer = config.layers[layerId]; - return wv.util.load.config(config.palettes.rendered, - layer.palette.id, 'config/palettes/' + layer.palette.id + '.json'); - }; - - self.requirements = function (state, config) { - var promises = []; - config.palettes = { - rendered: {}, - custom: {} - }; - _.each(state.l, function (qsLayer) { - var layerId = qsLayer.id; - if (config.layers[layerId] && config.layers[layerId].palette) { - promises.push(self.loadRendered(config, layerId)); - } - var custom = _.find(qsLayer.attributes, { - id: 'palette' - }); - if (custom) { - promises.push(self.loadCustom(config)); - } - }); - if (promises.length > 0) { - var promise = $.Deferred(); - $.when.apply(null, promises) - .then(promise.resolve) - .fail(promise.reject); - return promise; - } - }; - - // Only for permalink 1.1 support - self.parse = function (state, errors, config) { - if (state.palettes) { - if (!wv.palettes.supported) { - // FIXME: This should go in errors - delete state.palettes; - wv.ui.notify('The custom palette feature is not supported ' + - 'with your web browser. Upgrade or try again in a ' + - 'different browser'); - return; - } - var parts = state.palettes.split('~'); - _.each(parts, function (part) { - var items = part.split(','); - var layerId = items[0]; - var paletteId = items[1]; - if (!config.layers[layerId]) { - errors.push({ - message: 'Invalid layer for palette ' + - paletteId + ': ' + layerId - }); - } else if (!config.layers[layerId].palette) { - errors.push({ - message: 'Layer ' + layerId + ' does not ' + - 'support palettes' - }); - } else { - var layer = _.find(state.l, { - id: layerId - }); - if (layer) { - layer.attributes.push({ - id: 'palette', - value: paletteId - }); - } else { - errors.push({ - message: 'Layer ' + layerId + ' is not ' + - 'active' - }); - } - } - }); - delete state.paletes; - } - }; - - init(); - return self; -})(wv.palettes || {}); diff --git a/web/js/palettes/wv.palettes.legend.js b/web/js/palettes/wv.palettes.legend.js deleted file mode 100644 index ff8f6a85c0..0000000000 --- a/web/js/palettes/wv.palettes.legend.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * @module wv.palettes - */ -var wv = wv || {}; -wv.palettes = wv.palettes || {}; - -wv.palettes.legend = wv.palettes.legend || function (spec) { - var selector = spec.selector; - var config = spec.config; - var models = spec.models; - var model = spec.models.palettes; - var ui = spec.ui; - var layer = spec.layer; - var loaded = false; - var rendered = false; - - var self = {}; - - var init = function () { - var paletteId = layer.palette.id; - if (config.palettes.rendered[paletteId]) { - loaded = true; - render(); - } else { - wv.palettes.loadRendered(config, layer.id) - .done(function () { - if (!loaded) { - loaded = true; - render(); - if (spec.onLoad) { - spec.onLoad(); - } - } - }); - } - }; - - var render = function () { - var $parent = $(selector); - var paletteId = layer.palette.id; - var palette = config.palettes.rendered[paletteId]; - - var $legendPanel = $('
') - .addClass('wv-palettes-panel') - .attr('data-layer', layer.id); - $parent.append($legendPanel); - var legends = model.getLegends(layer.id); - _.each(legends, function (legend, index) { - if ((legend.type === 'continuous') || - (legend.type === 'discrete')) { - renderScale($legendPanel, legend, index, layer.id); - } - if (legend.type === 'classification') { - renderClasses($legendPanel, legend, index); - } - }); - self.update(); - }; - - var renderScale = function ($legendPanel, legend, index, layerId) { - $container = $('
') - .addClass('wv-palettes-legend') - .attr('data-index', index); - $colorbar = $('') - .addClass('wv-palettes-colorbar') - .attr('id', legend.id) - .attr('data-index', index); - // set fixed canvas dimensions - $colorbar[0].width = 235; - $colorbar[0].height = 12; - - $container.append($colorbar); - - var $runningDataPointBar = $('
') - .addClass('wv-running-bar'); - var $runningDataPointLabel = $('') - .addClass('wv-running-label'); - - var $ranges = $('
') - .addClass('wv-palettes-ranges'); - var $min = $('
') - .addClass('wv-palettes-min'); - var $max = $('
') - .addClass('wv-palettes-max'); - var $title = $('
') - .addClass('wv-palettes-title'); - $container.prepend($title); - $ranges - .append($min) - .append($max) - .append($runningDataPointLabel); - $container - .append($ranges) - .append($runningDataPointBar); - - $colorbar.on('mousemove', function (e) { - showUnitHover(e, index); - }); - $colorbar.on('mouseout', hideUnitsOnMouseOut); - $legendPanel.append($container); - wv.palettes.colorbar(selector + ' ' + - '[data-index=\'' + index + '\'] canvas', legend.colors); - }; - var renderClasses = function ($legendPanel, legend, index) { - // var $runningDataPointLabel = $("") - // .addClass("wv-running-category-label"); - var $panel = $('
') - .addClass('wv-palettes-legend') - .addClass('wv-palettes-classes') - // .append($runningDataPointLabel) - .attr('data-index', index); - $legendPanel - .attr('id', legend.id) - .append($panel); - }; - - var updateClasses = function (legend, index) { - var $panel = $(selector + ' [data-index=\'' + index + '\']'); - $panel.empty(); - _.each(legend.colors, function (color, classIndex) { - var $colorBox; - var $runningDataPointLabel = $('') - .addClass('wv-running-category-label'); - $colorBox = $('') - .attr('data-index', index) - .attr('data-class-index', classIndex) - .attr('data-hex', color) - .addClass('wv-palettes-class') - .html(' ') - .css('background-color', wv.util.hexToRGB(color)) - .hover(highlightClass, unhighlightClass); - $panel.append($colorBox); - $panel.append($runningDataPointLabel); - // Calls running data - $colorBox.on('mouseenter', showClassUnitHover); - $colorBox.on('mouseout', hideUnitsOnMouseOut); - }); - var $detailPanel = $('
'); - _.each(legend.colors, function (color, classIndex) { - var label = legend.tooltips[classIndex]; - label = (legend.units) ? label + ' ' + legend.units : label; - var $row = $('
') - .addClass('wv-palettes-class-detail') - .attr('data-class-index', classIndex); - $colorBox = - $row.append( - $('') - .addClass('wv-palettes-class') - .html(' ') - .css('background-color', wv.util.hexToRGB(color))) - .append($('') - .addClass('wv-palettes-class-label') - .attr('data-index', index) - .attr('data-class-index', classIndex) - .html(label)); - $detailPanel.append($row); - }); - if (!rendered) { - rendered = true; - } - }; - - self.update = function () { - if (!loaded) { - return; - } - var legends = model.getLegends(layer.id); - _.each(legends, function (legend, index) { - if ((legend.type === 'continuous') || - (legend.type === 'discrete')) { - wv.palettes.colorbar(selector + ' ' + - '[data-index=\'' + index + '\'] canvas', legend.colors); - showUnitRange(index); - } else if (legend.type === 'classification') { - updateClasses(legend, index); - } - }); - }; - - var showUnitRange = function (index) { - if (!loaded) { - return; - } - var legends = model.getLegends(layer.id, index); - var entries = model.get(layer.id, index) - .entries; - _.each(legends, function (legend, index) { - var min = legend.minLabel || _.first(legend.tooltips); - var max = legend.maxLabel || _.last(legend.tooltips); - min = (legend.units) ? min + ' ' + legend.units : min; - max = (legend.units) ? max + ' ' + legend.units : max; - $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-min') - .html(min); - $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-max') - .html(max); - var title = legend.title || ' '; - if (legends.length === 1) { - $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-title') - .hide(); - } else { - $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-title') - .html(title); - } - }); - }; - /** - * get color from canvas bar and - * send it to data processing - * - * @method showUnitHover - * @static - * @param {MouseEvent} e - * @return {void} - */ - var showUnitHover = function (e, index) { - var rgba; - var pos; - var x; - var y; - var id; - var legends; - if (!loaded) { - return; - } - legends = model.getLegends(layer.id)[index]; - offset = $(e.currentTarget) - .offset(); - x = e.pageX - offset.left; - y = e.pageY - offset.top; - rgba = wv.util.getCanvasPixelData(e.currentTarget, x, y); - hex = wv.util.rgbaToHex(rgba[0], rgba[1], rgba[2]); - ui.map.runningdata.newLegend(legends, hex); - }; - - /** - * get color from data attr and - * send it to data processing and - * render legend - * - * @method showClassUnitHover - * @static - * @param {MouseEvent} e - * @return {void} - */ - var showClassUnitHover = function (e) { - var hex = $(this) - .data('hex'); - var legends = model.getLegends(layer.id)[0]; - ui.map.runningdata.newLegend(legends, hex); - }; - - /** - * get color from data attr and - * send it to data processing and - * render legend - * - * @method showClassUnitHover - * @static - * @param {MouseEvent} e - * @return {void} - */ - var hideUnitsOnMouseOut = function () { - ui.map.runningdata.clearAll(); - }; - - var highlightClass = function () { - legendIndex = $(this) - .attr('data-index'); - classIndex = $(this) - .attr('data-class-index'); - $('.wv-palettes-class-label[data-index=\'' + legendIndex + '\']' + - '[data-class-index=\'' + classIndex + '\']') - .addClass('wv-palettes-class-highlight'); - }; - - var unhighlightClass = function () { - legendIndex = $(this) - .attr('data-index'); - classIndex = $(this) - .attr('data-class-index'); - $('.wv-palettes-class-label[data-index=\'' + legendIndex + '\']' + - '[data-class-index=\'' + classIndex + '\']') - .removeClass('wv-palettes-class-highlight'); - }; - - init(); - return self; -}; diff --git a/web/js/stub.js b/web/js/stub.js index fd6815bfdc..53c11b9a52 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -14,7 +14,8 @@ import layersOptions from './layers/layers.options'; import layersSidebar from './layers/layers.sidebar'; import palettes from './palettes/palettes'; import palettesLegend from './palettes/palettes.legend'; +import palettesModel from './palettes/palettes.model'; export default function () { - console.log($, GA, linkUi, linkModel, layerParser, layerValidate, layersAdd, layersActive, layersInfo, layersModal, layersModel, layersOptions, layersSidebar, palettes, palettesLegend); + console.log($, GA, linkUi, linkModel, layerParser, layerValidate, layersAdd, layersActive, layersInfo, layersModal, layersModel, layersOptions, layersSidebar, palettes, palettesLegend, palettesModel); }; From 6532db5f41be58246632a3f4691a8dd0e5fd1443 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 14:57:19 -0400 Subject: [PATCH 033/242] exported layerbuilder --- web/js/map/wv.map.layerbuilder.js | 42 +++++++++++++++---------------- web/js/stub.js | 3 ++- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index 0469f6fdea..d7776f5bcb 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -1,12 +1,13 @@ -var wv = wv || {}; -wv.map = wv.map || {}; +import util from '../util/wv.util'; +import ol from 'openlayers'; +import { + cloneDeep as _cloneDeep, + merge as _merge, + each as _each +} from 'lodash'; -/* - * @Class - */ -wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Parent) { +export default function(models, config, cache, Parent) { var self = {}; - var map; self.init = function (Parent) { self.extentLayers = []; Parent.events.on('selecting', hideWrap); @@ -26,9 +27,8 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa * @returns {object} OpenLayers layer */ self.createLayer = function (def, options) { - var date, key, proj, layer, layerNext, layerPrior, group, attributes; + var date, key, proj, layer, layerNext, layerPrior, attributes; - group = null; options = options || {}; key = self.layerKey(def, options); proj = models.proj.selected; @@ -38,12 +38,12 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa attributes = { id: def.id, key: key, - date: wv.util.toISOStringDate(date), + date: util.toISOStringDate(date), proj: proj.id, def: def }; - def = _.cloneDeep(def); - _.merge(def, def.projections[proj.id]); + def = _cloneDeep(def); + _merge(def, def.projections[proj.id]); if (def.type === 'wmts') { layer = createLayerWMTS(def, options); if (proj.id === 'geographic' && def.wrapadjacentdays === true) { @@ -99,9 +99,9 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa var projId = models.proj.selected.id; var date; if (options.date) { - date = wv.util.toISOStringDate(options.date); + date = util.toISOStringDate(options.date); } else { - date = wv.util.toISOStringDate(models.date.selected); + date = util.toISOStringDate(models.date.selected); } var dateId = (def.period === 'daily') ? date : ''; var palette = ''; @@ -139,7 +139,7 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa } if (typeof def.matrixIds === 'undefined') { matrixIds = []; - _.each(matrixSet.resolutions, function (resolution, index) { + _each(matrixSet.resolutions, function (resolution, index) { matrixIds.push(index); }); } else { @@ -161,9 +161,9 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa if (def.period === 'daily') { date = options.date || models.date.selected; if (day) { - date = wv.util.dateAdd(date, 'day', day); + date = util.dateAdd(date, 'day', day); } - extra = '?TIME=' + wv.util.toISOStringDate(date); + extra = '?TIME=' + util.toISOStringDate(date); } var sourceOptions = { url: source.url + extra, @@ -205,8 +205,8 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa * @returns {object} OpenLayers WMS layer */ var createLayerWMS = function (def, options, day) { - var proj, source, matrixSet, matrixIds, extra, transparent, - date, extent, start, bbox, res; + var proj, source, extra, transparent, + date, extent, start, res, parameters; proj = models.proj.selected; source = config.sources[def.source]; extent = proj.maxExtent; @@ -241,9 +241,9 @@ wv.map.layerbuilder = wv.map.layerbuilder || function (models, config, cache, Pa if (def.period === 'daily') { date = options.date || models.date.selected; if (day) { - date = wv.util.dateAdd(date, 'day', day); + date = util.dateAdd(date, 'day', day); } - extra = '?TIME=' + wv.util.toISOStringDate(date); + extra = '?TIME=' + util.toISOStringDate(date); } var sourceOptions = { url: source.url + extra, diff --git a/web/js/stub.js b/web/js/stub.js index ef0d1ebe19..e37dd96f4a 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -3,9 +3,10 @@ import $ from 'jquery'; import { DateSelector } from 'worldview-components'; import { parse as mapParser } from './map/wv.map'; import builder from './map/wv.map.datelinebuilder'; +import layerBuilder from './map/wv.map.layerbuilder'; export default function () { - console.log($, DateSelector, mapParser, builder); + console.log($, DateSelector, mapParser, builder, layerBuilder); }; export const stub2 = (function() { From 50e87898a97c3cfb8b5ffcbcdca05451c49e8e51 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 15:01:20 -0400 Subject: [PATCH 034/242] Exported imagePanel & imageRubberband --- .../{wv.image.panel.js => image.panel.js} | 42 ++++++++++--------- ...mage.rubberband.js => image.rubberband.js} | 20 +++++---- web/js/index.js | 2 + 3 files changed, 36 insertions(+), 28 deletions(-) rename web/js/image/{wv.image.panel.js => image.panel.js} (91%) rename web/js/image/{wv.image.rubberband.js => image.rubberband.js} (95%) diff --git a/web/js/image/wv.image.panel.js b/web/js/image/image.panel.js similarity index 91% rename from web/js/image/wv.image.panel.js rename to web/js/image/image.panel.js index 2b52ddf95d..e04aafb669 100644 --- a/web/js/image/wv.image.panel.js +++ b/web/js/image/image.panel.js @@ -1,7 +1,12 @@ -var wv = wv || {}; -wv.image = wv.image || {}; - -wv.image.panel = wv.image.panel || function (models, ui, config) { +import $ from 'jquery'; +import each from 'lodash/each'; +import isUndefined from 'lodash/isUndefined'; +import ol from 'openlayers'; +import {GA as googleAnalytics} from 'worldview-components'; +import util from '../util/util.js'; +import wvui from '../ui/ui.js'; + +export function imagePanel(models, ui, config) { var self = {}; var container; @@ -26,7 +31,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { url = host + '/' + path + '?'; if (config.parameters.imagegen) { - wv.util.warn('Redirecting image download to: ' + url); + util.warn('Redirecting image download to: ' + url); } var init = function () { @@ -95,7 +100,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { '' + '
'; - var $dialog = wv.ui.getDialog() + var $dialog = wvui.getDialog() .html(htmlElements); $dialog.dialog({ dialogClass: 'wv-panel wv-image', @@ -137,7 +142,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { // Auto-set default resolution to map's current zoom level; round it // for incremental zoom steps - var curZoom = Math.round(wvx.ui.map.selected.getView() + var curZoom = Math.round(ui.map.selected.getView() .getZoom()); // Don't do anything if the user hasn't changed zoom levels; we want to @@ -218,7 +223,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { $('#wv-image-worldfile option[value=\'' + worldfile + '\']') .attr('selected', 'selected'); - wv.ui.positionDialog($dialog, { + wvui.positionDialog($dialog, { my: 'left top', at: 'left bottom+5', of: ('#wv-image-button') @@ -259,10 +264,9 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { // get layer transparencies (opacities) var opacities = []; - _(products) - .each(function (product) { - opacities.push((_.isUndefined(product.opacity)) ? 1 : product.opacity); - }); + each(products, function (product) { + opacities.push((isUndefined(product.opacity)) ? 1 : product.opacity); + }); // console.log("EPSG: " + epsg); @@ -284,8 +288,8 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { var minLat = geolonlat2[1]; var maxLat = geolonlat1[1]; - var ll = wv.util.formatCoordinate([minLon, maxLat]); - var ur = wv.util.formatCoordinate([maxLon, minLat]); + var ll = util.formatCoordinate([minLon, maxLat]); + var ur = util.formatCoordinate([maxLon, minLat]); if (x2 - x1 < 150) { ll = ''; @@ -315,7 +319,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { var dTime = time; // Julian date, padded with two zeros (to ensure the julian date is always in DDD format). - var jStart = wv.util.parseDateUTC(dTime.getUTCFullYear() + '-01-01'); + var jStart = util.parseDateUTC(dTime.getUTCFullYear() + '-01-01'); var jDate = '00' + (1 + Math.ceil((dTime.getTime() - jStart) / 86400000)); dlURL += 'TIME=' + dTime.getUTCFullYear() + (jDate) .substr((jDate.length) - 3); @@ -325,7 +329,7 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { // dlURL += "&switch="+s; dlURL += '&epsg=' + epsg; var layers = []; - _.each(products, function (layer) { + each(products, function (layer) { if (layer.projections[s].layer) { layers.push(layer.projections[s].layer); } else { @@ -380,12 +384,12 @@ wv.image.panel = wv.image.panel || function (models, ui, config) { $('#wv-image-download-button') .unbind('click') .click(function () { - WVC.GA.event('Image Download', 'Click', 'Download'); - wv.util.metrics('lc=' + encodeURIComponent(dlURL + '&worldfile=' + imgWorldfile + '&format=' + imgFormat + '&width=' + imgWidth + '&height=' + imgHeight)); + googleAnalytics.event('Image Download', 'Click', 'Download'); + util.metrics('lc=' + encodeURIComponent(dlURL + '&worldfile=' + imgWorldfile + '&format=' + imgFormat + '&width=' + imgWidth + '&height=' + imgHeight)); window.open(dlURL + '&worldfile=' + imgWorldfile + '&format=' + imgFormat + '&width=' + imgWidth + '&height=' + imgHeight, '_blank'); }); } catch (cause) { - wv.util.error(cause); + util.error(cause); } }; diff --git a/web/js/image/wv.image.rubberband.js b/web/js/image/image.rubberband.js similarity index 95% rename from web/js/image/wv.image.rubberband.js rename to web/js/image/image.rubberband.js index f67737c33b..10f6efba0a 100644 --- a/web/js/image/wv.image.rubberband.js +++ b/web/js/image/image.rubberband.js @@ -1,7 +1,9 @@ -var wv = wv || {}; -wv.image = wv.image || {}; +import $ from 'jquery'; +import find from 'lodash/find'; +import util from '../util/util.js'; +import wvui from '../ui/ui.js'; -wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { +export function imageRubberband(models, ui, config) { var self = {}; var PALETTE_WARNING = @@ -29,7 +31,7 @@ wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { var jcropAPI = null; var previousPalettes = null; var $button; - self.events = wv.util.events(); + self.events = util.events(); /** * Initializes the RubberBand component. @@ -115,10 +117,10 @@ wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { renderable: true }); var on = true; - if (_.find(layers, { + if (find(layers, { id: 'Graticule' }) && geographic) { - wv.ui.ask({ + wvui.ask({ header: 'Notice', message: GRATICLE_WARNING, onOk: disableGraticle, @@ -133,7 +135,7 @@ wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { // Confirm with the user they want to continue, and if so, disable // the palettes before bringing up the crop box. if (models.palettes.inUse()) { - wv.ui.ask({ + wvui.ask({ header: 'Notice', message: PALETTE_WARNING, onOk: disablePalettes, @@ -147,7 +149,7 @@ wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { // Don't toggle area select UI for downloading image if image rotated if (ui.map.selected.getView() .getRotation() === 0.0) { toggleOn(); } else { - wv.ui.ask({ + wvui.ask({ header: 'Reset rotation?', message: ROTATE_WARNING, onOk: function () { @@ -169,7 +171,7 @@ wv.image.rubberband = wv.image.rubberband || function (models, ui, config) { previousPalettes = null; } toolbarButtons('enable'); - wv.ui.closeDialog(); + wvui.closeDialog(); $('.wv-image-coords') .hide(); } diff --git a/web/js/index.js b/web/js/index.js index 7c79cdb394..b468a14662 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1,6 +1,8 @@ export { stub, stub2 } from './stub'; export { polyfill } from './polyfill'; export { util } from './util/util'; +export { imagePanel } from './image/image.panel'; +export { imageRubberband } from './image/image.rubberband'; export { linkModel } from './link/link.model'; export { linkUi } from './link/link.ui'; export { parse as layerParser, validate as layerValidate } from './layers/layers'; From 209d2f19e319d801c4abe6f16078e24de5fae2c4 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 15:01:37 -0400 Subject: [PATCH 035/242] fixed dependency paths --- web/js/map/wv.map.animate.js | 7 +++---- web/js/map/wv.map.datelinebuilder.js | 2 +- web/js/map/wv.map.layerbuilder.js | 2 +- web/js/stub.js | 3 ++- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/js/map/wv.map.animate.js b/web/js/map/wv.map.animate.js index 3c318b7ec8..20b848607f 100644 --- a/web/js/map/wv.map.animate.js +++ b/web/js/map/wv.map.animate.js @@ -1,6 +1,6 @@ -var wv = wv || {}; -wv.map = wv.map || {}; -wv.map.animate = wv.map.animate || function (models, config, ui) { +import ol from 'openlayers'; + +export default function (models, config, ui) { var self = {}; /** @@ -71,6 +71,5 @@ wv.map.animate = wv.map.animate || function (models, config, ui) { })[0]; return Math.max(2, Math.min(bestFit.zoom, start - 1, end - 1)); }; - return self; }; diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/wv.map.datelinebuilder.js index b68619fab6..04e2f91ce2 100644 --- a/web/js/map/wv.map.datelinebuilder.js +++ b/web/js/map/wv.map.datelinebuilder.js @@ -3,7 +3,7 @@ import ReactDOM from 'React-dom'; import WVC from 'worldview-components'; import ol from 'openlayers'; -import util from '../util/util.js'; +import util from '../util/util'; var map, overlay1, overlay2, textFactory, lineFactory, textOverlay1, textOverlay2, lineLeft, lineRight, textLeft, textRight, proj; diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index d7776f5bcb..a05c35566f 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -1,4 +1,4 @@ -import util from '../util/wv.util'; +import util from '../util/util'; import ol from 'openlayers'; import { cloneDeep as _cloneDeep, diff --git a/web/js/stub.js b/web/js/stub.js index e37dd96f4a..7fb15826d3 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -4,9 +4,10 @@ import { DateSelector } from 'worldview-components'; import { parse as mapParser } from './map/wv.map'; import builder from './map/wv.map.datelinebuilder'; import layerBuilder from './map/wv.map.layerbuilder'; +import animate from './map/wv.map.animate'; export default function () { - console.log($, DateSelector, mapParser, builder, layerBuilder); + console.log($, DateSelector, mapParser, builder, layerBuilder, animate); }; export const stub2 = (function() { From eaa58723fba81d6f189354720b6eb5d00b5c130a Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 15:44:39 -0400 Subject: [PATCH 036/242] exported map files --- web/js/map/wv.map.datelinebuilder.js | 2 +- web/js/map/wv.map.model.js | 20 ++++---- web/js/map/wv.map.precachetile.js | 16 ++----- web/js/map/wv.map.rotate.js | 17 +++---- web/js/map/wv.map.runningdata.js | 31 ++++++------ web/js/map/wv.map.ui.js | 70 ++++++++++++++-------------- web/js/stub.js | 6 ++- 7 files changed, 76 insertions(+), 86 deletions(-) diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/wv.map.datelinebuilder.js index 04e2f91ce2..8d9069523a 100644 --- a/web/js/map/wv.map.datelinebuilder.js +++ b/web/js/map/wv.map.datelinebuilder.js @@ -8,7 +8,7 @@ import util from '../util/util'; var map, overlay1, overlay2, textFactory, lineFactory, textOverlay1, textOverlay2, lineLeft, lineRight, textLeft, textRight, proj; -export default function datelinebuilder(models, config) { +export default function (models, config) { var self = {}; /* * Sets globals and event listeners diff --git a/web/js/map/wv.map.model.js b/web/js/map/wv.map.model.js index 3c73ff9f9d..ca00e1e787 100644 --- a/web/js/map/wv.map.model.js +++ b/web/js/map/wv.map.model.js @@ -1,16 +1,12 @@ -var wv = wv || {}; -wv.map = wv.map || {}; +import ol from 'openlayers'; +import util from '../util/util'; +import { clone as _clone } from 'lodash'; -// FIXME: The code is like this for historical reasons and should be refactored -// at some point. -/* - * @Class - */ -wv.map.model = wv.map.model || function (models, config) { +export default function(models, config) { var self = {}; self.extent = null; - self.events = wv.util.events(); + self.events = util.events(); self.rotation = 0; /* * Emits update event @@ -51,7 +47,7 @@ wv.map.model = wv.map.model || function (models, config) { if (ol.extent.intersects(extent, maxExtent)) { self.extent = state.v; } else { - self.extent = _.clone(proj.maxExtent); + self.extent = _clone(proj.maxExtent); errors.push({ message: 'Extent outside of range' }); @@ -76,7 +72,7 @@ wv.map.model = wv.map.model || function (models, config) { * @returns {void} */ self.save = function (state) { - state.v = _.clone(self.extent); + state.v = _clone(self.extent); if (self.rotation !== 0.0 && self.rotation !== 0 && models.proj.selected.id !== 'geographic') { state.r = (self.rotation * (180.0 / Math.PI)) .toPrecision(6); @@ -99,7 +95,7 @@ wv.map.model = wv.map.model || function (models, config) { * @returns {object} Extent Array */ self.getLeadingExtent = function () { - var curHour = wv.util.now() + var curHour = util.now() .getUTCHours(); // For earlier hours when data is still being filled in, force a far eastern perspective diff --git a/web/js/map/wv.map.precachetile.js b/web/js/map/wv.map.precachetile.js index 67904eed8f..dddfad5e23 100644 --- a/web/js/map/wv.map.precachetile.js +++ b/web/js/map/wv.map.precachetile.js @@ -1,10 +1,7 @@ -var wv = wv || {}; -wv.map = wv.map || {}; +import {each as _each} from 'lodash'; +import ol from 'openlayers'; -/* - * @Class - */ -wv.map.precachetile = wv.map.precachetile || function (models, config, cache, parent) { +export default function (models, config, cache, parent) { /* * Loaded the layers that are needed for any one date. * Checks the cache to see if a layer has already @@ -20,14 +17,12 @@ wv.map.precachetile = wv.map.precachetile || function (models, config, cache, pa */ self.promiseDay = function (date) { var viewState; - var currentZ; var frameState; var extent; var pixelRatio; var layers; var map; var promiseArray; - var projExtent; layers = getActiveLayersWithData(date); map = parent.selected; @@ -37,10 +32,7 @@ wv.map.precachetile = wv.map.precachetile || function (models, config, cache, pa promiseArray = layers.map(function (def) { var key; var layer; - var renderer; - var i = 0; - i = 0; key = parent.layerKey(def, { date: date }); @@ -64,7 +56,7 @@ wv.map.precachetile = wv.map.precachetile || function (models, config, cache, pa var layers; var arra = []; layers = models.layers.get(); - _.each(layers, function (layer) { + _each(layers, function (layer) { if (layer.visible && new Date(layer.startDate > date)) { arra.push(layer); } diff --git a/web/js/map/wv.map.rotate.js b/web/js/map/wv.map.rotate.js index 5005c56200..e48cd87eec 100644 --- a/web/js/map/wv.map.rotate.js +++ b/web/js/map/wv.map.rotate.js @@ -1,12 +1,8 @@ -var wv = wv || {}; - -wv.map = wv.map || {}; -/* - * @Class - */ -wv.map.rotate = wv.map.rotate || function (ui, models, map) { - this.evts = wv.util.events(); - var model = models.map; +import $ from 'jquery'; +import util from '../util/util'; + +export default function(ui, models, map) { + this.evts = util.events(); this.intervalId = null; var self = this; @@ -153,8 +149,7 @@ wv.map.rotate = wv.map.rotate || function (ui, models, map) { * @returns {void} */ this.updateRotation = function () { - var deg, - radians, + var radians, currentView, currentDeg; diff --git a/web/js/map/wv.map.runningdata.js b/web/js/map/wv.map.runningdata.js index e0b3615268..2e95631a56 100644 --- a/web/js/map/wv.map.runningdata.js +++ b/web/js/map/wv.map.runningdata.js @@ -1,7 +1,11 @@ -var wv = wv || {}; +import $ from 'jquery'; +import util from '../util/util'; +import { + differenced as _difference, + each as _each +} from 'lodash'; -wv.map = wv.map || {}; -wv.map.runningdata = wv.map.runningdata || function (models) { +export default function(models) { var self; var $productsBox; var productsBoxHeight; @@ -67,7 +71,7 @@ wv.map.runningdata = wv.map.runningdata || function (models) { // } for (var i = 0, len = legend.colors.length; i < len; i++) { - if (wv.util.hexColorDelta(legend.colors[i], hex) < 5) { // If the two colors are close + if (util.hexColorDelta(legend.colors[i], hex) < 5) { // If the two colors are close return { label: legend.tooltips[i] + ' ' + units, len: len, @@ -184,7 +188,7 @@ wv.map.runningdata = wv.map.runningdata || function (models) { * */ self.LayersToRemove = function (oldArray, newArray) { - return _.difference(oldArray, newArray); + return _difference(oldArray, newArray); }; /* @@ -204,8 +208,7 @@ wv.map.runningdata = wv.map.runningdata || function (models) { self.activeLayers = []; map.forEachLayerAtPixel(coords, function (layer, data) { var hex; - var palette; - var legend; + var legends; var layerId; if (!layer.wv) { @@ -217,9 +220,9 @@ wv.map.runningdata = wv.map.runningdata || function (models) { return; } legends = models.palettes.getLegends(layerId); - hex = wv.util.rgbaToHex(data[0], data[1], data[2], data[3]); + hex = util.rgbaToHex(data[0], data[1], data[2], data[3]); - _.each(legends, function (legend) { + _each(legends, function (legend) { if (legend) { self.createRunnerFromLegend(legend, hex); } @@ -332,8 +335,6 @@ wv.map.runningdata = wv.map.runningdata || function (models) { */ self.setCategoryValue = function (id, data) { var $categoryPaletteCase; - var $caseWidth; - var $labelWidth; var $colorSquare; var $paletteLabel; var location; @@ -347,10 +348,7 @@ wv.map.runningdata = wv.map.runningdata || function (models) { $colorSquare = $categoryPaletteCase.find('[data-class-index=\'' + data.index + '\']'); $paletteLabel = $categoryPaletteCase.find('.wv-running-category-label'); - $caseWidth = $categoryPaletteCase.width(); - $paletteLabel.text(data.label); - $labelWidth = wv.util.getTextWidth(data.label, 'Lucida Sans'); location = ((marginLeft + squareWidth) * data.index); if (location < 5) { @@ -382,6 +380,9 @@ wv.map.runningdata = wv.map.runningdata || function (models) { var $palette; var $paletteCase; var $paletteWidth; + var $paletteCaseWidth; + var $paletteLabel; + var $paletteBar; var labelWidth; var percent; var labelMargin; @@ -400,7 +401,7 @@ wv.map.runningdata = wv.map.runningdata || function (models) { location = ($paletteWidth * percent + margin); $paletteLabel.text(data.label); - labelWidth = wv.util.getTextWidth(data.label, 'Lucida Sans'); + labelWidth = util.getTextWidth(data.label, 'Lucida Sans'); labelMargin = self.getLabelMarginLeft(labelWidth, $paletteWidth, location); $paletteLabel.attr('style', 'left:' + Math.round(labelMargin) + 'px;'); diff --git a/web/js/map/wv.map.ui.js b/web/js/map/wv.map.ui.js index bc9bddb8bd..4500d0b465 100644 --- a/web/js/map/wv.map.ui.js +++ b/web/js/map/wv.map.ui.js @@ -1,10 +1,15 @@ -var wv = wv || {}; -wv.map = wv.map || {}; - -/* - * @Class - */ -wv.map.ui = wv.map.ui || function (models, config, components) { +import $ from 'jquery'; +import ol from 'openlayers'; +import { + forOwn as _forOwn, + each as _each, + findIndex as _findIndex, + find as _find, + throttle as _throttle +} from 'lodash'; +import util from '../util/util'; + +export default function(models, config, components) { var id = 'wv-map'; var selector = '#' + id; var cache = new Cache(400); // Save layers from days visited @@ -13,21 +18,18 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var rotation = new components.Rotation(self, models); var layerBuilder; var dateline = components.Dateline(models, config); - var layerKey; var createLayer; var precache = components.Precache(models, config, cache, self); var dataRunner = self.runningdata = new components.Runningdata(models); - var hiDPI = ol.has.DEVICE_PIXEL_RATIO > 1; - var pixelRatio = hiDPI ? 2 : 1; self.mapIsbeingDragged = false; self.mapIsbeingZoomed = false; self.proj = {}; // One map for each projection self.selected = null; // The map for the selected projection - self.events = wv.util.events(); + self.events = util.events(); layerBuilder = self.layerBuilder = components.Layerbuilder(models, config, cache, self); - layerKey = self.layerKey = layerBuilder.layerKey; + self.layerKey = layerBuilder.layerKey; createLayer = self.createLayer = layerBuilder.createLayer; self.promiseDay = precache.promiseDay; @@ -45,7 +47,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { } // NOTE: iOS sometimes bombs if this is _.each instead. In that case, // it is possible that config.projections somehow becomes array-like. - _.forOwn(config.projections, function (proj) { + _forOwn(config.projections, function (proj) { var map = createMap(proj); self.proj[proj.id] = map; }); @@ -131,8 +133,8 @@ wv.map.ui = wv.map.ui || function (models, config, components) { */ var onResize = function () { var map = self.selected; - if (map.small !== wv.util.browser.small) { - if (wv.util.browser.small) { + if (map.small !== util.browser.small) { + if (util.browser.small) { map.removeControl(map.wv.scaleImperial); map.removeControl(map.wv.scaleMetric); $('#' + map.getTarget() + ' .select-wrapper') @@ -187,7 +189,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var activeLayers = map.getLayers() .getArray() .slice(0); - _.each(activeLayers, function (mapLayer) { + _each(activeLayers, function (mapLayer) { if (mapLayer.wv) { map.removeLayer(mapLayer); } @@ -213,7 +215,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var defs = models.layers.get({ reverse: true }); - _.each(defs, function (def) { + _each(defs, function (def) { if (isGraticule(def)) { addGraticule(); } else { @@ -240,7 +242,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { } }); var defs = models.layers.get(); - _.each(defs, function (def) { + _each(defs, function (def) { if (isGraticule(def)) { var renderable = models.layers.isRenderable(def.id); if (renderable) { @@ -280,7 +282,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { */ var addLayer = function (def) { - var mapIndex = _.findIndex(models.layers.get({ + var mapIndex = _findIndex(models.layers.get({ reverse: true }), { id: def.id @@ -338,7 +340,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { */ var updateDate = function () { var defs = models.layers.get(); - _.each(defs, function (def) { + _each(defs, function (def) { if (def.period !== 'daily') { return; } @@ -362,7 +364,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var updateLookup = function (layerId) { // If the lookup changes, all layers in the cache are now stale // since the tiles need to be rerendered. Remove from cache. - var selectedDate = wv.util.toISOStringDate(models.date.selected); + var selectedDate = util.toISOStringDate(models.date.selected); var selectedProj = models.proj.selected.id; cache.removeWhere(function (key, mapLayer) { if (mapLayer.wvid === layerId && @@ -395,7 +397,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var findLayer = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = _.find(layers, { + var layer = _find(layers, { wv: { id: def.id } @@ -417,7 +419,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var findLayerIndex = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = _.findIndex(layers, { + var layer = _findIndex(layers, { wv: { id: def.id } @@ -484,7 +486,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { self.selected.graticule = null; }; - var triggerExtent = _.throttle(function () { + var triggerExtent = _throttle(function () { self.events.trigger('extent'); }, 500, { trailing: true @@ -519,7 +521,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { */ var createMap = function (proj) { var id, $map, scaleMetric, scaleImperial, rotateInteraction, - map, mobileRotation, lineSvgs, resolution; + map, mobileRotation; id = 'wv-map-' + proj.id; $map = $('
') @@ -598,7 +600,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { map.addInteraction(rotateInteraction); map.addInteraction(mobileRotation); } else { - lineSvgs = dateline.init(self, map, models.date.selected); + dateline.init(self, map, models.date.selected); } // Set event listeners for changes on the map view (when rotated, zoomed, panned) @@ -607,7 +609,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { map.getView() .on('change:resolution', updateExtent); map.getView() - .on('change:rotation', _.throttle(onRotate, 300)); + .on('change:rotation', _throttle(onRotate, 300)); map.on('pointerdrag', function () { self.mapIsbeingDragged = true; self.events.trigger('drag'); @@ -770,7 +772,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { return crs; } target = ol.proj.transform(source, proj.crs, 'EPSG:4326'); - return wv.util.formatCoordinate(target, format) + ' ' + crs; + return util.formatCoordinate(target, format) + ' ' + crs; }; $map.append($mousePosition); @@ -784,7 +786,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { .attr('data-format', 'latlon-dms') .addClass('map-coord'); - if (wv.util.getCoordinateFormat() === 'latlon-dd') { + if (util.getCoordinateFormat() === 'latlon-dd') { $('div.map-coord') .removeClass('latlon-selected'); $latlonDD.addClass('latlon-selected'); @@ -814,13 +816,13 @@ wv.map.ui = wv.map.ui || function (models, config, components) { .removeClass('latlon-selected'); $('span.map-coord[data-format="latlon-dms"]') .addClass('latlon-selected'); - wv.util.setCoordinateFormat('latlon-dms'); + util.setCoordinateFormat('latlon-dms'); } else { $('span.map-coord') .removeClass('latlon-selected'); $('span.map-coord[data-format="latlon-dd"]') .addClass('latlon-selected'); - wv.util.setCoordinateFormat('latlon-dd'); + util.setCoordinateFormat('latlon-dd'); } }); @@ -830,7 +832,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { var outside; // if mobile return - if (wv.util.browser.small) { + if (util.browser.small) { return; } // if over coords return @@ -865,7 +867,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { }); // setting a limit on running-data retrievel - if (self.mapIsbeingDragged || wv.util.browser.small) { + if (self.mapIsbeingDragged || util.browser.small) { return; } if (typeof models.naturalEvents === 'undefined' || @@ -903,7 +905,7 @@ wv.map.ui = wv.map.ui || function (models, config, components) { hoverThrottle.cancel(); dataRunner.clearAll(); }) - .mousemove(hoverThrottle = _.throttle(onMouseMove, 300)); + .mousemove(hoverThrottle = _throttle(onMouseMove, 300)); }; /* diff --git a/web/js/stub.js b/web/js/stub.js index 7fb15826d3..9ea427b65d 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -5,9 +5,13 @@ import { parse as mapParser } from './map/wv.map'; import builder from './map/wv.map.datelinebuilder'; import layerBuilder from './map/wv.map.layerbuilder'; import animate from './map/wv.map.animate'; +import mapModel from './map/wv.map.model'; +import preCacheTile from './map/wv.map.precachetile'; +import runningData from './map/wv.map.runningdata'; +import mapUi from './map/wv.map.ui'; export default function () { - console.log($, DateSelector, mapParser, builder, layerBuilder, animate); + console.log($, DateSelector, mapParser, builder, layerBuilder, animate, mapModel, preCacheTile, runningData, mapUi); }; export const stub2 = (function() { From 088b58ab559c7108a556263919c82c48f581dbb3 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 15:56:19 -0400 Subject: [PATCH 037/242] Ignore d3 global variables --- .eslintrc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index 2c87370844..f15a3ef23e 100644 --- a/.eslintrc +++ b/.eslintrc @@ -52,7 +52,10 @@ "standard/computed-property-even-spacing": "warn", "wrap-iife": "warn", "new-cap": "warn" - } + }, + "globals": { + "d3": true, + }, } ] } From 6c7327244e8ba536ac762fd0e9915a2a0fb55ece Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Thu, 2 Nov 2017 16:14:02 -0400 Subject: [PATCH 038/242] Export projections. Added proj4 2.3.3 to package.json --- package.json | 1 + web/js/index.js | 4 ++++ web/js/proj/wv.proj.js | 22 ------------------ .../projection.change.js} | 21 +++++++---------- web/js/projection/projection.js | 16 +++++++++++++ .../projection.model.js} | 18 ++++++--------- .../projection.ui.js} | 23 +++++++------------ web/js/wv.main.js | 10 ++++---- 8 files changed, 49 insertions(+), 66 deletions(-) delete mode 100644 web/js/proj/wv.proj.js rename web/js/{proj/wv.proj.change.js => projection/projection.change.js} (91%) create mode 100644 web/js/projection/projection.js rename web/js/{proj/wv.proj.model.js => projection/projection.model.js} (81%) rename web/js/{proj/wv.proj.ui.js => projection/projection.ui.js} (88%) diff --git a/package.json b/package.json index 8d54e76e1e..06fcd6fccd 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "lodash": "4.15.0", "openlayers": "4.3.1", "perfect-scrollbar": "0.7.x", + "proj4": "2.3.3", "promise-queue": "2.2.3", "react": "15.3.1", "react-dom": "15.3.1", diff --git a/web/js/index.js b/web/js/index.js index b468a14662..f8e4f9271a 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -16,3 +16,7 @@ export { layersSidebar } from './layers/layers.sidebar'; export { palettes } from './palettes/palettes'; export { palettesLegend } from './palettes/palettes.legend'; export { palettesModel } from './palettes/palettes.model'; +export { projectionParse } from './projection/projection'; +export { projectionChange } from './projection/projection.change'; +export { projectionModel } from './projection/projection.model'; +export { projectionUi } from './projection/projection.ui'; diff --git a/web/js/proj/wv.proj.js b/web/js/proj/wv.proj.js deleted file mode 100644 index ad788f3260..0000000000 --- a/web/js/proj/wv.proj.js +++ /dev/null @@ -1,22 +0,0 @@ -var wv = wv || {}; - -wv.proj = (function (self) { - self.parse = function (state, errors, config) { - // Permalink version 1.0 - 1.1 - if (state['switch']) { - state.p = state['switch']; - delete state['switch']; - } - var projId = state.p; - if (projId) { - if (!config.projections[projId]) { - delete state.p; - errors.push({ - message: 'Unsupported projection: ' + projId - }); - } - } - }; - - return self; -})(wv.proj || {}); diff --git a/web/js/proj/wv.proj.change.js b/web/js/projection/projection.change.js similarity index 91% rename from web/js/proj/wv.proj.change.js rename to web/js/projection/projection.change.js index 791049bf1d..976f4b572e 100644 --- a/web/js/proj/wv.proj.change.js +++ b/web/js/projection/projection.change.js @@ -1,13 +1,8 @@ -/** - * @module wv.proj - */ -var wv = wv || {}; -wv.proj = wv.proj || {}; +import $ from 'jquery'; +import util from '../util/util'; +import wvui from '../ui/ui'; -/** - * @class wv.proj.change - */ -wv.proj.change = wv.proj.change || function (models) { +export function projectionChange(models) { var PROJECTION_CHANGE_DATE = new Date(Date.UTC(2013, 5, 6)); var EARLIEST_CHANGE_DATE = new Date(Date.UTC(2012, 11, 31)); var DO_NOT_SHOW_AGAIN = 'arcticProjectionChangeNotification'; @@ -15,7 +10,7 @@ wv.proj.change = wv.proj.change || function (models) { var polarVisited = 0; var self = {}; - self.events = wv.util.events(); + self.events = util.events(); self.old = false; self.crs = null; self.epsg = null; @@ -63,7 +58,7 @@ wv.proj.change = wv.proj.change || function (models) { var checkNotify = function () { // If the flag cannot be stored in local storage, do not notify // the user which will constantly annoy them. - if (!wv.util.browser.localStorage) { + if (!util.browser.localStorage) { return; } if (localStorage.getItem(DO_NOT_SHOW_AGAIN) === 'true') { @@ -113,10 +108,10 @@ wv.proj.change = wv.proj.change || function (models) { 'Do not show again' ].join(''); - wv.ui.notify(message, 'Notice', 400); + wvui.notify(message, 'Notice', 400); var $check = $('#arcticChangeNoticeDontShowAgain'); $check.on('click', function () { - if ($check.is(':checked') && wv.util.browser.localStorage) { + if ($check.is(':checked') && util.browser.localStorage) { localStorage.setItem(DO_NOT_SHOW_AGAIN, 'true'); } }); diff --git a/web/js/projection/projection.js b/web/js/projection/projection.js new file mode 100644 index 0000000000..79b08f5469 --- /dev/null +++ b/web/js/projection/projection.js @@ -0,0 +1,16 @@ +export function parse(state, errors, config) { + // Permalink version 1.0 - 1.1 + if (state['switch']) { + state.p = state['switch']; + delete state['switch']; + } + var projId = state.p; + if (projId) { + if (!config.projections[projId]) { + delete state.p; + errors.push({ + message: 'Unsupported projection: ' + projId + }); + } + } +}; diff --git a/web/js/proj/wv.proj.model.js b/web/js/projection/projection.model.js similarity index 81% rename from web/js/proj/wv.proj.model.js rename to web/js/projection/projection.model.js index bf4057c32c..9621843553 100644 --- a/web/js/proj/wv.proj.model.js +++ b/web/js/projection/projection.model.js @@ -1,20 +1,16 @@ -/** - * @module wv.proj - */ -var wv = wv || {}; -wv.proj = wv.proj || {}; +import each from 'lodash/each'; +import util from '../util/util'; +import ol from 'openlayers'; +import proj4 from 'proj4'; -/** - * @class wv.proj.model - */ -wv.proj.model = wv.proj.model || function (config) { +export function projectionModel(config) { var self = {}; self.selected = null; - self.events = wv.util.events(); + self.events = util.events(); var init = function () { self.selectDefault(); - _.each(config.projections, function (proj) { + each(config.projections, function (proj) { if (proj.crs && proj.proj4) { self.register(proj.crs, proj.proj4); ol.proj.get(proj.crs) diff --git a/web/js/proj/wv.proj.ui.js b/web/js/projection/projection.ui.js similarity index 88% rename from web/js/proj/wv.proj.ui.js rename to web/js/projection/projection.ui.js index 817cc4fd4c..c10e086987 100644 --- a/web/js/proj/wv.proj.ui.js +++ b/web/js/projection/projection.ui.js @@ -1,15 +1,8 @@ -/** - * @module wv.proj - */ -var wv = wv || {}; -wv.proj = wv.proj || {}; +import $ from 'jquery'; +import each from 'lodash/each'; +import wvui from '../ui/ui'; -/** - * Undocumented. - * - * @class wv.proj.ui - */ -wv.proj.ui = wv.proj.ui || function (models, config) { +export function projectionUi(models, config) { var model = models.proj; var self = {}; @@ -48,7 +41,7 @@ wv.proj.ui = wv.proj.ui || function (models, config) { $button.click(function (event) { event.stopPropagation(); - wv.ui.close(); + wvui.close(); var checked = $('#wv-proj-button-check') .prop('checked'); if (checked) { @@ -58,11 +51,11 @@ wv.proj.ui = wv.proj.ui || function (models, config) { }; var show = function () { - var $menu = wv.ui.getMenu() + var $menu = wvui.getMenu() .attr('id', 'wv-proj-menu'); $menuItems = $('
    '); - _.each(config.ui.projections, function (ui) { + each(config.ui.projections, function (ui) { var $item = $( '
  • ' + '' + @@ -79,7 +72,7 @@ wv.proj.ui = wv.proj.ui || function (models, config) { $menu.append($menuItems); $menuItems.menu(); - wv.ui.positionMenu($menuItems, { + wvui.positionMenu($menuItems, { my: 'left top', at: 'left bottom+5', of: $label diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 17b2a0ba83..97fa8d112e 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -64,10 +64,10 @@ import {loadingIndicator} from './ui/ui.indicator'; // not a class, export objec import linkModel from './link/link.model'; import linkUi from './link/link.ui'; // Projections -import projectionParser from './proj/proj'; -import ProjectionModel from './proj/proj.model'; -import ProjectionUI from './proj/proj.ui'; -import ProjectionChange from './proj/proj.change'; +import projectionParser from './projection/projection'; +import ProjectionModel from './projection/projection.model'; +import ProjectionUi from './projection/projection.ui'; +import ProjectionChange from './projection/projection.change'; // Other import {debugConfig, debug} from './debug'; import Brand from './brand'; @@ -228,7 +228,7 @@ window.onload = () => { elapsed('ui'); // Create widgets - ui.proj = ProjectionUI(models, config); + ui.proj = ProjectionUi(models, config); ui.sidebar = LayersSidebar(models, config); ui.activeLayers = LayersActive(models, ui, config); ui.addModal = LayersModal(models, ui, config); From e2a244603a00968bf3dafaa85a021936927910c9 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 16:17:31 -0400 Subject: [PATCH 039/242] fixed lodash imports --- web/js/map/wv.map.js | 9 +++++---- web/js/map/wv.map.layerbuilder.js | 8 +++----- web/js/map/wv.map.model.js | 2 +- web/js/map/wv.map.precachetile.js | 2 +- web/js/map/wv.map.runningdata.js | 6 ++---- web/js/map/wv.map.ui.js | 12 +++++------- 6 files changed, 17 insertions(+), 22 deletions(-) diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index 4a70e58aeb..84b872cbc9 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,7 +1,8 @@ -import { - map as _map, each as _each, - isUndefined as _isUndefined, find as _find -} from 'lodash'; + +import _map from 'lodash/map'; +import _each from 'lodash/each'; +import _isUndefined from 'lodash/isUndefined'; +import _find from 'lodash/find'; import ol from 'openlayers'; /* * Checks to see if an extents string is found. If it exist diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index a05c35566f..99089d4056 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -1,10 +1,8 @@ import util from '../util/util'; import ol from 'openlayers'; -import { - cloneDeep as _cloneDeep, - merge as _merge, - each as _each -} from 'lodash'; +import _cloneDeep from 'lodash/cloneDeep'; +import _merge from 'lodash/merge'; +import _each from 'lodash/each'; export default function(models, config, cache, Parent) { var self = {}; diff --git a/web/js/map/wv.map.model.js b/web/js/map/wv.map.model.js index ca00e1e787..b0baa63ead 100644 --- a/web/js/map/wv.map.model.js +++ b/web/js/map/wv.map.model.js @@ -1,6 +1,6 @@ import ol from 'openlayers'; import util from '../util/util'; -import { clone as _clone } from 'lodash'; +import _clone from 'lodash/clone'; export default function(models, config) { var self = {}; diff --git a/web/js/map/wv.map.precachetile.js b/web/js/map/wv.map.precachetile.js index dddfad5e23..0e043e0b1c 100644 --- a/web/js/map/wv.map.precachetile.js +++ b/web/js/map/wv.map.precachetile.js @@ -1,4 +1,4 @@ -import {each as _each} from 'lodash'; +import _each from 'lodash/each'; import ol from 'openlayers'; export default function (models, config, cache, parent) { diff --git a/web/js/map/wv.map.runningdata.js b/web/js/map/wv.map.runningdata.js index 2e95631a56..a490809af4 100644 --- a/web/js/map/wv.map.runningdata.js +++ b/web/js/map/wv.map.runningdata.js @@ -1,9 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -import { - differenced as _difference, - each as _each -} from 'lodash'; +import _difference from 'lodash/difference'; +import _each from 'lodash/each'; export default function(models) { var self; diff --git a/web/js/map/wv.map.ui.js b/web/js/map/wv.map.ui.js index 4500d0b465..ce55bc09b8 100644 --- a/web/js/map/wv.map.ui.js +++ b/web/js/map/wv.map.ui.js @@ -1,12 +1,10 @@ import $ from 'jquery'; import ol from 'openlayers'; -import { - forOwn as _forOwn, - each as _each, - findIndex as _findIndex, - find as _find, - throttle as _throttle -} from 'lodash'; +import _findIndex from 'lodash/findIndex'; +import _each from 'lodash/each'; +import _forOwn from 'lodash/forOwn'; +import _throttle from 'lodash/throttle'; +import _find from 'lodash/find'; import util from '../util/util'; export default function(models, config, components) { From fecb92791869a633e35a6be517e0f1a5f704cfb8 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 14:25:25 -0400 Subject: [PATCH 040/242] Modularize wv.ui.js --- web/js/{wv.feedback.js => feedback.js} | 14 +- .../ui/{wv.ui.indicator.js => indicator.js} | 24 +- web/js/ui/{wv.ui.info.js => info.js} | 23 +- web/js/ui/mouse.js | 111 ++++++++ web/js/ui/ui.js | 261 +++++++++++++++++- web/js/ui/wv.ui.js | 261 ------------------ web/js/ui/wv.ui.mouse.js | 112 -------- web/js/util/util.js | 5 + 8 files changed, 412 insertions(+), 399 deletions(-) rename web/js/{wv.feedback.js => feedback.js} (58%) rename web/js/ui/{wv.ui.indicator.js => indicator.js} (81%) rename web/js/ui/{wv.ui.info.js => info.js} (90%) create mode 100644 web/js/ui/mouse.js delete mode 100644 web/js/ui/wv.ui.js delete mode 100644 web/js/ui/wv.ui.mouse.js diff --git a/web/js/wv.feedback.js b/web/js/feedback.js similarity index 58% rename from web/js/wv.feedback.js rename to web/js/feedback.js index b5bb6c1d49..8eb478c86d 100644 --- a/web/js/wv.feedback.js +++ b/web/js/feedback.js @@ -1,5 +1,13 @@ -var wv = wv || {}; -wv.feedback = wv.feedback || (function () { +/* global feedback */ + +/* The feedback global variable is defined by + * https://fbm.earthdata.nasa.gov/for/worldview/feedback.js + * which is included via config.scripts in web/config/wv.json +*/ + +import util from './util/util.js'; + +export const feedbackModal = (function () { var self = {}; var feedbackInit = false; @@ -8,7 +16,7 @@ wv.feedback = wv.feedback || (function () { 'mailto:@MAIL@?subject=Feedback for @LONG_NAME@ tool'); $element.click(function (event) { - if (!wv.util.browser.small && window.feedback) { + if (!util.browser.small && window.feedback) { event.preventDefault(); if (!feedbackInit) { feedback.init({ diff --git a/web/js/ui/wv.ui.indicator.js b/web/js/ui/indicator.js similarity index 81% rename from web/js/ui/wv.ui.indicator.js rename to web/js/ui/indicator.js index cbe495a24d..f70c446bcd 100644 --- a/web/js/ui/wv.ui.indicator.js +++ b/web/js/ui/indicator.js @@ -1,6 +1,12 @@ -var wv = wv || {}; -wv.ui = wv.ui || {}; -wv.ui.indicator = wv.ui.indicator || (function () { +import $ from 'jquery'; +import uniqueId from 'lodash/uniqueId'; +import isString from 'lodash/isString'; +import each from 'lodash/each'; +import remove from 'lodash/remove'; +import isEmpty from 'lodash/isEmpty'; +import last from 'lodash/last'; + +export const indicator = (function () { var self = {}; var $indicator; @@ -24,7 +30,7 @@ wv.ui.indicator = wv.ui.indicator || (function () { self.show = function (message, icon) { self._show(message, icon); - var id = _.uniqueId(); + var id = uniqueId(); self.active.push({ id: id, message: message, @@ -34,18 +40,18 @@ wv.ui.indicator = wv.ui.indicator || (function () { }; self.hide = function (hides) { - if (_.isString(hides)) { + if (isString(hides)) { hides = [hides]; } - _.each(hides, function (id) { - _.remove(self.active, { + each(hides, function (id) { + remove(self.active, { id: id }); }); - if (_.isEmpty(self.active)) { + if (isEmpty(self.active)) { self._hide(); } else { - var def = _.last(self.active); + var def = last(self.active); self._show(def.message, def.icon); } }; diff --git a/web/js/ui/wv.ui.info.js b/web/js/ui/info.js similarity index 90% rename from web/js/ui/wv.ui.info.js rename to web/js/ui/info.js index 082406f9ac..740456ad89 100644 --- a/web/js/ui/wv.ui.info.js +++ b/web/js/ui/info.js @@ -1,10 +1,9 @@ -/** - * @module wv.ui - */ -var wv = wv || {}; -wv.ui = wv.ui || {}; +import $ from 'jquery'; +import wvui from './ui.js'; +import util from '../util/util.js'; +import feedbackModal from '../feedback.js'; -wv.ui.info = wv.ui.info || function (ui, config) { +export function info (ui, config) { var selector = '#wv-info-button'; var $button = $('') .attr('type', 'checkbox') @@ -28,7 +27,7 @@ wv.ui.info = wv.ui.info || function (ui, config) { $button.click(function (event) { event.stopPropagation(); - wv.ui.close(); + wvui.close(); var checked = $('#wv-info-button-check') .prop('checked'); if (checked) { @@ -37,7 +36,7 @@ wv.ui.info = wv.ui.info || function (ui, config) { }); var show = function () { - var $menu = wv.ui.getMenu() + var $menu = wvui.getMenu() .attr('id', 'wv-info-menu'); var $alerts, $new; var whatsNewUrl = 'https://github.com/nasa-gibs/worldview/releases'; @@ -75,7 +74,7 @@ wv.ui.info = wv.ui.info || function (ui, config) { $menu.append($menuItems); $menuItems.menu(); - wv.ui.positionMenu($menuItems, { + wvui.positionMenu($menuItems, { my: 'left top', at: 'left bottom + 5', of: $label @@ -83,10 +82,10 @@ wv.ui.info = wv.ui.info || function (ui, config) { $menuItems.hide(); $about.click(function () { - if (wv.util.browser.small || wv.util.browser.touchDevice) { + if (util.browser.small || util.browser.touchDevice) { window.open('brand/pages/about.html?v=@BUILD_NONCE@', '_blank'); } else { - wv.ui.getDialog() + wvui.getDialog() .dialog({ title: 'About', width: 625, @@ -106,7 +105,7 @@ wv.ui.info = wv.ui.info || function (ui, config) { window.open('https://github.com/nasa-gibs/worldview', '_blank'); }); - wv.feedback.decorate($feedback.find('a')); + feedbackModal.decorate($feedback.find('a')); $tour.click(function () { ui.tour.start(); diff --git a/web/js/ui/mouse.js b/web/js/ui/mouse.js new file mode 100644 index 0000000000..a4c8a4d4ce --- /dev/null +++ b/web/js/ui/mouse.js @@ -0,0 +1,111 @@ +import util from '../util/util.js'; + +export const mouse = { + click: function ($element, callback) { + var self = {}; + self.sensitivity = 5; // pixels + + var startX, startY; + + var init = function () { + $element.mousedown(mousedown); + $element.mouseup(mouseup); + }; + + var mousedown = function (event) { + startX = event.clientX; + startY = event.clientY; + }; + + var mouseup = function (event) { + if (withinClickDistance(event)) { + callback.call(this); + } + }; + + var withinClickDistance = function (event) { + var targetX = event.clientX; + var targetY = event.clientY; + var distance = Math.sqrt(Math.pow(startX - targetX, 2) + + Math.pow(startY - targetY, 2)); + return distance <= self.sensitivity; + }; + + init(); + return self; + }, + wheel: function (element, ui, options) { + options = options || {}; + + var self = {}; + self.timeout = options.timeout || 100; // milliseconds + self.threshold = options.threshold || 100; // delta units + self.events = util.events(); + + var delta = 0; + var zoomed = false; + var timer = null; + var timeout = false; + var lastEvent = null; + + var init = function () { + element.on('zoom', wheel); + }; + + self.change = function (listener) { + self.events.on('change', listener); + return self; + }; + + var wheel = function () { + var evt = d3.event.sourceEvent; + if ((Math.abs(evt.deltaX) <= Math.abs(evt.deltaY)) && timeout === false) { + lastEvent = evt; + delta += evt.deltaY; + if (!timer) { + zoomed = false; + } + clearTimeout(timer); + timer = setTimeout(end, self.timeout); + update(evt); + } else if ((Math.abs(evt.deltaX) >= Math.abs(evt.deltaY))) { + if (ui.timeline.isCropped) { + ui.timeline.pan.axis(d3.event); + timeout = true; + clearTimeout(timer); + timer = setTimeout(function () { + timeout = false; + }, 500); + } + } else { + if (ui.timeline.isCropped) { + ui.timeline.pan.axis(); + } + } + }; + + var update = function (event) { + var change = Math.floor(Math.abs(delta) / self.threshold); + if (change >= 1) { + var sign = delta ? delta < 0 ? -1 : 1 : 0; + self.events.trigger('change', sign * change, event); + delta = delta % self.threshold; + zoomed = true; + } + }; + + var end = function () { + timer = null; + if (!zoomed) { + var sign = delta ? delta < 0 ? -1 : 1 : 0; + self.events.trigger('change', sign, lastEvent); + } + lastEvent = null; + delta = 0; + zoomed = false; + }; + + init(); + return self; + } +}; diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js index d965ff4073..99db788c6f 100644 --- a/web/js/ui/ui.js +++ b/web/js/ui/ui.js @@ -1,2 +1,259 @@ -/* This file is just a stub to test the browserify build task */ -export function wvui () {}; +import $ from 'jquery'; +import indicator from './indicator.js'; +import info from './info.js'; +import mouse from './mouse.js'; + +export const wvui = (function (self) { + // Export other ui methods + self.indicator = indicator; + self.info = info; + self.mouse = mouse; + /** + * General error handler. + * + * Displays a dialog box with the error message. If an exception object + * is passed in, its contents will be printed to the console. + * + * @method error + * @static + * + * @param {Exception} cause The exception object that caused the error + */ + self.error = function () { + console.error.apply(console, arguments); + + self.notify( + '
    ' + + '' + + 'An unexpected error has occurred' + + '
    ' + + '
    ', 'Error' + ); + }; + + /** + * Displays a message to the end user in a dialog box. + * + * @method notify + * @static + * + * @param {string} message The message to display to the user. + * + * @param [title="Notice"] {string} Title for the dialog box. + */ + self.notify = function (message, title, width, callback) { + var $dialog = self.getDialog(); + title = title || 'Notice'; + width = width || 300; + $dialog.html(message) + .dialog({ + title: title, + width: width, + minHeight: 1, + height: 'auto', + show: { + effect: 'fade', + duration: 400 + }, + hide: { + effect: 'fade', + duration: 200 + } + }) + .on('dialogclose', function () { + $(this) + .off('dialogclose'); + if (callback) { + callback(); + } + }); + }; + + self.alert = function (body, title, size, glyph, closeFn) { + var $message = $('', {class: 'notify-message'}); + var $icon = $('', { class: 'fa fa-' + glyph + ' fa-1x', title: title }); + var $messageWrapper = $('
    ').click(function () { + self.notify(body, title, size); + }).append($icon).append($message); + var $close = $('', {class: 'fa fa-times fa-1x'}).click(closeFn); + var $alert = $('
    ').append($close).append($messageWrapper).dialog({ + autoOpen: false, + resizable: false, + height: 40, + width: 420, + draggable: false, + show: { + effect: 'fade', + duration: 400 + }, + hide: { + effect: 'fade', + duration: 200 + }, + dialogClass: 'no-titlebar notify-alert' + }); + $message.empty().append(title); + return $alert; + }; + + /** + * Asks the end user a yes or no question in a dialog box. + * + * @method ask + * @static + * + * @param [spec.header="Notice"] {string} Header text to be displayed in + * the dialog box. + * + * @param [spec.message="Are you sure?"] {string} Message text to be + * displayed in the dialog box. + * + * @param [spec.okButton="OK"] {string} Text to be used in the no button. + * + * @param [spec.cancelButton="Cancel"] {string} Text to be used in the yes + * button. + * + * @param [spec.onOk] {function} Function to execute when the OK button is + * pressed. If not specified, the dialog box simply closes. + * + * @parma [spec.onCancel] {function} Function to execute when the Cancel + * button is pressed. If not specified, the dialog box simply closes. + */ + self.ask = function (spec) { + var $dialog = self.getDialog('wv-dialog-ask'); + var cancelText = spec.cancelButton || 'Cancel'; + var okText = spec.okButton || 'OK'; + var buttons = {}; + buttons[cancelText] = function () { + $(this) + .dialog('close'); + if (spec.onCancel) { + spec.onCancel(); + } + }; + buttons[okText] = function () { + $(this) + .dialog('close'); + if (spec.onOk) { + spec.onOk(); + } + }; + $dialog.dialog({ + title: spec.header || 'Notice', + resizable: false, + modal: true, + buttons: buttons + }) + .html(spec.message) + .on('dialogclose', function () { + if (spec.onCancel) { + spec.onCancel(); + } + }); + }; + + /** + * Displays a message to the end user that the feature is not supported + * in this web browser. + * + * @method unsupported + * @static + * + * @param {String} [featureName] If specified, the message will state + * "The feature is not supported...". Otherwise it will + * state "This feature..." + */ + self.unsupported = function (featureName) { + var prefix; + if (!featureName) { + prefix = 'This feature'; + } else { + prefix = 'The ' + featureName + ' feature'; + } + self.notify(prefix + ' is not supported with your web ' + + 'browser. Upgrade or try again in a different browser.'); + }; + + var getComponent = function (marker) { + var $element = $('
    ') + .addClass(marker); + $('body') + .append($element); + return $element; + }; + + var closeComponent = function (marker, fnClose) { + var selector = '.' + marker; + var $element = $(selector); + if ($element.length !== 0) { + fnClose($element); + } + }; + + var closeDialog = function ($element) { + if ($element.length !== 0) { + if ($element.dialog) { + $element.dialog('close'); + } + $element.remove(); + } + }; + + var closeMenu = function ($element) { + if ($element.length !== 0) { + $element.remove(); + } + }; + + self.close = function () { + closeComponent('wv-dialog', closeDialog); + closeComponent('wv-menu', closeMenu); + }; + + self.getDialog = function (marker) { + self.close(marker); + return getComponent(marker || 'wv-dialog', closeDialog); + }; + + self.getMenu = function (marker) { + self.close(); + return getComponent(marker || 'wv-menu', closeMenu); + }; + + self.closeDialog = function () { + self.close(); + }; + + self.positionMenu = function ($menuItems, pos) { + var position = function () { + $menuItems.menu() + .position(pos); + }; + position(); + $(window) + .resize(position); + $menuItems.on('hide', function () { + $(window) + .off('resize', position); + }); + }; + + self.positionDialog = function ($dialog, pos) { + var position = function () { + $dialog.dialog('option', 'position', pos); + }; + position(); + $(window) + .resize(position); + $dialog.on('dialogclose', function () { + $(window) + .off('resize', position); + }); + }; + + return self; +})(); diff --git a/web/js/ui/wv.ui.js b/web/js/ui/wv.ui.js deleted file mode 100644 index 5c41d4e380..0000000000 --- a/web/js/ui/wv.ui.js +++ /dev/null @@ -1,261 +0,0 @@ -/** - * @module wv.ui - */ -var wv = wv || {}; - -/** - * UI utilities - * - * @class wv.ui - * @static - */ -wv.ui = (function (self) { - /** - * General error handler. - * - * Displays a dialog box with the error message. If an exception object - * is passed in, its contents will be printed to the console. - * - * @method error - * @static - * - * @param {Exception} cause The exception object that caused the error - */ - self.error = function () { - console.error.apply(console, arguments); - - self.notify( - '
    ' + - '' + - 'An unexpected error has occurred' + - '
    ' + - '
    Please reload the page and try ' + - 'again. If you continue to have problems, contact us at ' + - '' + - '@MAIL@' + - '
    ', 'Error' - ); - }; - - /** - * Displays a message to the end user in a dialog box. - * - * @method notify - * @static - * - * @param {string} message The message to display to the user. - * - * @param [title="Notice"] {string} Title for the dialog box. - */ - self.notify = function (message, title, width, callback) { - var $dialog = self.getDialog(); - title = title || 'Notice'; - width = width || 300; - $dialog.html(message) - .dialog({ - title: title, - width: width, - minHeight: 1, - height: 'auto', - show: { - effect: 'fade', - duration: 400 - }, - hide: { - effect: 'fade', - duration: 200 - } - }) - .on('dialogclose', function () { - $(this) - .off('dialogclose'); - if (callback) { - callback(); - } - }); - }; - - self.alert = function (body, title, size, glyph, closeFn) { - var $message = $('', {class: 'notify-message'}); - var $icon = $('', { class: 'fa fa-' + glyph + ' fa-1x', title: title }); - var $messageWrapper = $('
    ').click(function () { - self.notify(body, title, size); - }).append($icon).append($message); - var $close = $('', {class: 'fa fa-times fa-1x'}).click(closeFn); - var $alert = $('
    ').append($close).append($messageWrapper).dialog({ - autoOpen: false, - resizable: false, - height: 40, - width: 420, - draggable: false, - show: { - effect: 'fade', - duration: 400 - }, - hide: { - effect: 'fade', - duration: 200 - }, - dialogClass: 'no-titlebar notify-alert' - }); - $message.empty().append(title); - return $alert; - }; - - /** - * Asks the end user a yes or no question in a dialog box. - * - * @method ask - * @static - * - * @param [spec.header="Notice"] {string} Header text to be displayed in - * the dialog box. - * - * @param [spec.message="Are you sure?"] {string} Message text to be - * displayed in the dialog box. - * - * @param [spec.okButton="OK"] {string} Text to be used in the no button. - * - * @param [spec.cancelButton="Cancel"] {string} Text to be used in the yes - * button. - * - * @param [spec.onOk] {function} Function to execute when the OK button is - * pressed. If not specified, the dialog box simply closes. - * - * @parma [spec.onCancel] {function} Function to execute when the Cancel - * button is pressed. If not specified, the dialog box simply closes. - */ - self.ask = function (spec) { - var $dialog = self.getDialog('wv-dialog-ask'); - var cancelText = spec.cancelButton || 'Cancel'; - var okText = spec.okButton || 'OK'; - var buttons = {}; - buttons[cancelText] = function () { - $(this) - .dialog('close'); - if (spec.onCancel) { - spec.onCancel(); - } - }; - buttons[okText] = function () { - $(this) - .dialog('close'); - if (spec.onOk) { - spec.onOk(); - } - }; - $dialog.dialog({ - title: spec.header || 'Notice', - resizable: false, - modal: true, - buttons: buttons - }) - .html(spec.message) - .on('dialogclose', function () { - if (spec.onCancel) { - spec.onCancel(); - } - }); - }; - - /** - * Displays a message to the end user that the feature is not supported - * in this web browser. - * - * @method unsupported - * @static - * - * @param {String} [featureName] If specified, the message will state - * "The feature is not supported...". Otherwise it will - * state "This feature..." - */ - self.unsupported = function (featureName) { - var prefix; - if (!featureName) { - prefix = 'This feature'; - } else { - prefix = 'The ' + featureName + ' feature'; - } - wv.ui.notify(prefix + ' is not supported with your web ' + - 'browser. Upgrade or try again in a different browser.'); - }; - - var getComponent = function (marker) { - var $element = $('
    ') - .addClass(marker); - $('body') - .append($element); - return $element; - }; - - var closeComponent = function (marker, fnClose) { - var selector = '.' + marker; - var $element = $(selector); - if ($element.length !== 0) { - fnClose($element); - } - }; - - var closeDialog = function ($element) { - if ($element.length !== 0) { - if ($element.dialog) { - $element.dialog('close'); - } - $element.remove(); - } - }; - - var closeMenu = function ($element) { - if ($element.length !== 0) { - $element.remove(); - } - }; - - self.close = function () { - closeComponent('wv-dialog', closeDialog); - closeComponent('wv-menu', closeMenu); - }; - - self.getDialog = function (marker) { - self.close(marker); - return getComponent(marker || 'wv-dialog', closeDialog); - }; - - self.getMenu = function (marker) { - self.close(); - return getComponent(marker || 'wv-menu', closeMenu); - }; - - self.closeDialog = function () { - self.close(); - }; - - self.positionMenu = function ($menuItems, pos) { - var position = function () { - $menuItems.menu() - .position(pos); - }; - position(); - $(window) - .resize(position); - $menuItems.on('hide', function () { - $(window) - .off('resize', position); - }); - }; - - self.positionDialog = function ($dialog, pos) { - var position = function () { - $dialog.dialog('option', 'position', pos); - }; - position(); - $(window) - .resize(position); - $dialog.on('dialogclose', function () { - $(window) - .off('resize', position); - }); - }; - - return self; -})(wv.ui = wv.ui || {}); diff --git a/web/js/ui/wv.ui.mouse.js b/web/js/ui/wv.ui.mouse.js deleted file mode 100644 index 38a3c72c04..0000000000 --- a/web/js/ui/wv.ui.mouse.js +++ /dev/null @@ -1,112 +0,0 @@ -var wv = wv || {}; -wv.ui = wv.ui || {}; -wv.ui.mouse = wv.ui.mouse || {}; - -wv.ui.mouse.click = wv.ui.mouse.click || function ($element, callback) { - var self = {}; - self.sensitivity = 5; // pixels - - var startX, startY; - - var init = function () { - $element.mousedown(mousedown); - $element.mouseup(mouseup); - }; - - var mousedown = function (event) { - startX = event.clientX; - startY = event.clientY; - }; - - var mouseup = function (event) { - if (withinClickDistance(event)) { - callback.call(this); - } - }; - - var withinClickDistance = function (event) { - var targetX = event.clientX; - var targetY = event.clientY; - var distance = Math.sqrt(Math.pow(startX - targetX, 2) + - Math.pow(startY - targetY, 2)); - return distance <= self.sensitivity; - }; - - init(); - return self; -}; - -wv.ui.mouse.wheel = wv.ui.mouse.wheel || function (element, ui, options) { - options = options || {}; - - var self = {}; - self.timeout = options.timeout || 100; // milliseconds - self.threshold = options.threshold || 100; // delta units - self.events = wv.util.events(); - - var delta = 0; - var zoomed = false; - var timer = null; - var timeout = false; - var lastEvent = null; - - var init = function () { - element.on('zoom', wheel); - }; - - self.change = function (listener) { - self.events.on('change', listener); - return self; - }; - - var wheel = function () { - var evt = d3.event.sourceEvent; - if ((Math.abs(evt.deltaX) <= Math.abs(evt.deltaY)) && timeout === false) { - lastEvent = evt; - delta += evt.deltaY; - if (!timer) { - zoomed = false; - } - clearTimeout(timer); - timer = setTimeout(end, self.timeout); - update(evt); - } else if ((Math.abs(evt.deltaX) >= Math.abs(evt.deltaY))) { - if (ui.timeline.isCropped) { - ui.timeline.pan.axis(d3.event); - timeout = true; - clearTimeout(timer); - timer = setTimeout(function () { - timeout = false; - }, 500); - } - } else { - if (ui.timeline.isCropped) { - ui.timeline.pan.axis(); - } - } - }; - - var update = function (event) { - var change = Math.floor(Math.abs(delta) / self.threshold); - if (change >= 1) { - var sign = delta ? delta < 0 ? -1 : 1 : 0; - self.events.trigger('change', sign * change, event); - delta = delta % self.threshold; - zoomed = true; - } - }; - - var end = function () { - timer = null; - if (!zoomed) { - var sign = delta ? delta < 0 ? -1 : 1 : 0; - self.events.trigger('change', sign, lastEvent); - } - lastEvent = null; - delta = 0; - zoomed = false; - }; - - init(); - return self; -}; diff --git a/web/js/util/util.js b/web/js/util/util.js index 5690cd9d3d..e4d6278608 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -1,5 +1,10 @@ /* global ntptEventTag */ +/* The ntptEventTag global variable is defined by + * https://earthdata.nasa.gov/lib/ntpagetag.js + * which is included via config.scripts in web/config/wv.json +*/ + import $ from 'jquery'; import each from 'lodash/each'; import isNull from 'lodash/isNull'; From f531db28cb30c15c1a73a0e307b95e5f77c44b7c Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 2 Nov 2017 16:33:21 -0400 Subject: [PATCH 041/242] Rename loading indicator --- web/js/ui/indicator.js | 2 +- web/js/ui/ui.js | 4 ++-- web/js/wv.main.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/js/ui/indicator.js b/web/js/ui/indicator.js index f70c446bcd..78f6d12ccb 100644 --- a/web/js/ui/indicator.js +++ b/web/js/ui/indicator.js @@ -6,7 +6,7 @@ import remove from 'lodash/remove'; import isEmpty from 'lodash/isEmpty'; import last from 'lodash/last'; -export const indicator = (function () { +export const loadingIndicator = (function () { var self = {}; var $indicator; diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js index 99db788c6f..f0764d9019 100644 --- a/web/js/ui/ui.js +++ b/web/js/ui/ui.js @@ -1,11 +1,11 @@ import $ from 'jquery'; -import indicator from './indicator.js'; +import loadingIndicator from './indicator.js'; import info from './info.js'; import mouse from './mouse.js'; export const wvui = (function (self) { // Export other ui methods - self.indicator = indicator; + self.loadingIndicator = loadingIndicator; self.info = info; self.mouse = mouse; /** diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 5a0d9036ea..2ef1c0e914 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -59,7 +59,7 @@ import ImagePanel from './image/image.panel'; // Notifications import NotificationsUI from './notifications/notifications.ui'; // UI -import {loadingIndicator} from './ui/ui.indicator'; // not a class, export object +import {loadingIndicator} from './ui/indicator'; // not a class, export object // Link import LinkModel from './link/link.model'; import LinkUI from './link/link.ui'; From e3ad5bb8ec68722e2f8d348dceed692484d061c2 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 17:13:10 -0400 Subject: [PATCH 042/242] exported date files --- web/js/date/wv.date.js | 66 ++++++++++++-------------- web/js/date/wv.date.label.js | 11 ++--- web/js/date/wv.date.model.js | 31 ++++++------ web/js/date/wv.date.timeline.config.js | 8 +--- web/js/date/wv.date.timeline.data.js | 26 +++------- web/js/date/wv.date.timeline.input.js | 43 ++++++++--------- web/js/date/wv.date.timeline.js | 19 +++----- web/js/date/wv.date.timeline.pan.js | 10 +--- web/js/date/wv.date.timeline.pick.js | 16 ++----- web/js/date/wv.date.timeline.ticks.js | 28 +++++------ web/js/date/wv.date.timeline.zoom.js | 25 ++++------ web/js/date/wv.date.wheels.js | 27 ++++------- web/js/stub.js | 15 +++++- 13 files changed, 134 insertions(+), 191 deletions(-) diff --git a/web/js/date/wv.date.js b/web/js/date/wv.date.js index 5be1205966..65f154a875 100644 --- a/web/js/date/wv.date.js +++ b/web/js/date/wv.date.js @@ -1,39 +1,35 @@ -var wv = wv || {}; +import util from '../util/util'; -wv.date = (function (self) { - self.parse = function (state, errors) { - if (state.time) { - state.t = state.time; - delete state.time; - } - if (state.t) { - try { - state.t = wv.util.parseDateUTC(state.t); - } catch (error) { - delete state.t; - errors.push({ - message: 'Invalid date: ' + state.t, - cause: error - }); - } +export function parse(state, errors) { + if (state.time) { + state.t = state.time; + delete state.time; + } + if (state.t) { + try { + state.t = util.parseDateUTC(state.t); + } catch (error) { + delete state.t; + errors.push({ + message: 'Invalid date: ' + state.t, + cause: error + }); } + } - if (state.now) { - try { - state.now = wv.util.parseDateUTC(state.now); - wv.util.now = function () { - return new Date(state.now.getTime()); - }; - wv.util.warn('Overriding now: ' + state.now.toISOString()); - } catch (error) { - delete state.now; - errors.push({ - message: 'Invalid now: ' + state.now, - cause: error - }); - } + if (state.now) { + try { + state.now = util.parseDateUTC(state.now); + util.now = function () { + return new Date(state.now.getTime()); + }; + util.warn('Overriding now: ' + state.now.toISOString()); + } catch (error) { + delete state.now; + errors.push({ + message: 'Invalid now: ' + state.now, + cause: error + }); } - }; - - return self; -})(wv.date || {}); + } +}; diff --git a/web/js/date/wv.date.label.js b/web/js/date/wv.date.label.js index d9faffb901..55962cbe86 100644 --- a/web/js/date/wv.date.label.js +++ b/web/js/date/wv.date.label.js @@ -1,15 +1,12 @@ -/** - * @module wv.date - */ -var wv = wv || {}; -wv.date = wv.date || {}; +import $ from 'jquery'; +import util from '../util/util'; /** * Undocumented. * * @class wv.date.label */ -wv.date.label = wv.date.label || function (models) { +export default function (models) { var id = 'timedsdateHolder'; var $container = $('#' + id); var model = models.date; @@ -22,7 +19,7 @@ wv.date.label = wv.date.label || function (models) { }; var update = function () { - $container.html(wv.util.toISOStringDate(model.selected)); + $container.html(util.toISOStringDate(model.selected)); }; init(); diff --git a/web/js/date/wv.date.model.js b/web/js/date/wv.date.model.js index 4a45b3b60a..87ce77f62f 100644 --- a/web/js/date/wv.date.model.js +++ b/web/js/date/wv.date.model.js @@ -1,27 +1,26 @@ -var wv = wv || {}; -wv.date = wv.date || {}; +import util from '../util/util'; -wv.date.model = wv.date.model || function (config, spec) { +export default function(config, spec) { spec = spec || {}; var self = {}; - self.events = wv.util.events(); + self.events = util.events(); self.selected = null; self.monthAbbr = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; var init = function () { - var initial = spec.initial || wv.util.today(); + var initial = spec.initial || util.today(); self.select(initial); }; self.string = function () { - return wv.util.toISOStringDate(self.selected); + return util.toISOStringDate(self.selected); }; self.select = function (date) { - date = self.clamp(wv.util.clearTimeUTC(date)); + date = self.clamp(util.clearTimeUTC(date)); var updated = false; if (!self.selected || date.getTime() !== self.selected.getTime()) { self.selected = date; @@ -32,15 +31,15 @@ wv.date.model = wv.date.model || function (config, spec) { }; self.add = function (interval, amount) { - self.select(wv.util.dateAdd(self.selected, interval, amount)); + self.select(util.dateAdd(self.selected, interval, amount)); }; self.clamp = function (date) { - if (date > wv.util.today()) { - date = wv.util.today(); + if (date > util.today()) { + date = util.today(); } if (config.startDate) { - startDate = wv.util.parseDateUTC(config.startDate); + let startDate = util.parseDateUTC(config.startDate); if (date < startDate) { date = startDate; } @@ -49,11 +48,11 @@ wv.date.model = wv.date.model || function (config, spec) { }; self.isValid = function (date) { - if (date > wv.util.today()) { + if (date > util.today()) { return false; } if (config.startDate) { - startDate = wv.util.parseDateUTC(config.startDate); + let startDate = util.parseDateUTC(config.startDate); if (date < startDate) { return false; } @@ -63,13 +62,13 @@ wv.date.model = wv.date.model || function (config, spec) { self.minDate = function () { if (config.startDate) { - return wv.util.parseDateUTC(config.startDate); + return util.parseDateUTC(config.startDate); } - return wv.util.minDate(); + return util.minDate(); }; self.maxDate = function () { - return wv.util.today(); + return util.today(); }; self.save = function (state) { diff --git a/web/js/date/wv.date.timeline.config.js b/web/js/date/wv.date.timeline.config.js index fba6d1b6e7..9b37b3b6eb 100644 --- a/web/js/date/wv.date.timeline.config.js +++ b/web/js/date/wv.date.timeline.config.js @@ -1,3 +1,4 @@ +import $ from 'jquery'; /** * Modify zoom levels here. Maybe this isnt the best way to do this. * It could be called just level without the zoom part instead. @@ -6,12 +7,7 @@ * * @class wv.date.timeline.config */ - -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; - -wv.date.timeline.config = wv.date.timeline.config || function (models, config, ui) { +export default function(models, config, ui) { var self = {}; var tl = ui.timeline; var model = models.date; diff --git a/web/js/date/wv.date.timeline.data.js b/web/js/date/wv.date.timeline.data.js index af53ec6122..136a164e77 100644 --- a/web/js/date/wv.date.timeline.data.js +++ b/web/js/date/wv.date.timeline.data.js @@ -1,18 +1,8 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; - -/** - * Perform timeline data functions - * - * @class wv.date.timeline.data - */ -wv.date.timeline.data = wv.date.timeline.data || function (models, config, ui) { +import $ from 'jquery'; +import util from '../util/util'; + +export default function(models, config, ui) { var tl = ui.timeline; - var model = models.date; var self = {}; @@ -22,8 +12,8 @@ wv.date.timeline.data = wv.date.timeline.data || function (models, config, ui) { self.end = function () { return new Date( - new Date(wv.util.today()) - .setUTCDate(wv.util.today() + new Date(util.today()) + .setUTCDate(util.today() .getUTCDate())); }; @@ -57,8 +47,7 @@ wv.date.timeline.data = wv.date.timeline.data || function (models, config, ui) { $(activeLayersDynamic) .each(function (al) { - var layerStart, layerEnd, layerXY; - var layerVisible = true; + var layerStart, layerEnd; var staticLayer = true; var layerId = this.id; @@ -90,7 +79,6 @@ wv.date.timeline.data = wv.date.timeline.data || function (models, config, ui) { currentDB.classed('data-bar-dyn', true); } if (this.visible === false) { - layerVisible = false; currentDB.classed('data-bar-invisible', true); } }); diff --git a/web/js/date/wv.date.timeline.input.js b/web/js/date/wv.date.timeline.input.js index 6ed761f4ec..5b17dcfc5f 100644 --- a/web/js/date/wv.date.timeline.input.js +++ b/web/js/date/wv.date.timeline.input.js @@ -1,16 +1,14 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; +import $ from 'jquery'; +import util from '../util/util'; +import browserUtil from '../util/browser'; +import _parseInt from 'lodash/parseInt'; /** * Implements the date input * * @class wv.date.timeline.input */ -wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) { +export default function(models, config, ui) { var tl = ui.timeline; var model = models.date; var timer; @@ -28,7 +26,7 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) var forwardNextDay = function () { // FIXME: Limit animation correctly var nextDay = new Date(new Date(model.selected) .setUTCDate(model.selected.getUTCDate() + 1)); - if (nextDay <= wv.util.today()) { + if (nextDay <= util.today()) { animateForward('day'); } else { self.stop(); @@ -54,7 +52,7 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) } var amount = (self.direction === 'forward') ? self.delta : -self.delta; - var newDate = wv.util.dateAdd(model.selected, self.interval, amount); + var newDate = util.dateAdd(model.selected, self.interval, amount); timer = setTimeout(function () { advance(newDate); }, self.delay); @@ -113,12 +111,12 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) } var interval = $(this) .attr('data-interval') || dataInterval; - var amount = _.parseInt($(this) + var amount = _parseInt($(this) .attr('data-value')) || amt; var date = rollingDate || models.date.selected; var min = models.date.minDate(); var max = models.date.maxDate(); - var newDate = wv.util.rollDate(date, interval, amount, min, max); + var newDate = util.rollDate(date, interval, amount, min, max); if (newDate !== date) { rollingDate = newDate; @@ -196,7 +194,7 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) break; } if ((selectedDateObj > tl.data.start()) && - (selectedDateObj <= wv.util.today())) { + (selectedDateObj <= util.today())) { var sib = selected.parent() .next('div.input-wrapper') .find('input.button-input-group'); @@ -253,9 +251,8 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) .val(date.getUTCFullYear()); $('#month-input-group') .val(model.monthAbbr[date.getUTCMonth()]); - var day = date.getUTCDate(); $('#day-input-group') - .val(wv.util.pad(date.getUTCDate(), 2, '0')); + .val(util.pad(date.getUTCDate(), 2, '0')); }; // TODO: Cleanup @@ -278,7 +275,7 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) } // Disable arrows if nothing before/after selection - if (nd > wv.util.today()) { + if (nd > util.today()) { $incrementBtn.addClass('button-disabled'); } else { $incrementBtn.removeClass('button-disabled'); @@ -316,11 +313,11 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) return; } switch (event.keyCode) { - case wv.util.key.LEFT: + case util.key.LEFT: animateReverse('day'); event.preventDefault(); break; - case wv.util.key.RIGHT: + case util.key.RIGHT: animateForward('day'); event.preventDefault(); break; @@ -328,8 +325,8 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) }) .keyup(function (event) { switch (event.keyCode) { - case wv.util.key.LEFT: - case wv.util.key.RIGHT: + case util.key.LEFT: + case util.key.RIGHT: self.stop(); event.preventDefault(); break; @@ -346,18 +343,18 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) .attr('id') .split('-')[0]; event.stopPropagation(); - if (event.keyCode === (wv.util.key.LEFT || wv.util.key.RIGHT)) { + if (event.keyCode === (util.key.LEFT || util.key.RIGHT)) { event.preventDefault(); $(this) .select() .focus(); - } else if (event.keyCode === (wv.util.key.UP)) { + } else if (event.keyCode === (util.key.UP)) { event.preventDefault(); roll(interval, 1); $(this) .select() .focus(); - } else if (event.keyCode === (wv.util.key.DOWN)) { + } else if (event.keyCode === (util.key.DOWN)) { event.preventDefault(); roll(interval, -1); $(this) @@ -437,7 +434,7 @@ wv.date.timeline.input = wv.date.timeline.input || function (models, config, ui) .select(); }); - if (wv.util.browser.tests.touchDevice()) { + if (browserUtil.tests.touchDevice()) { $('.button-input-group') .prop('disabled', true); } diff --git a/web/js/date/wv.date.timeline.js b/web/js/date/wv.date.timeline.js index a468bacae1..f94d159bf2 100644 --- a/web/js/date/wv.date.timeline.js +++ b/web/js/date/wv.date.timeline.js @@ -1,14 +1,7 @@ -/** - * @module wv.date - */ -var wv = wv || {}; -wv.date = wv.date || {}; -/** - * Setup the timeline - * - * @class wv.date.timeline - */ -wv.date.timeline = wv.date.timeline || function (models, config, ui) { +import $ from 'jquery'; +import browserUtil from '../util/browser'; + +export default function(models, config, ui) { var self = {}; var model = models.date; @@ -97,7 +90,7 @@ wv.date.timeline = wv.date.timeline || function (models, config, ui) { }; self.resize = function () { - var small = wv.util.browser.small || wv.util.browser.constrained; + var small = browserUtil.small || browserUtil.constrained; if (self.enabled && small) { self.enabled = false; $('#timeline') @@ -221,7 +214,7 @@ wv.date.timeline = wv.date.timeline || function (models, config, ui) { self.resize(); - if (wv.util.browser.localStorage) { + if (browserUtil.localStorage) { if (localStorage.getItem('timesliderState') === 'collapsed') { self.collapseNow(); } diff --git a/web/js/date/wv.date.timeline.pan.js b/web/js/date/wv.date.timeline.pan.js index f92c21e895..7080430ee3 100644 --- a/web/js/date/wv.date.timeline.pan.js +++ b/web/js/date/wv.date.timeline.pan.js @@ -1,16 +1,8 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; /** * Perform timeline panning functions - * - * @class wv.date.timeline.pan */ -wv.date.timeline.pan = wv.date.timeline.pan || function (models, config, ui) { +export default function(models, config, ui) { var tl = ui.timeline; var model = models.date; var self = {}; diff --git a/web/js/date/wv.date.timeline.pick.js b/web/js/date/wv.date.timeline.pick.js index 3cf0703294..3294f04b14 100644 --- a/web/js/date/wv.date.timeline.pick.js +++ b/web/js/date/wv.date.timeline.pick.js @@ -1,16 +1,8 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; - +import $ from 'jquery'; /** * Implements the timeline pick - * - * @class wv.date.timeline.pick */ -wv.date.timeline.pick = wv.date.timeline.pick || function (models, config, ui) { +export default function(models, config, ui) { var tl = ui.timeline; var model = models.date; @@ -88,9 +80,7 @@ wv.date.timeline.pick = wv.date.timeline.pick || function (models, config, ui) { }); var change = function () { - var d; var newDate = tipDate; - var tick, tickBg; tl.guitarPick .attr('transform', 'translate(' + self.offset + ',' + 0 + ')'); @@ -106,7 +96,7 @@ wv.date.timeline.pick = wv.date.timeline.pick || function (models, config, ui) { self.hoverDate(newDate); }; self.hoverDate = function (date) { - var d; + var d, tickBg; tl.zoom.current.pick.hoverTick(date); tickBg = tl.zoom.current.pick.hoveredTick diff --git a/web/js/date/wv.date.timeline.ticks.js b/web/js/date/wv.date.timeline.ticks.js index bab64ad803..2505b3ede6 100644 --- a/web/js/date/wv.date.timeline.ticks.js +++ b/web/js/date/wv.date.timeline.ticks.js @@ -1,16 +1,8 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; - +import $ from 'jquery'; /** * Perform timeline tick functions - * - * @class wv.date.timeline.ticks */ -wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) { +export default function(models, config, ui) { var tl = ui.timeline; var model = models.date; @@ -28,8 +20,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) self.all = d3.selectAll('.x.axis>g.tick'); self.firstElem = self.all[0][0]; self.firstDate = self.all.data()[0]; - self.lastDate = self.all.data()[self.all.data() - .length - 1]; + self.lastDate = self.all.data()[self.all.data().length - 1]; // remove previous classes for labels self.all.classed('tick-labeled', false); }; @@ -39,13 +30,13 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) self.normal.all.classed('end-tick', false); self.normal.firstDate = all.data()[0]; self.normal.firstElem = all[0][0]; - self.normal.lastDate = all.data()[all.data() - .length - 1]; + self.normal.lastDate = all.data()[all.data().length - 1]; self.normal.lastElem = all[0][all[0].length - 1]; d3.select(self.normal.lastElem) .classed('end-tick', true); }, update: function () { + var nWidth; var ticks = self.normal.all; ticks.each(function () { @@ -112,6 +103,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) self.normal.bind(); }, init: function () { + var nWidth; var ticks = self.normal.all; ticks.selectAll('line') @@ -158,6 +150,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) self.normal.background = self.all.selectAll('rect.normaltick-background'); }, bind: function () { + var d; self.normal.background .on('mouseenter', function () { d = d3.select(this.parentNode) @@ -314,6 +307,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) .selectAll('rect.boundarytick-foreground'); }, bind: function () { + var d; self.boundary.background .on('mouseenter', function () { d = d3.select(this.parentNode) @@ -344,7 +338,8 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) model.select(date); }, labelOnly: function (d) { - var labeled = d3.selectAll('.x.axis>g.label-only'); + // not needed ?!? + d3.selectAll('.x.axis>g.label-only'); } }; @@ -369,6 +364,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) self.label = { // TODO: Update, this is just copied over show: function (d) { + var $boundaryTick; var tick = this.parentNode; var boundaryTick, boundaryTickWidth; @@ -440,7 +436,7 @@ wv.date.timeline.ticks = wv.date.timeline.ticks || function (models, config, ui) }; self.check = function () { - var first, last, proto, end; + var proto, end, protoNorm; self.setAll(); tl.ticks.removePaddingData(); self.setAll(); diff --git a/web/js/date/wv.date.timeline.zoom.js b/web/js/date/wv.date.timeline.zoom.js index e863c180ae..201c5b4b61 100644 --- a/web/js/date/wv.date.timeline.zoom.js +++ b/web/js/date/wv.date.timeline.zoom.js @@ -1,18 +1,11 @@ -/** - * @module wv.date.timeline - */ -var wv = wv || {}; -wv.date = wv.date || {}; -wv.date.timeline = wv.date.timeline || {}; +import $ from 'jquery'; +import uiMouse from '../ui/wv.ui.mouse'; /** * Perform timeline zooming functions - * - * @class wv.date.timeline.zoom + */ -wv.date.timeline.zoom = wv.date.timeline.zoom || function (models, config, ui) { +export default function(models, config, ui) { var tl = ui.timeline; - var model = models.date; - var self = {}; self.current = { @@ -55,10 +48,10 @@ wv.date.timeline.zoom = wv.date.timeline.zoom || function (models, config, ui) { mouseOffset = (tl.width - tl.margin.left - tl.margin.right) / 2 - relX; } - var d1 = tl.data.start(), - d2, - r1 = (tl.width / 2) - ((count * w) / 2), - r2 = (tl.width / 2) + ((count * w) / 2); + var d1 = tl.data.start(); + var d2; + var r1 = (tl.width / 2) - ((count * w) / 2); + var r2 = (tl.width / 2) + ((count * w) / 2); if (max > count) { tl.isCropped = false; @@ -90,7 +83,7 @@ wv.date.timeline.zoom = wv.date.timeline.zoom || function (models, config, ui) { tl.axisZoom.xExtent([tl.data.start(), tl.data.end()]); } - wv.ui.mouse.wheel(tl.axisZoom, ui) + uiMouse.wheel(tl.axisZoom, ui) .change(self.change); tl.svg.call(tl.axisZoom); diff --git a/web/js/date/wv.date.wheels.js b/web/js/date/wv.date.wheels.js index cd81e2820b..bb248d4fe2 100644 --- a/web/js/date/wv.date.wheels.js +++ b/web/js/date/wv.date.wheels.js @@ -1,15 +1,8 @@ -/** - * @module wv.date - */ -var wv = wv || {}; -wv.date = wv.date || {}; +import $ from 'jquery'; +import util from '../util/util'; +import browserUtil from '../util/browser'; -/** - * Undocumented. - * - * @class wv.date.wheels - */ -wv.date.wheels = wv.date.wheels || function (models, config) { +export default function (models, config) { var id = 'timewheels'; var $container = $('#' + id); var MSEC_TO_MIN = 1000 * 60; @@ -38,7 +31,7 @@ wv.date.wheels = wv.date.wheels || function (models, config) { .date({ display: 'bottom', onChange: function (valueText) { - var d = wv.util.parseDateUTC(valueText); + var d = util.parseDateUTC(valueText); model.select(d); }, onShow: function () { @@ -67,18 +60,18 @@ wv.date.wheels = wv.date.wheels || function (models, config) { }; var resize = function () { - if (!self.enabled && wv.util.browser.small) { + if (!self.enabled && browserUtil.small) { self.enabled = true; $container.show(); - } else if (self.enabled && !wv.util.browser.small) { + } else if (self.enabled && !browserUtil.small) { self.enabled = false; $container.hide(); } }; var updateRange = function () { - startDate = wv.util.parseDateUTC(config.startDate); - endDate = wv.util.today(); + var startDate = util.parseDateUTC(config.startDate); + var endDate = util.today(); $('#linkmode') .mobiscroll('option', 'disabled', false); $('#linkmode') @@ -89,7 +82,7 @@ wv.date.wheels = wv.date.wheels || function (models, config) { var update = function () { $('#wv-date-mobile-label') - .html(wv.util.toISOStringDate(model.selected)); + .html(util.toISOStringDate(model.selected)); $('#linkmode') .mobiscroll('setDate', UTCToLocal(model.selected), true); }; diff --git a/web/js/stub.js b/web/js/stub.js index 9ea427b65d..0c6808475f 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -9,9 +9,22 @@ import mapModel from './map/wv.map.model'; import preCacheTile from './map/wv.map.precachetile'; import runningData from './map/wv.map.runningdata'; import mapUi from './map/wv.map.ui'; +import dateParse from './date/wv.date'; +import dateLabel from './date/wv.date.label'; +import dateModel from './date/wv.date.model'; +import dateWheels from './date/wv.date.wheels'; +import timelineConfig from './date/wv.date.timeline.config'; +import timelinedata from './date/wv.date.timeline.data'; +import timelineinput from './date/wv.date.timeline.input'; +import timeline from './date/wv.date.timeline'; +import timelinePan from './date/wv.date.timeline.pan'; +import timelinePick from './date/wv.date.timeline.pick'; +import timelineTicks from './date/wv.date.timeline.ticks'; +import timelineZoom from './date/wv.date.timeline.zoom'; export default function () { - console.log($, DateSelector, mapParser, builder, layerBuilder, animate, mapModel, preCacheTile, runningData, mapUi); + console.log($, DateSelector, mapParser, builder, layerBuilder, animate, mapModel, preCacheTile, runningData, mapUi, dateParse, dateLabel, dateModel); + console.log(timelineConfig, timelinedata, timelineinput, timeline, timelinePan, timelinePick, timelineTicks, timelineZoom, dateWheels); }; export const stub2 = (function() { From 865fe7266d9cf3ec4a27b15f20c7ada88ac9e7ad Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 2 Nov 2017 18:10:33 -0400 Subject: [PATCH 043/242] updated general function & lodash function naming --- web/js/date/wv.date.label.js | 2 +- web/js/date/wv.date.model.js | 2 +- web/js/date/wv.date.timeline.config.js | 2 +- web/js/date/wv.date.timeline.data.js | 2 +- web/js/date/wv.date.timeline.input.js | 9 +++---- web/js/date/wv.date.timeline.js | 8 +++--- web/js/date/wv.date.timeline.pan.js | 2 +- web/js/date/wv.date.timeline.pick.js | 2 +- web/js/date/wv.date.timeline.ticks.js | 2 +- web/js/date/wv.date.timeline.zoom.js | 2 +- web/js/date/wv.date.wheels.js | 7 +++--- web/js/map/wv.map.animate.js | 2 +- web/js/map/wv.map.datelinebuilder.js | 2 +- web/js/map/wv.map.js | 17 ++++++------- web/js/map/wv.map.layerbuilder.js | 14 +++++------ web/js/map/wv.map.model.js | 8 +++--- web/js/map/wv.map.precachetile.js | 2 +- web/js/map/wv.map.rotate.js | 2 +- web/js/map/wv.map.runningdata.js | 10 ++++---- web/js/map/wv.map.ui.js | 34 +++++++++++++------------- 20 files changed, 64 insertions(+), 67 deletions(-) diff --git a/web/js/date/wv.date.label.js b/web/js/date/wv.date.label.js index 55962cbe86..e4138f083d 100644 --- a/web/js/date/wv.date.label.js +++ b/web/js/date/wv.date.label.js @@ -6,7 +6,7 @@ import util from '../util/util'; * * @class wv.date.label */ -export default function (models) { +export function dateLabel(models) { var id = 'timedsdateHolder'; var $container = $('#' + id); var model = models.date; diff --git a/web/js/date/wv.date.model.js b/web/js/date/wv.date.model.js index 87ce77f62f..5b35188cf2 100644 --- a/web/js/date/wv.date.model.js +++ b/web/js/date/wv.date.model.js @@ -1,6 +1,6 @@ import util from '../util/util'; -export default function(config, spec) { +export function dateModel(config, spec) { spec = spec || {}; var self = {}; diff --git a/web/js/date/wv.date.timeline.config.js b/web/js/date/wv.date.timeline.config.js index 9b37b3b6eb..ec18420fa6 100644 --- a/web/js/date/wv.date.timeline.config.js +++ b/web/js/date/wv.date.timeline.config.js @@ -7,7 +7,7 @@ import $ from 'jquery'; * * @class wv.date.timeline.config */ -export default function(models, config, ui) { +export function timelineConfig(models, config, ui) { var self = {}; var tl = ui.timeline; var model = models.date; diff --git a/web/js/date/wv.date.timeline.data.js b/web/js/date/wv.date.timeline.data.js index 136a164e77..85a9dbb6b6 100644 --- a/web/js/date/wv.date.timeline.data.js +++ b/web/js/date/wv.date.timeline.data.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -export default function(models, config, ui) { +export function timelineData(models, config, ui) { var tl = ui.timeline; var self = {}; diff --git a/web/js/date/wv.date.timeline.input.js b/web/js/date/wv.date.timeline.input.js index 5b17dcfc5f..aaeb9a4e10 100644 --- a/web/js/date/wv.date.timeline.input.js +++ b/web/js/date/wv.date.timeline.input.js @@ -1,14 +1,13 @@ import $ from 'jquery'; import util from '../util/util'; -import browserUtil from '../util/browser'; -import _parseInt from 'lodash/parseInt'; +import parseInt from 'lodash/parseInt'; /** * Implements the date input * * @class wv.date.timeline.input */ -export default function(models, config, ui) { +export function timelineInput(models, config, ui) { var tl = ui.timeline; var model = models.date; var timer; @@ -111,7 +110,7 @@ export default function(models, config, ui) { } var interval = $(this) .attr('data-interval') || dataInterval; - var amount = _parseInt($(this) + var amount = parseInt($(this) .attr('data-value')) || amt; var date = rollingDate || models.date.selected; var min = models.date.minDate(); @@ -434,7 +433,7 @@ export default function(models, config, ui) { .select(); }); - if (browserUtil.tests.touchDevice()) { + if (util.browser.tests.touchDevice()) { $('.button-input-group') .prop('disabled', true); } diff --git a/web/js/date/wv.date.timeline.js b/web/js/date/wv.date.timeline.js index f94d159bf2..17f6ab7efe 100644 --- a/web/js/date/wv.date.timeline.js +++ b/web/js/date/wv.date.timeline.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import browserUtil from '../util/browser'; +import util from '../util/util'; -export default function(models, config, ui) { +export function timeline(models, config, ui) { var self = {}; var model = models.date; @@ -90,7 +90,7 @@ export default function(models, config, ui) { }; self.resize = function () { - var small = browserUtil.small || browserUtil.constrained; + var small = util.browser.small || util.browser.constrained; if (self.enabled && small) { self.enabled = false; $('#timeline') @@ -214,7 +214,7 @@ export default function(models, config, ui) { self.resize(); - if (browserUtil.localStorage) { + if (util.browser.localStorage) { if (localStorage.getItem('timesliderState') === 'collapsed') { self.collapseNow(); } diff --git a/web/js/date/wv.date.timeline.pan.js b/web/js/date/wv.date.timeline.pan.js index 7080430ee3..c2449864d3 100644 --- a/web/js/date/wv.date.timeline.pan.js +++ b/web/js/date/wv.date.timeline.pan.js @@ -2,7 +2,7 @@ /** * Perform timeline panning functions */ -export default function(models, config, ui) { +export function timelinePan(models, config, ui) { var tl = ui.timeline; var model = models.date; var self = {}; diff --git a/web/js/date/wv.date.timeline.pick.js b/web/js/date/wv.date.timeline.pick.js index 3294f04b14..c4207a12b2 100644 --- a/web/js/date/wv.date.timeline.pick.js +++ b/web/js/date/wv.date.timeline.pick.js @@ -2,7 +2,7 @@ import $ from 'jquery'; /** * Implements the timeline pick */ -export default function(models, config, ui) { +export function timelinePick(models, config, ui) { var tl = ui.timeline; var model = models.date; diff --git a/web/js/date/wv.date.timeline.ticks.js b/web/js/date/wv.date.timeline.ticks.js index 2505b3ede6..b3b30aa7e2 100644 --- a/web/js/date/wv.date.timeline.ticks.js +++ b/web/js/date/wv.date.timeline.ticks.js @@ -2,7 +2,7 @@ import $ from 'jquery'; /** * Perform timeline tick functions */ -export default function(models, config, ui) { +export function timelineTick(models, config, ui) { var tl = ui.timeline; var model = models.date; diff --git a/web/js/date/wv.date.timeline.zoom.js b/web/js/date/wv.date.timeline.zoom.js index 201c5b4b61..db5f5da5e2 100644 --- a/web/js/date/wv.date.timeline.zoom.js +++ b/web/js/date/wv.date.timeline.zoom.js @@ -4,7 +4,7 @@ import uiMouse from '../ui/wv.ui.mouse'; * Perform timeline zooming functions */ -export default function(models, config, ui) { +export function timelineZoom(models, config, ui) { var tl = ui.timeline; var self = {}; diff --git a/web/js/date/wv.date.wheels.js b/web/js/date/wv.date.wheels.js index bb248d4fe2..967b2c47aa 100644 --- a/web/js/date/wv.date.wheels.js +++ b/web/js/date/wv.date.wheels.js @@ -1,8 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -import browserUtil from '../util/browser'; -export default function (models, config) { +export function dateWheel(models, config) { var id = 'timewheels'; var $container = $('#' + id); var MSEC_TO_MIN = 1000 * 60; @@ -60,10 +59,10 @@ export default function (models, config) { }; var resize = function () { - if (!self.enabled && browserUtil.small) { + if (!self.enabled && util.browser.small) { self.enabled = true; $container.show(); - } else if (self.enabled && !browserUtil.small) { + } else if (self.enabled && !util.browser.small) { self.enabled = false; $container.hide(); } diff --git a/web/js/map/wv.map.animate.js b/web/js/map/wv.map.animate.js index 20b848607f..ec74396951 100644 --- a/web/js/map/wv.map.animate.js +++ b/web/js/map/wv.map.animate.js @@ -1,6 +1,6 @@ import ol from 'openlayers'; -export default function (models, config, ui) { +export function mapAnimate(models, config, ui) { var self = {}; /** diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/wv.map.datelinebuilder.js index 8d9069523a..ccad52b570 100644 --- a/web/js/map/wv.map.datelinebuilder.js +++ b/web/js/map/wv.map.datelinebuilder.js @@ -8,7 +8,7 @@ import util from '../util/util'; var map, overlay1, overlay2, textFactory, lineFactory, textOverlay1, textOverlay2, lineLeft, lineRight, textLeft, textRight, proj; -export default function (models, config) { +export function mapDateLineBuilder(models, config) { var self = {}; /* * Sets globals and event listeners diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index 84b872cbc9..23a4e9238d 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,8 +1,7 @@ - -import _map from 'lodash/map'; -import _each from 'lodash/each'; -import _isUndefined from 'lodash/isUndefined'; -import _find from 'lodash/find'; +import map from 'lodash/map'; +import each from 'lodash/each'; +import isUndefined from 'lodash/isUndefined'; +import find from 'lodash/find'; import ol from 'openlayers'; /* * Checks to see if an extents string is found. If it exist @@ -27,7 +26,7 @@ export function parse(state, errors) { delete state.map; } if (state.v) { - var extent = _map(state.v.split(','), function (str) { + var extent = map(state.v.split(','), function (str) { return parseFloat(str); }); var valid = isExtentValid(extent); @@ -54,14 +53,14 @@ export function parse(state, errors) { * true. */ var isExtentValid = function(extent) { - if (_isUndefined(extent)) { + if (isUndefined(extent)) { return false; } var valid = true; if (extent.toArray) { extent = extent.toArray(); } - _each(extent, function (value) { + each(extent, function (value) { if (isNaN(value)) { valid = false; return false; @@ -136,7 +135,7 @@ export function setVisibility(layer, visible, opacity) { export function getLayerByName(map, name) { var layers = map.getLayers() .getArray(); - return _find(layers, { + return find(layers, { 'wvname': name }); }; diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index 99089d4056..2ad5087584 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -1,10 +1,10 @@ import util from '../util/util'; import ol from 'openlayers'; -import _cloneDeep from 'lodash/cloneDeep'; -import _merge from 'lodash/merge'; -import _each from 'lodash/each'; +import cloneDeep from 'lodash/cloneDeep'; +import merge from 'lodash/merge'; +import each from 'lodash/each'; -export default function(models, config, cache, Parent) { +export function mapLayerBuilder(models, config, cache, Parent) { var self = {}; self.init = function (Parent) { self.extentLayers = []; @@ -40,8 +40,8 @@ export default function(models, config, cache, Parent) { proj: proj.id, def: def }; - def = _cloneDeep(def); - _merge(def, def.projections[proj.id]); + def = cloneDeep(def); + merge(def, def.projections[proj.id]); if (def.type === 'wmts') { layer = createLayerWMTS(def, options); if (proj.id === 'geographic' && def.wrapadjacentdays === true) { @@ -137,7 +137,7 @@ export default function(models, config, cache, Parent) { } if (typeof def.matrixIds === 'undefined') { matrixIds = []; - _each(matrixSet.resolutions, function (resolution, index) { + each(matrixSet.resolutions, function (resolution, index) { matrixIds.push(index); }); } else { diff --git a/web/js/map/wv.map.model.js b/web/js/map/wv.map.model.js index b0baa63ead..c9f932430a 100644 --- a/web/js/map/wv.map.model.js +++ b/web/js/map/wv.map.model.js @@ -1,8 +1,8 @@ import ol from 'openlayers'; import util from '../util/util'; -import _clone from 'lodash/clone'; +import clone from 'lodash/clone'; -export default function(models, config) { +export function mapModel(models, config) { var self = {}; self.extent = null; @@ -47,7 +47,7 @@ export default function(models, config) { if (ol.extent.intersects(extent, maxExtent)) { self.extent = state.v; } else { - self.extent = _clone(proj.maxExtent); + self.extent = clone(proj.maxExtent); errors.push({ message: 'Extent outside of range' }); @@ -72,7 +72,7 @@ export default function(models, config) { * @returns {void} */ self.save = function (state) { - state.v = _clone(self.extent); + state.v = clone(self.extent); if (self.rotation !== 0.0 && self.rotation !== 0 && models.proj.selected.id !== 'geographic') { state.r = (self.rotation * (180.0 / Math.PI)) .toPrecision(6); diff --git a/web/js/map/wv.map.precachetile.js b/web/js/map/wv.map.precachetile.js index 0e043e0b1c..d0edc066db 100644 --- a/web/js/map/wv.map.precachetile.js +++ b/web/js/map/wv.map.precachetile.js @@ -1,7 +1,7 @@ import _each from 'lodash/each'; import ol from 'openlayers'; -export default function (models, config, cache, parent) { +export function mapPrecacheTile(models, config, cache, parent) { /* * Loaded the layers that are needed for any one date. * Checks the cache to see if a layer has already diff --git a/web/js/map/wv.map.rotate.js b/web/js/map/wv.map.rotate.js index e48cd87eec..1c795915b7 100644 --- a/web/js/map/wv.map.rotate.js +++ b/web/js/map/wv.map.rotate.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -export default function(ui, models, map) { +export function mapRotate(ui, models, map) { this.evts = util.events(); this.intervalId = null; var self = this; diff --git a/web/js/map/wv.map.runningdata.js b/web/js/map/wv.map.runningdata.js index a490809af4..dc8e478c4a 100644 --- a/web/js/map/wv.map.runningdata.js +++ b/web/js/map/wv.map.runningdata.js @@ -1,9 +1,9 @@ import $ from 'jquery'; import util from '../util/util'; -import _difference from 'lodash/difference'; -import _each from 'lodash/each'; +import difference from 'lodash/difference'; +import each from 'lodash/each'; -export default function(models) { +export function mapRunningData(models) { var self; var $productsBox; var productsBoxHeight; @@ -186,7 +186,7 @@ export default function(models) { * */ self.LayersToRemove = function (oldArray, newArray) { - return _difference(oldArray, newArray); + return difference(oldArray, newArray); }; /* @@ -220,7 +220,7 @@ export default function(models) { legends = models.palettes.getLegends(layerId); hex = util.rgbaToHex(data[0], data[1], data[2], data[3]); - _each(legends, function (legend) { + each(legends, function (legend) { if (legend) { self.createRunnerFromLegend(legend, hex); } diff --git a/web/js/map/wv.map.ui.js b/web/js/map/wv.map.ui.js index ce55bc09b8..a36ee54b0e 100644 --- a/web/js/map/wv.map.ui.js +++ b/web/js/map/wv.map.ui.js @@ -1,13 +1,13 @@ import $ from 'jquery'; import ol from 'openlayers'; -import _findIndex from 'lodash/findIndex'; -import _each from 'lodash/each'; -import _forOwn from 'lodash/forOwn'; -import _throttle from 'lodash/throttle'; -import _find from 'lodash/find'; +import findIndex from 'lodash/findIndex'; +import each from 'lodash/each'; +import forOwn from 'lodash/forOwn'; +import throttle from 'lodash/throttle'; +import find from 'lodash/find'; import util from '../util/util'; -export default function(models, config, components) { +export function mapui(models, config, components) { var id = 'wv-map'; var selector = '#' + id; var cache = new Cache(400); // Save layers from days visited @@ -45,7 +45,7 @@ export default function(models, config, components) { } // NOTE: iOS sometimes bombs if this is _.each instead. In that case, // it is possible that config.projections somehow becomes array-like. - _forOwn(config.projections, function (proj) { + forOwn(config.projections, function (proj) { var map = createMap(proj); self.proj[proj.id] = map; }); @@ -187,7 +187,7 @@ export default function(models, config, components) { var activeLayers = map.getLayers() .getArray() .slice(0); - _each(activeLayers, function (mapLayer) { + each(activeLayers, function (mapLayer) { if (mapLayer.wv) { map.removeLayer(mapLayer); } @@ -213,7 +213,7 @@ export default function(models, config, components) { var defs = models.layers.get({ reverse: true }); - _each(defs, function (def) { + each(defs, function (def) { if (isGraticule(def)) { addGraticule(); } else { @@ -240,7 +240,7 @@ export default function(models, config, components) { } }); var defs = models.layers.get(); - _each(defs, function (def) { + each(defs, function (def) { if (isGraticule(def)) { var renderable = models.layers.isRenderable(def.id); if (renderable) { @@ -280,7 +280,7 @@ export default function(models, config, components) { */ var addLayer = function (def) { - var mapIndex = _findIndex(models.layers.get({ + var mapIndex = findIndex(models.layers.get({ reverse: true }), { id: def.id @@ -338,7 +338,7 @@ export default function(models, config, components) { */ var updateDate = function () { var defs = models.layers.get(); - _each(defs, function (def) { + each(defs, function (def) { if (def.period !== 'daily') { return; } @@ -395,7 +395,7 @@ export default function(models, config, components) { var findLayer = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = _find(layers, { + var layer = find(layers, { wv: { id: def.id } @@ -417,7 +417,7 @@ export default function(models, config, components) { var findLayerIndex = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = _findIndex(layers, { + var layer = findIndex(layers, { wv: { id: def.id } @@ -484,7 +484,7 @@ export default function(models, config, components) { self.selected.graticule = null; }; - var triggerExtent = _throttle(function () { + var triggerExtent = throttle(function () { self.events.trigger('extent'); }, 500, { trailing: true @@ -607,7 +607,7 @@ export default function(models, config, components) { map.getView() .on('change:resolution', updateExtent); map.getView() - .on('change:rotation', _throttle(onRotate, 300)); + .on('change:rotation', throttle(onRotate, 300)); map.on('pointerdrag', function () { self.mapIsbeingDragged = true; self.events.trigger('drag'); @@ -903,7 +903,7 @@ export default function(models, config, components) { hoverThrottle.cancel(); dataRunner.clearAll(); }) - .mousemove(hoverThrottle = _throttle(onMouseMove, 300)); + .mousemove(hoverThrottle = throttle(onMouseMove, 300)); }; /* From 7846c7af48b7e1817ee906dc37337b23ea9a9ab9 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Fri, 3 Nov 2017 10:50:17 -0400 Subject: [PATCH 044/242] Drop feature namespacing on filenames. Make import names consistent. --- web/js/image/{image.panel.js => panel.js} | 0 .../{image.rubberband.js => rubberband.js} | 0 web/js/index.js | 32 +++++++------- web/js/layers/{layers.active.js => active.js} | 6 +-- web/js/layers/{layers.add.js => add.js} | 0 web/js/layers/{layers.info.js => info.js} | 0 web/js/layers/{layers.modal.js => modal.js} | 0 web/js/layers/{layers.model.js => model.js} | 0 .../layers/{layers.options.js => options.js} | 0 .../layers/{layers.sidebar.js => sidebar.js} | 0 web/js/link/{link.model.js => model.js} | 0 web/js/link/{link.ui.js => ui.js} | 0 .../{palettes.legend.js => legend.js} | 2 +- .../palettes/{palettes.model.js => model.js} | 2 +- .../{projection.change.js => change.js} | 0 .../{projection.model.js => model.js} | 0 web/js/projection/{projection.ui.js => ui.js} | 0 web/js/wv.main.js | 44 +++++++++---------- 18 files changed, 43 insertions(+), 43 deletions(-) rename web/js/image/{image.panel.js => panel.js} (100%) rename web/js/image/{image.rubberband.js => rubberband.js} (100%) rename web/js/layers/{layers.active.js => active.js} (99%) rename web/js/layers/{layers.add.js => add.js} (100%) rename web/js/layers/{layers.info.js => info.js} (100%) rename web/js/layers/{layers.modal.js => modal.js} (100%) rename web/js/layers/{layers.model.js => model.js} (100%) rename web/js/layers/{layers.options.js => options.js} (100%) rename web/js/layers/{layers.sidebar.js => sidebar.js} (100%) rename web/js/link/{link.model.js => model.js} (100%) rename web/js/link/{link.ui.js => ui.js} (100%) rename web/js/palettes/{palettes.legend.js => legend.js} (99%) rename web/js/palettes/{palettes.model.js => model.js} (99%) rename web/js/projection/{projection.change.js => change.js} (100%) rename web/js/projection/{projection.model.js => model.js} (100%) rename web/js/projection/{projection.ui.js => ui.js} (100%) diff --git a/web/js/image/image.panel.js b/web/js/image/panel.js similarity index 100% rename from web/js/image/image.panel.js rename to web/js/image/panel.js diff --git a/web/js/image/image.rubberband.js b/web/js/image/rubberband.js similarity index 100% rename from web/js/image/image.rubberband.js rename to web/js/image/rubberband.js diff --git a/web/js/index.js b/web/js/index.js index f8e4f9271a..6fd0d6d6ac 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1,22 +1,22 @@ export { stub, stub2 } from './stub'; export { polyfill } from './polyfill'; export { util } from './util/util'; -export { imagePanel } from './image/image.panel'; -export { imageRubberband } from './image/image.rubberband'; -export { linkModel } from './link/link.model'; -export { linkUi } from './link/link.ui'; +export { imagePanel } from './image/panel'; +export { imageRubberband } from './image/rubberband'; +export { linkModel } from './link/model'; +export { linkUi } from './link/ui'; export { parse as layerParser, validate as layerValidate } from './layers/layers'; -export { layersAdd } from './layers/layers.add'; -export { layersActive } from './layers/layers.active'; -export { layersInfo } from './layers/layers.info'; -export { layersModal } from './layers/layers.modal'; -export { layersModel } from './layers/layers.model'; -export { layersOptions } from './layers/layers.options'; -export { layersSidebar } from './layers/layers.sidebar'; +export { layersAdd } from './layers/add'; +export { layersActive } from './layers/active'; +export { layersInfo } from './layers/info'; +export { layersModal } from './layers/modal'; +export { layersModel } from './layers/model'; +export { layersOptions } from './layers/options'; +export { layersSidebar } from './layers/sidebar'; export { palettes } from './palettes/palettes'; -export { palettesLegend } from './palettes/palettes.legend'; -export { palettesModel } from './palettes/palettes.model'; +export { palettesLegend } from './palettes/legend'; +export { palettesModel } from './palettes/model'; export { projectionParse } from './projection/projection'; -export { projectionChange } from './projection/projection.change'; -export { projectionModel } from './projection/projection.model'; -export { projectionUi } from './projection/projection.ui'; +export { projectionChange } from './projection/change'; +export { projectionModel } from './projection/model'; +export { projectionUi } from './projection/ui'; diff --git a/web/js/layers/layers.active.js b/web/js/layers/active.js similarity index 99% rename from web/js/layers/layers.active.js rename to web/js/layers/active.js index a114622f93..a0f1725d67 100644 --- a/web/js/layers/layers.active.js +++ b/web/js/layers/active.js @@ -3,9 +3,9 @@ import each from 'lodash/each'; import eachRight from 'lodash/eachRight'; import util from '../util/util'; import wvui from '../ui/ui'; -import layersInfo from '../layers/layers.info'; -import layersOptions from '../layers/layers.options'; -import palettesLegend from '../palettes/palettes.legend'; +import layersInfo from './info'; +import layersOptions from './options'; +import palettesLegend from '../palettes/legend'; export function layersActive(models, ui, config) { var model = models.layers; diff --git a/web/js/layers/layers.add.js b/web/js/layers/add.js similarity index 100% rename from web/js/layers/layers.add.js rename to web/js/layers/add.js diff --git a/web/js/layers/layers.info.js b/web/js/layers/info.js similarity index 100% rename from web/js/layers/layers.info.js rename to web/js/layers/info.js diff --git a/web/js/layers/layers.modal.js b/web/js/layers/modal.js similarity index 100% rename from web/js/layers/layers.modal.js rename to web/js/layers/modal.js diff --git a/web/js/layers/layers.model.js b/web/js/layers/model.js similarity index 100% rename from web/js/layers/layers.model.js rename to web/js/layers/model.js diff --git a/web/js/layers/layers.options.js b/web/js/layers/options.js similarity index 100% rename from web/js/layers/layers.options.js rename to web/js/layers/options.js diff --git a/web/js/layers/layers.sidebar.js b/web/js/layers/sidebar.js similarity index 100% rename from web/js/layers/layers.sidebar.js rename to web/js/layers/sidebar.js diff --git a/web/js/link/link.model.js b/web/js/link/model.js similarity index 100% rename from web/js/link/link.model.js rename to web/js/link/model.js diff --git a/web/js/link/link.ui.js b/web/js/link/ui.js similarity index 100% rename from web/js/link/link.ui.js rename to web/js/link/ui.js diff --git a/web/js/palettes/palettes.legend.js b/web/js/palettes/legend.js similarity index 99% rename from web/js/palettes/palettes.legend.js rename to web/js/palettes/legend.js index 990842a364..cddc438468 100644 --- a/web/js/palettes/palettes.legend.js +++ b/web/js/palettes/legend.js @@ -3,7 +3,7 @@ import each from 'lodash/each'; import first from 'lodash/first'; import last from 'lodash/last'; import util from '../util/util'; -import palettes from '../palettes/palettes'; +import palettes from './palettes'; export function palettesLegend(spec) { var selector = spec.selector; diff --git a/web/js/palettes/palettes.model.js b/web/js/palettes/model.js similarity index 99% rename from web/js/palettes/palettes.model.js rename to web/js/palettes/model.js index 02d0c8fff0..fd8e285fd7 100644 --- a/web/js/palettes/palettes.model.js +++ b/web/js/palettes/model.js @@ -5,7 +5,7 @@ import isNaN from 'lodash/isNaN'; import isUndefined from 'lodash/isUndefined'; import parseInt from 'lodash/parseInt'; import util from '../util/util'; -import palettes from '../palettes/palettes'; +import palettes from './palettes'; export function palettesModel(models, config) { config.palettes = config.palettes || { diff --git a/web/js/projection/projection.change.js b/web/js/projection/change.js similarity index 100% rename from web/js/projection/projection.change.js rename to web/js/projection/change.js diff --git a/web/js/projection/projection.model.js b/web/js/projection/model.js similarity index 100% rename from web/js/projection/projection.model.js rename to web/js/projection/model.js diff --git a/web/js/projection/projection.ui.js b/web/js/projection/ui.js similarity index 100% rename from web/js/projection/projection.ui.js rename to web/js/projection/ui.js diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 97fa8d112e..28206acdf3 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -21,10 +21,10 @@ import TimelinePan from './date/date.timeline.pan'; import TimelineInput from './date/date.timeline.input'; // Layers import {parse as layerParser, validate as layerValidate} from './layers/layers'; // export parse as layerParser. etc... -import LayersModel from './layers/layers.model'; -import LayersModal from './layers/layers.modal'; -import LayersSidebar from './layers/layers.sidebar'; -import LayersActive from './layers/layers.active'; +import layersModel from './layers/model'; +import layersModal from './layers/modal'; +import layersSidebar from './layers/sidebar'; +import layersActive from './layers/active'; // Map import {mapParser} from './map/map'; import MapModel from './map/map.model'; @@ -44,7 +44,7 @@ import AnimationRangeselect from './animation/anim.rangeselect'; import AnimationGIF from './animation/anim.gif'; // Palettes import {palettesParser, paletteRequirements} from './palettes/palettes'; -import PalettesModel from './palettes/palettes.model'; +import palettesModel from './palettes/model'; // Data import dataParser from './data/data'; import DataModel from './data/data.model'; @@ -54,20 +54,20 @@ import NaturalEventsModel from './naturalEvents/naturalEvents.model'; import NaturalEventsUI from './naturalEvents/naturalEvents.ui'; import NaturalEventsRequest from './naturalEvents/naturalEvents.request'; // Image -import ImageRubberband from './image/image.rubberband'; -import ImagePanel from './image/image.panel'; +import imageRubberband from './image/rubberband'; +import imagePanel from './image/panel'; // Notifications import NotificationsUI from './notifications/notifications.ui'; // UI import {loadingIndicator} from './ui/ui.indicator'; // not a class, export object // Link -import linkModel from './link/link.model'; -import linkUi from './link/link.ui'; +import linkModel from './link/model'; +import linkUi from './link/ui'; // Projections import projectionParser from './projection/projection'; -import ProjectionModel from './projection/projection.model'; -import ProjectionUi from './projection/projection.ui'; -import ProjectionChange from './projection/projection.change'; +import projectionModel from './projection/model'; +import projectionUi from './projection/ui'; +import projectionChange from './projection/change'; // Other import {debugConfig, debug} from './debug'; import Brand from './brand'; @@ -177,9 +177,9 @@ window.onload = () => { wvx.models = models; wvx.ui = ui; - models.proj = ProjectionModel(config); - models.palettes = PalettesModel(models, config); - models.layers = LayersModel(models, config); + models.proj = projectionModel(config); + models.palettes = palettesModel(models, config); + models.layers = layersModel(models, config); models.date = DateModel(config, { initial: initialDate }); @@ -223,15 +223,15 @@ window.onload = () => { models.link.load(state); // needs to be loaded twice if (config.features.arcticProjectionChange) { - models.proj.change = ProjectionChange(models, config); + models.proj.change = projectionChange(models, config); } elapsed('ui'); // Create widgets - ui.proj = ProjectionUi(models, config); - ui.sidebar = LayersSidebar(models, config); - ui.activeLayers = LayersActive(models, ui, config); - ui.addModal = LayersModal(models, ui, config); + ui.proj = projectionUi(models, config); + ui.sidebar = layersSidebar(models, config); + ui.activeLayers = layersActive(models, ui, config); + ui.addModal = layersModal(models, ui, config); function timelineInit() { ui.timeline = Timeline(models, config, ui); @@ -259,8 +259,8 @@ window.onload = () => { ui.dateWheels = DateWheels(models, config); } - ui.rubberband = ImageRubberband(models, ui, config); - ui.image = ImagePanel(models, ui, config); + ui.rubberband = imageRubberband(models, ui, config); + ui.image = imagePanel(models, ui, config); if (config.features.dataDownload) { ui.data = DataUI(models, ui, config); // FIXME: Why is this here? From 6d71250c135585b5a72c040fb22b57118dde31e2 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Mon, 6 Nov 2017 09:30:30 -0500 Subject: [PATCH 045/242] Changed import file paths to be consistently referenced. --- web/js/image/panel.js | 4 ++-- web/js/image/rubberband.js | 4 ++-- web/js/projection/model.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/js/image/panel.js b/web/js/image/panel.js index e04aafb669..ae51a9cea2 100644 --- a/web/js/image/panel.js +++ b/web/js/image/panel.js @@ -3,8 +3,8 @@ import each from 'lodash/each'; import isUndefined from 'lodash/isUndefined'; import ol from 'openlayers'; import {GA as googleAnalytics} from 'worldview-components'; -import util from '../util/util.js'; -import wvui from '../ui/ui.js'; +import util from '../util/util'; +import wvui from '../ui/ui'; export function imagePanel(models, ui, config) { var self = {}; diff --git a/web/js/image/rubberband.js b/web/js/image/rubberband.js index 10f6efba0a..2f28ff53ca 100644 --- a/web/js/image/rubberband.js +++ b/web/js/image/rubberband.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import find from 'lodash/find'; -import util from '../util/util.js'; -import wvui from '../ui/ui.js'; +import util from '../util/util'; +import wvui from '../ui/ui'; export function imageRubberband(models, ui, config) { var self = {}; diff --git a/web/js/projection/model.js b/web/js/projection/model.js index 9621843553..716da6dac3 100644 --- a/web/js/projection/model.js +++ b/web/js/projection/model.js @@ -1,7 +1,7 @@ import each from 'lodash/each'; -import util from '../util/util'; import ol from 'openlayers'; import proj4 from 'proj4'; +import util from '../util/util'; export function projectionModel(config) { var self = {}; From b35867024760fd78694dcaad0db2db1bbd77b001 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Mon, 6 Nov 2017 10:23:18 -0500 Subject: [PATCH 046/242] Changed import file paths to be consistently referenced. --- web/js/feedback.js | 2 +- web/js/polyfill.js | 2 +- web/js/ui/info.js | 6 +++--- web/js/ui/mouse.js | 2 +- web/js/ui/ui.js | 6 +++--- web/js/util/load.js | 4 ++-- web/js/util/util.js | 8 ++++---- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/web/js/feedback.js b/web/js/feedback.js index 8eb478c86d..7f9a4f871c 100644 --- a/web/js/feedback.js +++ b/web/js/feedback.js @@ -5,7 +5,7 @@ * which is included via config.scripts in web/config/wv.json */ -import util from './util/util.js'; +import util from './util/util'; export const feedbackModal = (function () { var self = {}; diff --git a/web/js/polyfill.js b/web/js/polyfill.js index 3dc24b4eb7..78ab2e0488 100644 --- a/web/js/polyfill.js +++ b/web/js/polyfill.js @@ -6,7 +6,7 @@ // =========================================================================== import $ from 'jquery'; -import util from './util/util.js'; +import util from './util/util'; export function polyfill () { /* diff --git a/web/js/ui/info.js b/web/js/ui/info.js index 740456ad89..0a49cdbcf8 100644 --- a/web/js/ui/info.js +++ b/web/js/ui/info.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import wvui from './ui.js'; -import util from '../util/util.js'; -import feedbackModal from '../feedback.js'; +import wvui from './ui'; +import util from '../util/util'; +import feedbackModal from '../feedback'; export function info (ui, config) { var selector = '#wv-info-button'; diff --git a/web/js/ui/mouse.js b/web/js/ui/mouse.js index a4c8a4d4ce..32b6ee7a11 100644 --- a/web/js/ui/mouse.js +++ b/web/js/ui/mouse.js @@ -1,4 +1,4 @@ -import util from '../util/util.js'; +import util from '../util/util'; export const mouse = { click: function ($element, callback) { diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js index f0764d9019..ba35043561 100644 --- a/web/js/ui/ui.js +++ b/web/js/ui/ui.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import loadingIndicator from './indicator.js'; -import info from './info.js'; -import mouse from './mouse.js'; +import loadingIndicator from './indicator'; +import info from './info'; +import mouse from './mouse'; export const wvui = (function (self) { // Export other ui methods diff --git a/web/js/util/load.js b/web/js/util/load.js index 0d8b15a044..c346f4075e 100644 --- a/web/js/util/load.js +++ b/web/js/util/load.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import size from 'lodash/size'; -import wvui from '../ui/ui.js'; -import brand from '../brand.js'; +import wvui from '../ui/ui'; +import brand from '../brand'; export const load = (function () { var self = {}; diff --git a/web/js/util/util.js b/web/js/util/util.js index e4d6278608..fdb2068aa1 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -8,10 +8,10 @@ import $ from 'jquery'; import each from 'lodash/each'; import isNull from 'lodash/isNull'; -import wvui from '../ui/ui.js'; -import browser from './browser.js'; -import events from './events.js'; -import load from './load.js'; +import wvui from '../ui/ui'; +import browser from './browser'; +import events from './events'; +import load from './load'; export const util = (function () { var self = {}; From def309b010f74c719ff6b223f9b2fd5f105a4e14 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 14:21:46 -0500 Subject: [PATCH 047/242] updated LookupImageTile ol-extended class --- ....lookupimagetile.js => lookupimagetile.js} | 51 +++++++------------ 1 file changed, 17 insertions(+), 34 deletions(-) rename web/js/ol.wv/{ol.wv.lookupimagetile.js => lookupimagetile.js} (58%) diff --git a/web/js/ol.wv/ol.wv.lookupimagetile.js b/web/js/ol.wv/lookupimagetile.js similarity index 58% rename from web/js/ol.wv/ol.wv.lookupimagetile.js rename to web/js/ol.wv/lookupimagetile.js index 3c876cddea..f977a1220b 100644 --- a/web/js/ol.wv/ol.wv.lookupimagetile.js +++ b/web/js/ol.wv/lookupimagetile.js @@ -1,35 +1,21 @@ -ol.wv = {}; -/** - * @constructor - * @extends {ol.ImageTile} - */ -ol.wv.LookupImageTile = function (lookup, tileCoord, state, src, crossOrigin, tileLoadFunction) { - goog.base(this, tileCoord, state, src, 'anonymous', tileLoadFunction); +import ImageTile from 'ol/imagetile'; +import TileState from 'ol/tilestate'; - /** - * @private - */ - this.lookup_ = lookup; - - /** - * @private - */ - this.canvas_ = null; -}; -goog.inherits(ol.wv.LookupImageTile, ol.ImageTile); - -/** - * @return (HTMLCanvasElement|HTMLImageElement|HTMLVideoElement|null) - */ -ol.wv.LookupImageTile.prototype.getImage = function (opt_context) { +class LookupImageTile extends ImageTile { + constructor(lookup, tileCoord, state, src, crossOrigin, tileLoadFunction) { + super(tileCoord, state, src, crossOrigin, tileLoadFunction); + this.lookup_ = lookup; + this.canvas_ = null; + } +} +LookupImageTile.prototype.getImage = function() { return this.canvas_; }; - -ol.wv.LookupImageTile.prototype.load = function () { - if (this.state === ol.TileState.IDLE) { - this.state = ol.TileState.LOADING; +LookupImageTile.prototype.load = function() { + if (this.state === TileState.IDLE) { + this.state = TileState.LOADING; var that = this; - var onImageLoad = function (e) { + var onImageLoad = function() { that.canvas_ = document.createElement('canvas'); that.canvas_.width = that.image_.width; that.canvas_.height = that.image_.height; @@ -55,7 +41,7 @@ ol.wv.LookupImageTile.prototype.load = function () { } } g.putImageData(imageData, 0, 0); - that.state = ol.TileState.LOADED; + that.state = TileState.LOADED; that.changed(); that.image_.removeEventListener('load', onImageLoad); }; @@ -64,12 +50,9 @@ ol.wv.LookupImageTile.prototype.load = function () { } }; -/** - * @api - */ -ol.wv.LookupImageTile.factory = function (lookup) { +export function lookupFactory(lookup) { return function (tileCoord, state, src, crossOrigin, tileLoadFunction) { - return new ol.wv.LookupImageTile(lookup, tileCoord, state, src, + return new LookupImageTile(lookup, tileCoord, state, src, crossOrigin, tileLoadFunction); }; }; From 3c628b97f7cd5f5bcde034faca7026b5cfc07b3b Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 14:27:16 -0500 Subject: [PATCH 048/242] linking lookupImageTile --- web/js/map/wv.map.layerbuilder.js | 5 +++-- web/js/{ol.wv => ol}/lookupimagetile.js | 0 2 files changed, 3 insertions(+), 2 deletions(-) rename web/js/{ol.wv => ol}/lookupimagetile.js (100%) diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index 2ad5087584..ba7087ed72 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -3,6 +3,7 @@ import ol from 'openlayers'; import cloneDeep from 'lodash/cloneDeep'; import merge from 'lodash/merge'; import each from 'lodash/each'; +import {lookupFactory} from '../ol/lookupimagetile'; export function mapLayerBuilder(models, config, cache, Parent) { var self = {}; @@ -180,7 +181,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { }; if (models.palettes.isActive(def.id)) { var lookup = models.palettes.getLookup(def.id); - sourceOptions.tileClass = ol.wv.LookupImageTile.factory(lookup); + sourceOptions.tileClass = lookupFactory(lookup); } var layer = new ol.layer.Tile({ extent: extent, @@ -257,7 +258,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { if (models.palettes.isActive(def.id)) { var lookup = models.palettes.getLookup(def.id); - sourceOptions.tileClass = ol.wv.LookupImageTile.factory(lookup); + sourceOptions.tileClass = lookupFactory(lookup); } var layer = new ol.layer.Tile({ extent: extent, diff --git a/web/js/ol.wv/lookupimagetile.js b/web/js/ol/lookupimagetile.js similarity index 100% rename from web/js/ol.wv/lookupimagetile.js rename to web/js/ol/lookupimagetile.js From f18051fc2c738c457985127bf852858f210c827e Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Mon, 6 Nov 2017 15:35:19 -0500 Subject: [PATCH 049/242] Namespaced lodash functions. Added specific ol imports. --- web/js/image/panel.js | 16 ++++---- web/js/image/rubberband.js | 4 +- web/js/layers/active.js | 20 +++++----- web/js/layers/add.js | 16 ++++---- web/js/layers/layers.js | 24 ++++++------ web/js/layers/modal.js | 16 ++++---- web/js/layers/model.js | 62 ++++++++++++++--------------- web/js/layers/options.js | 27 +++++++------ web/js/link/model.js | 24 ++++++------ web/js/link/ui.js | 4 +- web/js/palettes/legend.js | 20 +++++----- web/js/palettes/model.js | 78 ++++++++++++++++++------------------- web/js/palettes/palettes.js | 18 ++++----- web/js/projection/model.js | 8 ++-- web/js/projection/ui.js | 4 +- web/js/util/events.js | 10 ++--- web/js/util/load.js | 4 +- web/js/util/util.js | 10 ++--- web/js/wv.main.js | 8 ++-- 19 files changed, 186 insertions(+), 187 deletions(-) diff --git a/web/js/image/panel.js b/web/js/image/panel.js index ae51a9cea2..794c1c7541 100644 --- a/web/js/image/panel.js +++ b/web/js/image/panel.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import isUndefined from 'lodash/isUndefined'; -import ol from 'openlayers'; +import loEach from 'lodash/each'; +import loIsUndefined from 'lodash/isUndefined'; +import olProj from 'ol/proj'; import {GA as googleAnalytics} from 'worldview-components'; import util from '../util/util'; import wvui from '../ui/ui'; @@ -264,8 +264,8 @@ export function imagePanel(models, ui, config) { // get layer transparencies (opacities) var opacities = []; - each(products, function (product) { - opacities.push((isUndefined(product.opacity)) ? 1 : product.opacity); + loEach(products, function (product) { + opacities.push((loIsUndefined(product.opacity)) ? 1 : product.opacity); }); // console.log("EPSG: " + epsg); @@ -280,8 +280,8 @@ export function imagePanel(models, ui, config) { var lonlat1 = map.getCoordinateFromPixel([Math.floor(x1), Math.floor(y2)]); var lonlat2 = map.getCoordinateFromPixel([Math.floor(x2), Math.floor(y1)]); - var geolonlat1 = ol.proj.transform(lonlat1, crs, 'EPSG:4326'); - var geolonlat2 = ol.proj.transform(lonlat2, crs, 'EPSG:4326'); + var geolonlat1 = olProj.transform(lonlat1, crs, 'EPSG:4326'); + var geolonlat2 = olProj.transform(lonlat2, crs, 'EPSG:4326'); var minLon = geolonlat1[0]; var maxLon = geolonlat2[0]; @@ -329,7 +329,7 @@ export function imagePanel(models, ui, config) { // dlURL += "&switch="+s; dlURL += '&epsg=' + epsg; var layers = []; - each(products, function (layer) { + loEach(products, function (layer) { if (layer.projections[s].layer) { layers.push(layer.projections[s].layer); } else { diff --git a/web/js/image/rubberband.js b/web/js/image/rubberband.js index 2f28ff53ca..128b97c9e3 100644 --- a/web/js/image/rubberband.js +++ b/web/js/image/rubberband.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import find from 'lodash/find'; +import loFind from 'lodash/find'; import util from '../util/util'; import wvui from '../ui/ui'; @@ -117,7 +117,7 @@ export function imageRubberband(models, ui, config) { renderable: true }); var on = true; - if (find(layers, { + if (loFind(layers, { id: 'Graticule' }) && geographic) { wvui.ask({ diff --git a/web/js/layers/active.js b/web/js/layers/active.js index a0f1725d67..1dc22c7db9 100644 --- a/web/js/layers/active.js +++ b/web/js/layers/active.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import eachRight from 'lodash/eachRight'; +import loEach from 'lodash/each'; +import loEachRight from 'lodash/eachRight'; import util from '../util/util'; import wvui from '../ui/ui'; import layersInfo from './info'; @@ -49,7 +49,7 @@ export function layersActive(models, ui, config) { var $container = $('
    ', {class: 'layer-container bank'}); $(self.selector).empty().append($container); - eachRight(groups, function (group) { + loEachRight(groups, function (group) { renderGroup($container, group); }); @@ -90,7 +90,7 @@ export function layersActive(models, ui, config) { $('.layer-container ul.category') .bind('sortstop', moveLayer); - each(model.get({ + loEach(model.get({ group: 'overlays' }), function (layer) { if (layer.palette) { @@ -113,7 +113,7 @@ export function layersActive(models, ui, config) { $parent.append($header); - each(model.get({ + loEach(model.get({ group: group.id }), function (layer) { renderLayer($container, group, layer); @@ -450,7 +450,7 @@ export function layersActive(models, ui, config) { }; var onPaletteUpdateAll = function () { - each(legends, function (legend) { + loEach(legends, function (legend) { legend.update(); }); }; @@ -462,8 +462,8 @@ export function layersActive(models, ui, config) { setTimeout(render, 1); }; var onZoomChange = function () { - each(groups, function (group) { - each(model.get({ + loEach(groups, function (group) { + loEach(model.get({ group: group.id }), function (layer) { var $layer = $('#products li.productsitem[data-layer="' + @@ -473,8 +473,8 @@ export function layersActive(models, ui, config) { }); }; var onDateChange = function () { - each(groups, function (group) { - each(model.get({ + loEach(groups, function (group) { + loEach(model.get({ group: group.id }), function (layer) { var $layer = $('#' + group.id + '-' + encodeURIComponent(layer.id)); diff --git a/web/js/layers/add.js b/web/js/layers/add.js index cef4f939c3..7b31af2064 100644 --- a/web/js/layers/add.js +++ b/web/js/layers/add.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import find from 'lodash/find'; -import throttle from 'lodash/throttle'; +import loEach from 'lodash/each'; +import loFind from 'lodash/find'; +import loThrottle from 'lodash/throttle'; import util from '../util/util'; export function layersAdd(models, ui, config) { @@ -16,7 +16,7 @@ export function layersAdd(models, ui, config) { var visible = {}; var init = function () { - each(config.layers, function (layer) { + loEach(config.layers, function (layer) { visible[layer.id] = true; }); @@ -127,7 +127,7 @@ export function layersAdd(models, ui, config) { .addClass('category') .addClass('scroll-pane'); - each(config.layerOrder, function (layerId) { + loEach(config.layerOrder, function (layerId) { var layer = config.layers[layerId]; if (!layer) { console.warn('In layer order but not defined', layerId); @@ -180,7 +180,7 @@ export function layersAdd(models, ui, config) { if (group === 'baselayers') { $checkbox.attr('name', group); } - if (find(model.active, { + if (loFind(model.active, { id: layer.id })) { $checkbox.attr('checked', 'checked'); @@ -319,7 +319,7 @@ export function layersAdd(models, ui, config) { }; var adjustTitles = function () { - each(config.layers, function (def) { + loEach(config.layers, function (def) { var names = models.layers.getTitles(def.id); $('#selectorbox [data-layer=\'' + encodeURIComponent(def.id) + '\'] .title') @@ -402,7 +402,7 @@ export function layersAdd(models, ui, config) { return filtered; }; - var filter = throttle(function () { + var filter = loThrottle(function () { var search = searchTerms(); $.each(config.layers, function (layerId, layer) { var fproj = filterProjection(layer); diff --git a/web/js/layers/layers.js b/web/js/layers/layers.js index f87c9201b2..ab3b2ce3af 100644 --- a/web/js/layers/layers.js +++ b/web/js/layers/layers.js @@ -1,13 +1,13 @@ -import cloneDeep from 'lodash/cloneDeep'; -import each from 'lodash/each'; -import remove from 'lodash/remove'; +import loCloneDeep from 'lodash/cloneDeep'; +import loEach from 'lodash/each'; +import loRemove from 'lodash/remove'; // Permalink versions 1.0 and 1.1 var parse11 = function (state, errors, config) { var str = state.products; var layers = []; var ids = str.split(/[~,\.]/); - each(ids, function (id) { + loEach(ids, function (id) { if (id === 'baselayers' || id === 'overlays') { return; } @@ -47,7 +47,7 @@ var parse12 = function (state, errors, config) { // Split by layer definitions (commas not in parens) var layerDefs = str.match(/[^\(,]+(\([^\)]*\))?,?/g); var lstates = []; - each(layerDefs, function (layerDef) { + loEach(layerDefs, function (layerDef) { // Get the text before any paren or comma var layerId = layerDef.match(/[^\(,]+/)[0]; if (config.redirects && config.redirects.layers) { @@ -64,7 +64,7 @@ var parse12 = function (state, errors, config) { var strAttr = arrayAttr[0].replace(/[\(\)]/g, ''); // Key value pairs var kvps = strAttr.split(','); - each(kvps, function (kvp) { + loEach(kvps, function (kvp) { parts = kvp.split('='); if (parts.length === 1) { lstate.attributes.push({ @@ -101,16 +101,16 @@ export function validate(errors, config) { layerRemoved: true }); delete config.layers[layerId]; - remove(config.layerOrder.baselayers, function (e) { + loRemove(config.layerOrder.baselayers, function (e) { return e === layerId; }); - remove(config.layerOrder.overlays, function (e) { + loRemove(config.layerOrder.overlays, function (e) { return e === layerId; }); }; - var layers = cloneDeep(config.layers); - each(layers, function (layer) { + var layers = loCloneDeep(config.layers); + loEach(layers, function (layer) { if (!layer.group) { error(layer.id, 'No group defined'); return; @@ -120,8 +120,8 @@ export function validate(errors, config) { } }); - var orders = cloneDeep(config.layerOrder); - each(orders, function (layerId) { + var orders = loCloneDeep(config.layerOrder); + loEach(orders, function (layerId) { if (!config.layers[layerId]) { error(layerId, 'No configuration'); } diff --git a/web/js/layers/modal.js b/web/js/layers/modal.js index d9d2a1cfe8..857e2d2c01 100644 --- a/web/js/layers/modal.js +++ b/web/js/layers/modal.js @@ -1,8 +1,8 @@ import $ from 'jquery'; -import find from 'lodash/find'; -import indexOf from 'lodash/indexOf'; -import sortBy from 'lodash/sortBy'; -import startCase from 'lodash/startCase'; +import loFind from 'lodash/find'; +import loIndexOf from 'lodash/indexOf'; +import loSortBy from 'lodash/sortBy'; +import loStartCase from 'lodash/startCase'; import util from '../util/util'; export function layersModal(models, ui, config) { @@ -36,8 +36,8 @@ export function layersModal(models, ui, config) { if (layer.subtitle) layer.subtitle = decodeHtml(layer.subtitle); return layer; }); - return sortBy(filteredLayers, function (layer) { - return indexOf(config.layerOrder, layer.id); + return loSortBy(filteredLayers, function (layer) { + return loIndexOf(config.layerOrder, layer.id); }); }; @@ -541,7 +541,7 @@ export function layersModal(models, ui, config) { }).on('ifChecked', addLayer) .on('ifUnchecked', removeLayer); - if (find(model.active, {id: layer.id})) { + if (loFind(model.active, {id: layer.id})) { $setting.attr('checked', 'checked'); } @@ -556,7 +556,7 @@ export function layersModal(models, ui, config) { if (layer.layergroup && layer.layergroup.indexOf('reference_orbits') !== -1) { var orbitTitle; if (layer.daynight && layer.track) { - orbitTitle = startCase(layer.track) + '/' + startCase(layer.daynight); + orbitTitle = loStartCase(layer.track) + '/' + loStartCase(layer.daynight); } $label.empty() diff --git a/web/js/layers/model.js b/web/js/layers/model.js index 4016cee283..2e2b424eb6 100644 --- a/web/js/layers/model.js +++ b/web/js/layers/model.js @@ -1,9 +1,9 @@ -import each from 'lodash/each'; -import eachRight from 'lodash/eachRight'; -import filter from 'lodash/filter'; -import find from 'lodash/find'; -import findIndex from 'lodash/findIndex'; -import isUndefined from 'lodash/isUndefined'; +import loEach from 'lodash/each'; +import loEachRight from 'lodash/eachRight'; +import loFilter from 'lodash/filter'; +import loFind from 'lodash/find'; +import loFindIndex from 'lodash/findIndex'; +import loIsUndefined from 'lodash/isUndefined'; import util from '../util/util'; export function layersModel(models, config) { @@ -21,7 +21,7 @@ export function layersModel(models, config) { self.reset = function () { self.clear(); if (config.defaults && config.defaults.startingLayers) { - each(config.defaults.startingLayers, function (start) { + loEach(config.defaults.startingLayers, function (start) { self.add(start.id, start); }); } @@ -86,7 +86,7 @@ export function layersModel(models, config) { // if the layer exists in the active layer list self.exists = function (layer) { var found = false; - each(self.active, function (current) { + loEach(self.active, function (current) { if (layer === current.id) { found = true; } @@ -97,7 +97,7 @@ export function layersModel(models, config) { self.dateRange = function (spec) { spec = spec || {}; var projId = spec.projId || models.proj.selected.id; - var layers = (spec.layer) ? [find(self.active, { + var layers = (spec.layer) ? [loFind(self.active, { id: spec.layer })] : self.active; @@ -113,7 +113,7 @@ export function layersModel(models, config) { var min = Number.MAX_VALUE; var max = 0; var range = false; - each(layers, function (def) { + loEach(layers, function (def) { if (def.startDate) { range = true; var start = util.parseDateUTC(def.startDate) @@ -153,7 +153,7 @@ export function layersModel(models, config) { }; self.add = function (id, spec) { - if (find(self.active, { + if (loFind(self.active, { id: id })) { return; @@ -164,12 +164,12 @@ export function layersModel(models, config) { throw new Error('No such layer: ' + id); } def.visible = true; - if (!isUndefined(spec.visible)) { + if (!loIsUndefined(spec.visible)) { def.visible = spec.visible; - } else if (!isUndefined(spec.hidden)) { + } else if (!loIsUndefined(spec.hidden)) { def.visible = !spec.hidden; } - def.opacity = (isUndefined(spec.opacity)) ? 1.0 : spec.opacity; + def.opacity = (loIsUndefined(spec.opacity)) ? 1.0 : spec.opacity; if (def.group === 'overlays') { self.active.unshift(def); split += 1; @@ -181,7 +181,7 @@ export function layersModel(models, config) { }; self.remove = function (id) { - var index = findIndex(self.active, { + var index = loFindIndex(self.active, { id: id }); var def = self.active[index]; @@ -196,7 +196,7 @@ export function layersModel(models, config) { }; self.replace = function (idOld, idNew) { - var index = findIndex(self.active, { + var index = loFindIndex(self.active, { id: idOld }); if (index < 0) { @@ -214,7 +214,7 @@ export function layersModel(models, config) { self.clear = function (projId) { projId = projId || models.proj.selected.id; var defs = self.active.slice(0); - each(defs, function (def) { + loEach(defs, function (def) { if (projId && def.projections[projId]) { self.remove(def.id); } @@ -222,7 +222,7 @@ export function layersModel(models, config) { }; self.pushToBottom = function (id) { - var oldIndex = findIndex(self.active, { + var oldIndex = loFindIndex(self.active, { id: id }); if (oldIndex < 0) { @@ -240,7 +240,7 @@ export function layersModel(models, config) { }; self.moveBefore = function (sourceId, targetId) { - var sourceIndex = findIndex(self.active, { + var sourceIndex = loFindIndex(self.active, { id: sourceId }); if (sourceIndex < 0) { @@ -248,7 +248,7 @@ export function layersModel(models, config) { } var sourceDef = self.active[sourceIndex]; - var targetIndex = findIndex(self.active, { + var targetIndex = loFindIndex(self.active, { id: targetId }); if (targetIndex < 0) { @@ -265,7 +265,7 @@ export function layersModel(models, config) { }; self.setVisibility = function (id, visible) { - var def = find(self.active, { + var def = loFind(self.active, { id: id }); if (def.visible !== visible) { @@ -276,7 +276,7 @@ export function layersModel(models, config) { }; self.setOpacity = function (id, opacity) { - var def = find(self.active, { + var def = loFind(self.active, { id: id }); if (def.opacity !== opacity) { @@ -287,7 +287,7 @@ export function layersModel(models, config) { }; self.isRenderable = function (id) { - var def = find(self.active, { + var def = loFind(self.active, { id: id }); if (!def) { @@ -303,7 +303,7 @@ export function layersModel(models, config) { return true; } var obscured = false; - each(self.get({ + loEach(self.get({ group: 'baselayers' }), function (otherDef) { if (otherDef.id === def.id) { @@ -321,8 +321,8 @@ export function layersModel(models, config) { self.save = function (state) { var defs = self.get(); state.l = state.l || []; - each(self.get(), function (def) { - var lstate = find(state.l, { + loEach(self.get(), function (def) { + var lstate = loFind(state.l, { id: def.id }); if (!lstate) { @@ -349,9 +349,9 @@ export function layersModel(models, config) { }; self.load = function (state, errors) { - if (!isUndefined(state.l)) { + if (!loIsUndefined(state.l)) { self.clear(models.proj.selected.id); - eachRight(state.l, function (layerDef) { + loEachRight(state.l, function (layerDef) { if (!config.layers[layerDef.id]) { errors.push({ message: 'No such layer: ' + layerDef.id @@ -360,7 +360,7 @@ export function layersModel(models, config) { } var hidden = false; var opacity = 1.0; - each(layerDef.attributes, function (attr) { + loEach(layerDef.attributes, function (attr) { if (attr.id === 'hidden') { hidden = true; } @@ -381,10 +381,10 @@ export function layersModel(models, config) { spec = spec || {}; var projId = spec.proj || models.proj.selected.id; var results = []; - var defs = filter(self.active, { + var defs = loFilter(self.active, { group: group }); - each(defs, function (def) { + loEach(defs, function (def) { // Skip if this layer isn't available for the selected projection if (!def.projections[projId]) { return; diff --git a/web/js/layers/options.js b/web/js/layers/options.js index 00d43c9e21..f98853de19 100644 --- a/web/js/layers/options.js +++ b/web/js/layers/options.js @@ -1,9 +1,9 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import indexOf from 'lodash/indexOf'; -import isEqual from 'lodash/isEqual'; -import isUndefined from 'lodash/isUndefined'; -import parseInt from 'lodash/parseInt'; +import loEach from 'lodash/each'; +import loIndexOf from 'lodash/indexOf'; +import loIsEqual from 'lodash/isEqual'; +import loIsUndefined from 'lodash/isUndefined'; +import loParseInt from 'lodash/parseInt'; import util from '../util/util'; import wvui from '../ui/ui'; import palettes from '../palettes/palettes'; @@ -16,7 +16,6 @@ export function layersOptions(config, models, layer) { var $dropDown; var self = {}; var canvas; - var palettes; var index = 0; var init = function () { @@ -174,7 +173,7 @@ export function layersOptions(config, models, layer) { .addClass('wv-legend-buttons'); var legends = models.palettes.getLegends(layer.id); - each(legends, function (legend, index) { + loEach(legends, function (legend, index) { id = 'wv-legend-' + index; $panel.append('' + @@ -185,7 +184,7 @@ export function layersOptions(config, models, layer) { $('.wv-legend-buttons input[type=\'radio\']') .change(function () { - index = parseInt($(this) + index = loParseInt($(this) .val()); rerenderRange(); rerenderPaletteSelector(); @@ -272,11 +271,11 @@ export function layersOptions(config, models, layer) { updateRangeLabels(); var palette = models.palettes.get(layer.id, index); - var imin = (isUndefined(palette.min)) ? 0 : palette.min; - var imax = (isUndefined(palette.max)) + var imin = (loIsUndefined(palette.min)) ? 0 : palette.min; + var imax = (loIsUndefined(palette.max)) ? palette.legend.tooltips.length - 1 : palette.max; current = [parseFloat($range.val()[0]), parseFloat($range.val()[1])]; - if (!isEqual(current, [imin, imax])) { + if (!loIsEqual(current, [imin, imax])) { $range.val([imin, imax]); } @@ -324,14 +323,14 @@ export function layersOptions(config, models, layer) { .empty(); $pane.append(defaultLegend()); var recommended = layer.palette.recommended || []; - each(recommended, function (id) { + loEach(recommended, function (id) { var item = customLegend(id); if (item) { $pane.append(item); } }); - each(config.paletteOrder, function (id) { - if (indexOf(recommended, id) < 0) { + loEach(config.paletteOrder, function (id) { + if (loIndexOf(recommended, id) < 0) { var item = customLegend(id); if (item) { $pane.append(item); diff --git a/web/js/link/model.js b/web/js/link/model.js index feb9f4dc6f..97c0702618 100644 --- a/web/js/link/model.js +++ b/web/js/link/model.js @@ -1,8 +1,8 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import map from 'lodash/map'; -import isArray from 'lodash/isArray'; -import isObject from 'lodash/isObject'; +import loEach from 'lodash/each'; +import loMap from 'lodash/map'; +import loIsArray from 'lodash/isArray'; +import loIsObject from 'lodash/isObject'; import util from '../util/util'; export function linkModel(config) { @@ -46,19 +46,19 @@ export function linkModel(config) { // Returns a serialized string containing information of the current session self.toQueryString = function () { var state = {}; - each(components, function (component) { + loEach(components, function (component) { component.save(state); }); - var strings = map(state, function (value, key) { - if (isArray(value)) { + var strings = loMap(state, function (value, key) { + if (loIsArray(value)) { var parts = []; - each(value, function (item) { + loEach(value, function (item) { var part = ''; - if (isObject(item)) { + if (loIsObject(item)) { part = item.id; if (item.attributes && item.attributes.length > 0) { var attributes = []; - each(item.attributes, function (attribute) { + loEach(item.attributes, function (attribute) { if (attribute.value) { attributes.push(attribute.id + '=' + attribute.value); } else { @@ -111,14 +111,14 @@ export function linkModel(config) { self.load = function (state, errors) { errors = errors || []; - each(components, function (component) { + loEach(components, function (component) { component.load(state, errors); }); }; var encode = function (value) { var encoded = encodeURIComponent(value); - each(ENCODING_EXCEPTIONS, function (exception) { + loEach(ENCODING_EXCEPTIONS, function (exception) { encoded = encoded.replace(exception.match, exception.replace); }); return encoded; diff --git a/web/js/link/ui.js b/web/js/link/ui.js index b7c6a8f8f5..a7a6568bf4 100644 --- a/web/js/link/ui.js +++ b/web/js/link/ui.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import throttle from 'lodash/throttle'; +import loThrottle from 'lodash/throttle'; import React from 'react'; import ReactDOM from 'react-dom'; import Clipboard from 'clipboard'; @@ -46,7 +46,7 @@ export function linkUi(models, config) { }; // Calls toQueryString to fetch updated state and returns URL - var replaceHistoryState = throttle(function () { + var replaceHistoryState = loThrottle(function () { if (util.browser.history) { window.history.replaceState('', '@OFFICIAL_NAME@', '?' + models.link.toQueryString()); } diff --git a/web/js/palettes/legend.js b/web/js/palettes/legend.js index cddc438468..6427f2859b 100644 --- a/web/js/palettes/legend.js +++ b/web/js/palettes/legend.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import first from 'lodash/first'; -import last from 'lodash/last'; +import loEach from 'lodash/each'; +import loFirst from 'lodash/first'; +import loLast from 'lodash/last'; import util from '../util/util'; import palettes from './palettes'; @@ -46,7 +46,7 @@ export function palettesLegend(spec) { .attr('data-layer', layer.id); $parent.append($legendPanel); var legends = model.getLegends(layer.id); - each(legends, function (legend, index) { + loEach(legends, function (legend, index) { if ((legend.type === 'continuous') || (legend.type === 'discrete')) { renderScale($legendPanel, legend, index, layer.id); @@ -118,7 +118,7 @@ export function palettesLegend(spec) { var updateClasses = function (legend, index) { var $panel = $(selector + ' [data-index=\'' + index + '\']'); $panel.empty(); - each(legend.colors, function (color, classIndex) { + loEach(legend.colors, function (color, classIndex) { var $colorBox; var $runningDataPointLabel = $('') .addClass('wv-running-category-label'); @@ -137,7 +137,7 @@ export function palettesLegend(spec) { $colorBox.on('mouseout', hideUnitsOnMouseOut); }); var $detailPanel = $('
    '); - each(legend.colors, function (color, classIndex) { + loEach(legend.colors, function (color, classIndex) { var label = legend.tooltips[classIndex]; label = (legend.units) ? label + ' ' + legend.units : label; var $row = $('
    ') @@ -166,7 +166,7 @@ export function palettesLegend(spec) { return; } var legends = model.getLegends(layer.id); - each(legends, function (legend, index) { + loEach(legends, function (legend, index) { if ((legend.type === 'continuous') || (legend.type === 'discrete')) { palettes.colorbar(selector + ' ' + @@ -185,9 +185,9 @@ export function palettesLegend(spec) { var legends = model.getLegends(layer.id, index); var entries = model.get(layer.id, index) .entries; - each(legends, function (legend, index) { - var min = legend.minLabel || first(legend.tooltips); - var max = legend.maxLabel || last(legend.tooltips); + loEach(legends, function (legend, index) { + var min = legend.minLabel || loFirst(legend.tooltips); + var max = legend.maxLabel || loLast(legend.tooltips); min = (legend.units) ? min + ' ' + legend.units : min; max = (legend.units) ? max + ' ' + legend.units : max; $(selector + ' [data-index=\'' + index + '\'] .wv-palettes-min') diff --git a/web/js/palettes/model.js b/web/js/palettes/model.js index fd8e285fd7..43f1ac2383 100644 --- a/web/js/palettes/model.js +++ b/web/js/palettes/model.js @@ -1,9 +1,9 @@ -import each from 'lodash/each'; -import find from 'lodash/find'; -import cloneDeep from 'lodash/cloneDeep'; -import isNaN from 'lodash/isNaN'; -import isUndefined from 'lodash/isUndefined'; -import parseInt from 'lodash/parseInt'; +import loEach from 'lodash/each'; +import loFind from 'lodash/find'; +import loCloneDeep from 'lodash/cloneDeep'; +import loIsNaN from 'lodash/isNaN'; +import loIsUndefined from 'lodash/isUndefined'; +import loParseInt from 'lodash/parseInt'; import util from '../util/util'; import palettes from './palettes'; @@ -20,7 +20,7 @@ export function palettesModel(models, config) { self.getRendered = function (layerId, index) { var name = config.layers[layerId].palette.id; var palette = config.palettes.rendered[name]; - if (!isUndefined(index)) { + if (!loIsUndefined(index)) { palette = palette.maps[index]; } return palette; @@ -38,11 +38,11 @@ export function palettesModel(models, config) { self.active[layerId] = self.active[layerId] || {}; var active = self.active[layerId]; active.maps = active.maps || []; - each(self.getRendered(layerId) + loEach(self.getRendered(layerId) .maps, function (palette, index) { if (!active.maps[index]) { - active.maps[index] = cloneDeep(palette); + active.maps[index] = loCloneDeep(palette); } }); }; @@ -59,7 +59,7 @@ export function palettesModel(models, config) { throw new Error('Invalid layer: ' + layerId); } prepare(layerId); - index = (isUndefined(index)) ? 0 : index; + index = (loIsUndefined(index)) ? 0 : index; var active = self.active[layerId]; var palette = active.maps[index]; if (palette.custom === paletteId) { @@ -72,7 +72,7 @@ export function palettesModel(models, config) { }; self.clearCustom = function (layerId, index) { - index = (isUndefined(index)) ? 0 : index; + index = (loIsUndefined(index)) ? 0 : index; var active = self.active[layerId]; if (!active) { return; @@ -89,7 +89,7 @@ export function palettesModel(models, config) { self.setRange = function (layerId, min, max, squash, index) { prepare(layerId); - index = (isUndefined(index)) ? 0 : index; + index = (loIsUndefined(index)) ? 0 : index; var palette = self.active[layerId].maps[index]; if (min === 0) { min = undefined; @@ -122,7 +122,7 @@ export function palettesModel(models, config) { * @return {object} object including the entries and legend */ self.get = function (layerId, index) { - index = (isUndefined(index)) ? 0 : index; + index = (loIsUndefined(index)) ? 0 : index; if (self.active[layerId]) { return self.active[layerId].maps[index]; } @@ -200,8 +200,8 @@ export function palettesModel(models, config) { if (self.inUse() && !state.l) { throw new Error('No layers in state'); } - each(self.active, function (def, layerId) { - if (!find(models.layers.get(), { + loEach(self.active, function (def, layerId) { + if (!loFind(models.layers.get(), { id: layerId })) { return; @@ -215,7 +215,7 @@ export function palettesModel(models, config) { }; self.saveSingle = function (state, layerId) { - var attr = find(state.l, { + var attr = loFind(state.l, { id: layerId }) .attributes; @@ -288,7 +288,7 @@ export function palettesModel(models, config) { } } - var attr = find(state.l, { + var attr = loFind(state.l, { id: layerId }) .attributes; @@ -344,18 +344,18 @@ export function palettesModel(models, config) { return; } - each(state.l, function (layerDef) { + loEach(state.l, function (layerDef) { var layerId = layerDef.id; var minValue, maxValue; var min = [], max = []; var squash = []; var count = 0; - each(layerDef.attributes, function (attr) { + loEach(layerDef.attributes, function (attr) { if (attr.id === 'palette') { count = self.getCount(layerId); values = util.toArray(attr.value.split(';')); - each(values, function (value, index) { + loEach(values, function (value, index) { try { self.setCustom(layerId, value, index); } catch (error) { @@ -366,13 +366,13 @@ export function palettesModel(models, config) { if (attr.id === 'min') { count = self.getCount(layerId); values = util.toArray(attr.value.split(';')); - each(values, function (value, index) { + loEach(values, function (value, index) { if (value === '') { min.push(undefined); return; } minValue = parseFloat(value); - if (isNaN(minValue)) { + if (loIsNaN(minValue)) { errors.push('Invalid min value: ' + value); } else { min.push(findIndex(layerId, 'min', minValue, index)); @@ -382,13 +382,13 @@ export function palettesModel(models, config) { if (attr.id === 'max') { count = self.getCount(layerId); values = util.toArray(attr.value.split(';')); - each(values, function (value, index) { + loEach(values, function (value, index) { if (value === '') { max.push(undefined); return; } maxValue = parseFloat(value); - if (isNaN(maxValue)) { + if (loIsNaN(maxValue)) { errors.push('Invalid max value: ' + value); } else { max.push(findIndex(layerId, 'max', maxValue, index)); @@ -401,7 +401,7 @@ export function palettesModel(models, config) { squash[0] = true; } else { values = util.toArray(attr.value.split(';')); - each(values, function (value) { + loEach(values, function (value) { squash.push(value === 'true'); }); } @@ -423,7 +423,7 @@ export function palettesModel(models, config) { var values = self.get(layerId, index) .entries.values; var result; - each(values, function (check, index) { + loEach(values, function (check, index) { var min = getMinValue(check); var max = getMaxValue(check); if (type === 'min' && value === min) { @@ -443,7 +443,7 @@ export function palettesModel(models, config) { self.inUse = function () { var layers = models.layers.get(); var found = false; - each(layers, function (layer) { + loEach(layers, function (layer) { if (self.active[layer.id]) { found = true; return false; @@ -456,7 +456,7 @@ export function palettesModel(models, config) { var use = false; var active = self.active[layerId].maps; - each(active, function (palette, index) { + loEach(active, function (palette, index) { if (palette.custom) { use = true; return false; @@ -469,7 +469,7 @@ export function palettesModel(models, config) { if (palette.max >= rendered.entries.values.length) { delete palette.max; } - if (!isUndefined(palette.min) || !isUndefined(palette.max)) { + if (!loIsUndefined(palette.min) || !loIsUndefined(palette.max)) { use = true; return false; } @@ -485,7 +485,7 @@ export function palettesModel(models, config) { } var active = self.active[layerId].maps; var lookup = {}; - each(active, function (palette, index) { + loEach(active, function (palette, index) { oldLegend = palette.legend; entries = palette.entries; legend = { @@ -511,7 +511,7 @@ export function palettesModel(models, config) { var targetCount = target.length; var indexCount = max - min; - each(source, function (color, index) { + loEach(source, function (color, index) { var newColor; if (index < min || index > max) { targetColor = '00000000'; @@ -534,15 +534,15 @@ export function palettesModel(models, config) { } legend.colors.push(targetColor); var lookupSource = - parseInt(color.substring(0, 2), 16) + ',' + - parseInt(color.substring(2, 4), 16) + ',' + - parseInt(color.substring(4, 6), 16) + ',' + - parseInt(color.substring(6, 8), 16); + loParseInt(color.substring(0, 2), 16) + ',' + + loParseInt(color.substring(2, 4), 16) + ',' + + loParseInt(color.substring(4, 6), 16) + ',' + + loParseInt(color.substring(6, 8), 16); var lookupTarget = { - r: parseInt(targetColor.substring(0, 2), 16), - g: parseInt(targetColor.substring(2, 4), 16), - b: parseInt(targetColor.substring(4, 6), 16), - a: parseInt(targetColor.substring(6, 8), 16) + r: loParseInt(targetColor.substring(0, 2), 16), + g: loParseInt(targetColor.substring(2, 4), 16), + b: loParseInt(targetColor.substring(4, 6), 16), + a: loParseInt(targetColor.substring(6, 8), 16) }; lookup[lookupSource] = lookupTarget; }); diff --git a/web/js/palettes/palettes.js b/web/js/palettes/palettes.js index 7d7cbdf78d..8e89a1157d 100644 --- a/web/js/palettes/palettes.js +++ b/web/js/palettes/palettes.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import each from 'lodash/each'; -import find from 'lodash/find'; +import loEach from 'lodash/each'; +import loFind from 'lodash/find'; import util from '../util/util'; import wvui from '../ui/ui'; @@ -37,7 +37,7 @@ export const palettes = (function (self) { var bins = colors.length; var binWidth = canvas.width / bins; var drawWidth = Math.ceil(binWidth); - each(colors, function (color, i) { + loEach(colors, function (color, i) { g.fillStyle = util.hexToRGBA(color); g.fillRect(Math.floor(binWidth * i), 0, drawWidth, canvas.height); @@ -69,7 +69,7 @@ export const palettes = (function (self) { self.translate = function (source, target) { var translation = []; - each(source, function (color, index) { + loEach(source, function (color, index) { var sourcePercent = index / source.length; var targetIndex = Math.floor(sourcePercent * target.length); translation.push(target[targetIndex]); @@ -79,7 +79,7 @@ export const palettes = (function (self) { self.lookup = function (sourcePalette, targetPalette) { var lookup = {}; - each(sourcePalette.colors, function (sourceColor, index) { + loEach(sourcePalette.colors, function (sourceColor, index) { var source = parseInt(sourceColor.substring(0, 2), 16) + ',' + parseInt(sourceColor.substring(2, 4), 16) + ',' + @@ -114,12 +114,12 @@ export const palettes = (function (self) { rendered: {}, custom: {} }; - each(state.l, function (qsLayer) { + loEach(state.l, function (qsLayer) { var layerId = qsLayer.id; if (config.layers[layerId] && config.layers[layerId].palette) { promises.push(self.loadRendered(config, layerId)); } - var custom = find(qsLayer.attributes, { + var custom = loFind(qsLayer.attributes, { id: 'palette' }); if (custom) { @@ -147,7 +147,7 @@ export const palettes = (function (self) { return; } var parts = state.palettes.split('~'); - each(parts, function (part) { + loEach(parts, function (part) { var items = part.split(','); var layerId = items[0]; var paletteId = items[1]; @@ -162,7 +162,7 @@ export const palettes = (function (self) { 'support palettes' }); } else { - var layer = find(state.l, { + var layer = loFind(state.l, { id: layerId }); if (layer) { diff --git a/web/js/projection/model.js b/web/js/projection/model.js index 716da6dac3..34097fdab6 100644 --- a/web/js/projection/model.js +++ b/web/js/projection/model.js @@ -1,5 +1,5 @@ -import each from 'lodash/each'; -import ol from 'openlayers'; +import loEach from 'lodash/each'; +import olProj from 'ol/proj'; import proj4 from 'proj4'; import util from '../util/util'; @@ -10,10 +10,10 @@ export function projectionModel(config) { var init = function () { self.selectDefault(); - each(config.projections, function (proj) { + loEach(config.projections, function (proj) { if (proj.crs && proj.proj4) { self.register(proj.crs, proj.proj4); - ol.proj.get(proj.crs) + olProj.get(proj.crs) .setExtent(proj.maxExtent); } }); diff --git a/web/js/projection/ui.js b/web/js/projection/ui.js index c10e086987..120b5e113a 100644 --- a/web/js/projection/ui.js +++ b/web/js/projection/ui.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import each from 'lodash/each'; +import loEach from 'lodash/each'; import wvui from '../ui/ui'; export function projectionUi(models, config) { @@ -55,7 +55,7 @@ export function projectionUi(models, config) { .attr('id', 'wv-proj-menu'); $menuItems = $('
      '); - each(config.ui.projections, function (ui) { + loEach(config.ui.projections, function (ui) { var $item = $( '
    • ' + '' + diff --git a/web/js/util/events.js b/web/js/util/events.js index a70ed8c8de..b5c8de113f 100644 --- a/web/js/util/events.js +++ b/web/js/util/events.js @@ -1,5 +1,5 @@ -import each from 'lodash/each'; -import pull from 'lodash/pull'; +import loEach from 'lodash/each'; +import loPull from 'lodash/pull'; export function events () { var self = {}; @@ -24,7 +24,7 @@ export function events () { self.off = function (event, callback) { var listeners = events[event]; if (listeners) { - pull(listeners, callback); + loPull(listeners, callback); } return self; }; @@ -42,10 +42,10 @@ export function events () { return; } var eventArguments = Array.prototype.slice.call(arguments, 1); - each(events[event], function (listener) { + loEach(events[event], function (listener) { listener.apply(self, eventArguments); }); - each(allListeners, function (listener) { + loEach(allListeners, function (listener) { listener.apply(self, eventArguments); }); return self; diff --git a/web/js/util/load.js b/web/js/util/load.js index 0d8b15a044..39e6d4ef4e 100644 --- a/web/js/util/load.js +++ b/web/js/util/load.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import size from 'lodash/size'; +import loSize from 'lodash/size'; import wvui from '../ui/ui.js'; import brand from '../brand.js'; @@ -18,7 +18,7 @@ export const load = (function () { .fail(promise.reject); return promise; } - if (root[attr] && size(root[attr]) > 0) { + if (root[attr] && loSize(root[attr]) > 0) { promise.resolve(root[attr]); } else { loading += 1; diff --git a/web/js/util/util.js b/web/js/util/util.js index 5690cd9d3d..ab5942189b 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -1,8 +1,8 @@ /* global ntptEventTag */ import $ from 'jquery'; -import each from 'lodash/each'; -import isNull from 'lodash/isNull'; +import loEach from 'lodash/each'; +import loIsNull from 'lodash/isNull'; import wvui from '../ui/ui.js'; import browser from './browser.js'; import events from './events.js'; @@ -110,9 +110,9 @@ export const util = (function () { self.toQueryString = function (kvps, exceptions) { exceptions = exceptions || {}; var parts = []; - each(kvps, function (value, key) { + loEach(kvps, function (value, key) { var part = key + '=' + encodeURIComponent(value); - each(exceptions, function (exception) { + loEach(exceptions, function (exception) { var regexp = new RegExp(exception, 'ig'); var decoded = decodeURIComponent(exception); part = part.replace(regexp, decoded); @@ -481,7 +481,7 @@ export const util = (function () { */ self.fromCompactTimestamp = function (str) { var v = str.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{3})/); - if (isNull(v)) { + if (loIsNull(v)) { throw new Error('Invalid timestamp:' + str); } return new Date(Date.UTC( diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 28206acdf3..8ebb07699f 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -1,6 +1,6 @@ // External Dependencies import $ from 'jquery'; -import each from 'lodash/each'; +import loEach from 'lodash/each'; import {GA as googleAnalytics} from 'worldview-components'; // Utils @@ -120,7 +120,7 @@ window.onload = () => { // Load any additional scripts as needed if (config.scripts) { - each(config.scripts, function(script) { + loEach(config.scripts, function(script) { $.getScript(script); }); } @@ -140,7 +140,7 @@ window.onload = () => { if (config.features.animation) { parsers.push(animationParser); } - each(parsers, function(parser) { + loEach(parsers, function(parser) { parser(state, errors, config); }); requirements = [ @@ -347,7 +347,7 @@ window.onload = () => { var errorReport = function() { var layersRemoved = 0; - each(errors, function(error) { + loEach(errors, function(error) { var cause = (error.cause) ? ': ' + error.cause : ''; util.warn(error.message + cause); if (error.layerRemoved) { From b6bc2eb75353fdfa623c6d57d9885e23bd38b03b Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 15:40:50 -0500 Subject: [PATCH 050/242] adding dependency naming convention to map files --- web/js/map/wv.map.animate.js | 10 ++-- web/js/map/wv.map.datelinebuilder.js | 4 +- web/js/map/wv.map.js | 21 +++---- web/js/map/wv.map.layerbuilder.js | 35 +++++++----- web/js/map/wv.map.model.js | 10 ++-- web/js/map/wv.map.precachetile.js | 11 ++-- web/js/map/wv.map.runningdata.js | 8 +-- web/js/map/wv.map.ui.js | 83 ++++++++++++++++------------ 8 files changed, 102 insertions(+), 80 deletions(-) diff --git a/web/js/map/wv.map.animate.js b/web/js/map/wv.map.animate.js index ec74396951..08d99ded01 100644 --- a/web/js/map/wv.map.animate.js +++ b/web/js/map/wv.map.animate.js @@ -1,5 +1,5 @@ -import ol from 'openlayers'; - +import olExtent from 'ol/extent'; +import OlGeomLineString from 'ol/geom/linestring'; export function mapAnimate(models, config, ui) { var self = {}; @@ -16,10 +16,10 @@ export function mapAnimate(models, config, ui) { var startPoint = view.getCenter(); var startZoom = Math.floor(view.getZoom()); endZoom = endZoom || 5; - if (endPoint.length > 2) endPoint = ol.extent.getCenter(endPoint); + if (endPoint.length > 2) endPoint = olExtent.getCenter(endPoint); var extent = view.calculateExtent(); - var hasEndInView = ol.extent.containsCoordinate(extent, endPoint); - var line = new ol.geom.LineString([startPoint, endPoint]); + var hasEndInView = olExtent.containsCoordinate(extent, endPoint); + var line = new OlGeomLineString([startPoint, endPoint]); var distance = line.getLength(); // In map units, which is usually degrees var duration = (distance * 20) + 1000; // 4.6 seconds to go 360 degrees var animationPromise = function () { diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/wv.map.datelinebuilder.js index ccad52b570..68b2e98dac 100644 --- a/web/js/map/wv.map.datelinebuilder.js +++ b/web/js/map/wv.map.datelinebuilder.js @@ -1,7 +1,7 @@ import React from 'react'; import ReactDOM from 'React-dom'; import WVC from 'worldview-components'; -import ol from 'openlayers'; +import OlOverlay from 'ol/overlay'; import util from '../util/util'; @@ -311,7 +311,7 @@ export function mapDateLineBuilder(models, config) { * @returns {void} */ var drawOverlay = function(coordinate, el) { - var overlay = new ol.Overlay({ + var overlay = new OlOverlay({ element: el, stopEvent: false }); diff --git a/web/js/map/wv.map.js b/web/js/map/wv.map.js index 23a4e9238d..61c2ebc916 100644 --- a/web/js/map/wv.map.js +++ b/web/js/map/wv.map.js @@ -1,8 +1,9 @@ -import map from 'lodash/map'; -import each from 'lodash/each'; -import isUndefined from 'lodash/isUndefined'; -import find from 'lodash/find'; -import ol from 'openlayers'; +import loMap from 'lodash/map'; +import loEach from 'lodash/each'; +import loIsUndefined from 'lodash/isUndefined'; +import loFind from 'lodash/find'; +import OlGeomPolygon from 'ol/geom/polygon'; + /* * Checks to see if an extents string is found. If it exist * then it is changed from a string to an array which is then @@ -26,7 +27,7 @@ export function parse(state, errors) { delete state.map; } if (state.v) { - var extent = map(state.v.split(','), function (str) { + var extent = loMap(state.v.split(','), function (str) { return parseFloat(str); }); var valid = isExtentValid(extent); @@ -53,14 +54,14 @@ export function parse(state, errors) { * true. */ var isExtentValid = function(extent) { - if (isUndefined(extent)) { + if (loIsUndefined(extent)) { return false; } var valid = true; if (extent.toArray) { extent = extent.toArray(); } - each(extent, function (value) { + loEach(extent, function (value) { if (isNaN(value)) { valid = false; return false; @@ -135,7 +136,7 @@ export function setVisibility(layer, visible, opacity) { export function getLayerByName(map, name) { var layers = map.getLayers() .getArray(); - return find(layers, { + return loFind(layers, { 'wvname': name }); }; @@ -201,7 +202,7 @@ export function adjustAntiMeridian(polygon, adjustSign) { points[i] = [points[i][0] - 360, points[i][1]]; } } - return new ol.geom.Polygon([points]); + return new OlGeomPolygon([points]); }; /** diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/wv.map.layerbuilder.js index ba7087ed72..6c245b8b50 100644 --- a/web/js/map/wv.map.layerbuilder.js +++ b/web/js/map/wv.map.layerbuilder.js @@ -1,8 +1,13 @@ import util from '../util/util'; -import ol from 'openlayers'; -import cloneDeep from 'lodash/cloneDeep'; -import merge from 'lodash/merge'; -import each from 'lodash/each'; +import OlTileGridWMTS from 'ol/tilegrid/wmts'; +import OlSourceWMTS from 'ol/source/wmts'; +import OlSourceTileWMS from 'ol/source/tilewms'; +import OlLayerGroup from 'ol/layer/group'; +import OlLayerTile from 'ol/layer/tile'; +import OlTileGridTileGrid from 'ol/tilegrid/tilegrid'; +import loCloneDeep from 'lodash/cloneDeep'; +import loMerge from 'lodash/merge'; +import loEach from 'lodash/each'; import {lookupFactory} from '../ol/lookupimagetile'; export function mapLayerBuilder(models, config, cache, Parent) { @@ -41,8 +46,8 @@ export function mapLayerBuilder(models, config, cache, Parent) { proj: proj.id, def: def }; - def = cloneDeep(def); - merge(def, def.projections[proj.id]); + def = loCloneDeep(def); + loMerge(def, def.projections[proj.id]); if (def.type === 'wmts') { layer = createLayerWMTS(def, options); if (proj.id === 'geographic' && def.wrapadjacentdays === true) { @@ -53,7 +58,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { layerPrior.wv = attributes; layerNext.wv = attributes; - layer = new ol.layer.Group({ + layer = new OlLayerGroup({ layers: [layer, layerNext, layerPrior] }); } @@ -67,7 +72,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { layerPrior.wv = attributes; layerNext.wv = attributes; - layer = new ol.layer.Group({ + layer = new OlLayerGroup({ layers: [layer, layerNext, layerPrior] }); } @@ -138,7 +143,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { } if (typeof def.matrixIds === 'undefined') { matrixIds = []; - each(matrixSet.resolutions, function (resolution, index) { + loEach(matrixSet.resolutions, function (resolution, index) { matrixIds.push(index); }); } else { @@ -170,7 +175,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { crossOrigin: 'anonymous', format: def.format, matrixSet: matrixSet.id, - tileGrid: new ol.tilegrid.WMTS({ + tileGrid: new OlTileGridWMTS({ origin: start, resolutions: matrixSet.resolutions, matrixIds: matrixIds, @@ -183,9 +188,9 @@ export function mapLayerBuilder(models, config, cache, Parent) { var lookup = models.palettes.getLookup(def.id); sourceOptions.tileClass = lookupFactory(lookup); } - var layer = new ol.layer.Tile({ + var layer = new OlLayerTile({ extent: extent, - source: new ol.source.WMTS(sourceOptions) + source: new OlSourceWMTS(sourceOptions) }); return layer; }; @@ -250,7 +255,7 @@ export function mapLayerBuilder(models, config, cache, Parent) { style: 'default', crossOrigin: 'anonymous', params: parameters, - tileGrid: new ol.tilegrid.TileGrid({ + tileGrid: new OlTileGridTileGrid({ origin: start, resolutions: res }) @@ -260,9 +265,9 @@ export function mapLayerBuilder(models, config, cache, Parent) { var lookup = models.palettes.getLookup(def.id); sourceOptions.tileClass = lookupFactory(lookup); } - var layer = new ol.layer.Tile({ + var layer = new OlLayerTile({ extent: extent, - source: new ol.source.TileWMS(sourceOptions) + source: new OlSourceTileWMS(sourceOptions) }); return layer; }; diff --git a/web/js/map/wv.map.model.js b/web/js/map/wv.map.model.js index c9f932430a..a66ad05a99 100644 --- a/web/js/map/wv.map.model.js +++ b/web/js/map/wv.map.model.js @@ -1,6 +1,6 @@ -import ol from 'openlayers'; import util from '../util/util'; -import clone from 'lodash/clone'; +import loClone from 'lodash/clone'; +import olExtent from 'ol/extent'; export function mapModel(models, config) { var self = {}; @@ -44,10 +44,10 @@ export function mapModel(models, config) { if (proj.id === 'geographic') { proj.wrapExtent = maxExtent = [-250, -90, 250, 90]; } - if (ol.extent.intersects(extent, maxExtent)) { + if (olExtent.intersects(extent, maxExtent)) { self.extent = state.v; } else { - self.extent = clone(proj.maxExtent); + self.extent = loClone(proj.maxExtent); errors.push({ message: 'Extent outside of range' }); @@ -72,7 +72,7 @@ export function mapModel(models, config) { * @returns {void} */ self.save = function (state) { - state.v = clone(self.extent); + state.v = loClone(self.extent); if (self.rotation !== 0.0 && self.rotation !== 0 && models.proj.selected.id !== 'geographic') { state.r = (self.rotation * (180.0 / Math.PI)) .toPrecision(6); diff --git a/web/js/map/wv.map.precachetile.js b/web/js/map/wv.map.precachetile.js index d0edc066db..df09207879 100644 --- a/web/js/map/wv.map.precachetile.js +++ b/web/js/map/wv.map.precachetile.js @@ -1,5 +1,6 @@ -import _each from 'lodash/each'; -import ol from 'openlayers'; +import loEach from 'lodash/each'; +import olExtent from 'ol/extent'; +import OlRendererCanvasTileLayer from 'ol/renderer/canvas/tilelayer'; export function mapPrecacheTile(models, config, cache, parent) { /* @@ -56,7 +57,7 @@ export function mapPrecacheTile(models, config, cache, parent) { var layers; var arra = []; layers = models.layers.get(); - _each(layers, function (layer) { + loEach(layers, function (layer) { if (layer.visible && new Date(layer.startDate > date)) { arra.push(layer); } @@ -82,7 +83,7 @@ export function mapPrecacheTile(models, config, cache, parent) { return extent; }; var getExtent = function (extent1, extent2) { - return ol.extent.getIntersection(extent1, extent2); + return olExtent.getIntersection(extent1, extent2); }; var promiseLayerGroup = function (layer, extent, viewState, pixelRatio, map) { return new Promise(function (resolve, reject) { @@ -114,7 +115,7 @@ export function mapPrecacheTile(models, config, cache, parent) { } projection = viewState.projection; i = 0; - renderer = new ol.renderer.canvas.TileLayer(layer); + renderer = new OlRendererCanvasTileLayer(layer); tileSource = layer.getSource(); tileGrid = tileSource.getTileGridForProjection(projection); currentZ = tileGrid.getZForResolution(viewState.resolution, renderer.zDirection); diff --git a/web/js/map/wv.map.runningdata.js b/web/js/map/wv.map.runningdata.js index dc8e478c4a..9839bbd39c 100644 --- a/web/js/map/wv.map.runningdata.js +++ b/web/js/map/wv.map.runningdata.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -import difference from 'lodash/difference'; -import each from 'lodash/each'; +import loDifference from 'lodash/difference'; +import loEach from 'lodash/each'; export function mapRunningData(models) { var self; @@ -186,7 +186,7 @@ export function mapRunningData(models) { * */ self.LayersToRemove = function (oldArray, newArray) { - return difference(oldArray, newArray); + return loDifference(oldArray, newArray); }; /* @@ -220,7 +220,7 @@ export function mapRunningData(models) { legends = models.palettes.getLegends(layerId); hex = util.rgbaToHex(data[0], data[1], data[2], data[3]); - each(legends, function (legend) { + loEach(legends, function (legend) { if (legend) { self.createRunnerFromLegend(legend, hex); } diff --git a/web/js/map/wv.map.ui.js b/web/js/map/wv.map.ui.js index a36ee54b0e..e39e58ee91 100644 --- a/web/js/map/wv.map.ui.js +++ b/web/js/map/wv.map.ui.js @@ -1,11 +1,26 @@ import $ from 'jquery'; -import ol from 'openlayers'; -import findIndex from 'lodash/findIndex'; -import each from 'lodash/each'; -import forOwn from 'lodash/forOwn'; -import throttle from 'lodash/throttle'; -import find from 'lodash/find'; +import loFindIndex from 'lodash/findIndex'; +import loEach from 'lodash/each'; +import loForOwn from 'lodash/forOwn'; +import loThrottle from 'lodash/throttle'; +import loFind from 'lodash/find'; import util from '../util/util'; +import OlMap from 'ol/map'; +import OlView from 'ol/view'; +import OlKinetic from 'ol/kinetic'; +import OlGraticule from 'ol/graticule'; +import OlStyleStroke from 'ol/style/stroke'; +import OlControlScaleLine from 'ol/control/scaleline'; +import olEventsCondition from 'ol/events/condition'; +import OlInteractionPinchRotate from 'ol/interaction/pinchrotate'; +import OlInteractionDragRotate from 'ol/interaction/dragrotate'; +import OlInteractionDoubleClickZoom from 'ol/interaction/doubleclickzoom'; +import OlInteractionPinchZoom from 'ol/interaction/pinchzoom'; +import OlInteractionDragPan from 'ol/interaction/dragpan'; +import OlInteractionMouseWheelZoom from 'ol/interaction/mousewheelzoom'; +import OlInteractionDragZoom from 'ol/interaction/dragzoom'; +import olExtent from 'ol/extent'; +import olProj from 'ol/proj'; export function mapui(models, config, components) { var id = 'wv-map'; @@ -45,7 +60,7 @@ export function mapui(models, config, components) { } // NOTE: iOS sometimes bombs if this is _.each instead. In that case, // it is possible that config.projections somehow becomes array-like. - forOwn(config.projections, function (proj) { + loForOwn(config.projections, function (proj) { var map = createMap(proj); self.proj[proj.id] = map; }); @@ -187,7 +202,7 @@ export function mapui(models, config, components) { var activeLayers = map.getLayers() .getArray() .slice(0); - each(activeLayers, function (mapLayer) { + loEach(activeLayers, function (mapLayer) { if (mapLayer.wv) { map.removeLayer(mapLayer); } @@ -213,7 +228,7 @@ export function mapui(models, config, components) { var defs = models.layers.get({ reverse: true }); - each(defs, function (def) { + loEach(defs, function (def) { if (isGraticule(def)) { addGraticule(); } else { @@ -240,7 +255,7 @@ export function mapui(models, config, components) { } }); var defs = models.layers.get(); - each(defs, function (def) { + loEach(defs, function (def) { if (isGraticule(def)) { var renderable = models.layers.isRenderable(def.id); if (renderable) { @@ -280,7 +295,7 @@ export function mapui(models, config, components) { */ var addLayer = function (def) { - var mapIndex = findIndex(models.layers.get({ + var mapIndex = loFindIndex(models.layers.get({ reverse: true }), { id: def.id @@ -338,7 +353,7 @@ export function mapui(models, config, components) { */ var updateDate = function () { var defs = models.layers.get(); - each(defs, function (def) { + loEach(defs, function (def) { if (def.period !== 'daily') { return; } @@ -395,7 +410,7 @@ export function mapui(models, config, components) { var findLayer = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = find(layers, { + var layer = loFind(layers, { wv: { id: def.id } @@ -417,7 +432,7 @@ export function mapui(models, config, components) { var findLayerIndex = function (def) { var layers = self.selected.getLayers() .getArray(); - var layer = findIndex(layers, { + var layer = loFindIndex(layers, { wv: { id: def.id } @@ -458,9 +473,9 @@ export function mapui(models, config, components) { var addGraticule = function () { if (self.selected.graticule) { return; } - self.selected.graticule = new ol.Graticule({ + self.selected.graticule = new OlGraticule({ map: self.selected, - strokeStyle: new ol.style.Stroke({ + strokeStyle: new OlStyleStroke({ color: 'rgba(255, 255, 255, 0.5)', width: 2, lineDash: [0.5, 4] @@ -484,7 +499,7 @@ export function mapui(models, config, components) { self.selected.graticule = null; }; - var triggerExtent = throttle(function () { + var triggerExtent = loThrottle(function () { self.events.trigger('extent'); }, 500, { trailing: true @@ -531,26 +546,26 @@ export function mapui(models, config, components) { .append($map); // Create two specific controls - scaleMetric = new ol.control.ScaleLine({ + scaleMetric = new OlControlScaleLine({ className: 'wv-map-scale-metric', units: 'metric' }); - scaleImperial = new ol.control.ScaleLine({ + scaleImperial = new OlControlScaleLine({ className: 'wv-map-scale-imperial', units: 'imperial' }); - rotateInteraction = new ol.interaction.DragRotate({ - condition: ol.events.condition.altKeyOnly, + rotateInteraction = new OlInteractionDragRotate({ + condition: olEventsCondition.altKeyOnly, duration: animationDuration }); - mobileRotation = new ol.interaction.PinchRotate({ + mobileRotation = new OlInteractionPinchRotate({ duration: animationDuration }); - map = new ol.Map({ - view: new ol.View({ + map = new OlMap({ + view: new OlView({ maxResolution: proj.resolutions[0], - projection: ol.proj.get(proj.crs), + projection: olProj.get(proj.crs), center: proj.startCenter, rotation: proj.id === 'geographic' ? 0.0 : models.map.rotation, zoom: proj.startZoom, @@ -566,19 +581,19 @@ export function mapui(models, config, components) { scaleImperial ], interactions: [ - new ol.interaction.DoubleClickZoom({ + new OlInteractionDoubleClickZoom({ duration: animationDuration }), - new ol.interaction.DragPan({ - kinetic: new ol.Kinetic(-0.005, 0.05, 100) + new OlInteractionDragPan({ + kinetic: new OlKinetic(-0.005, 0.05, 100) }), - new ol.interaction.PinchZoom({ + new OlInteractionPinchZoom({ duration: animationDuration }), - new ol.interaction.MouseWheelZoom({ + new OlInteractionMouseWheelZoom({ duration: animationDuration }), - new ol.interaction.DragZoom({ + new OlInteractionDragZoom({ duration: animationDuration }) ], @@ -607,7 +622,7 @@ export function mapui(models, config, components) { map.getView() .on('change:resolution', updateExtent); map.getView() - .on('change:rotation', throttle(onRotate, 300)); + .on('change:rotation', loThrottle(onRotate, 300)); map.on('pointerdrag', function () { self.mapIsbeingDragged = true; self.events.trigger('drag'); @@ -842,7 +857,7 @@ export function mapui(models, config, components) { } pixels = map.getEventPixel(e.originalEvent); coords = map.getCoordinateFromPixel(pixels); - if (!ol.extent.containsCoordinate(extent, coords)) { + if (!olExtent.containsCoordinate(extent, coords)) { outside = true; } @@ -903,7 +918,7 @@ export function mapui(models, config, components) { hoverThrottle.cancel(); dataRunner.clearAll(); }) - .mousemove(hoverThrottle = throttle(onMouseMove, 300)); + .mousemove(hoverThrottle = loThrottle(onMouseMove, 300)); }; /* From 745478df851425ddfb64d5eac02f0fbabcbcd6ef Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 15:42:03 -0500 Subject: [PATCH 051/242] fixed ol method name --- web/js/map/wv.map.ui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/map/wv.map.ui.js b/web/js/map/wv.map.ui.js index e39e58ee91..9806d2de9e 100644 --- a/web/js/map/wv.map.ui.js +++ b/web/js/map/wv.map.ui.js @@ -784,7 +784,7 @@ export function mapui(models, config, components) { if (outsideExtent) { return crs; } - target = ol.proj.transform(source, proj.crs, 'EPSG:4326'); + target = olProj.transform(source, proj.crs, 'EPSG:4326'); return util.formatCoordinate(target, format) + ' ' + crs; }; From fd95846f50bd5018ea19eb87cc3a603dd1fa4f17 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 15:59:57 -0500 Subject: [PATCH 052/242] changed map file names --- web/js/map/{wv.map.animate.js => animate.js} | 0 web/js/map/{wv.map.datelinebuilder.js => datelinebuilder.js} | 0 web/js/map/{wv.map.layerbuilder.js => layerbuilder.js} | 0 web/js/map/{wv.map.js => map.js} | 0 web/js/map/{wv.map.model.js => model.js} | 0 web/js/map/{wv.map.precachetile.js => precachetile.js} | 0 web/js/map/{wv.map.rotate.js => rotation.js} | 0 web/js/map/{wv.map.runningdata.js => runningdata.js} | 0 web/js/map/{wv.map.ui.js => ui.js} | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename web/js/map/{wv.map.animate.js => animate.js} (100%) rename web/js/map/{wv.map.datelinebuilder.js => datelinebuilder.js} (100%) rename web/js/map/{wv.map.layerbuilder.js => layerbuilder.js} (100%) rename web/js/map/{wv.map.js => map.js} (100%) rename web/js/map/{wv.map.model.js => model.js} (100%) rename web/js/map/{wv.map.precachetile.js => precachetile.js} (100%) rename web/js/map/{wv.map.rotate.js => rotation.js} (100%) rename web/js/map/{wv.map.runningdata.js => runningdata.js} (100%) rename web/js/map/{wv.map.ui.js => ui.js} (100%) diff --git a/web/js/map/wv.map.animate.js b/web/js/map/animate.js similarity index 100% rename from web/js/map/wv.map.animate.js rename to web/js/map/animate.js diff --git a/web/js/map/wv.map.datelinebuilder.js b/web/js/map/datelinebuilder.js similarity index 100% rename from web/js/map/wv.map.datelinebuilder.js rename to web/js/map/datelinebuilder.js diff --git a/web/js/map/wv.map.layerbuilder.js b/web/js/map/layerbuilder.js similarity index 100% rename from web/js/map/wv.map.layerbuilder.js rename to web/js/map/layerbuilder.js diff --git a/web/js/map/wv.map.js b/web/js/map/map.js similarity index 100% rename from web/js/map/wv.map.js rename to web/js/map/map.js diff --git a/web/js/map/wv.map.model.js b/web/js/map/model.js similarity index 100% rename from web/js/map/wv.map.model.js rename to web/js/map/model.js diff --git a/web/js/map/wv.map.precachetile.js b/web/js/map/precachetile.js similarity index 100% rename from web/js/map/wv.map.precachetile.js rename to web/js/map/precachetile.js diff --git a/web/js/map/wv.map.rotate.js b/web/js/map/rotation.js similarity index 100% rename from web/js/map/wv.map.rotate.js rename to web/js/map/rotation.js diff --git a/web/js/map/wv.map.runningdata.js b/web/js/map/runningdata.js similarity index 100% rename from web/js/map/wv.map.runningdata.js rename to web/js/map/runningdata.js diff --git a/web/js/map/wv.map.ui.js b/web/js/map/ui.js similarity index 100% rename from web/js/map/wv.map.ui.js rename to web/js/map/ui.js From 766efd5e2119c742f6a2683dd0ac345e29793d8d Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 16:08:28 -0500 Subject: [PATCH 053/242] renamed files and dependency names --- web/js/date/{wv.date.timeline.config.js => config.js} | 0 web/js/date/{wv.date.js => date.js} | 0 web/js/date/{wv.date.label.js => label.js} | 0 web/js/date/{wv.date.model.js => model.js} | 0 web/js/date/{wv.date.timeline.js => timeline.js} | 0 web/js/date/{wv.date.timeline.data.js => timelinedata.js} | 0 web/js/date/{wv.date.timeline.input.js => timelineinput.js} | 4 ++-- web/js/date/{wv.date.timeline.pan.js => timelinepan.js} | 0 web/js/date/{wv.date.timeline.pick.js => timelinepick.js} | 0 web/js/date/{wv.date.timeline.ticks.js => timelineticks.js} | 0 web/js/date/{wv.date.timeline.zoom.js => timelinezoom.js} | 2 +- web/js/date/{wv.date.wheels.js => wheels.js} | 0 12 files changed, 3 insertions(+), 3 deletions(-) rename web/js/date/{wv.date.timeline.config.js => config.js} (100%) rename web/js/date/{wv.date.js => date.js} (100%) rename web/js/date/{wv.date.label.js => label.js} (100%) rename web/js/date/{wv.date.model.js => model.js} (100%) rename web/js/date/{wv.date.timeline.js => timeline.js} (100%) rename web/js/date/{wv.date.timeline.data.js => timelinedata.js} (100%) rename web/js/date/{wv.date.timeline.input.js => timelineinput.js} (99%) rename web/js/date/{wv.date.timeline.pan.js => timelinepan.js} (100%) rename web/js/date/{wv.date.timeline.pick.js => timelinepick.js} (100%) rename web/js/date/{wv.date.timeline.ticks.js => timelineticks.js} (100%) rename web/js/date/{wv.date.timeline.zoom.js => timelinezoom.js} (98%) rename web/js/date/{wv.date.wheels.js => wheels.js} (100%) diff --git a/web/js/date/wv.date.timeline.config.js b/web/js/date/config.js similarity index 100% rename from web/js/date/wv.date.timeline.config.js rename to web/js/date/config.js diff --git a/web/js/date/wv.date.js b/web/js/date/date.js similarity index 100% rename from web/js/date/wv.date.js rename to web/js/date/date.js diff --git a/web/js/date/wv.date.label.js b/web/js/date/label.js similarity index 100% rename from web/js/date/wv.date.label.js rename to web/js/date/label.js diff --git a/web/js/date/wv.date.model.js b/web/js/date/model.js similarity index 100% rename from web/js/date/wv.date.model.js rename to web/js/date/model.js diff --git a/web/js/date/wv.date.timeline.js b/web/js/date/timeline.js similarity index 100% rename from web/js/date/wv.date.timeline.js rename to web/js/date/timeline.js diff --git a/web/js/date/wv.date.timeline.data.js b/web/js/date/timelinedata.js similarity index 100% rename from web/js/date/wv.date.timeline.data.js rename to web/js/date/timelinedata.js diff --git a/web/js/date/wv.date.timeline.input.js b/web/js/date/timelineinput.js similarity index 99% rename from web/js/date/wv.date.timeline.input.js rename to web/js/date/timelineinput.js index aaeb9a4e10..1fbaf7e52d 100644 --- a/web/js/date/wv.date.timeline.input.js +++ b/web/js/date/timelineinput.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import util from '../util/util'; -import parseInt from 'lodash/parseInt'; +import loParseInt from 'lodash/parseInt'; /** * Implements the date input @@ -110,7 +110,7 @@ export function timelineInput(models, config, ui) { } var interval = $(this) .attr('data-interval') || dataInterval; - var amount = parseInt($(this) + var amount = loParseInt($(this) .attr('data-value')) || amt; var date = rollingDate || models.date.selected; var min = models.date.minDate(); diff --git a/web/js/date/wv.date.timeline.pan.js b/web/js/date/timelinepan.js similarity index 100% rename from web/js/date/wv.date.timeline.pan.js rename to web/js/date/timelinepan.js diff --git a/web/js/date/wv.date.timeline.pick.js b/web/js/date/timelinepick.js similarity index 100% rename from web/js/date/wv.date.timeline.pick.js rename to web/js/date/timelinepick.js diff --git a/web/js/date/wv.date.timeline.ticks.js b/web/js/date/timelineticks.js similarity index 100% rename from web/js/date/wv.date.timeline.ticks.js rename to web/js/date/timelineticks.js diff --git a/web/js/date/wv.date.timeline.zoom.js b/web/js/date/timelinezoom.js similarity index 98% rename from web/js/date/wv.date.timeline.zoom.js rename to web/js/date/timelinezoom.js index db5f5da5e2..6e2bb71e48 100644 --- a/web/js/date/wv.date.timeline.zoom.js +++ b/web/js/date/timelinezoom.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import uiMouse from '../ui/wv.ui.mouse'; +import uiMouse from '../ui/mouse'; /** * Perform timeline zooming functions diff --git a/web/js/date/wv.date.wheels.js b/web/js/date/wheels.js similarity index 100% rename from web/js/date/wv.date.wheels.js rename to web/js/date/wheels.js From a5a944ab944aff2e86befc4e0f90c6ae9a5ef8b9 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 16:18:16 -0500 Subject: [PATCH 054/242] added underscores to file names --- web/js/date/{timelinedata.js => timeline_data.js} | 0 web/js/date/{timelineinput.js => timeline_input.js} | 0 web/js/date/{timelinepan.js => timeline_pan.js} | 0 web/js/date/{timelinepick.js => timeline_pick.js} | 0 web/js/date/{timelineticks.js => timeline_ticks.js} | 0 web/js/date/{timelinezoom.js => timeline_zoom.js} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename web/js/date/{timelinedata.js => timeline_data.js} (100%) rename web/js/date/{timelineinput.js => timeline_input.js} (100%) rename web/js/date/{timelinepan.js => timeline_pan.js} (100%) rename web/js/date/{timelinepick.js => timeline_pick.js} (100%) rename web/js/date/{timelineticks.js => timeline_ticks.js} (100%) rename web/js/date/{timelinezoom.js => timeline_zoom.js} (100%) diff --git a/web/js/date/timelinedata.js b/web/js/date/timeline_data.js similarity index 100% rename from web/js/date/timelinedata.js rename to web/js/date/timeline_data.js diff --git a/web/js/date/timelineinput.js b/web/js/date/timeline_input.js similarity index 100% rename from web/js/date/timelineinput.js rename to web/js/date/timeline_input.js diff --git a/web/js/date/timelinepan.js b/web/js/date/timeline_pan.js similarity index 100% rename from web/js/date/timelinepan.js rename to web/js/date/timeline_pan.js diff --git a/web/js/date/timelinepick.js b/web/js/date/timeline_pick.js similarity index 100% rename from web/js/date/timelinepick.js rename to web/js/date/timeline_pick.js diff --git a/web/js/date/timelineticks.js b/web/js/date/timeline_ticks.js similarity index 100% rename from web/js/date/timelineticks.js rename to web/js/date/timeline_ticks.js diff --git a/web/js/date/timelinezoom.js b/web/js/date/timeline_zoom.js similarity index 100% rename from web/js/date/timelinezoom.js rename to web/js/date/timeline_zoom.js From 22dad571bc7c5245b2e0d737ad791b76652ffad6 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 16:22:34 -0500 Subject: [PATCH 055/242] lodash to dash --- web/js/date/{timeline_data.js => timeline-data.js} | 0 web/js/date/{timeline_input.js => timeline-input.js} | 0 web/js/date/{timeline_pan.js => timeline-pan.js} | 0 web/js/date/{timeline_pick.js => timeline-pick.js} | 0 web/js/date/{timeline_ticks.js => timeline-ticks.js} | 0 web/js/date/{timeline_zoom.js => timeline-zoom.js} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename web/js/date/{timeline_data.js => timeline-data.js} (100%) rename web/js/date/{timeline_input.js => timeline-input.js} (100%) rename web/js/date/{timeline_pan.js => timeline-pan.js} (100%) rename web/js/date/{timeline_pick.js => timeline-pick.js} (100%) rename web/js/date/{timeline_ticks.js => timeline-ticks.js} (100%) rename web/js/date/{timeline_zoom.js => timeline-zoom.js} (100%) diff --git a/web/js/date/timeline_data.js b/web/js/date/timeline-data.js similarity index 100% rename from web/js/date/timeline_data.js rename to web/js/date/timeline-data.js diff --git a/web/js/date/timeline_input.js b/web/js/date/timeline-input.js similarity index 100% rename from web/js/date/timeline_input.js rename to web/js/date/timeline-input.js diff --git a/web/js/date/timeline_pan.js b/web/js/date/timeline-pan.js similarity index 100% rename from web/js/date/timeline_pan.js rename to web/js/date/timeline-pan.js diff --git a/web/js/date/timeline_pick.js b/web/js/date/timeline-pick.js similarity index 100% rename from web/js/date/timeline_pick.js rename to web/js/date/timeline-pick.js diff --git a/web/js/date/timeline_ticks.js b/web/js/date/timeline-ticks.js similarity index 100% rename from web/js/date/timeline_ticks.js rename to web/js/date/timeline-ticks.js diff --git a/web/js/date/timeline_zoom.js b/web/js/date/timeline-zoom.js similarity index 100% rename from web/js/date/timeline_zoom.js rename to web/js/date/timeline-zoom.js From 49934042d212b479169788f021a4f63d792bd938 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Mon, 6 Nov 2017 23:38:28 -0500 Subject: [PATCH 056/242] added immutable flag documentation --- doc/config.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/config.md b/doc/config.md index 06e869d1bb..0c565f8af9 100644 --- a/doc/config.md +++ b/doc/config.md @@ -96,6 +96,7 @@ To display a color palette legend, a *palette* object should exist with the foll - **id**: Identifier of the palette. This should match the name of the colormap file without the extension. - **recommended**: Array of custom palette identifiers that are recommended for use with this layer (see ``config/palettes-custom.json``). Example, *["orange_1", "red_1"]* +- **immutable**(optional): When this flag is set to true, the options to adjust thresholds and colormaps are removed. ### Full Example From daaec80cea52f7b8646296c5e53538ec37fef782 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Wed, 8 Nov 2017 10:50:47 -0500 Subject: [PATCH 057/242] adjusted lodash naming in ui & util folders --- web/js/ui/indicator.js | 24 ++++++++++++------------ web/js/util/events.js | 10 +++++----- web/js/util/load.js | 4 ++-- web/js/util/util.js | 10 +++++----- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/web/js/ui/indicator.js b/web/js/ui/indicator.js index 78f6d12ccb..ad50b70e11 100644 --- a/web/js/ui/indicator.js +++ b/web/js/ui/indicator.js @@ -1,10 +1,10 @@ import $ from 'jquery'; -import uniqueId from 'lodash/uniqueId'; -import isString from 'lodash/isString'; -import each from 'lodash/each'; -import remove from 'lodash/remove'; -import isEmpty from 'lodash/isEmpty'; -import last from 'lodash/last'; +import loUniqueId from 'lodash/uniqueId'; +import loIsString from 'lodash/isString'; +import loEach from 'lodash/each'; +import loRemove from 'lodash/remove'; +import loIsEmpty from 'lodash/isEmpty'; +import loLast from 'lodash/last'; export const loadingIndicator = (function () { var self = {}; @@ -30,7 +30,7 @@ export const loadingIndicator = (function () { self.show = function (message, icon) { self._show(message, icon); - var id = uniqueId(); + var id = loUniqueId(); self.active.push({ id: id, message: message, @@ -40,18 +40,18 @@ export const loadingIndicator = (function () { }; self.hide = function (hides) { - if (isString(hides)) { + if (loIsString(hides)) { hides = [hides]; } - each(hides, function (id) { - remove(self.active, { + loEach(hides, function (id) { + loRemove(self.active, { id: id }); }); - if (isEmpty(self.active)) { + if (loIsEmpty(self.active)) { self._hide(); } else { - var def = last(self.active); + var def = loLast(self.active); self._show(def.message, def.icon); } }; diff --git a/web/js/util/events.js b/web/js/util/events.js index a70ed8c8de..b5c8de113f 100644 --- a/web/js/util/events.js +++ b/web/js/util/events.js @@ -1,5 +1,5 @@ -import each from 'lodash/each'; -import pull from 'lodash/pull'; +import loEach from 'lodash/each'; +import loPull from 'lodash/pull'; export function events () { var self = {}; @@ -24,7 +24,7 @@ export function events () { self.off = function (event, callback) { var listeners = events[event]; if (listeners) { - pull(listeners, callback); + loPull(listeners, callback); } return self; }; @@ -42,10 +42,10 @@ export function events () { return; } var eventArguments = Array.prototype.slice.call(arguments, 1); - each(events[event], function (listener) { + loEach(events[event], function (listener) { listener.apply(self, eventArguments); }); - each(allListeners, function (listener) { + loEach(allListeners, function (listener) { listener.apply(self, eventArguments); }); return self; diff --git a/web/js/util/load.js b/web/js/util/load.js index c346f4075e..3e7124284f 100644 --- a/web/js/util/load.js +++ b/web/js/util/load.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import size from 'lodash/size'; +import loSize from 'lodash/size'; import wvui from '../ui/ui'; import brand from '../brand'; @@ -18,7 +18,7 @@ export const load = (function () { .fail(promise.reject); return promise; } - if (root[attr] && size(root[attr]) > 0) { + if (root[attr] && loSize(root[attr]) > 0) { promise.resolve(root[attr]); } else { loading += 1; diff --git a/web/js/util/util.js b/web/js/util/util.js index fdb2068aa1..df719914a2 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -6,8 +6,8 @@ */ import $ from 'jquery'; -import each from 'lodash/each'; -import isNull from 'lodash/isNull'; +import loEach from 'lodash/each'; +import loIsNull from 'lodash/isNull'; import wvui from '../ui/ui'; import browser from './browser'; import events from './events'; @@ -115,9 +115,9 @@ export const util = (function () { self.toQueryString = function (kvps, exceptions) { exceptions = exceptions || {}; var parts = []; - each(kvps, function (value, key) { + loEach(kvps, function (value, key) { var part = key + '=' + encodeURIComponent(value); - each(exceptions, function (exception) { + loEach(exceptions, function (exception) { var regexp = new RegExp(exception, 'ig'); var decoded = decodeURIComponent(exception); part = part.replace(regexp, decoded); @@ -486,7 +486,7 @@ export const util = (function () { */ self.fromCompactTimestamp = function (str) { var v = str.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{3})/); - if (isNull(v)) { + if (loIsNull(v)) { throw new Error('Invalid timestamp:' + str); } return new Date(Date.UTC( From defb88db91056431f278818d047d2c4851b54fe1 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 8 Nov 2017 11:43:22 -0500 Subject: [PATCH 058/242] Updated Configuration documentation to reflect new layer properties - Added examples of description, layergroup, daynight, and track --- doc/config.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/config.md b/doc/config.md index 06e869d1bb..bbeb457c85 100644 --- a/doc/config.md +++ b/doc/config.md @@ -47,6 +47,7 @@ The minimum set of required properties are as follows: - **title**: Title of the layer displayed to the end user. This is the first line displayed in the active layers list. - **subtitle**: Subtitle of the layer displayed to the end user. This is the second line displayed in the active layers list and usually includes platform, sensor, and/or attribution information. - **group**: The group this layer should be found in, either *baselayers* or *overlays* +- **layergroup**: A reference to the layer group the layer belongs to (usually the folder name it's contained in; i.e. airs, modis, reference_orbits). The following properties are required if this information is not available via the GIBS WMTS GetCapabilities document: @@ -91,6 +92,9 @@ The ``config/wv.json/layerOrder.json`` file must be updated to include the new l - **product**: Identifier of the product to use when searching the Common Metadata Repository (CMR) to download data. See the [Data Download documentation](data_download.md) for more information. - **style**: For WMTS layers only, this sets the WMTS `style` parameter accordingly; defaults to `default` if not set. - **matrixIds**: For WMTS layers only, this is an array of labels used for the `TileMatrix` parameter at each zoom level; defaults to `[0, 1, 2, ...]` if not set. +- **daynight**: Classify a layer as day or night. This information will be displayed within the title of the layer in the Measurement / Sources add modal view if provided. +- **track**: Classify a layer's track direction. This will usually be either ascending or descending and will be displayed within the title of the layer in the Measurement / Sources add modal view if provided. +- **description**: Point to a markdown file within the metadata folder to provide a layer description. To display a color palette legend, a *palette* object should exist with the following properties: @@ -106,6 +110,7 @@ To display a color palette legend, a *palette* object should exist with the foll "id": "AIRS_RelativeHumidity_400hPa_Day", "title": "Relative Humidity (400 hPa, Day)", "subtitle": "Aqua / AIRS", + "description": "reference/orbits/AIRS_RelativeHumidity_400hPa_Day", "tags": "rh", "group": "overlays", "product": "AIRX2RET_DAY", @@ -122,7 +127,11 @@ To display a color palette legend, a *palette* object should exist with the foll "matrixSet": "EPSG4326_2km" } }, - + "layergroup": [ + "airs" + ], + "daynight": "day", + "track": "descending", "palette": { "id": "AIRS_RH400_A" } From 743f32a79540ff775871556d2246a0cec3ed046c Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 8 Nov 2017 11:45:22 -0500 Subject: [PATCH 059/242] Fixed path in descriptions example --- doc/config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/config.md b/doc/config.md index bbeb457c85..c7f5cf8d1a 100644 --- a/doc/config.md +++ b/doc/config.md @@ -110,7 +110,7 @@ To display a color palette legend, a *palette* object should exist with the foll "id": "AIRS_RelativeHumidity_400hPa_Day", "title": "Relative Humidity (400 hPa, Day)", "subtitle": "Aqua / AIRS", - "description": "reference/orbits/AIRS_RelativeHumidity_400hPa_Day", + "description": "airs/AIRS_RelativeHumidity_400hPa_Day", "tags": "rh", "group": "overlays", "product": "AIRX2RET_DAY", From ac08e60b826dee5221dad40a15d597deab73dced Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 8 Nov 2017 17:04:32 -0500 Subject: [PATCH 060/242] Updated import naming to be consistent across project --- web/js/index.js | 2 +- web/js/stub.js | 40 ++++++++++++++++++------------------- web/js/wv.main.js | 50 +++++++++++++++++++++++------------------------ 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/web/js/index.js b/web/js/index.js index d3a429e43a..eb09fed44f 100644 --- a/web/js/index.js +++ b/web/js/index.js @@ -1,7 +1,7 @@ export { stub, stub2 } from './stub'; export { polyfill } from './polyfill'; export { util } from './util/util'; -export { parse as mapParser } from './map/wv.map'; +export { parse as mapParser } from './map/map'; export { imagePanel } from './image/panel'; export { imageRubberband } from './image/rubberband'; export { linkModel } from './link/model'; diff --git a/web/js/stub.js b/web/js/stub.js index 0c6808475f..9996d275f6 100644 --- a/web/js/stub.js +++ b/web/js/stub.js @@ -1,26 +1,26 @@ /* This file is just a stub to test the browserify build task */ import $ from 'jquery'; import { DateSelector } from 'worldview-components'; -import { parse as mapParser } from './map/wv.map'; -import builder from './map/wv.map.datelinebuilder'; -import layerBuilder from './map/wv.map.layerbuilder'; -import animate from './map/wv.map.animate'; -import mapModel from './map/wv.map.model'; -import preCacheTile from './map/wv.map.precachetile'; -import runningData from './map/wv.map.runningdata'; -import mapUi from './map/wv.map.ui'; -import dateParse from './date/wv.date'; -import dateLabel from './date/wv.date.label'; -import dateModel from './date/wv.date.model'; -import dateWheels from './date/wv.date.wheels'; -import timelineConfig from './date/wv.date.timeline.config'; -import timelinedata from './date/wv.date.timeline.data'; -import timelineinput from './date/wv.date.timeline.input'; -import timeline from './date/wv.date.timeline'; -import timelinePan from './date/wv.date.timeline.pan'; -import timelinePick from './date/wv.date.timeline.pick'; -import timelineTicks from './date/wv.date.timeline.ticks'; -import timelineZoom from './date/wv.date.timeline.zoom'; +import { parse as mapParser } from './map/map'; +import builder from './map/datelinebuilder'; +import layerBuilder from './map/layerbuilder'; +import animate from './map/animate'; +import mapModel from './map/model'; +import preCacheTile from './map/precachetile'; +import runningData from './map/runningdata'; +import mapUi from './map/ui'; +import dateParse from './date/date'; +import dateLabel from './date/label'; +import dateModel from './date/model'; +import dateWheels from './date/wheels'; +import timelineConfig from './date/config'; +import timelinedata from './date/timeline-data'; +import timelineinput from './date/timeline-input'; +import timeline from './date/timeline'; +import timelinePan from './date/timeline-pan'; +import timelinePick from './date/timeline-pick'; +import timelineTicks from './date/timeline-ticks'; +import timelineZoom from './date/timeline-zoom'; export default function () { console.log($, DateSelector, mapParser, builder, layerBuilder, animate, mapModel, preCacheTile, runningData, mapUi, dateParse, dateLabel, dateModel); diff --git a/web/js/wv.main.js b/web/js/wv.main.js index 3755f404dc..aa245933ae 100644 --- a/web/js/wv.main.js +++ b/web/js/wv.main.js @@ -7,18 +7,18 @@ import {GA as googleAnalytics} from 'worldview-components'; import util from './util/util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... // Date import {dateParser} from './date/date'; // export default function parse!!! -import DateModel from './date/date.model'; -import DateLabel from './date/date.label'; -import DateWheels from './date/date.wheels'; +import DateModel from './date/model'; +import DateLabel from './date/label'; +import DateWheels from './date/wheels'; // Timeline -import Timeline from './date/date.timeline'; -import TimelineData from './date/date.timeline.data'; -import TimelineConfig from './date/date.timeline.config'; -import TimelineZoom from './date/date.timeline.zoom'; -import TimelineTicks from './date/date.timeline.ticks'; -import TimelinePick from './date/date.timeline.pick'; -import TimelinePan from './date/date.timeline.pan'; -import TimelineInput from './date/date.timeline.input'; +import Timeline from './date/timeline'; +import TimelineData from './date/timeline-data'; +import TimelineConfig from './date/config'; +import TimelineZoom from './date/timeline-zoom'; +import TimelineTicks from './date/timeline-ticks'; +import TimelinePick from './date/timeline-pick'; +import TimelinePan from './date/timeline-pan'; +import TimelineInput from './date/timeline-input'; // Layers import {parse as layerParser, validate as layerValidate} from './layers/layers'; // export parse as layerParser. etc... import layersModel from './layers/model'; @@ -27,20 +27,20 @@ import layersSidebar from './layers/sidebar'; import layersActive from './layers/active'; // Map import {parse as mapParser} from './map/map'; -import MapModel from './map/map.model'; -import MapUI from './map/map.ui'; -import MapRotate from './map/map.rotate'; -import MapRunningData from './map/map.runningdata'; -import MapLayerBuilder from './map/map.layerbuilder'; -import MapDatelineBuilder from './map/map.datelinebuilder'; -import MapPrecacheTile from './map/map.precachetile'; -import MapAnimate from './map/map.animate'; +import MapModel from './map/model'; +import MapUI from './map/ui'; +import MapRotate from './map/rotate'; +import MapRunningData from './map/runningdata'; +import MapLayerBuilder from './map/layerbuilder'; +import MapDatelineBuilder from './map/datelinebuilder'; +import MapPrecacheTile from './map/precachetile'; +import MapAnimate from './map/animate'; // Animation import {animationParser} from './animation/anim'; -import AnimationModel from './animation/anim.model'; -import AnimationUI from './animation/anim.ui'; +import AnimationModel from './animation/model'; +import AnimationUI from './animation/ui'; import AnimationWidget from './animation/animation-widget'; -import AnimationRangeselect from './animation/anim.rangeselect'; +import AnimationRangeselect from './animation/rangeselect'; import AnimationGIF from './animation/anim.gif'; // Palettes import {palettesParser, paletteRequirements} from './palettes/palettes'; @@ -50,9 +50,9 @@ import dataParser from './data/data'; import DataModel from './data/data.model'; import DataUI from './data/data.ui'; // NaturalEvents -import NaturalEventsModel from './naturalEvents/naturalEvents.model'; -import NaturalEventsUI from './naturalEvents/naturalEvents.ui'; -import NaturalEventsRequest from './naturalEvents/naturalEvents.request'; +import NaturalEventsModel from './naturalEvents/model'; +import NaturalEventsUI from './naturalEvents/ui'; +import NaturalEventsRequest from './naturalEvents/request'; // Image import imageRubberband from './image/rubberband'; import imagePanel from './image/panel'; From 17acc0ae1da568949dc78ef97fb23d501945bc59 Mon Sep 17 00:00:00 2001 From: ZachTRice Date: Wed, 8 Nov 2017 17:37:05 -0500 Subject: [PATCH 061/242] Pointed build process to main.js, added grunt build steps --- Gruntfile.js | 9 +++-- tasks/build-js | 6 ++-- web/index.html | 96 ++------------------------------------------------ 3 files changed, 12 insertions(+), 99 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index dd61d22316..b1aab0311f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -613,7 +613,11 @@ module.exports = function(grunt) { } }, - uglify: { + 'build-js': { + command: 'npm run build-js' + }, + + 'build-ol': { // Minifiy the concatenated Worldview JavaScript file. options: { compress: { @@ -683,7 +687,8 @@ module.exports = function(grunt) { 'remove:source', 'exec:empty', 'copy:release', - 'uglify', + 'build-js', + 'build-ol', 'cssmin', 'replace:links', 'lineremover', diff --git a/tasks/build-js b/tasks/build-js index 2505ad18e1..ef76db3a8b 100644 --- a/tasks/build-js +++ b/tasks/build-js @@ -6,9 +6,9 @@ const fs = require('fs'); const browserify = require('browserify'); const watchify = require('watchify'); -const entry = 'index.js'; -const output = './build/js.js'; -const outputMin = './build/js.mins.js'; +const entry = 'main.js'; +const output = './js/wv.js'; +const outputMin = './js/wv.min.js'; // override, should set this from an argument: --dev or --prod // and default to dev diff --git a/web/index.html b/web/index.html index ccd0ddf51b..fc6641db16 100644 --- a/web/index.html +++ b/web/index.html @@ -180,100 +180,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + From bf39eb1a2242786c82ff8da84783583cab048e79 Mon Sep 17 00:00:00 2001 From: Benjamin King Date: Thu, 16 Nov 2017 12:53:11 -0500 Subject: [PATCH 062/242] Went through module-loader code and debugged Specifically: * Shimmed d3 * Shimmed Jquery and it's plugins * Removed `const` that were exported and replaced them with default * executions * Added build folder to place store transpiled code * Removed uglify * Removed jQuery plugin tags * Adjusted `export` && `import` naming to make them correspond/work * A number of bug fixes with help from the linter --- .eslintrc | 5 +- .gitignore | 1 + Gruntfile.js | 27 - package-lock.json | 5146 ++++++++++++------------------ package.json | 81 +- tasks/build-js | 14 +- web/index.html | 73 +- web/js/brand.js | 69 +- web/js/date/config.js | 1 + web/js/date/timeline-data.js | 1 + web/js/date/timeline-pick.js | 1 + web/js/date/timeline-ticks.js | 3 +- web/js/date/timeline-zoom.js | 1 + web/js/date/timeline.js | 1 + web/js/date/wheels.js | 3 +- web/js/{wv.debug.js => debug.js} | 16 +- web/js/layers/modal.js | 20 +- web/js/layers/model.js | 2 +- web/js/{wv.main.js => main.js} | 232 +- web/js/map/datelinebuilder.js | 6 +- web/js/map/rotation.js | 2 +- web/js/map/runningdata.js | 2 +- web/js/map/ui.js | 17 +- web/js/palettes/palettes.js | 4 +- web/js/projection/model.js | 3 +- web/js/{wv.tour.js => tour.js} | 0 web/js/ui/indicator.js | 2 +- web/js/ui/mouse.js | 3 +- web/js/ui/ui.js | 4 +- web/js/util/browser.js | 4 +- web/js/util/load.js | 2 +- web/js/util/util.js | 8 +- web/js/wv.brand.js | 71 - 33 files changed, 2369 insertions(+), 3456 deletions(-) rename web/js/{wv.debug.js => debug.js} (95%) rename web/js/{wv.main.js => main.js} (52%) rename web/js/{wv.tour.js => tour.js} (100%) delete mode 100644 web/js/wv.brand.js diff --git a/.eslintrc b/.eslintrc index f15a3ef23e..2c87370844 100644 --- a/.eslintrc +++ b/.eslintrc @@ -52,10 +52,7 @@ "standard/computed-property-even-spacing": "warn", "wrap-iife": "warn", "new-cap": "warn" - }, - "globals": { - "d3": true, - }, + } } ] } diff --git a/.gitignore b/.gitignore index 561a246c66..42fd288dfb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /build +/web/build/ /dist /node_modules /web/ext/node_modules/* diff --git a/Gruntfile.js b/Gruntfile.js index b1aab0311f..ed805d63c7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -611,31 +611,6 @@ module.exports = function(grunt) { files: nodeModuleFiles, tasks: ['update'] } - }, - - 'build-js': { - command: 'npm run build-js' - }, - - 'build-ol': { - // Minifiy the concatenated Worldview JavaScript file. - options: { - compress: { - // drop_console: true, - // drop_debugger: true, - unused: true - } - }, - wv_js: { - files: { - 'build/worldview/web/js/wv.js': ['build/worldview/web/js/wv.js'] - } - }, - ol_js: { - files: { - 'build/worldview/web/js/ol.js': ['build/worldview/web/js/ol.js'] - } - } } }); @@ -687,8 +662,6 @@ module.exports = function(grunt) { 'remove:source', 'exec:empty', 'copy:release', - 'build-js', - 'build-ol', 'cssmin', 'replace:links', 'lineremover', diff --git a/package-lock.json b/package-lock.json index 8da3fe25d8..f2b0a41081 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,19 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@mapbox/point-geometry": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", - "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" - }, - "@mapbox/vector-tile": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.0.tgz", - "integrity": "sha1-xJX5clJb78zvzYOPRf+jfvO3D+g=", - "requires": { - "@mapbox/point-geometry": "0.1.0" - } - }, "JSONStream": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", @@ -30,21 +17,43 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, "requires": { "mime-types": "2.1.17", "negotiator": "0.6.1" } }, + "accessory": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/accessory/-/accessory-1.1.0.tgz", + "integrity": "sha1-eDPpg5oy3tdtJgIfNqQXB6Ug9ZM=", + "dev": true, + "requires": { + "ap": "0.2.0", + "balanced-match": "0.2.1", + "dot-parts": "1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", + "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", + "dev": true + } + } + }, "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true }, "acorn-jsx": { "version": "3.0.1", @@ -78,11 +87,6 @@ "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, "agent-base": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", @@ -91,15 +95,26 @@ "requires": { "extend": "3.0.1", "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -112,6 +127,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -121,7 +137,8 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true }, "ansi-colorizer": { "version": "1.0.1", @@ -144,12 +161,17 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "any-promise": { "version": "1.3.0", @@ -167,10 +189,11 @@ "normalize-path": "2.1.1" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "ap": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=", + "dev": true }, "archiver": { "version": "0.4.10", @@ -188,6 +211,12 @@ "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", "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 + }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -199,44 +228,12 @@ "isarray": "0.0.1", "string_decoder": "0.10.31" } - } - } - }, - "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=", - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true } } }, @@ -268,6 +265,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { "arr-flatten": "1.1.0" } @@ -275,7 +273,8 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, "array-differ": { "version": "1.0.0", @@ -331,12 +330,8 @@ "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, "arrify": { "version": "1.0.1", @@ -352,7 +347,8 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "asn1.js": { "version": "4.9.2", @@ -375,9 +371,10 @@ } }, "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=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assertion-error": { "version": "1.0.0", @@ -397,9 +394,9 @@ } }, "ast-types": { - "version": "0.9.14", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.14.tgz", - "integrity": "sha512-Ebvx7/0lLboCdyEmAw/4GqwBeKIijPveXNiVGhCGCNxc7z26T5he7DC6ARxu8ByKuzUZZcLog+VP8GMyZrBzJw==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", "dev": true }, "astw": { @@ -409,23 +406,13 @@ "dev": true, "requires": { "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } } }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "requires": { - "lodash": "4.15.0" - } + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true }, "async-each": { "version": "1.0.1", @@ -436,7 +423,14 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "autobind-decorator": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/autobind-decorator/-/autobind-decorator-1.4.3.tgz", + "integrity": "sha1-TJb/p3sQYi7eJPEQ9du/VmkUF9E=" }, "autoprefixer": { "version": "7.1.1", @@ -444,23 +438,27 @@ "integrity": "sha1-l7yFTH0Ll5+NZIneVHoNF/swf20=", "dev": true, "requires": { - "browserslist": "2.6.1", - "caniuse-lite": "1.0.30000756", + "browserslist": "2.9.0", + "caniuse-lite": "1.0.30000764", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-value-parser": "3.3.0" } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true }, "babel-code-frame": { "version": "6.26.0", @@ -492,15 +490,6 @@ "supports-color": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -536,21 +525,6 @@ "source-map": "0.5.7" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -575,14 +549,6 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } } }, "babel-generator": { @@ -1130,17 +1096,9 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.6.1", + "browserslist": "2.9.0", "invariant": "2.2.2", "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } } }, "babel-register": { @@ -1195,12 +1153,6 @@ "lodash": "4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -1226,21 +1178,6 @@ "lodash": "4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -1280,19 +1217,16 @@ } }, "babylon": { - "version": "7.0.0-beta.30", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.30.tgz", - "integrity": "sha512-hfN8RsRw5Fwm+cAdN7+0FrnJRFcGfFNYuR/yzs0P+CXSb/aK2WPBVPWqHAQ3CgrhoId/6i4oqApjCEb7j/+0ZQ==" - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bane": { "version": "1.0.0", @@ -1300,11 +1234,6 @@ "integrity": "sha1-lJ/okStCs481Lh+tIE2CXa+h/0A=", "dev": true }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", @@ -1312,14 +1241,16 @@ "dev": true }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -1331,23 +1262,6 @@ "integrity": "sha1-LnPp0h8sLm9aVFQEVjbwq5PkYTA=", "dev": true }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" - } - }, "binary-extensions": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", @@ -1363,12 +1277,6 @@ "readable-stream": "2.0.6" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", @@ -1382,14 +1290,15 @@ "string_decoder": "0.10.31", "util-deprecate": "1.0.2" } + }, + "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 } } }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -1474,17 +1383,20 @@ } }, "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1494,6 +1406,7 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", @@ -1523,6 +1436,7 @@ "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, "requires": { "resolve": "1.1.7" }, @@ -1530,7 +1444,8 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true } } }, @@ -1556,7 +1471,7 @@ "concat-stream": "1.5.2", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", + "crypto-browserify": "3.12.0", "defined": "1.0.0", "deps-sort": "2.0.0", "domain-browser": "1.1.7", @@ -1593,38 +1508,6 @@ "util": "0.10.3", "vm-browserify": "0.0.4", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "browserify-aes": { @@ -1673,6 +1556,27 @@ "randombytes": "2.0.5" } }, + "browserify-shim": { + "version": "3.8.14", + "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-3.8.14.tgz", + "integrity": "sha1-vxBXAmky0yU8de991xTzuHft7Gs=", + "dev": true, + "requires": { + "exposify": "0.5.0", + "mothership": "0.2.0", + "rename-function-calls": "0.1.1", + "resolve": "0.6.3", + "through": "2.3.8" + }, + "dependencies": { + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + } + } + }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", @@ -1698,12 +1602,12 @@ } }, "browserslist": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.6.1.tgz", - "integrity": "sha512-HBZwVT7ciQB9KlXM3AUMQbnQXtHWPsEUKQTiS0BEFfY5bOrMl94ORaqQD1GyuTGh69ZmYeue9QBqiw219e09eQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.9.0.tgz", + "integrity": "sha512-vJEBcDTANoDhSHL46NeOEW5hvQw7It9uCqzeFPQhpawXfnOwnpvW5C97vn1eGJ7iCkSg8wWU0nYObE7d/N95Iw==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000756", + "caniuse-lite": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -1759,15 +1663,11 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "builtin-status-codes": { "version": "3.0.0", @@ -1802,12 +1702,6 @@ "when": "https://github.com/cujojs/when/tarball/1.8.1" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, "buster-static": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.6.5.tgz", @@ -1938,12 +1832,6 @@ "minimatch": "0.2.14" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, "inherits": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", @@ -2009,7 +1897,7 @@ "dev": true, "requires": { "jsdom": "0.10.6", - "uglify-js": "1.2.6" + "uglify-js": "1.2.5" }, "dependencies": { "jsdom": { @@ -2023,7 +1911,7 @@ "cssstyle": "0.2.37", "htmlparser2": "3.9.2", "nwmatcher": "1.3.9", - "request": "2.81.0", + "request": "2.83.0", "xmlhttprequest": "1.8.0" } }, @@ -2033,12 +1921,6 @@ "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", "dev": true, "optional": true - }, - "uglify-js": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz", - "integrity": "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0=", - "dev": true } } }, @@ -2131,11 +2013,6 @@ "callsites": "0.2.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, "callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", @@ -2143,9 +2020,10 @@ "dev": true }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true }, "camelcase-keys": { "version": "2.1.0", @@ -2155,26 +2033,18 @@ "requires": { "camelcase": "2.1.1", "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } } }, "caniuse-db": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000756.tgz", - "integrity": "sha1-6TimuZFjDzDSJj3TRYvrZdNiJos=", + "version": "1.0.30000764", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000764.tgz", + "integrity": "sha1-1zqxGuYvap4vaYZ9bZwjrj8uXY0=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000756.tgz", - "integrity": "sha1-PacBwVIbn6uHAExt58l/pH2+qtI=", + "version": "1.0.30000764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000764.tgz", + "integrity": "sha1-l+p0cvnT5pHu3jTyGYPPwhmseEI=", "dev": true }, "capture-stack-trace": { @@ -2184,22 +2054,16 @@ "dev": true }, "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "requires": { - "underscore-contrib": "0.3.0" - } + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, "requires": { "align-text": "0.1.4", "lazy-cache": "1.0.4" @@ -2215,22 +2079,15 @@ "deep-eql": "0.1.3" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": "0.3.9" - } - }, "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" } }, "chokidar": { @@ -2241,7 +2098,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2260,7 +2117,7 @@ "kew": "0.5.0", "mkdirp": "0.5.1", "npmconf": "2.1.2", - "rimraf": "2.6.1" + "rimraf": "2.5.4" } }, "cipher-base": { @@ -2279,6 +2136,11 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, "clean-css": { "version": "3.4.28", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", @@ -2297,6 +2159,15 @@ "requires": { "graceful-readlink": "1.0.1" } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -2346,6 +2217,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, "requires": { "center-align": "0.1.3", "right-align": "0.1.3", @@ -2355,7 +2227,8 @@ "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true } } }, @@ -2369,56 +2242,11 @@ "is-supported-regexp-flag": "1.0.0" } }, - "closure-util": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.22.0.tgz", - "integrity": "sha512-DX5IhSawO9838/fKNaH3Cx8jeeJGWORodHhTFkxCOVsr71OtXCfo/rtXsV24eq3iq31jdmgUQvlNIXEMHTlkWg==", - "requires": { - "acorn": "5.0.3", - "async": "2.5.0", - "fs-extra": "3.0.1", - "gaze": "1.1.2", - "get-down": "1.2.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "handlebars": "4.0.10", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "npmlog": "4.1.2", - "rimraf": "2.6.1", - "send": "0.15.3", - "socket.io": "2.0.1", - "temp": "0.8.3" - }, - "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - } - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "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=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "coffee-script": { "version": "1.3.3", @@ -2427,9 +2255,9 @@ "dev": true }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -2531,15 +2359,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -2597,11 +2416,12 @@ } }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "0.0.5" } }, "command-exists": { @@ -2613,28 +2433,13 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.5.2", @@ -2647,12 +2452,6 @@ "typedarray": "0.0.6" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", @@ -2666,6 +2465,12 @@ "string_decoder": "0.10.31", "util-deprecate": "1.0.2" } + }, + "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 } } }, @@ -2689,7 +2494,7 @@ "bytes": "0.1.0", "cookie": "0.0.5", "cookie-signature": "0.0.1", - "debug": "2.6.7", + "debug": "2.6.9", "formidable": "1.0.11", "fresh": "0.1.0", "pause": "0.0.1", @@ -2697,47 +2502,11 @@ "send": "0.1.0" }, "dependencies": { - "cookie": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", - "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", - "dev": true - }, - "fresh": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", - "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", - "dev": true - }, - "mime": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", - "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", - "dev": true - }, "qs": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz", "integrity": "sha1-n2v12axsdjhOldNtFbSJgOXkrdA=", "dev": true - }, - "range-parser": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", - "dev": true - }, - "send": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", - "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", - "dev": true, - "requires": { - "debug": "2.6.7", - "fresh": "0.1.0", - "mime": "1.2.6", - "range-parser": "0.0.4" - } } } }, @@ -2750,11 +2519,6 @@ "date-now": "0.1.4" } }, - "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=" - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2786,9 +2550,10 @@ "dev": true }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", + "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", + "dev": true }, "cookie-signature": { "version": "0.0.1", @@ -2810,7 +2575,8 @@ "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=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "2.2.2", @@ -2934,12 +2700,6 @@ "requires": { "isexe": "2.0.0" } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true } } }, @@ -2971,27 +2731,35 @@ "requires": { "isexe": "2.0.0" } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true } } }, "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "optional": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "optional": true, + "requires": { + "hoek": "4.2.0" + } + } } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -3003,7 +2771,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.5", + "randomfill": "1.0.3" } }, "css-color-list": { @@ -3042,6 +2811,30 @@ "readable-stream": "1.1.14" } }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "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 + }, "through2": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", @@ -3076,6 +2869,32 @@ "requires": { "inherits": "2.0.3", "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "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 + } } }, "cssom": { @@ -3106,7 +2925,7 @@ "cli-table": "0.3.1", "colors": "1.1.2", "commander": "2.11.0", - "cucumber-expressions": "5.0.2", + "cucumber-expressions": "5.0.3", "cucumber-tag-expressions": "1.0.1", "duration": "0.2.0", "escape-string-regexp": "1.0.5", @@ -3137,9 +2956,9 @@ } }, "cucumber-expressions": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.2.tgz", - "integrity": "sha1-9OA8Jpi9Q+kgEaBV2cTOV3GLkbA=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.3.tgz", + "integrity": "sha1-dJSGCv1RMJupEIj7XRr5qYl7fH4=", "dev": true, "requires": { "becke-ch--regex--s0-0-v1--base--pl--lib": "1.2.0" @@ -3159,17 +2978,6 @@ "open": "0.0.5" }, "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" - } - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -3208,19 +3016,268 @@ "es5-ext": "0.10.35" } }, + "d3": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", + "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", + "requires": { + "d3-array": "1.2.1", + "d3-axis": "1.0.8", + "d3-brush": "1.0.4", + "d3-chord": "1.0.4", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-dsv": "1.0.7", + "d3-ease": "1.0.3", + "d3-force": "1.1.0", + "d3-format": "1.2.0", + "d3-geo": "1.8.1", + "d3-hierarchy": "1.1.5", + "d3-interpolate": "1.1.5", + "d3-path": "1.0.5", + "d3-polygon": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-queue": "3.0.7", + "d3-random": "1.1.0", + "d3-request": "1.0.6", + "d3-scale": "1.0.6", + "d3-selection": "1.1.0", + "d3-shape": "1.2.0", + "d3-time": "1.0.7", + "d3-time-format": "2.0.5", + "d3-timer": "1.0.7", + "d3-transition": "1.1.0", + "d3-voronoi": "1.1.2", + "d3-zoom": "1.6.0" + } + }, + "d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" + }, + "d3-axis": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", + "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" + }, + "d3-brush": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", + "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", + "requires": { + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-transition": "1.1.0" + } + }, + "d3-chord": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", + "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", + "requires": { + "d3-array": "1.2.1", + "d3-path": "1.0.5" + } + }, + "d3-collection": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", + "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" + }, + "d3-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", + "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + }, + "d3-dispatch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", + "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" + }, + "d3-drag": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", + "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", + "requires": { + "d3-dispatch": "1.0.3", + "d3-selection": "1.1.0" + } + }, + "d3-dsv": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", + "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", + "requires": { + "commander": "2.11.0", + "iconv-lite": "0.4.19", + "rw": "1.3.3" + } + }, + "d3-ease": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", + "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" + }, + "d3-force": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", + "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", + "requires": { + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-timer": "1.0.7" + } + }, + "d3-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", + "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" + }, + "d3-geo": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", + "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", + "requires": { + "d3-array": "1.2.1" + } + }, + "d3-hierarchy": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", + "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" + }, + "d3-interpolate": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", + "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", + "requires": { + "d3-color": "1.0.3" + } + }, + "d3-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", + "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" + }, + "d3-polygon": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", + "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" + }, + "d3-quadtree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", + "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" + }, + "d3-queue": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", + "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" + }, + "d3-random": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", + "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" + }, + "d3-request": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", + "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", + "requires": { + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-dsv": "1.0.7", + "xmlhttprequest": "1.8.0" + } + }, + "d3-scale": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", + "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", + "requires": { + "d3-array": "1.2.1", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-format": "1.2.0", + "d3-interpolate": "1.1.5", + "d3-time": "1.0.7", + "d3-time-format": "2.0.5" + } + }, + "d3-selection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", + "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" + }, + "d3-shape": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", + "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", + "requires": { + "d3-path": "1.0.5" + } + }, + "d3-time": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", + "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" + }, + "d3-time-format": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", + "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", + "requires": { + "d3-time": "1.0.7" + } + }, + "d3-timer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", + "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" + }, + "d3-transition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", + "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", + "requires": { + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-ease": "1.0.3", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-timer": "1.0.7" + } + }, + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" + }, + "d3-zoom": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", + "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", + "requires": { + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.5", + "d3-selection": "1.1.0", + "d3-transition": "1.1.0" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "data-uri-to-buffer": { @@ -3242,9 +3299,10 @@ "dev": true }, "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -3252,21 +3310,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.11", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.5.0", - "readable-stream": "1.1.14", - "touch": "0.0.3" - } + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "deep-eql": { "version": "0.1.3", @@ -3291,6 +3336,14 @@ "requires": { "foreach": "2.0.5", "object-keys": "1.0.11" + }, + "dependencies": { + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + } } }, "defined": { @@ -3305,9 +3358,17 @@ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "ast-types": "0.9.14", - "escodegen": "1.9.0", + "ast-types": "0.10.1", + "escodegen": "1.1.0", "esprima": "3.1.3" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } } }, "del": { @@ -3322,7 +3383,7 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.5.4" }, "dependencies": { "globby": { @@ -3342,24 +3403,21 @@ } }, "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "dev": true }, "delegate": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz", "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true }, "deps-sort": { "version": "2.0.0", @@ -3391,7 +3449,8 @@ "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true }, "detect-indent": { "version": "4.0.0", @@ -3410,14 +3469,6 @@ "requires": { "acorn": "4.0.13", "defined": "1.0.0" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } } }, "diff": { @@ -3445,14 +3496,6 @@ "requires": { "esutils": "2.0.2", "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } } }, "doiuse": { @@ -3462,7 +3505,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "css-rule-stream": "1.1.0", "duplexer2": "0.0.2", "jsonfilter": "1.1.2", @@ -3487,7 +3530,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -3527,6 +3570,12 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "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 + }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -3547,15 +3596,33 @@ } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" } }, + "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 + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -3644,6 +3711,12 @@ "domelementtype": "1.3.0" } }, + "dot-parts": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dot-parts/-/dot-parts-1.0.1.tgz", + "integrity": "sha1-iEvXvPwwgv+tL+XbU+SU2PPgdD8=", + "dev": true + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -3657,38 +3730,6 @@ "dev": true, "requires": { "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "duration": { @@ -3705,6 +3746,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -3731,19 +3773,14 @@ "requires": { "pseudomap": "1.0.2" } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true } } }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true }, "ejs": { "version": "0.4.3", @@ -3775,7 +3812,8 @@ "encodeurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true }, "encoding": { "version": "0.1.12", @@ -3785,70 +3823,6 @@ "iconv-lite": "0.4.19" } }, - "engine.io": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.3.tgz", - "integrity": "sha1-euz3G/ijEPn6IUYZmcT8wDX4qHc=", - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "uws": "0.14.5", - "ws": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-client": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.3.tgz", - "integrity": "sha1-1wXkiYXf6LVKmMn3cFK4sIJYvgU=", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" - } - }, "entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", @@ -3953,39 +3927,55 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.1.0.tgz", + "integrity": "sha1-xmOSP24gqtSNDA+knzHG1PSTYM8=", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" + "esprima": "1.0.4", + "estraverse": "1.5.1", + "esutils": "1.0.0", + "source-map": "0.1.43" }, "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } } } }, "eslint": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", - "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", + "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", "dev": true, "requires": { "ajv": "5.3.0", @@ -3996,7 +3986,7 @@ "debug": "3.1.0", "doctrine": "2.0.0", "eslint-scope": "3.7.1", - "espree": "3.5.1", + "espree": "3.5.2", "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", @@ -4009,7 +3999,7 @@ "inquirer": "3.3.0", "is-resolvable": "1.0.0", "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", + "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", "minimatch": "3.0.4", @@ -4027,33 +4017,12 @@ "text-table": "0.2.0" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -4063,17 +4032,6 @@ "sprintf-js": "1.0.3" } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", @@ -4110,10 +4068,10 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, "js-yaml": { @@ -4132,36 +4090,6 @@ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4187,17 +4115,6 @@ "requires": { "debug": "2.6.9", "resolve": "1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "eslint-module-utils": { @@ -4208,17 +4125,6 @@ "requires": { "debug": "2.6.9", "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "eslint-plugin-import": { @@ -4237,17 +4143,6 @@ "lodash.cond": "4.5.2", "minimatch": "3.0.4", "read-pkg-up": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "eslint-plugin-node": { @@ -4290,12 +4185,20 @@ "requires": { "esrecurse": "4.2.0", "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } } }, "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", "dev": true, "requires": { "acorn": "5.2.1", @@ -4310,10 +4213,10 @@ } } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", "dev": true }, "esquery": { @@ -4323,6 +4226,14 @@ "dev": true, "requires": { "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } } }, "esrecurse": { @@ -4333,19 +4244,22 @@ "requires": { "estraverse": "4.2.0", "object-assign": "4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", "dev": true }, - "estree-walker": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", - "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=" - }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -4355,7 +4269,8 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true }, "ev-emitter": { "version": "1.1.1", @@ -4436,6 +4351,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { "is-posix-bracket": "0.1.1" } @@ -4444,17 +4360,76 @@ "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, "requires": { "fill-range": "2.2.3" } }, + "exposify": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/exposify/-/exposify-0.5.0.tgz", + "integrity": "sha1-+S0AlMJls/VT4fpFagOhiD0QWcw=", + "dev": true, + "requires": { + "globo": "1.1.0", + "map-obj": "1.0.1", + "replace-requires": "1.0.4", + "through2": "0.4.2", + "transformify": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "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, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "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 + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "2.1.2" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + } + } + }, "express": { "version": "4.15.2", "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", "dev": true, "requires": { - "accepts": "1.3.3", + "accepts": "1.3.4", "array-flatten": "1.1.1", "content-disposition": "0.5.2", "content-type": "1.0.4", @@ -4484,6 +4459,12 @@ "vary": "1.1.2" }, "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -4499,18 +4480,42 @@ "ms": "0.7.2" } }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "ms": { + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "ms": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", "dev": true }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, "send": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", @@ -4537,7 +4542,8 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true }, "external-editor": { "version": "2.0.5", @@ -4548,23 +4554,13 @@ "iconv-lite": "0.4.19", "jschardet": "1.6.0", "tmp": "0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - } } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -4598,12 +4594,6 @@ "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "mkdirp": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", @@ -4626,13 +4616,20 @@ "string_decoder": "0.10.31", "util-deprecate": "1.0.2" } + }, + "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 } } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "1.0.0", @@ -4735,12 +4732,14 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true }, "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, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", @@ -4762,17 +4761,6 @@ "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "find": { @@ -4785,9 +4773,9 @@ } }, "find-parent-dir": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.1.0.tgz", - "integrity": "sha1-EBuOyk+ye5QmMYei+txWuVyqh9Q=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", "dev": true }, "find-up": { @@ -4856,6 +4844,14 @@ "del": "2.2.2", "graceful-fs": "4.1.11", "write": "0.2.1" + }, + "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 + } } }, "flatten": { @@ -4872,12 +4868,14 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, "requires": { "for-in": "1.0.2" } @@ -4888,24 +4886,29 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", + "integrity": "sha1-2zRaU3jYau6x7V1VO4aawZLS9e0=", + "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "async": "0.2.10", + "combined-stream": "0.0.7", + "mime": "1.2.11" + }, + "dependencies": { + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + } } }, "formatio": { @@ -4930,9 +4933,10 @@ "dev": true }, "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", + "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", + "dev": true }, "from": { "version": "0.1.7", @@ -4941,13 +4945,22 @@ "dev": true }, "fs-extra": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", - "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, "requires": { "graceful-fs": "4.1.11", "jsonfile": "3.0.1", "universalify": "0.1.1" + }, + "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 + } } }, "fs-watch-tree": { @@ -4980,30 +4993,29 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, "optional": true, "requires": { "nan": "2.7.0", - "node-pre-gyp": "0.6.36" + "node-pre-gyp": "0.6.39" }, "dependencies": { "abbrev": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "bundled": true, "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5013,21 +5025,18 @@ }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5037,49 +5046,42 @@ }, "asn1": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5088,8 +5090,7 @@ }, "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=", + "bundled": true, "dev": true, "requires": { "inherits": "2.0.3" @@ -5097,8 +5098,7 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -5106,8 +5106,7 @@ }, "brace-expansion": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "bundled": true, "dev": true, "requires": { "balanced-match": "0.4.2", @@ -5116,34 +5115,29 @@ }, "buffer-shims": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "bundled": true, "dev": true }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -5151,36 +5145,30 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "cryptiles": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1" } }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5189,8 +5177,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5198,8 +5185,7 @@ }, "debug": { "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5208,28 +5194,30 @@ }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5238,28 +5226,24 @@ }, "extend": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "bundled": true, "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5270,14 +5254,12 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "fstream": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -5288,8 +5270,7 @@ }, "fstream-ignore": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5300,8 +5281,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5317,8 +5297,7 @@ }, "getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5327,8 +5306,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5336,8 +5314,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5350,21 +5327,18 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5374,17 +5348,14 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -5394,14 +5365,12 @@ }, "hoek": { "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5412,8 +5381,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -5422,21 +5390,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -5444,28 +5409,24 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "bundled": true, "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5474,22 +5435,19 @@ }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5498,22 +5456,19 @@ }, "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=", + "bundled": true, "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "bundled": true, "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5525,8 +5480,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5534,14 +5488,12 @@ }, "mime-db": { "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "mime-db": "1.27.0" @@ -5549,8 +5501,7 @@ }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -5558,14 +5509,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -5573,8 +5522,7 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, @@ -5586,12 +5534,13 @@ "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=", + "version": "0.6.39", + "bundled": true, "dev": true, "optional": true, "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.0", @@ -5605,8 +5554,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5616,8 +5564,7 @@ }, "npmlog": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5629,28 +5576,24 @@ }, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -5658,22 +5601,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5683,41 +5623,35 @@ }, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5729,8 +5663,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -5738,8 +5671,7 @@ }, "readable-stream": { "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "bundled": true, "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -5753,8 +5685,7 @@ }, "request": { "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5784,8 +5715,7 @@ }, "rimraf": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -5793,45 +5723,38 @@ }, "safe-buffer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "bundled": true, "dev": true }, "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "bundled": true, "dev": true, - "optional": true, "requires": { "hoek": "2.16.3" } }, "sshpk": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5848,8 +5771,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5857,8 +5779,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -5868,8 +5789,7 @@ }, "string_decoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "bundled": true, "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -5877,15 +5797,13 @@ }, "stringstream": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -5893,15 +5811,13 @@ }, "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=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "bundled": true, "dev": true, "requires": { "block-stream": "0.0.9", @@ -5911,8 +5827,7 @@ }, "tar-pack": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5928,8 +5843,7 @@ }, "tough-cookie": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5938,8 +5852,7 @@ }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5948,35 +5861,30 @@ }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "uuid": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5985,8 +5893,7 @@ }, "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==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5995,8 +5902,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true } } @@ -6010,7 +5916,15 @@ "graceful-fs": "4.1.11", "inherits": "2.0.3", "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "rimraf": "2.5.4" + }, + "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 + } } }, "ftp": { @@ -6021,6 +5935,32 @@ "requires": { "readable-stream": "1.1.14", "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "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 + } } }, "function-bind": { @@ -6041,35 +5981,11 @@ "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, "gaze": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, "requires": { "globule": "1.2.0" } @@ -6101,23 +6017,6 @@ "is-property": "1.0.2" } }, - "get-down": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-down/-/get-down-1.2.0.tgz", - "integrity": "sha512-SbpdXn+fNmGN6pp/vBALveh3oCbWYTR3wb5qifauPSFhAfAVQ7TMOnAkVzQm4YZD2KABzJB3sA2kmMLaOylA2A==", - "requires": { - "decompress-zip": "0.3.0", - "graceful-fs": "4.1.11", - "junk": "2.1.0", - "mout": "1.0.0", - "q": "1.5.0", - "request": "2.81.0", - "request-progress": "3.0.0", - "retry": "0.10.1", - "tar": "3.1.5", - "tmp": "0.0.31" - } - }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", @@ -6142,43 +6041,11 @@ "dev": true, "requires": { "data-uri-to-buffer": "1.2.0", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1", "file-uri-to-path": "1.0.0", "ftp": "0.3.10", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "getobject": { @@ -6191,15 +6058,9 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "gherkin": { @@ -6216,6 +6077,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -6229,6 +6091,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" @@ -6238,6 +6101,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "requires": { "is-glob": "2.0.1" } @@ -6267,10 +6131,22 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, + "globo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/globo/-/globo-1.1.0.tgz", + "integrity": "sha1-DSYJiVXepCLrIAGxBImLChAcqvM=", + "dev": true, + "requires": { + "accessory": "1.1.0", + "is-defined": "1.0.0", + "ternary": "1.0.0" + } + }, "globule": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, "requires": { "glob": "7.1.2", "lodash": "4.17.4", @@ -6280,7 +6156,8 @@ "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true } } }, @@ -6314,44 +6191,13 @@ "timed-out": "2.0.0", "unzip-response": "1.0.2", "url-parse-lax": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true }, "graceful-readlink": { "version": "1.0.1", @@ -6410,12 +6256,6 @@ "minimatch": "0.2.14" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, "iconv-lite": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", @@ -6488,7 +6328,7 @@ "dev": true, "requires": { "async": "1.5.2", - "rimraf": "2.6.1" + "rimraf": "2.5.4" }, "dependencies": { "async": { @@ -6545,15 +6385,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -6591,15 +6422,6 @@ "supports-color": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -6638,15 +6460,6 @@ "supports-color": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -6674,12 +6487,6 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -6699,15 +6506,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -6940,15 +6738,6 @@ "number-is-nan": "1.0.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -7034,15 +6823,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -7079,7 +6859,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -7098,7 +6878,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -7127,12 +6907,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -7174,42 +6948,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "stylefmt": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/stylefmt/-/stylefmt-5.3.2.tgz", @@ -7242,7 +6980,7 @@ "chalk": "2.3.0", "colorguard": "1.2.0", "cosmiconfig": "2.2.2", - "debug": "2.6.7", + "debug": "2.6.9", "doiuse": "2.6.0", "execall": "1.0.0", "file-entry-cache": "2.0.0", @@ -7284,7 +7022,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -7335,7 +7073,7 @@ "integrity": "sha512-wEa2WjMGVDzQbq1QmOiDX51/CfaAIS5xx1oSKIjfWVLl/fYbV7PtfWsUhuaQrPIy1se4Crpg3kZFZndw02l16g==", "dev": true, "requires": { - "eslint": "4.10.0" + "eslint": "4.11.0" } }, "gzip-size": { @@ -7365,36 +7103,22 @@ } } }, - "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - } - } - }, "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "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=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.3.0", + "har-schema": "2.0.0" } }, "has": { @@ -7415,41 +7139,20 @@ "ansi-regex": "2.1.1" } }, - "has-binary2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", - "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" - }, - "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=" - }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "has-require": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/has-require/-/has-require-1.2.2.tgz", + "integrity": "sha1-khZ1qxMNvZdo/I2o8ajiQt+kF3Q=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } }, "hash-base": { "version": "2.0.2", @@ -7481,14 +7184,16 @@ } }, "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" } }, "highlight.js": { @@ -7509,9 +7214,10 @@ } }, "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true }, "home-or-tmp": { "version": "2.0.0", @@ -7560,41 +7266,6 @@ "entities": "1.1.1", "inherits": "2.0.3", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "http-basic": { @@ -7606,20 +7277,13 @@ "caseless": "0.11.0", "concat-stream": "1.5.2", "http-response-object": "1.1.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - } } }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, "requires": { "depd": "1.1.1", "inherits": "2.0.3", @@ -7640,7 +7304,7 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1" } }, @@ -7651,11 +7315,13 @@ "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=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", "sshpk": "1.13.1" } @@ -7673,10 +7339,15 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1" } }, + "icheck": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", + "integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=" + }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -7714,12 +7385,14 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -7728,7 +7401,8 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "ini": { "version": "1.3.4", @@ -7781,42 +7455,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -7889,7 +7527,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -7912,6 +7551,12 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-defined/-/is-defined-1.0.0.tgz", + "integrity": "sha1-HwfKZ9Vx9ZTEsUQVpF9774j5K/U=", + "dev": true + }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -7921,12 +7566,14 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true }, "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, "requires": { "is-primitive": "2.0.0" } @@ -7934,12 +7581,14 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "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=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-finite": { "version": "1.0.2", @@ -7951,12 +7600,10 @@ } }, "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=", - "requires": { - "number-is-nan": "1.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-generator": { "version": "1.0.3", @@ -7968,15 +7615,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { "is-extglob": "1.0.0" } }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "is-my-json-valid": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", @@ -7993,6 +7636,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -8030,12 +7674,14 @@ "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=" + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true }, "is-promise": { "version": "2.1.0", @@ -8111,7 +7757,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-utf8": { "version": "0.2.1", @@ -8120,9 +7767,10 @@ "dev": true }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -8134,15 +7782,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } } }, "isomorphic-fetch": { @@ -8178,12 +7820,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jquery": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", - "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-base64": { "version": "2.3.2", @@ -8214,18 +7852,11 @@ } } }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "requires": { - "xmlcreate": "1.0.2" - } - }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, "jschardet": { @@ -8234,47 +7865,23 @@ "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", "dev": true }, - "jsdoc": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.4.tgz", - "integrity": "sha512-VmTw0J+2L16IxAe0JSDSAcH0F+DbZxaj8wN1AjHtKMQU/hO0ciIl5ZE93XqrrFIbknobuqHKJCXZj6+Hk57MjA==", - "requires": { - "babylon": "7.0.0-beta.30", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.6", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", - "underscore": "1.8.3" - }, - "dependencies": { - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - } - } - }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", @@ -8283,17 +7890,25 @@ "dev": 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=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, "requires": { "jsonify": "0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -8311,8 +7926,18 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, "requires": { "graceful-fs": "4.1.11" + }, + "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, + "optional": true + } } }, "jsonfilter": { @@ -8337,6 +7962,12 @@ "through": "2.3.8" } }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "jsonparse": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", @@ -8371,6 +8002,12 @@ "through": "2.3.8" } }, + "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 + }, "through2": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", @@ -8386,7 +8023,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonparse": { "version": "1.3.1", @@ -8404,25 +8042,14 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, - "junk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-2.1.0.tgz", - "integrity": "sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=" - }, "kew": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/kew/-/kew-0.5.0.tgz", @@ -8433,16 +8060,27 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "1.1.6" } }, "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "requires": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { "graceful-fs": "4.1.11" + }, + "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, + "optional": true + } } }, "known-css-properties": { @@ -8460,12 +8098,21 @@ "inherits": "2.0.3", "isarray": "0.0.1", "stream-splicer": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } } }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true }, "lazystream": { "version": "0.1.0", @@ -8476,6 +8123,12 @@ "readable-stream": "1.0.34" }, "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -8487,6 +8140,12 @@ "isarray": "0.0.1", "string_decoder": "0.10.31" } + }, + "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 } } }, @@ -8500,6 +8159,12 @@ "through2": "0.6.5" }, "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -8512,6 +8177,12 @@ "string_decoder": "0.10.31" } }, + "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 + }, "through2": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", @@ -8559,6 +8230,14 @@ "parse-json": "2.2.0", "pify": "2.3.0", "strip-bom": "3.0.0" + }, + "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 + } } }, "locate-path": { @@ -8861,15 +8540,6 @@ "supports-color": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -8887,7 +8557,8 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -8925,14 +8596,6 @@ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, - "magic-string": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", - "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", - "requires": { - "vlq": "0.2.3" - } - }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -8948,7 +8611,8 @@ "marked": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=" + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true }, "masonry-layout": { "version": "4.2.0", @@ -9006,15 +8670,6 @@ "object-assign": "4.1.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -9051,28 +8706,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "memory-streams": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.2.tgz", - "integrity": "sha1-Jz/3d6tg/sWZsRY1UlUoLMosUMI=", - "dev": true, - "requires": { - "readable-stream": "1.0.34" - }, - "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, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } - } + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true }, "meow": { "version": "3.7.0", @@ -9092,6 +8730,12 @@ "trim-newlines": "1.0.0" }, "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 + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -9166,10 +8810,16 @@ "integrity": "sha1-J3yQ+L7zlwlkWoNxxRw7bGSOBow=", "dev": true }, + "mgrs": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-0.0.0.tgz", + "integrity": "sha1-qqK0gpMXv4ERipYNMlbgbdlnS40=" + }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "requires": { "arr-diff": "2.0.0", "array-unique": "0.2.1", @@ -9197,19 +8847,22 @@ } }, "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true }, "mime-db": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true }, "mime-types": { "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, "requires": { "mime-db": "1.30.0" } @@ -9236,6 +8889,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -9243,36 +8897,23 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "minipass": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", - "integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", - "requires": { - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.0.4.tgz", - "integrity": "sha512-sN4U9tIJtBRwKbwgFh9qJfrPIQ/GGTRr1MGqkgOeMTLy8/lM0FcWU//FqlnZ3Vb7gJ+Mxh3FOg1EklibdajbaQ==", - "requires": { - "minipass": "2.2.1" - } + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } }, "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", + "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", + "dev": true }, "mocha-nightwatch": { "version": "3.2.2", @@ -9375,38 +9016,6 @@ "subarg": "1.0.0", "through2": "2.0.3", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "moment": { @@ -9421,15 +9030,26 @@ "integrity": "sha1-rrmoe5y/VWkoDH7GoRDaCImymLE=", "dev": true }, + "mothership": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mothership/-/mothership-0.2.0.tgz", + "integrity": "sha1-k9SKL7w+UOKl/I7VhvW8RMZfmpk=", + "dev": true, + "requires": { + "find-parent-dir": "0.3.0" + } + }, "mout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz", - "integrity": "sha1-m98dSvV9ZtR8s1OmM1oygQmOFQE=" + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", + "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", + "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "multi-glob": { "version": "0.4.0", @@ -9437,7 +9057,7 @@ "integrity": "sha1-GqnQhdljeX8Xr5JziEDthDqY0HA=", "dev": true, "requires": { - "async": "2.5.0", + "async": "0.2.10", "glob": "7.1.2", "lodash": "4.15.0" } @@ -9486,7 +9106,8 @@ "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true }, "netmask": { "version": "1.0.6", @@ -9527,12 +9148,6 @@ "brace-expansion": "1.1.8" } }, - "mkpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", - "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", - "dev": true - }, "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", @@ -9542,9 +9157,9 @@ } }, "nightwatch-cucumber": { - "version": "8.2.8", - "resolved": "https://registry.npmjs.org/nightwatch-cucumber/-/nightwatch-cucumber-8.2.8.tgz", - "integrity": "sha1-Xq24VSvfSBlomsoli69C6ekbs6E=", + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/nightwatch-cucumber/-/nightwatch-cucumber-8.2.9.tgz", + "integrity": "sha1-f50PksjsgJyJdsgs0yWCDylGtxo=", "dev": true, "requires": { "co": "4.6.0", @@ -9561,15 +9176,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } } } }, @@ -9597,19 +9203,17 @@ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", "dev": true }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" - } + "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 }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, "requires": { "abbrev": "1.1.1" } @@ -9622,7 +9226,7 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.0.3", + "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, @@ -9630,6 +9234,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } @@ -9647,40 +9252,74 @@ "dev": true }, "npm-run-all": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.1.tgz", - "integrity": "sha512-qrmqqaJa+REbzUTIL/mHfTdgwz+gL1xUezY/ueyLa7GISZ4T3h0CH8D2r6AaZdCYN2unu7PzspP0ofpXla1ftg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", + "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", "dev": true, "requires": { "ansi-styles": "3.2.0", "chalk": "2.3.0", "cross-spawn": "5.1.0", - "memory-streams": "0.1.2", + "memorystream": "0.3.1", "minimatch": "3.0.4", "ps-tree": "1.1.0", - "read-pkg": "2.0.0", + "read-pkg": "3.0.0", "shell-quote": "1.6.1", "string.prototype.padend": "3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "color-convert": "1.9.0" + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" } } } @@ -9719,17 +9358,6 @@ } } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -9739,42 +9367,51 @@ "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=" + "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=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "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, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" } }, + "ol": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-4.5.0.tgz", + "integrity": "sha512-ICZkndY8XRXgZT/Dlf6Dn/B1ZGpPNKINyv5WoiFKuddeirSNBZoUGZCeZO0NUgiAOqO8YffztylzxoZaNRAJ0g==", + "requires": { + "pbf": "3.1.0", + "pixelworks": "1.1.0", + "rbush": "2.0.1" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, "requires": { "ee-first": "1.1.1" } @@ -9783,6 +9420,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1.0.2" } @@ -9808,35 +9446,22 @@ "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", "dev": true }, - "openlayers": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/openlayers/-/openlayers-4.3.1.tgz", - "integrity": "sha512-tqbvTmf9ed4NlEo9D1NG1n5bApEOYCMYrGXRQTemhbYH4rl4dXvIZ0LJDMpuueYzQQN6Zph4a+psf2rvnSSqUQ==", - "requires": { - "@mapbox/vector-tile": "1.3.0", - "async": "2.5.0", - "closure-util": "1.22.0", - "fs-extra": "4.0.1", - "jsdoc": "3.5.4", - "nomnom": "1.8.1", - "pbf": "3.0.5", - "pixelworks": "1.1.0", - "rbush": "2.0.1", - "rollup": "0.47.6", - "rollup-plugin-cleanup": "1.0.1", - "rollup-plugin-commonjs": "8.2.6", - "rollup-plugin-node-resolve": "3.0.0", - "temp": "0.8.3", - "walk": "2.3.9" - } - }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } } }, "optionator": { @@ -9851,14 +9476,6 @@ "prelude-ls": "1.1.2", "type-check": "0.3.2", "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } } }, "options": { @@ -9882,7 +9499,8 @@ "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=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "osenv": { "version": "0.1.4", @@ -9935,7 +9553,7 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1", "get-uri": "2.0.1", "http-proxy-agent": "1.0.0", @@ -10022,6 +9640,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, "requires": { "glob-base": "0.3.0", "is-dotfile": "1.0.3", @@ -10038,28 +9657,18 @@ "error-ex": "1.3.1" } }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "1.0.2" - } - }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, + "patch-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/patch-text/-/patch-text-1.0.2.tgz", + "integrity": "sha1-S/NuZeUXM9bpjwz2LgkDTaoDSKw=", + "dev": true + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -10078,7 +9687,8 @@ "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=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-is-inside": { "version": "1.0.2", @@ -10089,7 +9699,8 @@ "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true }, "path-platform": { "version": "0.11.15", @@ -10128,9 +9739,9 @@ } }, "pbf": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.0.5.tgz", - "integrity": "sha1-JPD6LL6xblxWpZAbt+nCrAyAWb4=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.1.0.tgz", + "integrity": "sha512-/hYJmIsTmh7fMkHAWWXJ5b8IKLWdjdlAFb3IHkRBn1XUhIYBChVGfVwmHEAV3UfXTxsP/AKfYTXTS/dCPxJd5w==", "requires": { "ieee754": "1.1.8", "resolve-protobuf-schema": "2.0.0" @@ -10156,14 +9767,16 @@ "dev": true }, "perfect-scrollbar": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.7.1.tgz", - "integrity": "sha1-DCVvucXO5AHWCimWh6P5phSH4NU=" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.8.1.tgz", + "integrity": "sha512-RNC5tX/JMRYR+qVdJTEAWnRxw0Yf9lvbO8lTuAOvgDODkiA8lveTSkvrNMhmaGKEyimJpJl+myb/syVS9YyPuw==" }, "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true }, "phantom-proxy": { "version": "0.1.792", @@ -10181,43 +9794,10 @@ "underscore": "1.4.4" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, - "base64id": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", - "dev": true - }, - "combined-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", - "dev": true, - "requires": { - "delayed-stream": "0.0.5" - } - }, - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "cookie": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", - "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", - "dev": true - }, - "delayed-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", "dev": true }, "express": { @@ -10231,7 +9811,7 @@ "connect": "2.7.2", "cookie": "0.0.5", "cookie-signature": "0.0.1", - "debug": "2.6.7", + "debug": "2.6.9", "fresh": "0.1.0", "methods": "0.0.1", "mkdirp": "0.3.3", @@ -10239,23 +9819,6 @@ "send": "0.1.0" } }, - "form-data": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", - "integrity": "sha1-2zRaU3jYau6x7V1VO4aawZLS9e0=", - "dev": true, - "requires": { - "async": "0.2.10", - "combined-stream": "0.0.7", - "mime": "1.2.11" - } - }, - "fresh": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", - "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", - "dev": true - }, "mime": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", @@ -10267,100 +9830,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz", "integrity": "sha1-WV4lHBNww6aLqyE20ONIuBBa3xM=", "dev": true - }, - "q": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/q/-/q-0.8.12.tgz", - "integrity": "sha1-kWKpHhGBnEvNp9oVz1/vqtB3iCM=", - "dev": true - }, - "range-parser": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", - "dev": true - }, - "send": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", - "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", - "dev": true, - "requires": { - "debug": "2.6.7", - "fresh": "0.1.0", - "mime": "1.2.6", - "range-parser": "0.0.4" - }, - "dependencies": { - "mime": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", - "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", - "dev": true - } - } - }, - "socket.io": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.19.tgz", - "integrity": "sha1-SQu1/Q3FTPAC7gTmf638Q7hIo48=", - "dev": true, - "requires": { - "base64id": "0.1.0", - "policyfile": "0.0.4", - "redis": "0.7.3", - "socket.io-client": "0.9.16" - } - }, - "socket.io-client": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", - "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=", - "dev": true, - "requires": { - "active-x-obfuscator": "0.0.1", - "uglify-js": "1.2.5", - "ws": "0.4.32", - "xmlhttprequest": "1.4.2" - } - }, - "uglify-js": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz", - "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", - "dev": true - }, - "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", - "dev": true - }, - "ws": { - "version": "0.4.32", - "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", - "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", - "dev": true, - "requires": { - "commander": "2.1.0", - "nan": "1.0.0", - "options": "0.0.6", - "tinycolor": "0.0.1" - }, - "dependencies": { - "commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", - "dev": true - } - } - }, - "xmlhttprequest": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", - "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA=", - "dev": true } } }, @@ -10386,12 +9855,36 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "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 + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.15.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "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, + "requires": { + "hoek": "2.16.3" + } + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -10405,13 +9898,37 @@ "supports-color": "2.0.0" } }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "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 + }, "form-data": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "combined-stream": "1.0.5", "mime-types": "2.1.17" } @@ -10426,9 +9943,15 @@ "jsonfile": "2.4.0", "klaw": "1.3.1", "path-is-absolute": "1.0.1", - "rimraf": "2.6.1" + "rimraf": "2.5.4" } }, + "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-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -10441,6 +9964,35 @@ "pinkie-promise": "2.0.1" } }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "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, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -10456,21 +10008,6 @@ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "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 - }, "progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", @@ -10511,22 +10048,13 @@ "tunnel-agent": "0.4.3" } }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true, - "requires": { - "throttleit": "1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "hoek": "2.16.3" } }, "supports-color": { @@ -10640,42 +10168,14 @@ } }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", "dev": true, "requires": { "chalk": "2.3.0", "source-map": "0.6.1", "supports-color": "4.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "postcss-less": { @@ -10738,15 +10238,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -10830,15 +10321,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -10859,7 +10341,7 @@ "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" } }, "postcss-scss": { @@ -10922,15 +10404,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11020,15 +10493,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11061,7 +10525,8 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true }, "pretty-bytes": { "version": "1.0.4", @@ -11094,7 +10559,8 @@ "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=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "progress": { "version": "2.0.0", @@ -11102,6 +10568,14 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, + "proj4": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.3.3.tgz", + "integrity": "sha1-SWp2hXivQ55Gd6CFpjmh8ZjLvc0=", + "requires": { + "mgrs": "0.0.0" + } + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -11115,6 +10589,16 @@ "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.3.tgz", "integrity": "sha1-hTTXa/RnPDuqOoK7oBvSlcww8U8=" }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -11143,7 +10627,7 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1", "http-proxy-agent": "1.0.0", "https-proxy-agent": "1.0.0", @@ -11223,17 +10707,20 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/q/-/q-0.8.12.tgz", + "integrity": "sha1-kWKpHhGBnEvNp9oVz1/vqtB3iCM=", + "dev": true }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -11272,12 +10759,6 @@ "integrity": "sha1-/9xW3MNdApJt1QrRNDm7xUBh1Zg=", "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 - }, "when": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/when/-/when-2.2.1.tgz", @@ -11294,7 +10775,7 @@ "requires": { "glob": "3.2.11", "lodash": "0.5.2", - "mime": "1.3.4", + "mime": "1.4.1", "minimatch": "0.1.5", "when": "https://github.com/cujojs/when/tarball/1.3.0" }, @@ -11355,6 +10836,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -11364,6 +10846,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -11372,6 +10855,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -11382,6 +10866,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -11397,12 +10882,23 @@ "safe-buffer": "5.1.1" } }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", + "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", + "dev": true + }, + "raw-body": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", @@ -11450,6 +10946,22 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.1.tgz", "integrity": "sha1-bULNK2TIxeC2k/P/rsMB5uYn4k4=" }, + "react-draggable": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-2.2.6.tgz", + "integrity": "sha1-OoBuEPLaa6v+pBNr5lEOibDXaQE=", + "requires": { + "classnames": "2.2.5" + } + }, + "react-input-range": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-input-range/-/react-input-range-1.0.2.tgz", + "integrity": "sha1-Wlwrr/q5E0puS2fsi9jq39hHtFE=", + "requires": { + "autobind-decorator": "1.4.3" + } + }, "read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", @@ -11458,38 +10970,6 @@ "requires": { "pinkie-promise": "2.0.1", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "read-file-stdin": { @@ -11508,38 +10988,6 @@ "dev": true, "requires": { "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "read-pkg": { @@ -11575,14 +11023,18 @@ } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -11597,35 +11049,11 @@ "set-immediate-shim": "1.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } } } }, @@ -11708,6 +11136,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { "is-equal-shallow": "0.1.3" } @@ -11749,17 +11178,41 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "rename-function-calls": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/rename-function-calls/-/rename-function-calls-0.1.1.tgz", + "integrity": "sha1-f4M2nAB6MAf2q+MDPM+BaGoQjgE=", + "dev": true, + "requires": { + "detective": "3.1.0" + }, + "dependencies": { + "detective": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-3.1.0.tgz", + "integrity": "sha1-d3gkRKt1K4jKG+Lp0KA5Xx2iXu0=", + "dev": true, + "requires": { + "escodegen": "1.1.0", + "esprima-fb": "3001.1.0-dev-harmony-fb" + } + } + } }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "repeating": { "version": "2.0.1", @@ -11770,39 +11223,97 @@ "is-finite": "1.0.2" } }, + "replace-requires": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/replace-requires/-/replace-requires-1.0.4.tgz", + "integrity": "sha1-AUtzMLa54lV7cQQ7ZvsCZgw79mc=", + "dev": true, + "requires": { + "detective": "4.5.0", + "has-require": "1.2.2", + "patch-text": "1.0.2", + "xtend": "4.0.1" + } + }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "optional": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", "uuid": "3.1.0" + }, + "dependencies": { + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "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 + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + } } }, "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, "requires": { "throttleit": "1.0.0" } @@ -11831,18 +11342,11 @@ } } }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "requires": { - "underscore": "1.6.0" - } - }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, "requires": { "path-parse": "1.0.5" } @@ -11854,6 +11358,14 @@ "dev": true, "requires": { "find-parent-dir": "0.1.0" + }, + "dependencies": { + "find-parent-dir": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.1.0.tgz", + "integrity": "sha1-EBuOyk+ye5QmMYei+txWuVyqh9Q=", + "dev": true + } } }, "resolve-from": { @@ -11880,23 +11392,20 @@ "signal-exit": "3.0.2" } }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, "requires": { "align-text": "0.1.4" } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "dev": true, "requires": { "glob": "7.1.2" } @@ -11911,72 +11420,6 @@ "inherits": "2.0.3" } }, - "rollup": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.47.6.tgz", - "integrity": "sha512-bH3eWh7MzbiKTQcHQN7Ievqbs/yY7T+ZcJYboBYkp7BkRlAr2DXHPfiqlvlEH/M95giEBpinHEi/s9CVIgYT6w==" - }, - "rollup-plugin-cleanup": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-1.0.1.tgz", - "integrity": "sha1-ygVsdP5uoheD+ZhRljsXPL6Ok1k=", - "requires": { - "acorn": "4.0.13", - "magic-string": "0.22.4", - "rollup-pluginutils": "2.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } - } - }, - "rollup-plugin-commonjs": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz", - "integrity": "sha512-qK0+uhktmnAgZkHkqFuajNmPw93fjrO7+CysDaxWE5jrUR9XSlSvuao5ZJP+XizxA8weakhgYYBtbVz9SGBpjA==", - "requires": { - "acorn": "5.2.1", - "estree-walker": "0.5.0", - "magic-string": "0.22.4", - "resolve": "1.5.0", - "rollup-pluginutils": "2.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" - }, - "estree-walker": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.0.tgz", - "integrity": "sha512-/bEAy+yKAZQrEWUhGmS3H9XpGqSDBtRzX0I2PgMw9kA2n1jN22uV5B5p7MFdZdvWdXCRJztXAfx6ZeRfgkEETg==" - } - } - }, - "rollup-plugin-node-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", - "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", - "requires": { - "browser-resolve": "1.11.2", - "builtin-modules": "1.1.1", - "is-module": "1.0.0", - "resolve": "1.5.0" - } - }, - "rollup-pluginutils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", - "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", - "requires": { - "estree-walker": "0.3.1", - "micromatch": "2.3.11" - } - }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -11986,6 +11429,11 @@ "is-promise": "2.1.0" } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -12004,7 +11452,8 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "samsam": { "version": "1.1.2", @@ -12024,29 +11473,29 @@ "dev": true }, "semver": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", + "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", + "dev": true, "requires": { - "debug": "2.6.7", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.0", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "debug": "2.6.9", + "fresh": "0.1.0", + "mime": "1.2.6", + "range-parser": "0.0.4" + }, + "dependencies": { + "mime": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", + "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", + "dev": true + } } }, "serve-static": { @@ -12070,12 +11519,30 @@ "ms": "0.7.2" } }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, "ms": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", "dev": true }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, "send": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", @@ -12099,11 +11566,6 @@ } } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -12118,7 +11580,8 @@ "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true }, "sha.js": { "version": "2.4.9", @@ -12138,17 +11601,6 @@ "requires": { "json-stable-stringify": "0.0.1", "sha.js": "2.4.9" - }, - "dependencies": { - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - } } }, "shebang-command": { @@ -12187,7 +11639,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sinon": { "version": "1.17.7", @@ -12214,14 +11667,6 @@ "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } } }, "smart-buffer": { @@ -12231,80 +11676,44 @@ "dev": true }, "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "socket.io": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.1.tgz", - "integrity": "sha1-BkwSUXhGLkd6bfI9L9rRjdHFkU8=", + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.19.tgz", + "integrity": "sha1-SQu1/Q3FTPAC7gTmf638Q7hIo48=", + "dev": true, "requires": { - "debug": "2.6.7", - "engine.io": "3.1.3", - "object-assign": "4.1.1", - "socket.io-adapter": "1.1.1", - "socket.io-client": "2.0.1", - "socket.io-parser": "3.1.2" + "base64id": "0.1.0", + "policyfile": "0.0.4", + "redis": "0.7.3", + "socket.io-client": "0.9.16" } }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, "socket.io-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.1.tgz", - "integrity": "sha1-HVL4x0Zgxou2aVlT+hGZcRVfrZM=", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.6.4", - "engine.io-client": "3.1.3", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", - "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", - "requires": { - "ms": "0.7.3" - } - }, - "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" - } - } - }, - "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", + "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=", + "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.7", - "has-binary2": "1.0.2", - "isarray": "2.0.1" + "active-x-obfuscator": "0.0.1", + "uglify-js": "1.2.5", + "ws": "0.4.32", + "xmlhttprequest": "1.4.2" }, "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "xmlhttprequest": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", + "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA=", + "dev": true } } }, @@ -12338,12 +11747,10 @@ } }, "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.4.18", @@ -12407,6 +11814,12 @@ "through2": "0.6.5" }, "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -12419,6 +11832,12 @@ "string_decoder": "0.10.31" } }, + "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 + }, "through2": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", @@ -12441,6 +11860,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -12450,13 +11870,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "stack-chain": { @@ -12516,56 +11929,25 @@ } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stdin": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", - "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", + "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" } }, "stream-combiner": { @@ -12585,38 +11967,6 @@ "requires": { "duplexer2": "0.1.4", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "stream-http": { @@ -12630,38 +11980,6 @@ "readable-stream": "2.3.3", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "stream-logger": { @@ -12681,38 +11999,6 @@ "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "string-argv": { @@ -12722,21 +12008,28 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "3.0.0" } } } @@ -12753,19 +12046,28 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true }, "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -12785,7 +12087,8 @@ "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=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-search": { "version": "0.1.0", @@ -12805,7 +12108,7 @@ "editorconfig": "0.13.3", "globby": "6.1.0", "minimist": "1.2.0", - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-scss": "1.0.2", "postcss-sorting": "2.1.0", "postcss-value-parser": "3.3.0", @@ -12827,7 +12130,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -12869,7 +12172,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -12898,12 +12201,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -12922,7 +12219,7 @@ "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" } }, "source-map": { @@ -12931,42 +12228,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "stylelint": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", @@ -12978,7 +12239,7 @@ "chalk": "2.3.0", "colorguard": "1.2.0", "cosmiconfig": "2.2.2", - "debug": "2.6.7", + "debug": "2.6.9", "doiuse": "2.6.0", "execall": "1.0.0", "file-entry-cache": "2.0.0", @@ -13020,7 +12281,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -13155,7 +12416,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -13225,15 +12486,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -13269,8 +12521,8 @@ "micromatch": "2.3.11", "normalize-selector": "0.2.0", "pify": "3.0.0", - "postcss": "6.0.13", - "postcss-less": "1.1.1", + "postcss": "6.0.14", + "postcss-less": "1.1.3", "postcss-media-query-parser": "0.2.3", "postcss-reporter": "5.0.0", "postcss-resolve-nested-selector": "0.1.1", @@ -13282,19 +12534,16 @@ "specificity": "0.3.2", "string-width": "2.1.1", "style-search": "0.1.0", - "sugarss": "1.0.0", + "sugarss": "1.0.1", "svg-tags": "1.0.0", "table": "4.0.2" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.9", @@ -13311,25 +12560,14 @@ "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", "dev": true, "requires": { - "browserslist": "2.6.1", - "caniuse-lite": "1.0.30000756", + "browserslist": "2.9.0", + "caniuse-lite": "1.0.30000764", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.13", + "postcss": "6.0.14", "postcss-value-parser": "3.3.0" } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, "cosmiconfig": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz", @@ -13369,12 +12607,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", @@ -13422,20 +12654,14 @@ "dev": true }, "postcss-less": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-1.1.1.tgz", - "integrity": "sha512-zl0EEqq8Urh37Ppdv9zzhpZpLHrgkxmt6e3O4ftRa7/b8Uq2LV+/KBVM8/KuzmHNu+mthhOArg1lxbfqQ3NUdg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-1.1.3.tgz", + "integrity": "sha512-WS0wsQxRm+kmN8wEYAGZ3t4lnoNfoyx9EJZrhiPR1K0lMHR0UNWnz52Ya5QRXChHtY75Ef+kDc05FpnBujebgw==", "dev": true, "requires": { "postcss": "5.2.18" }, "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 - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -13468,15 +12694,6 @@ "source-map": "0.5.7", "supports-color": "3.2.3" } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } } } }, @@ -13489,7 +12706,7 @@ "chalk": "2.3.0", "lodash": "4.17.4", "log-symbols": "2.1.0", - "postcss": "6.0.13" + "postcss": "6.0.14" } }, "postcss-scss": { @@ -13498,7 +12715,7 @@ "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", "dev": true, "requires": { - "postcss": "6.0.13" + "postcss": "6.0.14" } }, "require-from-string": { @@ -13519,49 +12736,22 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "sugarss": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", + "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "postcss": "6.0.14" } }, - "sugarss": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.0.tgz", - "integrity": "sha1-ZeUbOVhDL7cNVFGmi7M+MtDPHvc=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "postcss": "6.0.13" + "has-flag": "1.0.0" } } } @@ -13590,7 +12780,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -13609,7 +12799,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000764", "electron-to-chromium": "1.3.27" } }, @@ -13646,12 +12836,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -13676,42 +12860,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "stylelint": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", @@ -13723,7 +12871,7 @@ "chalk": "2.3.0", "colorguard": "1.2.0", "cosmiconfig": "2.2.2", - "debug": "2.6.7", + "debug": "2.6.9", "doiuse": "2.6.0", "execall": "1.0.0", "file-entry-cache": "2.0.0", @@ -13765,7 +12913,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -13884,15 +13032,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -13934,43 +13073,13 @@ "dependencies": { "concat-stream": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } } } @@ -13999,14 +13108,6 @@ "dev": true, "requires": { "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } } }, "table": { @@ -14023,91 +13124,23 @@ "string-width": "2.1.1" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } } } }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" - }, "tar": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", - "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, "requires": { - "minipass": "2.2.1", - "minizlib": "1.0.4", - "mkdirp": "0.5.1", - "yallist": "3.0.2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "tar.gz": { @@ -14128,39 +13161,6 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", "dev": true - }, - "mout": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", - "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - } - } - }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" } } }, @@ -14171,19 +13171,14 @@ "dev": true, "requires": { "rimraf": "2.5.4" - }, - "dependencies": { - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - } } }, + "ternary": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ternary/-/ternary-1.0.0.tgz", + "integrity": "sha1-RXAnJWCMlJnUapYQ6bDkn/JveJ4=", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -14201,15 +13196,7 @@ "http-basic": "2.5.1", "http-response-object": "1.1.0", "promise": "7.3.1", - "qs": "6.4.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - } + "qs": "6.5.1" } }, "thenify": { @@ -14233,7 +13220,8 @@ "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true }, "through": { "version": "2.3.8", @@ -14249,38 +13237,6 @@ "requires": { "readable-stream": "2.3.3", "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } } }, "thunkify": { @@ -14372,18 +13328,14 @@ } }, "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "1.0.2" } }, - "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=" - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -14396,36 +13348,50 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, - "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "requires": { - "nopt": "1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1.1.1" - } - } - } - }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "optional": true, "requires": { "punycode": "1.4.1" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + "transformify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/transformify/-/transformify-0.1.2.tgz", + "integrity": "sha1-mk9CoVRDPdcnuAV1Qoo8nlSJ6/E=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "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 + } + } }, "traverse-chain": { "version": "0.1.0", @@ -14461,6 +13427,8 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, "requires": { "safe-buffer": "5.1.1" } @@ -14469,6 +13437,7 @@ "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 }, "type-check": { @@ -14508,28 +13477,16 @@ "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true - } - } + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz", + "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", + "dev": true }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true }, "uid-number": { "version": "0.0.5", @@ -14537,11 +13494,6 @@ "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=", "dev": true }, - "ultron": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", - "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=" - }, "umd": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", @@ -14549,17 +13501,10 @@ "dev": true }, "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" - }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", - "requires": { - "underscore": "1.6.0" - } + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true }, "underscore.string": { "version": "2.2.1", @@ -14576,7 +13521,8 @@ "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true }, "unpipe": { "version": "1.0.0", @@ -14655,7 +13601,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "utils-merge": { "version": "1.0.0", @@ -14663,17 +13610,6 @@ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", "dev": true }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - }, - "uws": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz", - "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=", - "optional": 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", @@ -14694,24 +13630,13 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -14721,14 +13646,6 @@ "indexof": "0.0.1" } }, - "walk": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", - "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", - "requires": { - "foreachasync": "3.0.0" - } - }, "watchify": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.9.0.tgz", @@ -14751,13 +13668,13 @@ "dev": true, "requires": { "http-parser-js": "0.4.9", - "websocket-extensions": "0.1.2" + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", - "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "whatwg-fetch": { @@ -14776,23 +13693,30 @@ "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", "dev": 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==", - "requires": { - "string-width": "1.0.2" - } - }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worldview-components": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worldview-components/-/worldview-components-1.5.2.tgz", + "integrity": "sha512-Vnsemgtm8jDMY4FCLU9TiuYlxuQlqn5zGB1k4ykntvkoQ2VQw8ooSA8LYe2Svbf+PcNzAKs4PCf+u5kUy1HP7g==", + "requires": { + "d3": "4.11.0", + "icheck": "1.0.2", + "prop-types": "15.6.0", + "react-draggable": "2.2.6", + "react-input-range": "1.0.2", + "whatwg-fetch": "2.0.3" + } }, "worldview-options-eosdis": { "version": "github:nasa-gibs/worldview-options-eosdis#790a7104bf06734bf27ef90a481f995623e631c8" @@ -14800,7 +13724,8 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write": { "version": "0.2.1", @@ -14818,37 +13743,29 @@ "dev": true }, "ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", + "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", + "dev": true, "requires": { - "safe-buffer": "5.0.1", - "ultron": "1.1.0" + "commander": "2.1.0", + "nan": "1.0.0", + "options": "0.0.6", + "tinycolor": "0.0.1" }, "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true } } }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" - }, "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true, - "optional": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz", - "integrity": "sha1-BPVgkVcks4kIhxXMDteBPpZ3v1c=" + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, "xregexp": { "version": "2.0.0", @@ -14863,19 +13780,29 @@ "dev": true }, "yallist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", "decamelize": "1.2.0", "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + } } }, "yauzl": { @@ -14887,11 +13814,6 @@ "fd-slicer": "1.0.1" } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, "zeparser": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz", diff --git a/package.json b/package.json index 0f3f617764..ca4a743cb0 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "e2e:firefox": "nightwatch -e firefox --skiptags wip", "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", "report": "node e2e/create-report.js", - "build-js": "node ./tasks/build-js" + "build": "grunt && node ./tasks/build-js" }, "devDependencies": { "autoprefixer": "7.1.1", @@ -30,6 +30,7 @@ "babel-preset-env": "^1.6.1", "babelify": "^7.3.0", "browserify": "^14.4.0", + "browserify-shim": "^3.8.14", "browserstack-capabilities": "^0.4.0", "browserstack-local": "^1.3.0", "buster": "0.7.12", @@ -81,14 +82,86 @@ "gifshot": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", "isotope-layout": "3.0.x", "isotope-packery": "2.x.x", - "jquery": "^2.2.4", "lodash": "4.15.0", - "openlayers": "4.3.1", - "perfect-scrollbar": "0.7.x", + "ol": "^4.4.2", + "perfect-scrollbar": "^0.8.1", "proj4": "2.3.3", "promise-queue": "2.2.3", "react": "15.3.1", "react-dom": "15.3.1", + "worldview-components": "^1.5.2", "worldview-options-eosdis": "github:nasa-gibs/worldview-options-eosdis#v2.1.2" + }, + "browser": { + "d3": "./web/ext/ui/d3/d3.js", + "jquery": "./web/ext/main/jquery-2.1.4/jquery.js", + "jquery-ui": "./web/ext/ui/jquery-ui-1.11.4/jquery-ui.js", + "jquery-migrate": "./web/ext/main/jquery.migrate-1.2.1/jquery-migrate.min.js", + "icheck": "./web/ext/ui/iCheck-1.0.2-patch/icheck.js", + "jscrollpane": "./web/ext/ui/jquery.jscrollpane-2.0.22/jquery.jscrollpane.js", + "mobiscroll": "./web/ext/date/mobiscroll-2.6.0/mobiscroll.js", + "jcrop": "./web/ext/image/jcrop-0.9.12/jquery.Jcrop.js", + "nouislider": "./web/ext/ui/noUiSlider-6.1.10/jquery.nouislider.min.js", + "jcarousel": "./web/ext/layers/jcarousel/jcarousel.js", + "perfect-scrollbar-jquery": "./web/ext/node_modules/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js", + "isotope-jquery": "./web/ext/node_modules/isotope-layout/dist/isotope.pkgd.js" + }, + "browserify-shim": { + "jquery": "global:$", + "d3": "global:d3", + "jquery-ui": { + "exports": null, + "depends": [ + "jquery:jQuery" + ] + }, + "jquery-migrate": { + "exports": null, + "depends": [ + "jquery:$" + ] + }, + "icheck": { + "exports": null, + "depends": [ + "jquery:jQuery" + ] + }, + "mobiscroll": { + "exports": null, + "depends": [ + "jquery:$" + ] + }, + "jscrollpane": { + "exports": null, + "depends": [ + "jquery:jQuery" + ] + }, + "nouislider": { + "exports": null, + "depends": [ + "jquery:$" + ] + }, + "jcarousel": { + "exports": null, + "depends": [ + "jquery:$" + ] + }, + "perfect-scrollbar-jquery": { + "exports": "null", + "depends": [ + "jquery:jQuery" + ] + }, + "isotope-jquery": { + "exports": "null", + "depends": [ + "jquery:jQuery" + ] + } } } diff --git a/tasks/build-js b/tasks/build-js index ef76db3a8b..8cfbd8030e 100644 --- a/tasks/build-js +++ b/tasks/build-js @@ -5,10 +5,14 @@ const fs = require('fs'); const browserify = require('browserify'); const watchify = require('watchify'); - +const outputDir = './web/build/'; const entry = 'main.js'; -const output = './js/wv.js'; -const outputMin = './js/wv.min.js'; +const output = outputDir + 'wv.js'; +const outputMin = outputDir + 'wv.min.js'; + +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir); +} // override, should set this from an argument: --dev or --prod // and default to dev @@ -20,7 +24,9 @@ const b = browserify(entry, { packageCache: {}, plugin: [process.env.NODE_ENV !== 'production' ? watchify : null], basedir: './web/js' -}).transform('babelify', { presets: ['env'] }); +}) + .transform('babelify', { presets: ['env'] }) + .transform('browserify-shim', {global: true}); function bundle() { const stream = fs.createWriteStream(output); diff --git a/web/index.html b/web/index.html index fc6641db16..c73c1f8651 100644 --- a/web/index.html +++ b/web/index.html @@ -103,84 +103,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + diff --git a/web/js/brand.js b/web/js/brand.js index 5b5537ff50..fddfacf6e0 100644 --- a/web/js/brand.js +++ b/web/js/brand.js @@ -1,2 +1,67 @@ -/* This file is just a stub to test the browserify build task */ -export function brand () {}; +import loIndexOf from 'lodash/indexof'; +/** + * @class wv.brand + * @static + */ +export default (function () { + var self = {}; + + /** + * Official name of this application. + * + * @attribute NAME + * @type String + * @static + */ + self.NAME = '@LONG_NAME@'; + + /** + * Release version string. This value is filled in during the build + * process. + * + * @attribute VERSION + * @type String + * @static + */ + self.VERSION = '@BUILD_VERSION@'; + + /** + * Date and time Worldview was built. This value is filled in during the + * build process. + * + * @attribute BUILD_TIMESTAMP + * @type string + * @static + */ + self.BUILD_TIMESTAMP = '@BUILD_TIMESTAMP@'; + + /** + * The value of the timestamp in numeric form that can be used as + * a URL nonce "invalidate" cache entries. This value is filled in + * during the build process. + * + * @attribute BUILD_NONCE + * @type String + * @static + */ + self.BUILD_NONCE = '@BUILD_NONCE@'; + + /** + * Determines if this is a release build. + * + * @method release + * @static + * @return true if the build script has populated the VERSION field, + * otherwise returns false. + */ + self.release = function () { + return self.VERSION[0] !== '@'; + }; + + self.url = function (base) { + var joiner = (loIndexOf(base, '?') < 0) ? '?' : '&'; + return base + joiner + 'v=' + self.BUILD_NONCE; + }; + + return self; +})(); diff --git a/web/js/date/config.js b/web/js/date/config.js index ec18420fa6..63a9f06558 100644 --- a/web/js/date/config.js +++ b/web/js/date/config.js @@ -1,4 +1,5 @@ import $ from 'jquery'; +import d3 from 'd3'; /** * Modify zoom levels here. Maybe this isnt the best way to do this. * It could be called just level without the zoom part instead. diff --git a/web/js/date/timeline-data.js b/web/js/date/timeline-data.js index 85a9dbb6b6..f72c86fe04 100644 --- a/web/js/date/timeline-data.js +++ b/web/js/date/timeline-data.js @@ -1,5 +1,6 @@ import $ from 'jquery'; import util from '../util/util'; +import d3 from 'd3'; export function timelineData(models, config, ui) { var tl = ui.timeline; diff --git a/web/js/date/timeline-pick.js b/web/js/date/timeline-pick.js index c4207a12b2..76c60a867b 100644 --- a/web/js/date/timeline-pick.js +++ b/web/js/date/timeline-pick.js @@ -1,4 +1,5 @@ import $ from 'jquery'; +import d3 from 'd3'; /** * Implements the timeline pick */ diff --git a/web/js/date/timeline-ticks.js b/web/js/date/timeline-ticks.js index b3b30aa7e2..9dc4c9cbf8 100644 --- a/web/js/date/timeline-ticks.js +++ b/web/js/date/timeline-ticks.js @@ -1,8 +1,9 @@ import $ from 'jquery'; +import d3 from 'd3'; /** * Perform timeline tick functions */ -export function timelineTick(models, config, ui) { +export function timelineTicks(models, config, ui) { var tl = ui.timeline; var model = models.date; diff --git a/web/js/date/timeline-zoom.js b/web/js/date/timeline-zoom.js index 6e2bb71e48..7c085c493f 100644 --- a/web/js/date/timeline-zoom.js +++ b/web/js/date/timeline-zoom.js @@ -1,5 +1,6 @@ import $ from 'jquery'; import uiMouse from '../ui/mouse'; +import d3 from 'd3'; /** * Perform timeline zooming functions diff --git a/web/js/date/timeline.js b/web/js/date/timeline.js index 17f6ab7efe..819e4f5fb0 100644 --- a/web/js/date/timeline.js +++ b/web/js/date/timeline.js @@ -1,5 +1,6 @@ import $ from 'jquery'; import util from '../util/util'; +import d3 from 'd3'; export function timeline(models, config, ui) { var self = {}; diff --git a/web/js/date/wheels.js b/web/js/date/wheels.js index 967b2c47aa..4010647b4f 100644 --- a/web/js/date/wheels.js +++ b/web/js/date/wheels.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import util from '../util/util'; -export function dateWheel(models, config) { +export function dateWheels(models, config) { var id = 'timewheels'; var $container = $('#' + id); var MSEC_TO_MIN = 1000 * 60; @@ -24,7 +24,6 @@ export function dateWheel(models, config) { $container .addClass('datespan') .html('
      '); - $('#linkmode') .mobiscroll() .date({ diff --git a/web/js/wv.debug.js b/web/js/debug.js similarity index 95% rename from web/js/wv.debug.js rename to web/js/debug.js index 36349e94ff..f428753d7a 100644 --- a/web/js/wv.debug.js +++ b/web/js/debug.js @@ -1,9 +1,11 @@ /** * @module wv.debug */ -var wv = wv || {}; -wv.debug = wv.debug || (function () { - var parameters = wv.util.fromQueryString(location.search); +import $ from 'jquery'; +import util from './util/util'; +import palettes from './palettes/palettes'; +export var debug = (function () { + var parameters = util.fromQueryString(location.search); var self = {}; var init = function () { @@ -19,7 +21,7 @@ wv.debug = wv.debug || (function () { } if (parameters.showError) { $(function () { - wv.util.error(); + util.error(); }); } }; @@ -68,7 +70,7 @@ wv.debug = wv.debug || (function () { return self; })(); -wv.debug.config = wv.debug.config || function (config) { +export function debugConfig(config) { if (config.parameters.debug === 'tiles') { var tileSize = _.parseInt(config.parameters.tileSize); if (_.isNaN(tileSize)) { @@ -107,7 +109,7 @@ wv.debug.config = wv.debug.config || function (config) { } }; -wv.debug.layers = wv.debug.layers || function (ui, models, config) { +export function debugLayers(ui, models, config) { var type; var selectedLayer; @@ -129,7 +131,7 @@ wv.debug.layers = wv.debug.layers || function (ui, models, config) { } if (useDebugPanel[type]) { if (type === 'palettes') { - wv.palettes.loadCustom(config) + palettes.loadCustom(config) .done(render); } else { render(); diff --git a/web/js/layers/modal.js b/web/js/layers/modal.js index 857e2d2c01..469e126c8d 100644 --- a/web/js/layers/modal.js +++ b/web/js/layers/modal.js @@ -1,4 +1,7 @@ import $ from 'jquery'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import {LayerList} from 'worldview-components'; import loFind from 'lodash/find'; import loIndexOf from 'lodash/indexOf'; import loSortBy from 'lodash/sortBy'; @@ -6,6 +9,7 @@ import loStartCase from 'lodash/startCase'; import util from '../util/util'; export function layersModal(models, ui, config) { + var crumbText; var model = models.layers; var self = {}; self.selector = '#layer-modal'; @@ -313,7 +317,6 @@ export function layersModal(models, ui, config) { var $measurements = $('
        '); Object.values(category.measurements).forEach(function (measurement, index) { - var projection = models.proj.selected.id; var current = config.measurements[measurement]; // Check if measurements have settings with the same projection. if (hasMeasurementSource(current)) { @@ -695,7 +698,7 @@ export function layersModal(models, ui, config) { filteredLayers: getLayersForProjection(projection) }; self.reactList = ReactDOM.render( - React.createElement(WVC.LayerList, props), + React.createElement(LayerList, props), $allLayers[0] ); @@ -814,7 +817,6 @@ export function layersModal(models, ui, config) { var $searchBtn = $('X' }, postStepCallback: function (index, tip) { - if (index == 5) { + if (index === 5) { endTour(); } } @@ -170,8 +169,8 @@ wv.tour = wv.tour || function (models, ui, config) { var onStop = function (index, tip, button) { // console.log(index, tip, button); setTourState(); - WVC.GA.event('Tour', 'Click', 'Post Tour View', index + 1); - if (index == 5 && button !== 'previous') { + GA.event('Tour', 'Click', 'Post Tour View', index + 1); + if (index === 5 && button !== 'previous') { endTour(); } }; @@ -184,7 +183,7 @@ wv.tour = wv.tour || function (models, ui, config) { $('.ui-dialog-content') .dialog('close'); initTourState(); - WVC.GA.event('Tour', 'Click', 'Take Tour'); + GA.event('Tour', 'Click', 'Take Tour'); $('#joyRideTipContent') .joyride({ adjustForPhone: false, @@ -201,7 +200,7 @@ wv.tour = wv.tour || function (models, ui, config) { * Toggle the value of the "hideSplash" flag. */ var setDoNotShow = function () { - if (!wv.util.browser.localStorage) return; + if (!util.browser.localStorage) return; var hideSplash = localStorage.getItem('hideSplash'); localStorage.setItem('hideSplash', !hideSplash); }; @@ -218,7 +217,7 @@ wv.tour = wv.tour || function (models, ui, config) { var initTourState = function () { var map = ui.map.selected; models.proj.selectDefault(); - models.date.select(wv.util.today()); + models.date.select(util.today()); models.layers.reset(); var leading = models.map.getLeadingExtent(); map.getView() diff --git a/web/js/ui/info.js b/web/js/ui/info.js index 0a49cdbcf8..875298d7bf 100644 --- a/web/js/ui/info.js +++ b/web/js/ui/info.js @@ -1,4 +1,7 @@ import $ from 'jquery'; +import 'jquery-ui/button'; +import 'jquery-ui/dialog'; +import 'jquery-ui/menu'; import wvui from './ui'; import util from '../util/util'; import feedbackModal from '../feedback'; diff --git a/web/js/ui/ui.js b/web/js/ui/ui.js index c052e7e524..4de869aded 100644 --- a/web/js/ui/ui.js +++ b/web/js/ui/ui.js @@ -1,4 +1,6 @@ import $ from 'jquery'; +import 'jquery-ui/dialog'; +import 'jquery-ui/menu'; import loadingIndicator from './indicator'; import info from './info'; import mouse from './mouse'; From 63fa135458db9fbdaff6a67d67ac9cc41fce7054 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Mon, 20 Nov 2017 17:08:39 -0500 Subject: [PATCH 071/242] Replace ext cache.js with cachai --- package-lock.json | 5 +++++ package.json | 1 + web/index.html | 3 --- web/js/link/model.js | 1 + web/js/map/ui.js | 1 + web/js/util/util.js | 1 + 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index da4c4dae54..dbb984373d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1998,6 +1998,11 @@ "integrity": "sha1-xXSBIigSbWNp0VdpJahXnbP45aI=", "dev": true }, + "cachai": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cachai/-/cachai-1.0.2.tgz", + "integrity": "sha1-BhZoZycx+ic3g+9fz1dKEbjf7ao=" + }, "cached-path-relative": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", diff --git a/package.json b/package.json index f470a22f74..8acede2cfe 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "dependencies": { "babel-polyfill": "6.16.0", "bluebird": "3.4.6", + "cachai": "^1.0.2", "clipboard": "^1.7.1", "font-awesome": "4.7.0", "gifshot": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", diff --git a/web/index.html b/web/index.html index d8aaf28cc2..866a6ad0f4 100644 --- a/web/index.html +++ b/web/index.html @@ -103,9 +103,6 @@ - - - diff --git a/web/js/link/model.js b/web/js/link/model.js index 97c0702618..6152d3df2c 100644 --- a/web/js/link/model.js +++ b/web/js/link/model.js @@ -4,6 +4,7 @@ import loMap from 'lodash/map'; import loIsArray from 'lodash/isArray'; import loIsObject from 'lodash/isObject'; import util from '../util/util'; +import Cache from 'cachai'; export function linkModel(config) { var self = {}; diff --git a/web/js/map/ui.js b/web/js/map/ui.js index 639295f879..1884ace31b 100644 --- a/web/js/map/ui.js +++ b/web/js/map/ui.js @@ -27,6 +27,7 @@ import {mapDateLineBuilder} from './datelinebuilder'; import {mapLayerBuilder} from './layerbuilder'; import {MapRunningData} from './runningdata'; import {mapPrecacheTile} from './precachetile'; +import Cache from 'cachai'; export function mapui(models, config) { var id = 'wv-map'; diff --git a/web/js/util/util.js b/web/js/util/util.js index 698a1e61ea..ae9a6d6534 100644 --- a/web/js/util/util.js +++ b/web/js/util/util.js @@ -12,6 +12,7 @@ import wvui from '../ui/ui'; import browser from './browser'; import {events} from './events'; import load from './load'; +import Cache from 'cachai'; export default (function (self) { var canvas = null; From 4d4f68fc9f5cd1f4b884cb462957145c2e58f480 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 21 Nov 2017 13:57:24 -0500 Subject: [PATCH 072/242] Add CSS to bundle and improve build script --- .stylelintrc | 3 +- package-lock.json | 297 ++++++++++++++++++++++++++++++++++++++++- package.json | 5 +- tasks/build-js | 76 ----------- tasks/build.js | 56 ++++++++ web/css/bank.css | 9 -- web/css/main.css | 44 ++++++ web/css/projection.css | 32 ----- web/css/wv.date.css | 10 -- web/css/wv.fonts.css | 4 +- web/index.html | 63 +-------- web/js/main.js | 3 + 12 files changed, 404 insertions(+), 198 deletions(-) delete mode 100644 tasks/build-js create mode 100644 tasks/build.js create mode 100644 web/css/main.css diff --git a/.stylelintrc b/.stylelintrc index 514bccdeac..16c48152d1 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -39,7 +39,7 @@ "selector-max-id": 2, "selector-max-universal": 1, "selector-no-vendor-prefix": true, - "at-rule-whitelist": ["media", "charset", "font-face"], + "at-rule-whitelist": ["media", "charset", "font-face", "import"], "at-rule-no-vendor-prefix": true, "color-hex-case": "lower", "color-hex-length": "short", @@ -110,7 +110,6 @@ "media-query-list-comma-newline-before": "never-multi-line", "media-query-list-comma-space-after": "always-single-line", "media-query-list-comma-space-before": "never", - "at-rule-empty-line-before": "always", "at-rule-name-case": "lower", "at-rule-name-space-after": "always", "at-rule-semicolon-newline-after": "always", diff --git a/package-lock.json b/package-lock.json index dbb984373d..0f4553cbac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -427,6 +427,12 @@ "dev": true, "optional": true }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, "autobind-decorator": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/autobind-decorator/-/autobind-decorator-1.4.3.tgz", @@ -1535,6 +1541,55 @@ "evp_bytestokey": "1.0.3" } }, + "browserify-css": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/browserify-css/-/browserify-css-0.13.1.tgz", + "integrity": "sha512-xA0Y5V8QHhVAoD41LhGO+NteOrAGIwAez7MrfIowNderu17L6iHDB/2nLQrLDZvFVsI2ZDOQo4O4OkbTtDiH1A==", + "dev": true, + "requires": { + "clean-css": "4.1.9", + "concat-stream": "1.6.0", + "css": "2.2.1", + "find-node-modules": "1.0.4", + "lodash": "4.17.4", + "mime": "1.4.1", + "through2": "2.0.3" + }, + "dependencies": { + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", @@ -2786,6 +2841,29 @@ "randomfill": "1.0.3" } }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, "css-color-list": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz", @@ -2989,6 +3067,23 @@ "open": "0.0.5" }, "dependencies": { + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -3463,6 +3558,15 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -4376,6 +4480,15 @@ "fill-range": "2.2.3" } }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, "exposify": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/exposify/-/exposify-0.5.0.tgz", @@ -4783,6 +4896,30 @@ "traverse-chain": "0.1.0" } }, + "find-node-modules": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.4.tgz", + "integrity": "sha1-tt6zzMtpnIcDdne87eLF9YYrJVA=", + "dev": true, + "requires": { + "findup-sync": "0.4.2", + "merge": "1.2.0" + }, + "dependencies": { + "findup-sync": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", + "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + } + } + }, "find-parent-dir": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", @@ -4955,14 +5092,20 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", + "jsonfile": "4.0.0", "universalify": "0.1.1" }, "dependencies": { @@ -4971,6 +5114,15 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } } } }, @@ -6117,6 +6269,39 @@ "is-glob": "2.0.1" } }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.3.0" + }, + "dependencies": { + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -7240,6 +7425,15 @@ "os-tmpdir": "1.0.2" } }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", @@ -7777,6 +7971,12 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -8828,6 +9028,12 @@ } } }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -9700,6 +9906,12 @@ "error-ex": "1.3.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -11411,6 +11623,16 @@ } } }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -11425,6 +11647,12 @@ "protocol-buffers-schema": "2.2.0" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -11795,6 +12023,18 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", @@ -11812,6 +12052,12 @@ } } }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -13531,6 +13777,43 @@ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true }, + "uglifyify": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/uglifyify/-/uglifyify-4.0.5.tgz", + "integrity": "sha512-vVvJjL5rxAbvUs5m0zfxLCwy5fu6+6HBRY06cpWfOGTtKgAONWy7HDovTr28Y7kwXFNAAt+OMbRGP6ulqWqakA==", + "dev": true, + "requires": { + "convert-source-map": "1.1.3", + "extend": "1.3.0", + "minimatch": "3.0.4", + "through": "2.3.8", + "uglify-es": "3.1.10" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "extend": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.3.0.tgz", + "integrity": "sha1-0VFvsP9WJNLr+RI+odrFoZlABPg=", + "dev": true + }, + "uglify-es": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.10.tgz", + "integrity": "sha512-RwBX0aOeHvO8MKKUeLCArQGb9OZ6xA+EqfVxsE9wqK0saFYFVLIFvHeeCOg61C6NO6KCuSiG9OjNjCA+OB4nzg==", + "dev": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.6.1" + } + } + } + }, "uid-number": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", @@ -13591,6 +13874,12 @@ "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", "dev": true }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", diff --git a/package.json b/package.json index 8acede2cfe..46ca8fd9c1 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "e2e:firefox": "nightwatch -e firefox --skiptags wip", "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", "report": "node e2e/create-report.js", - "build": "grunt && node ./tasks/build-js" + "build": "grunt && node ./tasks/build" }, "devDependencies": { "autoprefixer": "7.1.1", @@ -30,6 +30,7 @@ "babel-preset-env": "^1.6.1", "babelify": "^7.3.0", "browserify": "^14.4.0", + "browserify-css": "^0.13.1", "browserify-shim": "^3.8.14", "browserstack-capabilities": "^0.4.0", "browserstack-local": "^1.3.0", @@ -43,6 +44,7 @@ "eslint-plugin-promise": "^3.6.0", "eslint-plugin-standard": "^3.0.1", "express": "4.15.2", + "fs-extra": "^4.0.2", "geckodriver": "1.2.0", "grunt": "0.4.x", "grunt-buster": "0.4.x", @@ -72,6 +74,7 @@ "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", "stylelint": "^8.0.0", + "uglifyify": "^4.0.5", "watchify": "^3.9.0" }, "dependencies": { diff --git a/tasks/build-js b/tasks/build-js deleted file mode 100644 index 8cfbd8030e..0000000000 --- a/tasks/build-js +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env node -// template from https://github.com/petesaia/node-native-task-runner/blob/master/bin/build-js - -// const UglifyJS = require('uglify-js'); -const fs = require('fs'); -const browserify = require('browserify'); -const watchify = require('watchify'); -const outputDir = './web/build/'; -const entry = 'main.js'; -const output = outputDir + 'wv.js'; -const outputMin = outputDir + 'wv.min.js'; - -if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir); -} - -// override, should set this from an argument: --dev or --prod -// and default to dev -process.env.NODE_ENV = 'development'; - -const b = browserify(entry, { - debug: true, // Makes bundle size larger - cache: {}, - packageCache: {}, - plugin: [process.env.NODE_ENV !== 'production' ? watchify : null], - basedir: './web/js' -}) - .transform('babelify', { presets: ['env'] }) - .transform('browserify-shim', {global: true}); - -function bundle() { - const stream = fs.createWriteStream(output); - - const onComplete = (function() { - const begin = Date.now(); - - return function() { - console.log('Build complete in ' + (Date.now() - begin) / 1000 + 'secs'); - }; - })(); - - b.bundle() - .on('error', function(err) { - console.error(err); - this.emit('end'); - }) - .pipe(stream); - - stream.on('finish', function() { - if (process.env.NODE_ENV === 'production') { - // console.log('Complete, now compressing because production.'); - - // const minified = UglifyJS.minify(fs.readFileSync(output, 'utf8'), { - // // warnings: true, - // compress: { - // dead_code: true - // } - // }); - - // if (minified.error) { - // return console.error('UGLIFY Error:', minified.error); - // } - - // fs.writeFileSync(outputMin, minified.code); - // onComplete(); - - } else { - console.log('All done! (dev mode - not compressing)'); - onComplete(); - } - }); -} - -bundle(); - -b.on('update', bundle); diff --git a/tasks/build.js b/tasks/build.js new file mode 100644 index 0000000000..fcf45945c5 --- /dev/null +++ b/tasks/build.js @@ -0,0 +1,56 @@ +#!/usr/bin/env node +const fs = require('fs-extra'); +const browserify = require('browserify'); +const watchify = require('watchify'); +const path = require('path'); + +const isDebug = process.env.NODE_ENV === 'development'; +const outputDir = './web/build/'; +const entryPoint = './web/js/main.js'; +const outputPath = outputDir + 'wv.js'; + +var bundler = browserify(entryPoint, { + debug: isDebug, // Include source maps (makes bundle size larger) + fullPaths: isDebug, // For use with https://www.npmjs.com/package/disc + plugin: [isDebug ? watchify : null] +}).transform('browserify-css', { + minify: !isDebug, + output: outputDir + 'wv.css', + processRelativeUrl: copyAssets +}).transform('babelify', { + presets: ['env'] +}).transform('browserify-shim', { + global: true +}).transform('uglifyify'); // With sourcemaps turned on, it's ok to uglify in dev + +function copyAssets(url) { + const relativePath = url.split('?')[0].split('#')[0]; + const filename = path.basename(relativePath); + const isAsset = filename.match(/.+\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/); + if (isAsset) { + const qs = url.substring(relativePath.length); + const source = path.join(process.cwd(), relativePath); + const newPath = path.join('assets/', filename); + const target = path.join(process.cwd(), outputDir, 'assets/', filename); + fs.copySync(source, target); + return newPath + qs; + } + return url; +} + +function bundle() { + if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir); + const begin = Date.now(); + var stream = fs.createWriteStream(outputPath); + bundler.bundle().on('error', function(err) { + console.error(err); + this.emit('end'); + }).pipe(stream); + stream.on('finish', function() { + console.log('Build complete in ' + (Date.now() - begin) / 1000 + 's'); + }); +} + +bundle(); + +bundler.on('update', bundle); diff --git a/web/css/bank.css b/web/css/bank.css index 5491edeefa..5f9601ec4b 100644 --- a/web/css/bank.css +++ b/web/css/bank.css @@ -112,15 +112,6 @@ h4 { text-transform: uppercase; } -#callSelectorLink { - display: inline-block; - width: 32px; - height: 32px; - background: transparent url("../images/addLayers.png"); - margin-left: 50px; - float: right; -} - .bank div, .bank ul { display: block; diff --git a/web/css/main.css b/web/css/main.css new file mode 100644 index 0000000000..0c25515047 --- /dev/null +++ b/web/css/main.css @@ -0,0 +1,44 @@ +/* Dependency CSS */ +@import url("node_modules/font-awesome/css/font-awesome.css"); +@import url("node_modules/jquery-ui/themes/base/minified/jquery-ui.min.css"); +@import url("node_modules/icheck/skins/square/grey.css"); +@import url("node_modules/icheck/skins/square/red.css"); +@import url("node_modules/icheck/skins/line/red.css"); +@import url("node_modules/jscrollpane/style/jquery.jscrollpane.css"); +@import url("node_modules/perfect-scrollbar/dist/css/perfect-scrollbar.css"); +@import url("node_modules/mobiscroll-jquery/dist/css/mobiscroll.css"); +@import url("node_modules/jquery.joyride/jquery.joyride.css"); +@import url("node_modules/jquery-jcrop/css/jquery.Jcrop.css"); +@import url("node_modules/ol/ol.css"); +@import url("node_modules/nouislider-browser/jquery.nouislider.css"); + +/* App CSS */ +@import url("wv.fonts.css"); +@import url("wv.main.css"); +@import url("util.css"); +@import url("wv.alert.css"); +@import url("bank.css"); +@import url("wv.map.css"); +@import url("wv.link.css"); +@import url("wv.palettes.css"); +@import url("wv.image.css"); +@import url("wv.debug.css"); +@import url("projection.css"); +@import url("wv.date.css"); +@import url("menuPicker.css"); +@import url("wv.tour.css"); +@import url("products.css"); +@import url("indicator.css"); +@import url("wv.events.css"); +@import url("dataDownload.css"); +@import url("wv.sidebar.css"); +@import url("wv.layers.modal.css"); +@import url("wv.scrollbar.css"); +@import url("wv.layers.options.css"); +@import url("wv.layers.info.css"); +@import url("wv.timeline.css"); +@import url("wv.anim.widget.css"); +@import url("wv.dateselector.css"); +@import url("wv.tooltip.css"); +@import url("wv.mobile.css"); +@import url("../pages/css/wv.document.css"); diff --git a/web/css/projection.css b/web/css/projection.css index 595e817c4d..3233791535 100644 --- a/web/css/projection.css +++ b/web/css/projection.css @@ -14,14 +14,6 @@ div.sw_current { height: 40px; } -#projection div.sw_current { - background-image: url("../images/geographic.png"); -} - -#projection div.sw_current:hover { - background-image: url("../images/geographicon.png"); -} - #projection ul li { margin: 0 !important; } @@ -31,30 +23,6 @@ div.sw_current { margin-top: 2px; } -#projection ul li div.hidden a.sw_arctic { - background-image: url("../images/arctic.png"); -} - -#projection ul li div.hidden a.sw_antarctic { - background-image: url("../images/antarctic.png"); -} - -#projection ul li div.hidden a.sw_geographic { - background-image: url("../images/geographic.png"); -} - -#projection ul li div.hidden a.sw_arctic:hover { - background-image: url("../images/arcticon.png"); -} - -#projection ul li div.hidden a.sw_antarctic:hover { - background-image: url("../images/antarcticon.png"); -} - -#projection ul li div.hidden a.sw_geographic:hover { - background-image: url("../images/geographicon.png"); -} - #projection ul li:hover div.hidden { z-index: 299; display: block; diff --git a/web/css/wv.date.css b/web/css/wv.date.css index eaf30b1e35..cbc2f5521c 100644 --- a/web/css/wv.date.css +++ b/web/css/wv.date.css @@ -87,16 +87,6 @@ a.ecbutton { top: 3px; } -a.collapse { - background-image: url("../images/collapseDown.png"); - background-repeat: no-repeat; -} - -a.expand { - background-image: url("../images/expandUp.png"); - background-repeat: no-repeat; -} - .dateSpanSlider { display: none !important; } diff --git a/web/css/wv.fonts.css b/web/css/wv.fonts.css index 948fae3164..b777476175 100644 --- a/web/css/wv.fonts.css +++ b/web/css/wv.fonts.css @@ -18,8 +18,8 @@ font-family: 'Open Sans'; font-style: normal; font-weight: 400; - src: url('../font/OpenSans/Light/OpenSans-Regular.eot'); - src: local('Open Sans Regular'), local('OpenSans-Regular'), url('../font/OpenSans/Light/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../font/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../font/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../font/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'); + src: url('../font/OpenSans/Regular/OpenSans-Regular.eot'); + src: local('Open Sans Regular'), local('OpenSans-Regular'), url('../font/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../font/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../font/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../font/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'); } @font-face { /* Open Sans Italic */ diff --git a/web/index.html b/web/index.html index 866a6ad0f4..38548a7a86 100644 --- a/web/index.html +++ b/web/index.html @@ -39,69 +39,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web/js/main.js b/web/js/main.js index f45b19f828..c783508ae0 100644 --- a/web/js/main.js +++ b/web/js/main.js @@ -3,6 +3,9 @@ import $ from 'jquery'; import loEach from 'lodash/each'; // import {GA as googleAnalytics} from 'worldview-components'; +// Styles +import '../css/main.css'; + // Utils import util from './util/util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... // Date From afee8fdcb18f449a97094977e199e485b10119a5 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 21 Nov 2017 16:24:22 -0500 Subject: [PATCH 073/242] Rename CSS and remove dead code --- web/css/{wv.alert.css => alert.css} | 0 .../{wv.anim.widget.css => anim.widget.css} | 0 web/css/{wv.date.css => date.css} | 0 .../{wv.dateselector.css => dateselector.css} | 0 web/css/{wv.debug.css => debug.css} | 0 web/css/{wv.events.css => events.css} | 0 web/css/{wv.fonts.css => fonts.css} | 0 web/css/{wv.image.css => image.css} | 0 .../{wv.layers.info.css => layers.info.css} | 0 .../{wv.layers.modal.css => layers.modal.css} | 0 ....layers.options.css => layers.options.css} | 0 web/css/{wv.link.css => link.css} | 0 web/css/main.css | 44 +++++++++---------- web/css/{wv.map.css => map.css} | 0 web/css/{wv.mobile.css => mobile.css} | 0 web/css/{wv.palettes.css => palettes.css} | 0 web/css/{wv.main.css => reset.css} | 0 web/css/{wv.scrollbar.css => scrollbar.css} | 0 web/css/{wv.sidebar.css => sidebar.css} | 0 web/css/{wv.timeline.css => timeline.css} | 0 web/css/{wv.tooltip.css => tooltip.css} | 0 web/css/{wv.tour.css => tour.css} | 0 web/css/wv.dateline.css | 10 ----- .../css/{wv.document.css => document.css} | 0 .../css/{wv.standalone.css => standalone.css} | 0 25 files changed, 22 insertions(+), 32 deletions(-) rename web/css/{wv.alert.css => alert.css} (100%) rename web/css/{wv.anim.widget.css => anim.widget.css} (100%) rename web/css/{wv.date.css => date.css} (100%) rename web/css/{wv.dateselector.css => dateselector.css} (100%) rename web/css/{wv.debug.css => debug.css} (100%) rename web/css/{wv.events.css => events.css} (100%) rename web/css/{wv.fonts.css => fonts.css} (100%) rename web/css/{wv.image.css => image.css} (100%) rename web/css/{wv.layers.info.css => layers.info.css} (100%) rename web/css/{wv.layers.modal.css => layers.modal.css} (100%) rename web/css/{wv.layers.options.css => layers.options.css} (100%) rename web/css/{wv.link.css => link.css} (100%) rename web/css/{wv.map.css => map.css} (100%) rename web/css/{wv.mobile.css => mobile.css} (100%) rename web/css/{wv.palettes.css => palettes.css} (100%) rename web/css/{wv.main.css => reset.css} (100%) rename web/css/{wv.scrollbar.css => scrollbar.css} (100%) rename web/css/{wv.sidebar.css => sidebar.css} (100%) rename web/css/{wv.timeline.css => timeline.css} (100%) rename web/css/{wv.tooltip.css => tooltip.css} (100%) rename web/css/{wv.tour.css => tour.css} (100%) delete mode 100644 web/css/wv.dateline.css rename web/pages/css/{wv.document.css => document.css} (100%) rename web/pages/css/{wv.standalone.css => standalone.css} (100%) diff --git a/web/css/wv.alert.css b/web/css/alert.css similarity index 100% rename from web/css/wv.alert.css rename to web/css/alert.css diff --git a/web/css/wv.anim.widget.css b/web/css/anim.widget.css similarity index 100% rename from web/css/wv.anim.widget.css rename to web/css/anim.widget.css diff --git a/web/css/wv.date.css b/web/css/date.css similarity index 100% rename from web/css/wv.date.css rename to web/css/date.css diff --git a/web/css/wv.dateselector.css b/web/css/dateselector.css similarity index 100% rename from web/css/wv.dateselector.css rename to web/css/dateselector.css diff --git a/web/css/wv.debug.css b/web/css/debug.css similarity index 100% rename from web/css/wv.debug.css rename to web/css/debug.css diff --git a/web/css/wv.events.css b/web/css/events.css similarity index 100% rename from web/css/wv.events.css rename to web/css/events.css diff --git a/web/css/wv.fonts.css b/web/css/fonts.css similarity index 100% rename from web/css/wv.fonts.css rename to web/css/fonts.css diff --git a/web/css/wv.image.css b/web/css/image.css similarity index 100% rename from web/css/wv.image.css rename to web/css/image.css diff --git a/web/css/wv.layers.info.css b/web/css/layers.info.css similarity index 100% rename from web/css/wv.layers.info.css rename to web/css/layers.info.css diff --git a/web/css/wv.layers.modal.css b/web/css/layers.modal.css similarity index 100% rename from web/css/wv.layers.modal.css rename to web/css/layers.modal.css diff --git a/web/css/wv.layers.options.css b/web/css/layers.options.css similarity index 100% rename from web/css/wv.layers.options.css rename to web/css/layers.options.css diff --git a/web/css/wv.link.css b/web/css/link.css similarity index 100% rename from web/css/wv.link.css rename to web/css/link.css diff --git a/web/css/main.css b/web/css/main.css index 0c25515047..57bbe24b70 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -13,32 +13,32 @@ @import url("node_modules/nouislider-browser/jquery.nouislider.css"); /* App CSS */ -@import url("wv.fonts.css"); -@import url("wv.main.css"); +@import url("fonts.css"); +@import url("reset.css"); @import url("util.css"); -@import url("wv.alert.css"); +@import url("alert.css"); @import url("bank.css"); -@import url("wv.map.css"); -@import url("wv.link.css"); -@import url("wv.palettes.css"); -@import url("wv.image.css"); -@import url("wv.debug.css"); +@import url("map.css"); +@import url("link.css"); +@import url("palettes.css"); +@import url("image.css"); +@import url("debug.css"); @import url("projection.css"); -@import url("wv.date.css"); +@import url("date.css"); @import url("menuPicker.css"); -@import url("wv.tour.css"); +@import url("tour.css"); @import url("products.css"); @import url("indicator.css"); -@import url("wv.events.css"); +@import url("events.css"); @import url("dataDownload.css"); -@import url("wv.sidebar.css"); -@import url("wv.layers.modal.css"); -@import url("wv.scrollbar.css"); -@import url("wv.layers.options.css"); -@import url("wv.layers.info.css"); -@import url("wv.timeline.css"); -@import url("wv.anim.widget.css"); -@import url("wv.dateselector.css"); -@import url("wv.tooltip.css"); -@import url("wv.mobile.css"); -@import url("../pages/css/wv.document.css"); +@import url("sidebar.css"); +@import url("layers.modal.css"); +@import url("scrollbar.css"); +@import url("layers.options.css"); +@import url("layers.info.css"); +@import url("timeline.css"); +@import url("anim.widget.css"); +@import url("dateselector.css"); +@import url("tooltip.css"); +@import url("mobile.css"); +@import url("../pages/css/document.css"); diff --git a/web/css/wv.map.css b/web/css/map.css similarity index 100% rename from web/css/wv.map.css rename to web/css/map.css diff --git a/web/css/wv.mobile.css b/web/css/mobile.css similarity index 100% rename from web/css/wv.mobile.css rename to web/css/mobile.css diff --git a/web/css/wv.palettes.css b/web/css/palettes.css similarity index 100% rename from web/css/wv.palettes.css rename to web/css/palettes.css diff --git a/web/css/wv.main.css b/web/css/reset.css similarity index 100% rename from web/css/wv.main.css rename to web/css/reset.css diff --git a/web/css/wv.scrollbar.css b/web/css/scrollbar.css similarity index 100% rename from web/css/wv.scrollbar.css rename to web/css/scrollbar.css diff --git a/web/css/wv.sidebar.css b/web/css/sidebar.css similarity index 100% rename from web/css/wv.sidebar.css rename to web/css/sidebar.css diff --git a/web/css/wv.timeline.css b/web/css/timeline.css similarity index 100% rename from web/css/wv.timeline.css rename to web/css/timeline.css diff --git a/web/css/wv.tooltip.css b/web/css/tooltip.css similarity index 100% rename from web/css/wv.tooltip.css rename to web/css/tooltip.css diff --git a/web/css/wv.tour.css b/web/css/tour.css similarity index 100% rename from web/css/wv.tour.css rename to web/css/tour.css diff --git a/web/css/wv.dateline.css b/web/css/wv.dateline.css deleted file mode 100644 index aa97ec6112..0000000000 --- a/web/css/wv.dateline.css +++ /dev/null @@ -1,10 +0,0 @@ -.dateline { - stroke: rgb(0, 0, 0); - stroke-width: 2; - stroke-dasharray: 10, 5; -} - -.dateline-text { - pointer-events: none; - display: block; -} diff --git a/web/pages/css/wv.document.css b/web/pages/css/document.css similarity index 100% rename from web/pages/css/wv.document.css rename to web/pages/css/document.css diff --git a/web/pages/css/wv.standalone.css b/web/pages/css/standalone.css similarity index 100% rename from web/pages/css/wv.standalone.css rename to web/pages/css/standalone.css From 1f5c06369455ae29835d79245045043be2db6725 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 21 Nov 2017 17:55:38 -0500 Subject: [PATCH 074/242] Use postcss instead of browserify to bundle CSS --- package-lock.json | 3280 +++++++++++++++++++++++++++++--- package.json | 8 +- tasks/buildCSS.js | 29 + tasks/{build.js => buildJS.js} | 22 +- web/css/main.css | 24 +- web/js/main.js | 3 - 6 files changed, 3108 insertions(+), 258 deletions(-) create mode 100644 tasks/buildCSS.js rename tasks/{build.js => buildJS.js} (59%) diff --git a/package-lock.json b/package-lock.json index 0f4553cbac..7a2c64f2b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -134,6 +134,12 @@ "repeat-string": "1.6.1" } }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -2095,6 +2101,36 @@ "map-obj": "1.0.1" } }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000766", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000766", + "electron-to-chromium": "1.3.27" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + } + } + }, "caniuse-db": { "version": "1.0.30000766", "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000766.tgz", @@ -2202,6 +2238,42 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "classnames": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", @@ -2246,6 +2318,12 @@ "restore-cursor": "2.0.0" } }, + "cli-spinners": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", + "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "dev": true + }, "cli-table": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", @@ -2298,6 +2376,12 @@ } } }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, "clone-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", @@ -2314,12 +2398,46 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + }, + "dependencies": { + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": 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 + }, "coffee-script": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", "dev": true }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -2341,6 +2459,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, "colorguard": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz", @@ -2439,6 +2566,25 @@ } } }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + } + } + }, "colors": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", @@ -2986,6 +3132,150 @@ } } }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "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 + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000766", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000766", + "electron-to-chromium": "1.3.27" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -3098,6 +3388,12 @@ "integrity": "sha1-1tPEMYCgP1+0/JV/4Tgt3OXLmsg=", "dev": true }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -3525,6 +3821,12 @@ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", "dev": true }, + "dependency-graph": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.2.tgz", + "integrity": "sha512-fuF8ISen2Rk75wQ4tWHcfJ/IV1cmPMFE+wth10tAnj/JkpqMJzNW5oKpVOCAkpdfYD+NwtA3kL3nOeyprxPG2A==", + "dev": true + }, "deps-sort": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", @@ -4447,6 +4749,21 @@ "safe-buffer": "5.1.1" } }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, "execall": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", @@ -5172,13 +5489,15 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "optional": true, "requires": { @@ -5188,18 +5507,21 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.1.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -5209,42 +5531,49 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { @@ -5253,7 +5582,8 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { "inherits": "2.0.3" @@ -5261,7 +5591,8 @@ }, "boom": { "version": "2.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.16.3" @@ -5269,7 +5600,8 @@ }, "brace-expansion": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { "balanced-match": "0.4.2", @@ -5278,29 +5610,34 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, "optional": true }, "co": { "version": "4.6.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -5308,22 +5645,26 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.10.1" @@ -5331,7 +5672,8 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, "requires": { @@ -5340,7 +5682,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5348,7 +5691,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "optional": true, "requires": { @@ -5357,30 +5701,35 @@ }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", + "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { @@ -5389,24 +5738,28 @@ }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "optional": true, "requires": { @@ -5417,12 +5770,14 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -5433,7 +5788,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "optional": true, "requires": { @@ -5444,7 +5800,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -5460,7 +5817,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "optional": true, "requires": { @@ -5469,7 +5827,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5477,7 +5836,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5490,18 +5850,21 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "har-schema": { "version": "1.0.5", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "optional": true, "requires": { @@ -5511,13 +5874,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.10.1", @@ -5528,12 +5893,14 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "optional": true, "requires": { @@ -5544,7 +5911,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -5553,18 +5921,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.4", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -5572,24 +5943,28 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true, "requires": { @@ -5598,19 +5973,22 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "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", - "bundled": true, + "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, "requires": { @@ -5619,19 +5997,22 @@ }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "optional": true, "requires": { @@ -5643,7 +6024,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5651,12 +6033,14 @@ }, "mime-db": { "version": "1.27.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { "mime-db": "1.27.0" @@ -5664,7 +6048,8 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -5672,12 +6057,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -5685,7 +6072,8 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, @@ -5698,7 +6086,8 @@ }, "node-pre-gyp": { "version": "0.6.39", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", + "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", "dev": true, "optional": true, "requires": { @@ -5717,7 +6106,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -5727,7 +6117,8 @@ }, "npmlog": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "dev": true, "optional": true, "requires": { @@ -5739,24 +6130,28 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -5764,19 +6159,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, "optional": true, "requires": { @@ -5786,35 +6184,41 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "optional": true, "requires": { @@ -5826,7 +6230,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -5834,7 +6239,8 @@ }, "readable-stream": { "version": "2.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -5848,7 +6254,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "optional": true, "requires": { @@ -5878,7 +6285,8 @@ }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { "glob": "7.1.2" @@ -5886,30 +6294,35 @@ }, "safe-buffer": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "semver": { "version": "5.3.0", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.16.3" @@ -5917,7 +6330,8 @@ }, "sshpk": { "version": "1.13.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "optional": true, "requires": { @@ -5934,7 +6348,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -5942,7 +6357,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -5952,7 +6368,8 @@ }, "string_decoder": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -5960,13 +6377,15 @@ }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -5974,13 +6393,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { "block-stream": "0.0.9", @@ -5990,7 +6411,8 @@ }, "tar-pack": { "version": "3.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "dev": true, "optional": true, "requires": { @@ -6006,7 +6428,8 @@ }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "optional": true, "requires": { @@ -6015,7 +6438,8 @@ }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "optional": true, "requires": { @@ -6024,30 +6448,35 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "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", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.0.1", - "bundled": true, + "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", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "optional": true, "requires": { @@ -6056,7 +6485,8 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -6065,7 +6495,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } @@ -6180,6 +6611,12 @@ "is-property": "1.0.2" } }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", @@ -6197,8 +6634,14 @@ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, - "get-uri": { - "version": "2.0.1", + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-uri": { + "version": "2.0.1", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.1.tgz", "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", "dev": true, @@ -7446,6 +7889,12 @@ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, "html-tags": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", @@ -7696,6 +8145,12 @@ "loose-envify": "1.3.1" } }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ip/-/ip-1.0.1.tgz", @@ -7714,6 +8169,12 @@ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7953,6 +8414,15 @@ "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=", "dev": true }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", @@ -8379,6 +8849,15 @@ } } }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, "ldjson-stream": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", @@ -8732,6 +9211,12 @@ "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, "lodash.uniqby": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", @@ -8826,6 +9311,12 @@ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -8853,6 +9344,12 @@ "outlayer": "2.1.1" } }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, "mathml-tag-names": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz", @@ -8936,6 +9433,15 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -9495,6 +10001,18 @@ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, "nouislider-browser": { "version": "5.0.0-1", "resolved": "https://registry.npmjs.org/nouislider-browser/-/nouislider-browser-5.0.0-1.tgz", @@ -9573,6 +10091,15 @@ } } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, "npmconf": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", @@ -9733,6 +10260,45 @@ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, + "ora": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.3.0.tgz", + "integrity": "sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "log-symbols": "1.0.2" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -9745,6 +10311,17 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9780,6 +10357,12 @@ "shell-quote": "1.6.1" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -9951,6 +10534,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -10433,13 +11022,15 @@ "supports-color": "4.5.0" } }, - "postcss-less": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", - "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" }, "dependencies": { "ansi-styles": { @@ -10504,108 +11095,131 @@ } } }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-reporter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", - "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", + "postcss-cli": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-4.1.1.tgz", + "integrity": "sha1-uUvY//u3rB9i8mB+ePyTl/f2Ol0=", "dev": true, "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.18" + "chalk": "2.3.0", + "chokidar": "1.7.0", + "dependency-graph": "0.5.2", + "fs-extra": "4.0.2", + "get-stdin": "5.0.1", + "globby": "6.1.0", + "ora": "1.3.0", + "postcss": "6.0.14", + "postcss-load-config": "1.2.0", + "postcss-reporter": "5.0.0", + "pretty-hrtime": "1.0.3", + "read-cache": "1.0.0", + "yargs": "8.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", + "string-width": "1.0.2", "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "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 - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "wrap-ansi": "2.1.0" }, "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "has-flag": "1.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", "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=", + "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, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true + }, + "log-symbols": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", + "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", + "dev": true, + "requires": { + "chalk": "2.3.0" + } + }, + "postcss-reporter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", + "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "lodash": "4.17.4", + "log-symbols": "2.1.0", + "postcss": "6.0.14" + } + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } } } }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", - "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", - "dev": true, - "requires": { - "postcss": "6.0.14" - } - }, - "postcss-scss": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", - "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", "dev": true, "requires": { - "postcss": "5.2.18" + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" }, "dependencies": { "ansi-styles": { @@ -10670,25 +11284,14 @@ } } }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-sorting": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-2.1.0.tgz", - "integrity": "sha1-MrHpr6kTuyJaatB21QPY+YO7SoI=", + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "lodash": "4.17.4", - "postcss": "5.2.18" + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" }, "dependencies": { "ansi-styles": { @@ -10724,11 +11327,1911 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-import": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.0.0.tgz", + "integrity": "sha1-qWLi34LTvFptpqOGhBdHIE9B71s=", + "dev": true, + "requires": { + "postcss": "6.0.14", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.5.0" + } + }, + "postcss-less": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", + "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "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 + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000766", + "electron-to-chromium": "1.3.27" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.15.0", + "log-symbols": "1.0.2", + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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 + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", + "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, + "postcss-scss": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", + "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-sorting": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-2.1.0.tgz", + "integrity": "sha1-MrHpr6kTuyJaatB21QPY+YO7SoI=", + "dev": true, + "requires": { + "lodash": "4.17.4", + "postcss": "5.2.18" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 }, "postcss": { "version": "5.2.18", @@ -10759,12 +13262,98 @@ } } }, + "postcss-url": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.2.1.tgz", + "integrity": "sha512-jycW2XYgU39SpA+MJOOP7Fe7I2NxiCq8rOXiG61NBoJ4vG/WFn2IhS18vGiphla4VTN3WoHJOBMMJz1n4h1VYQ==", + "dev": true, + "requires": { + "mime": "1.4.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.14", + "xxhashjs": "0.2.1" + } + }, "postcss-value-parser": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "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 + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -10793,6 +13382,12 @@ "meow": "3.7.0" } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, "prettysize": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz", @@ -10977,6 +13572,16 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -11227,6 +13832,15 @@ "readable-stream": "2.3.3" } }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, "read-file-stdin": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz", @@ -11340,6 +13954,42 @@ "dev": true, "optional": true }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "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 + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "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 + } + } + }, "referee": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/referee/-/referee-1.0.3.tgz", @@ -11573,12 +14223,24 @@ "throttleit": "1.0.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", "dev": true }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -11732,6 +14394,12 @@ "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", "dev": true }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -11837,6 +14505,12 @@ } } }, + "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 + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -12017,6 +14691,15 @@ "socks": "1.1.10" } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12290,6 +14973,12 @@ "readable-stream": "2.3.3" } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", @@ -12364,6 +15053,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -13347,6 +16042,54 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + }, + "dependencies": { + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + } + } + }, "sync-request": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-4.1.0.tgz", @@ -13844,6 +16587,21 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", @@ -13958,6 +16716,12 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -14019,12 +16783,24 @@ "integrity": "sha1-sbqqctx3tPjCZ7yy/r5mjS/ArYc=", "dev": true }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, "which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", "dev": true }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -14053,6 +16829,38 @@ "worldview-options-eosdis": { "version": "github:nasa-gibs/worldview-options-eosdis#790a7104bf06734bf27ef90a481f995623e631c8" }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "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, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -14111,6 +16919,21 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "xxhashjs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.1.tgz", + "integrity": "sha1-m76b6JYUKXbfo0wGGy0GjEPTDeA=", + "dev": true, + "requires": { + "cuint": "0.2.2" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -14137,6 +16960,23 @@ } } }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, "yauzl": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", diff --git a/package.json b/package.json index 46ca8fd9c1..c7fdf8b404 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "e2e:firefox": "nightwatch -e firefox --skiptags wip", "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", "report": "node e2e/create-report.js", - "build": "grunt && node ./tasks/build" + "build:js": "node ./tasks/buildJS", + "build:css": "node ./tasks/buildCSS" }, "devDependencies": { "autoprefixer": "7.1.1", @@ -36,6 +37,7 @@ "browserstack-local": "^1.3.0", "buster": "0.7.12", "chromedriver": "2.25.1", + "cssnano": "^3.10.0", "cucumber": "^3.0.2", "cucumber-html-reporter": "^3.0.4", "eslint-config-standard": "^10.2.1", @@ -44,7 +46,6 @@ "eslint-plugin-promise": "^3.6.0", "eslint-plugin-standard": "^3.0.1", "express": "4.15.2", - "fs-extra": "^4.0.2", "geckodriver": "1.2.0", "grunt": "0.4.x", "grunt-buster": "0.4.x", @@ -71,6 +72,9 @@ "nightwatch-cucumber": "^8.2.10", "npm-run-all": "^4.1.1", "phantomjs": "2.1.x", + "postcss-cli": "^4.1.1", + "postcss-import": "^11.0.0", + "postcss-url": "^7.2.1", "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", "stylelint": "^8.0.0", diff --git a/tasks/buildCSS.js b/tasks/buildCSS.js new file mode 100644 index 0000000000..6dcdfdd766 --- /dev/null +++ b/tasks/buildCSS.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node +const fs = require('fs'); +const postcss = require('postcss'); +const postcssImport = require('postcss-import'); +const url = require('postcss-url'); +const autoprefixer = require('autoprefixer'); +const stylelint = require('stylelint'); +const cssnano = require('cssnano'); + +fs.readFile('web/css/main.css', (err, css) => { + if (err) console.log(err); + postcss([postcssImport, autoprefixer, stylelint, cssnano]) + .use(url({ + url: 'copy', + assetsPath: 'assets/css' + })) + .process(css, { + from: 'web/css/main.css', + to: 'web/build/wv.css', + map: { inline: false } // Source maps are saved to a file + }) + .then(result => { + fs.writeFile('web/build/wv.css', result.css, function() {}); + if (result.map) { + // This allows debugging while still minifying the output in dev + fs.writeFile('web/build/wv.css.map', result.map, function() {}); + } + }); +}); diff --git a/tasks/build.js b/tasks/buildJS.js similarity index 59% rename from tasks/build.js rename to tasks/buildJS.js index fcf45945c5..9ea451409a 100644 --- a/tasks/build.js +++ b/tasks/buildJS.js @@ -1,8 +1,7 @@ #!/usr/bin/env node -const fs = require('fs-extra'); +const fs = require('fs'); const browserify = require('browserify'); const watchify = require('watchify'); -const path = require('path'); const isDebug = process.env.NODE_ENV === 'development'; const outputDir = './web/build/'; @@ -13,31 +12,12 @@ var bundler = browserify(entryPoint, { debug: isDebug, // Include source maps (makes bundle size larger) fullPaths: isDebug, // For use with https://www.npmjs.com/package/disc plugin: [isDebug ? watchify : null] -}).transform('browserify-css', { - minify: !isDebug, - output: outputDir + 'wv.css', - processRelativeUrl: copyAssets }).transform('babelify', { presets: ['env'] }).transform('browserify-shim', { global: true }).transform('uglifyify'); // With sourcemaps turned on, it's ok to uglify in dev -function copyAssets(url) { - const relativePath = url.split('?')[0].split('#')[0]; - const filename = path.basename(relativePath); - const isAsset = filename.match(/.+\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/); - if (isAsset) { - const qs = url.substring(relativePath.length); - const source = path.join(process.cwd(), relativePath); - const newPath = path.join('assets/', filename); - const target = path.join(process.cwd(), outputDir, 'assets/', filename); - fs.copySync(source, target); - return newPath + qs; - } - return url; -} - function bundle() { if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir); const begin = Date.now(); diff --git a/web/css/main.css b/web/css/main.css index 57bbe24b70..b1fb8c2996 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -1,16 +1,16 @@ /* Dependency CSS */ -@import url("node_modules/font-awesome/css/font-awesome.css"); -@import url("node_modules/jquery-ui/themes/base/minified/jquery-ui.min.css"); -@import url("node_modules/icheck/skins/square/grey.css"); -@import url("node_modules/icheck/skins/square/red.css"); -@import url("node_modules/icheck/skins/line/red.css"); -@import url("node_modules/jscrollpane/style/jquery.jscrollpane.css"); -@import url("node_modules/perfect-scrollbar/dist/css/perfect-scrollbar.css"); -@import url("node_modules/mobiscroll-jquery/dist/css/mobiscroll.css"); -@import url("node_modules/jquery.joyride/jquery.joyride.css"); -@import url("node_modules/jquery-jcrop/css/jquery.Jcrop.css"); -@import url("node_modules/ol/ol.css"); -@import url("node_modules/nouislider-browser/jquery.nouislider.css"); +@import url("../../node_modules/font-awesome/css/font-awesome.css"); +@import url("../../node_modules/jquery-ui/themes/base/minified/jquery-ui.min.css"); +@import url("../../node_modules/icheck/skins/square/grey.css"); +@import url("../../node_modules/icheck/skins/square/red.css"); +@import url("../../node_modules/icheck/skins/line/red.css"); +@import url("../../node_modules/jscrollpane/style/jquery.jscrollpane.css"); +@import url("../../node_modules/perfect-scrollbar/dist/css/perfect-scrollbar.css"); +@import url("../../node_modules/mobiscroll-jquery/dist/css/mobiscroll.css"); +@import url("../../node_modules/jquery.joyride/jquery.joyride.css"); +@import url("../../node_modules/jquery-jcrop/css/jquery.Jcrop.css"); +@import url("../../node_modules/ol/ol.css"); +@import url("../../node_modules/nouislider-browser/jquery.nouislider.css"); /* App CSS */ @import url("fonts.css"); diff --git a/web/js/main.js b/web/js/main.js index c783508ae0..f45b19f828 100644 --- a/web/js/main.js +++ b/web/js/main.js @@ -3,9 +3,6 @@ import $ from 'jquery'; import loEach from 'lodash/each'; // import {GA as googleAnalytics} from 'worldview-components'; -// Styles -import '../css/main.css'; - // Utils import util from './util/util'; // Maybe this is the time to remove the util file from core and put everything from there in the worldview-components util.... // Date From e26c8248e312604d34856187137fed3aaae8b783 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 21 Nov 2017 18:12:56 -0500 Subject: [PATCH 075/242] Remove dead code from Gruntfile --- Gruntfile.js | 144 +-- deploy/wv.css.json | 30 - deploy/wv.js.json | 108 --- package-lock.json | 2208 ++++++++++++++------------------------------ package.json | 9 +- tasks/buildJS.js | 4 +- 6 files changed, 706 insertions(+), 1797 deletions(-) delete mode 100644 deploy/wv.css.json delete mode 100644 deploy/wv.js.json diff --git a/Gruntfile.js b/Gruntfile.js index 5f182c1c6c..4f71e5d865 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,33 +2,6 @@ var fs = require('fs'); var moment = require('moment'); -var nodeModuleFiles = [ - 'node_modules/babel-polyfill/dist/polyfill.js', - 'node_modules/babel-polyfill/dist/polyfill.min.js', - 'node_modules/react/dist/react.js', - 'node_modules/react/dist/react.min.js', - 'node_modules/react-dom/dist/react-dom.js', - 'node_modules/react-dom/dist/react-dom.min.js', - 'node_modules/worldview-components/browser/wvc.js', - 'node_modules/worldview-components/browser/wvc.min.js', - 'node_modules/lodash/lodash.js', - 'node_modules/lodash/lodash.min.js', - 'node_modules/bluebird/js/browser/bluebird.js', - 'node_modules/bluebird/js/browser/bluebird.min.js', - 'node_modules/gifshot/build/custom/gifshot.custom.js', - 'node_modules/gifshot/build/custom/gifshot.custom.min.js', - 'node_modules/promise-queue/lib/index.js', - 'node_modules/ol/ol.css', - 'node_modules/font-awesome/css/font-awesome.min.css', - 'node_modules/font-awesome/fonts/*', - 'node_modules/isotope-layout/dist/*', - 'node_modules/isotope-packery/packery-mode.pkgd.js', - 'node_modules/isotope-packery/packery-mode.pkgd.min.js', - 'node_modules/perfect-scrollbar/dist/js/*', - 'node_modules/perfect-scrollbar/dist/css/*', - 'node_modules/clipboard/dist/clipboard.js', - 'node_modules/clipboard/dist/clipboard.min.js' -]; // Build date shown in the About box var buildTimestamp = moment.utc().format('MMMM DD, YYYY [-] HH:mm [UTC]'); @@ -45,11 +18,6 @@ module.exports = function(grunt) { var optionsPath = hasOptionsDirectory ? 'options' : 'node_modules/worldview-options-eosdis'; var options = hasOptionsDirectory ? grunt.file.readJSON('options/package.json') : grunt.file.readJSON('node_modules/worldview-options-eosdis/package.json'); - // Lists of JavaScript and CSS files to include and in the correct - // order - var js = grunt.file.readJSON('deploy/wv.js.json'); - var css = grunt.file.readJSON('deploy/wv.css.json'); - // Platform specific command for find var findCmd; if (process.platform === 'win32') { @@ -73,31 +41,6 @@ module.exports = function(grunt) { optionsPath: optionsPath, apache_version: grunt.option('apache-version') || '22', - postcss: { - stylelint: { - options: { - map: false, - processors: [require('stylelint')({ - configFile: '.stylelintrc', - formatter: 'string', - ignoreDisables: false, - failOnError: true, - outputFile: '', - reportNeedlessDisables: false, - syntax: '' - })] - }, - src: 'web/css/*.css' - }, - autoprefix: { - options: { - map: false, - processors: [require('autoprefixer')] - }, - src: 'web/css/*.css' - } - }, - buster: { console: {}, report: { @@ -107,24 +50,6 @@ module.exports = function(grunt) { } }, - concat: { - // Combine all the Worldview JavaScript files into one file. - js: { - src: js['wv.js'], - dest: 'build/worldview-debug/web/js/wv.js' - }, - // Combine all the Openlayers JavaScript files into one file. - oljs: { - src: js['ol.js'], - dest: 'build/worldview-debug/web/js/ol.js' - }, - // Combine all the Worldview CSS files into one file. - css: { - src: css, - dest: 'build/worldview-debug/web/css/wv.css' - } - }, - copy: { apache: { src: 'etc/dev/worldview-dev.httpd<%=apache_version%>.conf', @@ -204,21 +129,6 @@ module.exports = function(grunt) { } }, - ext: { - files: [ - { - expand: true, - cwd: '.', - overwrite: true, - src: nodeModuleFiles, - dest: 'web/ext' - } - ], - options: { - mode: true - } - }, - release: { files: [ { @@ -332,18 +242,6 @@ module.exports = function(grunt) { } }, - cssmin: { - // Minifiy the concatenated Worldview CSS file. - wv_css: { - options: { - keepSpecialComments: false - }, - files: { - 'build/worldview/web/css/wv.css': ['build/worldview/web/css/wv.css'] - } - } - }, - eslint: { options: { configFile: '.eslintrc', @@ -367,9 +265,6 @@ module.exports = function(grunt) { fetch: { command: 'bash -c "PATH=' + pythonPath + ':"${PATH}" FETCH_GC=1 bin/wv-options-build "' + env }, - node_packages: { - command: 'npm update' - }, python_packages: { command: 'virtualenv python && bash -c "PATH=' + pythonPath + ':${PATH} pip install xmltodict isodate"' @@ -590,36 +485,15 @@ module.exports = function(grunt) { } ] } - }, - - stylefmt: { - format: { - files: [ - { - expand: true, - src: 'web/css/*.css', - dest: './' - } - ] - } - }, - - watch: { - scripts: { - files: nodeModuleFiles, - tasks: ['update'] - } } + }); grunt.loadNpmTasks('grunt-buster'); grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-compress'); grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('gruntify-eslint'); - grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-line-remover'); grunt.loadNpmTasks('grunt-exec'); @@ -627,8 +501,6 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-markdown'); grunt.loadNpmTasks('grunt-minjson'); grunt.loadNpmTasks('grunt-mkdir'); - grunt.loadNpmTasks('grunt-postcss'); - grunt.loadNpmTasks('grunt-stylefmt'); grunt.loadNpmTasks('grunt-text-replace'); grunt.loadNpmTasks('grunt-rename'); @@ -650,17 +522,13 @@ module.exports = function(grunt) { grunt.option('email', brand.email); }); - grunt.registerTask('autoprefix', ['postcss:autoprefix']); - grunt.registerTask('build', [ 'remove:build_source', 'git-rev-parse:source', 'copy:source', - 'concat', 'remove:source', 'exec:empty', 'copy:release', - 'cssmin', 'replace:links', 'lineremover', 'mkdir:dist', @@ -696,8 +564,6 @@ module.exports = function(grunt) { 'copy:dist_site_release_versioned' ]); - grunt.registerTask('stylelint', ['postcss:stylelint']); - grunt.registerTask('rpm-only', [ 'load_branding', 'git-rev-parse:source', @@ -712,18 +578,16 @@ module.exports = function(grunt) { grunt.registerTask('apache-config', ['load_branding', 'copy:apache', 'replace:apache']); - grunt.registerTask('update', ['remove:modules', 'copy:ext']); - grunt.registerTask('update-packages', ['exec:python_packages', 'exec:node_packages', 'update']); + grunt.registerTask('update-packages', ['exec:python_packages']); grunt.registerTask('check', ['lint', 'test']); grunt.registerTask('clean', ['remove:build']); grunt.registerTask('distclean', ['remove:build', 'remove:dist']); - grunt.registerTask('lint', ['eslint', 'stylelint']); + grunt.registerTask('lint', ['eslint']); grunt.registerTask('test', ['buster:console']); grunt.registerTask('default', [ - // 'update-packages', + 'update-packages', 'fetch', - 'update', 'build', 'config', 'site' diff --git a/deploy/wv.css.json b/deploy/wv.css.json deleted file mode 100644 index 1aa6ad9e01..0000000000 --- a/deploy/wv.css.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - "web/css/wv.fonts.css", - "web/css/wv.main.css", - "web/css/util.css", - "web/css/wv.alert.css", - "web/css/bank.css", - "web/css/wv.map.css", - "web/css/wv.link.css", - "web/css/wv.palettes.css", - "web/css/wv.image.css", - "web/css/wv.debug.css", - "web/css/projection.css", - "web/css/wv.date.css", - "web/css/menuPicker.css", - "web/css/wv.tour.css", - "web/css/products.css", - "web/css/indicator.css", - "web/css/wv.events.css", - "web/css/dataDownload.css", - "web/css/wv.sidebar.css", - "web/css/wv.layers.modal.css", - "web/css/wv.scrollbar.css", - "web/css/wv.layers.options.css", - "web/css/wv.layers.info.css", - "web/css/wv.timeline.css", - "web/css/wv.anim.widget.css", - "web/css/wv.dateselector.css", - "web/css/wv.tooltip.css", - "web/css/wv.mobile.css" -] diff --git a/deploy/wv.js.json b/deploy/wv.js.json deleted file mode 100644 index 51c2236ad6..0000000000 --- a/deploy/wv.js.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "wv.js": [ - - "node_modules/promise-queue/lib/index.js", - - "web/js/edsc.js", - "web/js/edsc/coordinate.js", - "web/js/edsc/arc.js", - "web/js/edsc/geoutil.js", - "web/js/edsc/interpolation.js", - "web/js/edsc/spherical_polygon.js", - - "web/js/wv.brand.js", - - "web/js/util/wv.util.browser.js", - "web/js/util/wv.util.js", - "web/js/util/wv.util.load.js", - "web/js/util/wv.util.events.js", - - "web/js/ui/wv.ui.js", - "web/js/ui/wv.ui.mouse.js", - "web/js/ui/wv.ui.indicator.js", - "web/js/ui/wv.ui.info.js", - "web/js/map/wv.map.ui.js", - - "web/js/proj/wv.proj.js", - "web/js/proj/wv.proj.change.js", - "web/js/proj/wv.proj.model.js", - "web/js/proj/wv.proj.ui.js", - - "web/js/animation/wv.anim.js", - "web/js/animation/wv.anim.gif.js", - "web/js/animation/wv.anim.model.js", - "web/js/animation/wv.anim.rangeselect.js", - "web/js/animation/wv.anim.widget.js", - "web/js/animation/wv.anim.ui.js", - - - "web/js/date/wv.date.js", - "web/js/date/wv.date.model.js", - "web/js/date/wv.date.sliders.js", - "web/js/date/wv.date.label.js", - "web/js/date/wv.date.timeline.js", - "web/js/date/wv.date.timeline.data.js", - "web/js/date/wv.date.timeline.ticks.js", - "web/js/date/wv.date.timeline.zoom.js", - "web/js/date/wv.date.timeline.pick.js", - "web/js/date/wv.date.timeline.pan.js", - "web/js/date/wv.date.timeline.input.js", - "web/js/date/wv.date.timeline.config.js", - "web/js/date/wv.date.wheels.js", - - "web/js/layers/wv.layers.js", - "web/js/layers/wv.layers.metadata.js", - "web/js/layers/wv.layers.model.js", - "web/js/layers/wv.layers.sidebar.js", - "web/js/layers/wv.layers.active.js", - "web/js/layers/wv.layers.modal.js", - "web/js/layers/wv.layers.options.js", - "web/js/layers/wv.layers.info.js", - - "web/js/image/wv.image.rubberband.js", - "web/js/image/wv.image.panel.js", - - "web/js/notifications/wv.notifications.ui.js", - - "web/js/palettes/wv.palettes.js", - "web/js/palettes/wv.palettes.legend.js", - "web/js/palettes/wv.palettes.model.js", - - "web/js/data/wv.data.js", - "web/js/data/wv.data.cmr.js", - "web/js/data/wv.data.handler.js", - "web/js/data/wv.data.map.js", - "web/js/data/wv.data.model.js", - "web/js/data/wv.data.rotate.js", - "web/js/data/wv.data.results.js", - "web/js/data/wv.data.ui.js", - - "web/js/map/wv.map.js", - "web/js/map/wv.map.model.js", - - "web/js/map/wv.map.animate.js", - "web/js/map/wv.map.runningdata.js", - "web/js/map/wv.map.rotate.js", - "web/js/map/wv.map.layerbuilder.js", - "web/js/map/wv.map.precachetile.js", - "web/js/map/wv.map.datelinebuilder.js", - "web/js/map/wv.map.ui.js", - - "web/js/link/wv.link.model.js", - "web/js/link/wv.link.ui.js", - - "web/js/naturalEvents/wv.naturalEvents.request.js", - "web/js/naturalEvents/wv.naturalEvents.model.js", - "web/js/naturalEvents/wv.naturalEvents.ui.js", - "web/js/naturalEvents/wv.naturalEvents.markers.js", - - "web/js/wv.feedback.js", - "web/js/wv.tour.js", - "web/js/wv.debug.js", - "web/js/wv.main.js" - ], - "ol.js": [ - "node_modules/openlayers/dist/ol-debug.js", - "web/js/ol.wv/ol.wv.lookupimagetile.js" - ] -} diff --git a/package-lock.json b/package-lock.json index 7a2c64f2b8..e6c5e17dae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,9 +106,9 @@ } }, "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.4.0.tgz", + "integrity": "sha1-MtHPCNvIDEMvQm8S4QslEfa0ZHQ=", "dev": true, "requires": { "co": "4.6.0", @@ -123,17 +123,6 @@ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", @@ -244,27 +233,12 @@ } }, "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" - }, - "dependencies": { - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", - "dev": true - } + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -451,7 +425,7 @@ "dev": true, "requires": { "browserslist": "2.9.0", - "caniuse-lite": "1.0.30000766", + "caniuse-lite": "1.0.30000769", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "6.0.14", @@ -1562,15 +1536,6 @@ "through2": "2.0.3" }, "dependencies": { - "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", @@ -1587,12 +1552,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -1668,7 +1627,7 @@ "integrity": "sha512-vJEBcDTANoDhSHL46NeOEW5hvQw7It9uCqzeFPQhpawXfnOwnpvW5C97vn1eGJ7iCkSg8wWU0nYObE7d/N95Iw==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000766", + "caniuse-lite": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -2086,9 +2045,9 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "camelcase-keys": { @@ -2099,6 +2058,14 @@ "requires": { "camelcase": "2.1.1", "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } } }, "caniuse-api": { @@ -2108,7 +2075,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -2119,7 +2086,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -2132,15 +2099,15 @@ } }, "caniuse-db": { - "version": "1.0.30000766", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000766.tgz", - "integrity": "sha1-TJEao3R/ATiEUvpLknt4/PFDBoA=", + "version": "1.0.30000769", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000769.tgz", + "integrity": "sha1-wjC5wbno2z4cDYWMluaFdBuWzBA=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000766", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000766.tgz", - "integrity": "sha1-iglcxeuZI8JwCM5NDbI+ZaPiiEM=", + "version": "1.0.30000769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000769.tgz", + "integrity": "sha1-1oxaoHcuo+rGyX1C4jnJtNMmG5M=", "dev": true }, "capture-stack-trace": { @@ -2155,16 +2122,6 @@ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, "chai-nightwatch": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", @@ -2280,32 +2237,19 @@ "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" + "source-map": "0.5.7" }, "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -2358,21 +2302,35 @@ } }, "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": 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, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -2575,14 +2533,6 @@ "color": "0.11.4", "css-color-names": "0.0.4", "has": "1.0.1" - }, - "dependencies": { - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - } } }, "colors": { @@ -2692,7 +2642,7 @@ "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { - "ini": "1.3.4", + "ini": "1.3.5", "proto-list": "1.2.4" } }, @@ -2797,7 +2747,7 @@ "dev": true, "requires": { "is-directory": "0.3.1", - "js-yaml": "3.10.0", + "js-yaml": "3.7.0", "minimist": "1.2.0", "object-assign": "4.1.1", "os-homedir": "1.0.2", @@ -2805,31 +2755,6 @@ "require-from-string": "1.2.1" }, "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -2903,15 +2828,6 @@ "pseudomap": "1.0.2", "yallist": "2.1.2" } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } } } }, @@ -2934,15 +2850,6 @@ "pseudomap": "1.0.2", "yallist": "2.1.2" } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } } } }, @@ -3017,12 +2924,20 @@ "dev": true, "requires": { "css-color-names": "0.0.1" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", + "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", + "dev": true + } } }, "css-color-names": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", - "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, "css-rule-stream": { @@ -3185,7 +3100,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -3198,7 +3113,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -3357,23 +3272,6 @@ "open": "0.0.5" }, "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -3419,9 +3317,9 @@ } }, "d3": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", - "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.12.0.tgz", + "integrity": "sha512-ibAzFJrj1uuX+wIy29baTx9JebA5i670UKlp+H3c9pg0w8PKl8jpj4zf64MmLPVBXm2vA1i29obnWuM/rmyfWA==", "requires": { "d3-array": "1.2.1", "d3-axis": "1.0.8", @@ -3431,28 +3329,28 @@ "d3-color": "1.0.3", "d3-dispatch": "1.0.3", "d3-drag": "1.2.1", - "d3-dsv": "1.0.7", + "d3-dsv": "1.0.8", "d3-ease": "1.0.3", "d3-force": "1.1.0", - "d3-format": "1.2.0", - "d3-geo": "1.8.1", + "d3-format": "1.2.1", + "d3-geo": "1.9.0", "d3-hierarchy": "1.1.5", - "d3-interpolate": "1.1.5", + "d3-interpolate": "1.1.6", "d3-path": "1.0.5", "d3-polygon": "1.0.3", "d3-quadtree": "1.0.3", "d3-queue": "3.0.7", "d3-random": "1.1.0", "d3-request": "1.0.6", - "d3-scale": "1.0.6", - "d3-selection": "1.1.0", + "d3-scale": "1.0.7", + "d3-selection": "1.2.0", "d3-shape": "1.2.0", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5", + "d3-time": "1.0.8", + "d3-time-format": "2.1.1", "d3-timer": "1.0.7", - "d3-transition": "1.1.0", + "d3-transition": "1.1.1", "d3-voronoi": "1.1.2", - "d3-zoom": "1.6.0" + "d3-zoom": "1.7.1" } }, "d3-array": { @@ -3472,9 +3370,9 @@ "requires": { "d3-dispatch": "1.0.3", "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", + "d3-transition": "1.1.1" } }, "d3-chord": { @@ -3507,13 +3405,13 @@ "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", "requires": { "d3-dispatch": "1.0.3", - "d3-selection": "1.1.0" + "d3-selection": "1.2.0" } }, "d3-dsv": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", - "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", + "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", "requires": { "commander": "2.11.0", "iconv-lite": "0.4.19", @@ -3537,14 +3435,14 @@ } }, "d3-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", - "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.1.tgz", + "integrity": "sha512-U4zRVLDXW61bmqoo+OJ/V687e1T5nVd3TAKAJKgtpZ/P1JsMgyod0y9br+mlQOryTAACdiXI3wCjuERHFNp91w==" }, "d3-geo": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", - "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.0.tgz", + "integrity": "sha512-94YbAT+q5E/p+XEd4VKiNkQNicrrON3l6eoW70sC8aHjUGoBDJ/Ht8Z/hvhGJJTi2zhYBvUd34Mfqv4TG7we9A==", "requires": { "d3-array": "1.2.1" } @@ -3555,9 +3453,9 @@ "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" }, "d3-interpolate": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", - "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", + "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", "requires": { "d3-color": "1.0.3" } @@ -3594,28 +3492,28 @@ "requires": { "d3-collection": "1.0.4", "d3-dispatch": "1.0.3", - "d3-dsv": "1.0.7", + "d3-dsv": "1.0.8", "xmlhttprequest": "1.8.0" } }, "d3-scale": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", - "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", + "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", "requires": { "d3-array": "1.2.1", "d3-collection": "1.0.4", "d3-color": "1.0.3", - "d3-format": "1.2.0", - "d3-interpolate": "1.1.5", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5" + "d3-format": "1.2.1", + "d3-interpolate": "1.1.6", + "d3-time": "1.0.8", + "d3-time-format": "2.1.1" } }, "d3-selection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", - "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.2.0.tgz", + "integrity": "sha512-xW2Pfcdzh1gOaoI+LGpPsLR2VpBQxuFoxvrvguK8ZmrJbPIVvfNG6pU6GNfK41D6Qz15sj61sbW/AFYuukwaLQ==" }, "d3-shape": { "version": "1.2.0", @@ -3626,16 +3524,16 @@ } }, "d3-time": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", - "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz", + "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==" }, "d3-time-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", - "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz", + "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==", "requires": { - "d3-time": "1.0.7" + "d3-time": "1.0.8" } }, "d3-timer": { @@ -3644,15 +3542,15 @@ "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" }, "d3-transition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", - "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", + "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", "requires": { "d3-color": "1.0.3", "d3-dispatch": "1.0.3", "d3-ease": "1.0.3", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", "d3-timer": "1.0.7" } }, @@ -3662,15 +3560,15 @@ "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" }, "d3-zoom": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", - "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz", + "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==", "requires": { "d3-dispatch": "1.0.3", "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", + "d3-transition": "1.1.1" } }, "dashdash": { @@ -3786,22 +3684,6 @@ "pify": "2.3.0", "pinkie-promise": "2.0.1", "rimraf": "2.5.4" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } } }, "delayed-stream": { @@ -3922,7 +3804,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "css-rule-stream": "1.1.0", "duplexer2": "0.0.2", "jsonfilter": "1.1.2", @@ -3932,7 +3814,7 @@ "postcss": "5.2.18", "source-map": "0.4.4", "through2": "0.6.5", - "yargs": "3.10.0" + "yargs": "3.32.0" }, "dependencies": { "ansi-styles": { @@ -3947,10 +3829,16 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -3987,12 +3875,30 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": 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, + "requires": { + "number-is-nan": "1.0.1" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -4034,6 +3940,17 @@ "amdefine": "1.0.1" } }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -4072,6 +3989,21 @@ } } } + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } } } }, @@ -4395,7 +4327,7 @@ "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", "dev": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.4.0", "babel-code-frame": "6.26.0", "chalk": "2.3.0", "concat-stream": "1.6.0", @@ -4440,15 +4372,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", @@ -5221,20 +5144,6 @@ "requires": { "findup-sync": "0.4.2", "merge": "1.2.0" - }, - "dependencies": { - "findup-sync": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", - "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", - "dev": true, - "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" - } - } } }, "find-parent-dir": { @@ -5254,41 +5163,15 @@ } }, "findup-sync": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", + "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", "dev": true, "requires": { - "glob": "3.2.11", - "lodash": "2.4.2" - }, - "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" } }, "fizzy-ui-utils": { @@ -5416,13 +5299,13 @@ "dev": true }, "fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "dev": true, "requires": { "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", + "jsonfile": "3.0.1", "universalify": "0.1.1" }, "dependencies": { @@ -5431,15 +5314,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } } } }, @@ -5489,15 +5363,13 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "bundled": true, "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5507,21 +5379,18 @@ }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5531,49 +5400,42 @@ }, "asn1": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5582,8 +5444,7 @@ }, "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=", + "bundled": true, "dev": true, "requires": { "inherits": "2.0.3" @@ -5591,8 +5452,7 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -5600,8 +5460,7 @@ }, "brace-expansion": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "bundled": true, "dev": true, "requires": { "balanced-match": "0.4.2", @@ -5610,34 +5469,29 @@ }, "buffer-shims": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "bundled": true, "dev": true }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -5645,26 +5499,22 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "cryptiles": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "bundled": true, "dev": true, "requires": { "boom": "2.10.1" @@ -5672,8 +5522,7 @@ }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5682,8 +5531,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5691,8 +5539,7 @@ }, "debug": { "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5701,35 +5548,30 @@ }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", - "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5738,28 +5580,24 @@ }, "extend": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "bundled": true, "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5770,14 +5608,12 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "fstream": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -5788,8 +5624,7 @@ }, "fstream-ignore": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5800,8 +5635,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5817,8 +5651,7 @@ }, "getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5827,8 +5660,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -5836,8 +5668,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5850,21 +5681,18 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5874,15 +5702,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "bundled": true, "dev": true, "requires": { "boom": "2.10.1", @@ -5893,14 +5719,12 @@ }, "hoek": { "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5911,8 +5735,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -5921,21 +5744,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -5943,28 +5763,24 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "bundled": true, "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5973,22 +5789,19 @@ }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5997,22 +5810,19 @@ }, "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=", + "bundled": true, "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "bundled": true, "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6024,8 +5834,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -6033,14 +5842,12 @@ }, "mime-db": { "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "mime-db": "1.27.0" @@ -6048,8 +5855,7 @@ }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -6057,14 +5863,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -6072,8 +5876,7 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, @@ -6086,8 +5889,7 @@ }, "node-pre-gyp": { "version": "0.6.39", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", - "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6106,8 +5908,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6117,8 +5918,7 @@ }, "npmlog": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6130,28 +5930,24 @@ }, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -6159,22 +5955,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6184,41 +5977,35 @@ }, "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=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6230,8 +6017,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -6239,8 +6025,7 @@ }, "readable-stream": { "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "bundled": true, "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -6254,8 +6039,7 @@ }, "request": { "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6285,8 +6069,7 @@ }, "rimraf": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -6294,35 +6077,30 @@ }, "safe-buffer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "bundled": true, "dev": true }, "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -6330,8 +6108,7 @@ }, "sshpk": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6348,8 +6125,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -6357,8 +6133,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -6368,8 +6143,7 @@ }, "string_decoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "bundled": true, "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -6377,15 +6151,13 @@ }, "stringstream": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "bundled": true, "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=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -6393,15 +6165,13 @@ }, "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=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "bundled": true, "dev": true, "requires": { "block-stream": "0.0.9", @@ -6411,8 +6181,7 @@ }, "tar-pack": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6428,8 +6197,7 @@ }, "tough-cookie": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6438,8 +6206,7 @@ }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6448,35 +6215,30 @@ }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "bundled": true, "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=", + "bundled": true, "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=", + "bundled": true, "dev": true }, "uuid": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "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=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6485,8 +6247,7 @@ }, "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==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6495,8 +6256,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true } } @@ -6629,9 +6389,9 @@ "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg=" }, "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", "dev": true }, "get-stream": { @@ -6729,20 +6489,9 @@ "dev": true, "requires": { "homedir-polyfill": "1.0.1", - "ini": "1.3.4", + "ini": "1.3.5", "is-windows": "0.2.0", "which": "1.3.0" - }, - "dependencies": { - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - } } }, "globals": { @@ -6752,12 +6501,13 @@ "dev": true }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { "array-union": "1.0.2", + "arrify": "1.0.1", "glob": "7.1.2", "object-assign": "4.1.1", "pify": "2.3.0", @@ -6878,12 +6628,74 @@ "which": "1.0.9" }, "dependencies": { + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "dev": true, + "requires": { + "underscore": "1.7.0", + "underscore.string": "2.4.0" + }, + "dependencies": { + "underscore.string": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", + "dev": true + } + } + }, "async": { "version": "0.1.22", "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", "dev": true }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, "glob": { "version": "3.1.21", "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", @@ -6893,6 +6705,14 @@ "graceful-fs": "1.2.3", "inherits": "1.0.2", "minimatch": "0.2.14" + }, + "dependencies": { + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + } } }, "iconv-lite": { @@ -6901,11 +6721,15 @@ "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", "dev": true }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true + "js-yaml": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "dev": true, + "requires": { + "argparse": "0.1.16", + "esprima": "1.0.4" + } }, "lodash": { "version": "0.9.2", @@ -6937,6 +6761,18 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", "dev": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", + "dev": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true } } }, @@ -6949,7 +6785,7 @@ "cross-spawn-async": "2.2.5", "resolve-bin": "0.3.0", "when": "3.7.8", - "which": "1.0.9" + "which": "1.3.0" }, "dependencies": { "when": { @@ -7069,102 +6905,6 @@ } } }, - "grunt-contrib-cssmin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-1.0.2.tgz", - "integrity": "sha1-FzTL09hMpzZHWLflj/GOUqpgu3Y=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "clean-css": "3.4.28", - "maxmin": "1.1.0" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-contrib-uglify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.0.0.tgz", - "integrity": "sha1-jJlw1pCTbN5tJaoRk1Sb2SkBaTA=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash.assign": "4.2.0", - "maxmin": "1.1.0", - "uglify-js": "2.7.5", - "uri-path": "1.0.0" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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 - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "dev": true, - "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - } - } - }, "grunt-contrib-watch": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", @@ -7281,6 +7021,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", "dev": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true } } }, @@ -7316,73 +7062,6 @@ "dev": true, "requires": { "maxmin": "2.1.0" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "dev": true, - "requires": { - "duplexer": "0.1.1" - } - }, - "maxmin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", - "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "figures": "1.7.0", - "gzip-size": "3.0.0", - "pretty-bytes": "3.0.1" - } - }, - "pretty-bytes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "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 - } } }, "grunt-mkdir": { @@ -7391,315 +7070,12 @@ "integrity": "sha1-W3gKPBAkv805CNdxIuk5QUxuZ2w=", "dev": true }, - "grunt-postcss": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.8.0.tgz", - "integrity": "sha1-jzCor2B5A84MRfAfC+QsYOMc6w4=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "diff": "2.2.3", - "postcss": "5.2.18" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", - "dev": true - }, - "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 - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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 - } - } - }, "grunt-rename": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/grunt-rename/-/grunt-rename-0.1.4.tgz", "integrity": "sha1-c9Jq8dpNIjy2NGXLNQYWfa8IlMI=", "dev": true }, - "grunt-stylefmt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-stylefmt/-/grunt-stylefmt-3.0.0.tgz", - "integrity": "sha1-Z8eYEJplBB1vrq7MWtm0c6oQfuI=", - "dev": true, - "requires": { - "stylefmt": "5.3.2" - }, - "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 - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "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 - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000766", - "electron-to-chromium": "1.3.27" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "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 - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "stylefmt": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylefmt/-/stylefmt-5.3.2.tgz", - "integrity": "sha1-MgE0N6pU2MUlPLwQeskU37Xunuo=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "css-color-list": "0.0.1", - "diff": "3.4.0", - "editorconfig": "0.13.3", - "globby": "6.1.0", - "minimist": "1.2.0", - "postcss": "5.2.18", - "postcss-scss": "0.4.1", - "postcss-sorting": "2.1.0", - "postcss-value-parser": "3.3.0", - "stdin": "0.0.1", - "stylelint": "7.13.0", - "stylelint-order": "0.4.4" - } - }, - "stylelint": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", - "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "balanced-match": "0.4.2", - "chalk": "2.3.0", - "colorguard": "1.2.0", - "cosmiconfig": "2.2.2", - "debug": "2.6.9", - "doiuse": "2.6.0", - "execall": "1.0.0", - "file-entry-cache": "2.0.0", - "get-stdin": "5.0.1", - "globby": "6.1.0", - "globjoin": "0.1.4", - "html-tags": "2.0.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "known-css-properties": "0.2.0", - "lodash": "4.17.4", - "log-symbols": "1.0.2", - "mathml-tag-names": "2.0.1", - "meow": "3.7.0", - "micromatch": "2.3.11", - "normalize-selector": "0.2.0", - "pify": "2.3.0", - "postcss": "5.2.18", - "postcss-less": "0.14.0", - "postcss-media-query-parser": "0.2.3", - "postcss-reporter": "3.0.0", - "postcss-resolve-nested-selector": "0.1.1", - "postcss-scss": "0.4.1", - "postcss-selector-parser": "2.2.3", - "postcss-value-parser": "3.3.0", - "resolve-from": "3.0.0", - "specificity": "0.3.2", - "string-width": "2.1.1", - "style-search": "0.1.0", - "stylehacks": "2.3.2", - "sugarss": "0.2.0", - "svg-tags": "1.0.0", - "table": "4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "grunt-text-replace": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/grunt-text-replace/-/grunt-text-replace-0.4.0.tgz", @@ -7716,30 +7092,12 @@ } }, "gzip-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", - "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", "dev": true, "requires": { - "browserify-zlib": "0.1.4", - "concat-stream": "1.5.2" - }, - "dependencies": { - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "0.2.9" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - } + "duplexer": "0.1.1" } }, "har-schema": { @@ -7756,7 +7114,7 @@ "dev": true, "optional": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.4.0", "har-schema": "2.0.0" } }, @@ -8059,9 +7417,9 @@ "dev": true }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "inline-source-map": { @@ -8536,19 +7894,19 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "0.1.16", - "esprima": "1.0.4" + "argparse": "1.0.9", + "esprima": "2.7.3" }, "dependencies": { "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true } } @@ -8808,12 +8166,6 @@ } } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, "lazystream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", @@ -9096,12 +8448,6 @@ "lodash._basetostring": "4.12.0" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, "lodash.clone": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", @@ -9269,12 +8615,6 @@ "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -9357,15 +8697,15 @@ "dev": true }, "maxmin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", - "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", "dev": true, "requires": { "chalk": "1.1.3", "figures": "1.7.0", - "gzip-size": "1.0.0", - "pretty-bytes": "1.0.4" + "gzip-size": "3.0.0", + "pretty-bytes": "3.0.1" }, "dependencies": { "ansi-styles": { @@ -10108,7 +9448,7 @@ "requires": { "config-chain": "1.1.11", "inherits": "2.0.3", - "ini": "1.3.4", + "ini": "1.3.5", "mkdirp": "0.5.1", "nopt": "3.0.6", "once": "1.3.3", @@ -10202,9 +9542,9 @@ } }, "onecolor": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.4.tgz", - "integrity": "sha1-daRvgNpseqpbTarhekcZi9llJJQ=", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", + "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=", "dev": true }, "onetime": { @@ -10957,7 +10297,7 @@ "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", "dev": true, "requires": { - "onecolor": "3.0.4", + "onecolor": "3.0.5", "synesthesia": "1.0.1" } }, @@ -11116,97 +10456,43 @@ "yargs": "8.0.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": 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=", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "log-symbols": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", - "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", - "dev": true, - "requires": { - "chalk": "2.3.0" - } - }, - "postcss-reporter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", - "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "lodash": "4.17.4", - "log-symbols": "2.1.0", - "postcss": "6.0.14" - } - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "graceful-fs": "4.1.11" } } } @@ -12074,7 +11360,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -12781,187 +12067,27 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "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, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reporter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", - "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.18" - }, - "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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "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 - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "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 - } - } - }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", - "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", - "dev": true, - "requires": { - "postcss": "6.0.14" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "postcss-scss": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", - "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "postcss": "5.2.18" + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" }, "dependencies": { "ansi-styles": { @@ -13026,6 +12152,59 @@ } } }, + "postcss-reporter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", + "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "lodash": "4.17.4", + "log-symbols": "2.1.0", + "postcss": "6.0.14" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "log-symbols": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", + "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", + "dev": true, + "requires": { + "chalk": "2.3.0" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", + "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, + "postcss-scss": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", + "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", + "dev": true, + "requires": { + "postcss": "6.0.14" + } + }, "postcss-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", @@ -13373,13 +12552,12 @@ "dev": true }, "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "number-is-nan": "1.0.1" } }, "pretty-hrtime": { @@ -14249,14 +13427,6 @@ "requires": { "caller-path": "0.1.0", "resolve-from": "1.0.1" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } } }, "resolve": { @@ -14296,9 +13466,9 @@ } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, "resolve-protobuf-schema": { @@ -14325,15 +13495,6 @@ "signal-exit": "3.0.2" } }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - }, "rimraf": { "version": "2.5.4", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", @@ -15066,6 +14227,14 @@ "dev": true, "requires": { "get-stdin": "4.0.1" + }, + "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 + } } }, "strip-json-comments": { @@ -15114,7 +14283,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -15156,7 +14325,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -15173,11 +14342,18 @@ "supports-color": "2.0.0" } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "has-flag": { "version": "1.0.0", @@ -15197,15 +14373,47 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "postcss-scss": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", - "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", "dev": true, "requires": { - "postcss": "6.0.14" + "chalk": "1.1.3", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "postcss": "5.2.18" + }, + "dependencies": { + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -15400,7 +14608,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -15529,15 +14737,6 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, "autoprefixer": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", @@ -15545,7 +14744,7 @@ "dev": true, "requires": { "browserslist": "2.9.0", - "caniuse-lite": "1.0.30000766", + "caniuse-lite": "1.0.30000769", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "6.0.14", @@ -15579,11 +14778,26 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } }, "has-flag": { "version": "1.0.0", @@ -15681,27 +14895,6 @@ } } }, - "postcss-reporter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", - "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "lodash": "4.17.4", - "log-symbols": "2.1.0", - "postcss": "6.0.14" - } - }, - "postcss-scss": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", - "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", - "dev": true, - "requires": { - "postcss": "6.0.14" - } - }, "require-from-string": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz", @@ -15764,7 +14957,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -15783,7 +14976,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000766", + "caniuse-db": "1.0.30000769", "electron-to-chromium": "1.3.27" } }, @@ -15808,11 +15001,18 @@ } } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "has-flag": { "version": "1.0.0", @@ -15838,6 +15038,33 @@ "supports-color": "3.2.3" } }, + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "postcss": "5.2.18" + } + }, + "postcss-scss": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", + "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "dev": true, + "requires": { + "postcss": "5.2.18" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -16057,36 +15284,11 @@ "whet.extend": "0.9.9" }, "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - } } } }, @@ -16148,7 +15350,7 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.4.0", "ajv-keywords": "2.1.1", "chalk": "2.3.0", "lodash": "4.17.4", @@ -16514,12 +15716,6 @@ "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", "dev": true }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, "uglifyify": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/uglifyify/-/uglifyify-4.0.5.tgz", @@ -16626,12 +15822,6 @@ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "uri-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", - "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", - "dev": true - }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -16790,10 +15980,13 @@ "dev": true }, "which": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "2.0.0", @@ -16802,9 +15995,9 @@ "dev": true }, "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", "dev": true }, "wordwrap": { @@ -16818,7 +16011,7 @@ "resolved": "https://registry.npmjs.org/worldview-components/-/worldview-components-1.5.2.tgz", "integrity": "sha512-Vnsemgtm8jDMY4FCLU9TiuYlxuQlqn5zGB1k4ykntvkoQ2VQw8ooSA8LYe2Svbf+PcNzAKs4PCf+u5kUy1HP7g==", "requires": { - "d3": "4.11.0", + "d3": "4.12.0", "icheck": "1.0.2", "prop-types": "15.6.0", "react-draggable": "2.2.6", @@ -16941,23 +16134,24 @@ "dev": true }, "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", + "camelcase": "4.1.0", + "cliui": "3.2.0", "decamelize": "1.2.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - } + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" } }, "yargs-parser": { @@ -16967,14 +16161,6 @@ "dev": true, "requires": { "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } } }, "yauzl": { diff --git a/package.json b/package.json index c7fdf8b404..c5a886f760 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,9 @@ "e2e:firefox": "nightwatch -e firefox --skiptags wip", "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", "report": "node e2e/create-report.js", - "build:js": "node ./tasks/buildJS", - "build:css": "node ./tasks/buildCSS" + "build": "run-s --print-name build:* && grunt", + "build:css": "node ./tasks/buildCSS", + "build:js": "node ./tasks/buildJS" }, "devDependencies": { "autoprefixer": "7.1.1", @@ -53,8 +54,6 @@ "grunt-contrib-compress": "0.5.x", "grunt-contrib-concat": "1.0.x", "grunt-contrib-copy": "1.0.x", - "grunt-contrib-cssmin": "1.0.x", - "grunt-contrib-uglify": "2.0.x", "grunt-contrib-watch": "^1.0.0", "grunt-exec": "0.4.x", "grunt-git-rev-parse": "0.1.x", @@ -62,9 +61,7 @@ "grunt-markdown": "0.7.x", "grunt-minjson": "0.4.x", "grunt-mkdir": "0.1.x", - "grunt-postcss": "^0.8.0", "grunt-rename": "0.1.x", - "grunt-stylefmt": "^3.0.0", "grunt-text-replace": "0.4.x", "gruntify-eslint": "^4.0.0", "moment": "2.13.x", diff --git a/tasks/buildJS.js b/tasks/buildJS.js index 9ea451409a..cfd10ba43d 100644 --- a/tasks/buildJS.js +++ b/tasks/buildJS.js @@ -10,8 +10,8 @@ const outputPath = outputDir + 'wv.js'; var bundler = browserify(entryPoint, { debug: isDebug, // Include source maps (makes bundle size larger) - fullPaths: isDebug, // For use with https://www.npmjs.com/package/disc - plugin: [isDebug ? watchify : null] + fullPaths: isDebug // For use with https://www.npmjs.com/package/disc + // plugin: [isDebug ? watchify : null] }).transform('babelify', { presets: ['env'] }).transform('browserify-shim', { From 985588b841940c802876924ad222839077092170 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 21 Nov 2017 18:21:43 -0500 Subject: [PATCH 076/242] Remove unused /ext dependencies --- Gruntfile.js | 1 - package.json | 2 +- web/ext/{ui => }/d3/d3.js | 0 web/ext/{ui => }/d3/d3.min.js | 0 web/ext/date/mobiscroll-2.6.0/mobiscroll.css | 2082 -- web/ext/date/mobiscroll-2.6.0/mobiscroll.js | 2236 --- .../date/mobiscroll-2.6.0/mobiscroll.min.css | 1 - .../date/mobiscroll-2.6.0/mobiscroll.min.js | 1 - web/ext/image/jcrop-0.9.12/Jcrop.gif | Bin 329 -> 0 bytes web/ext/image/jcrop-0.9.12/jquery.Jcrop.css | 167 - web/ext/image/jcrop-0.9.12/jquery.Jcrop.js | 1694 -- .../image/jcrop-0.9.12/jquery.Jcrop.min.css | 2 - .../image/jcrop-0.9.12/jquery.Jcrop.min.js | 7 - web/ext/layers/jcarousel/jcarousel.js | 1026 - web/ext/layers/jcarousel/jcarousel.min.js | 4 - web/ext/main/jquery-2.1.4/jquery.js | 9210 --------- web/ext/main/jquery-2.1.4/jquery.min.js | 4 - .../jquery-migrate.min.js | 2 - web/ext/main/jscache-gitba01cdc/cache.js | 432 - web/ext/main/jscache-gitba01cdc/cache.min.js | 1 - web/ext/main/lodash-2.4.1/lodash.js | 6785 ------- web/ext/main/lodash-2.4.1/lodash.min.js | 56 - web/ext/proj/proj4js-2.3.3-1/proj4.js | 3 - web/ext/tour/joyride-2.0.3-3/joyride.css | 320 - web/ext/tour/joyride-2.0.3-3/joyride.js | 1257 -- web/ext/tour/joyride-2.0.3-3/joyride.min.css | 1 - web/ext/tour/joyride-2.0.3-3/joyride.min.js | 1 - .../font-awesome-4.2.0/css/font-awesome.css | 1672 -- .../css/font-awesome.min.css | 4 - web/ext/ui/font-awesome-4.2.0/fonts/.htaccess | 5 - .../font-awesome-4.2.0/fonts/FontAwesome.otf | Bin 85908 -> 0 bytes .../fonts/fontawesome-webfont.eot | Bin 56006 -> 0 bytes .../fonts/fontawesome-webfont.svg | 520 - .../fonts/fontawesome-webfont.ttf | Bin 112160 -> 0 bytes .../fonts/fontawesome-webfont.woff | Bin 65452 -> 0 bytes .../less/bordered-pulled.less | 16 - web/ext/ui/font-awesome-4.2.0/less/core.less | 11 - .../font-awesome-4.2.0/less/fixed-width.less | 6 - .../font-awesome-4.2.0/less/font-awesome.less | 17 - web/ext/ui/font-awesome-4.2.0/less/icons.less | 552 - .../ui/font-awesome-4.2.0/less/larger.less | 13 - web/ext/ui/font-awesome-4.2.0/less/list.less | 19 - .../ui/font-awesome-4.2.0/less/mixins.less | 25 - web/ext/ui/font-awesome-4.2.0/less/path.less | 14 - .../less/rotated-flipped.less | 20 - .../ui/font-awesome-4.2.0/less/spinning.less | 29 - .../ui/font-awesome-4.2.0/less/stacked.less | 20 - .../ui/font-awesome-4.2.0/less/variables.less | 561 - .../scss/_bordered-pulled.scss | 16 - web/ext/ui/font-awesome-4.2.0/scss/_core.scss | 11 - .../font-awesome-4.2.0/scss/_fixed-width.scss | 6 - .../ui/font-awesome-4.2.0/scss/_icons.scss | 552 - .../ui/font-awesome-4.2.0/scss/_larger.scss | 13 - web/ext/ui/font-awesome-4.2.0/scss/_list.scss | 19 - .../ui/font-awesome-4.2.0/scss/_mixins.scss | 25 - web/ext/ui/font-awesome-4.2.0/scss/_path.scss | 14 - .../scss/_rotated-flipped.scss | 20 - .../ui/font-awesome-4.2.0/scss/_spinning.scss | 29 - .../ui/font-awesome-4.2.0/scss/_stacked.scss | 20 - .../font-awesome-4.2.0/scss/_variables.scss | 561 - .../font-awesome-4.2.0/scss/font-awesome.scss | 17 - web/ext/ui/iCheck-1.0.2-patch/.gitignore | 6 - .../ui/iCheck-1.0.2-patch/icheck.jquery.json | 48 - web/ext/ui/iCheck-1.0.2-patch/icheck.js | 509 - web/ext/ui/iCheck-1.0.2-patch/icheck.min.js | 32 - .../ui/iCheck-1.0.2-patch/skins/line/_all.css | 710 - .../ui/iCheck-1.0.2-patch/skins/line/aero.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/blue.css | 71 - .../iCheck-1.0.2-patch/skins/line/green.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/grey.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/line.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/line.png | Bin 588 -> 0 bytes .../iCheck-1.0.2-patch/skins/line/line@2x.png | Bin 1073 -> 0 bytes .../iCheck-1.0.2-patch/skins/line/orange.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/pink.css | 71 - .../iCheck-1.0.2-patch/skins/line/purple.css | 71 - .../ui/iCheck-1.0.2-patch/skins/line/red.css | 71 - .../iCheck-1.0.2-patch/skins/line/yellow.css | 71 - .../skins/polaris/polaris.css | 59 - .../skins/polaris/polaris.png | Bin 6401 -> 0 bytes .../skins/polaris/polaris@2x.png | Bin 16760 -> 0 bytes .../iCheck-1.0.2-patch/skins/square/grey.css | 59 - .../iCheck-1.0.2-patch/skins/square/grey.png | Bin 2186 -> 0 bytes .../skins/square/grey@2x.png | Bin 4483 -> 0 bytes .../skins/square/orange.css | 59 - .../skins/square/orange.png | Bin 2181 -> 0 bytes .../skins/square/orange@2x.png | Bin 4474 -> 0 bytes .../iCheck-1.0.2-patch/skins/square/red.css | 59 - .../iCheck-1.0.2-patch/skins/square/red.png | Bin 2190 -> 0 bytes .../skins/square/red@2x.png | Bin 4490 -> 0 bytes .../external/jquery/jquery.js | 9789 --------- .../images/ui-bg_flat_30_cccccc_40x100.png | Bin 220 -> 0 bytes .../images/ui-bg_flat_50_5c5c5c_40x100.png | Bin 230 -> 0 bytes .../images/ui-bg_glass_20_555555_1x400.png | Bin 260 -> 0 bytes .../images/ui-bg_glass_40_0078a3_1x400.png | Bin 342 -> 0 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 316 -> 0 bytes .../ui-bg_gloss-wave_25_333333_500x100.png | Bin 3816 -> 0 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 276 -> 0 bytes .../ui-bg_inset-soft_25_000000_1x100.png | Bin 275 -> 0 bytes .../ui-bg_inset-soft_30_f58400_1x100.png | Bin 340 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6922 -> 0 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_a83300_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_cccccc_256x240.png | Bin 6975 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6299 -> 0 bytes web/ext/ui/jquery-ui-1.11.4/jquery-ui.css | 1225 -- web/ext/ui/jquery-ui-1.11.4/jquery-ui.js | 16617 ---------------- web/ext/ui/jquery-ui-1.11.4/jquery-ui.min.css | 7 - web/ext/ui/jquery-ui-1.11.4/jquery-ui.min.js | 13 - .../jquery-ui-1.11.4/jquery-ui.structure.css | 833 - .../jquery-ui.structure.min.css | 5 - .../ui/jquery-ui-1.11.4/jquery-ui.theme.css | 410 - .../jquery-ui-1.11.4/jquery-ui.theme.min.css | 5 - .../jquery.jscrollpane.css | 120 - .../jquery.jscrollpane.js | 1474 -- .../jquery.jscrollpane.min.css | 1 - .../jquery.jscrollpane.min.js | 8 - .../noUiSlider-6.1.10/jquery.nouislider.css | 165 - .../jquery.nouislider.min.js | 34 - 119 files changed, 1 insertion(+), 63058 deletions(-) rename web/ext/{ui => }/d3/d3.js (100%) rename web/ext/{ui => }/d3/d3.min.js (100%) delete mode 100644 web/ext/date/mobiscroll-2.6.0/mobiscroll.css delete mode 100644 web/ext/date/mobiscroll-2.6.0/mobiscroll.js delete mode 100644 web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css delete mode 100644 web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js delete mode 100755 web/ext/image/jcrop-0.9.12/Jcrop.gif delete mode 100644 web/ext/image/jcrop-0.9.12/jquery.Jcrop.css delete mode 100644 web/ext/image/jcrop-0.9.12/jquery.Jcrop.js delete mode 100644 web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css delete mode 100644 web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js delete mode 100755 web/ext/layers/jcarousel/jcarousel.js delete mode 100755 web/ext/layers/jcarousel/jcarousel.min.js delete mode 100644 web/ext/main/jquery-2.1.4/jquery.js delete mode 100644 web/ext/main/jquery-2.1.4/jquery.min.js delete mode 100644 web/ext/main/jquery.migrate-1.2.1/jquery-migrate.min.js delete mode 100644 web/ext/main/jscache-gitba01cdc/cache.js delete mode 100644 web/ext/main/jscache-gitba01cdc/cache.min.js delete mode 100644 web/ext/main/lodash-2.4.1/lodash.js delete mode 100644 web/ext/main/lodash-2.4.1/lodash.min.js delete mode 100644 web/ext/proj/proj4js-2.3.3-1/proj4.js delete mode 100644 web/ext/tour/joyride-2.0.3-3/joyride.css delete mode 100644 web/ext/tour/joyride-2.0.3-3/joyride.js delete mode 100644 web/ext/tour/joyride-2.0.3-3/joyride.min.css delete mode 100644 web/ext/tour/joyride-2.0.3-3/joyride.min.js delete mode 100644 web/ext/ui/font-awesome-4.2.0/css/font-awesome.css delete mode 100644 web/ext/ui/font-awesome-4.2.0/css/font-awesome.min.css delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/.htaccess delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/FontAwesome.otf delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/fontawesome-webfont.eot delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/fontawesome-webfont.svg delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/fontawesome-webfont.ttf delete mode 100644 web/ext/ui/font-awesome-4.2.0/fonts/fontawesome-webfont.woff delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/bordered-pulled.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/core.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/fixed-width.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/font-awesome.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/icons.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/larger.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/list.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/mixins.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/path.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/rotated-flipped.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/spinning.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/stacked.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/less/variables.less delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_bordered-pulled.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_core.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_fixed-width.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_icons.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_larger.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_list.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_mixins.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_path.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_rotated-flipped.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_spinning.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_stacked.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/_variables.scss delete mode 100644 web/ext/ui/font-awesome-4.2.0/scss/font-awesome.scss delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/.gitignore delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/icheck.jquery.json delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/icheck.js delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/icheck.min.js delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/_all.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/aero.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/blue.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/green.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/grey.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/line.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/line.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/line@2x.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/orange.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/pink.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/purple.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/red.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/line/yellow.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/polaris/polaris.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/polaris/polaris.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/polaris/polaris@2x.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/grey.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/grey.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/grey@2x.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/orange.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/orange.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/orange@2x.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/red.css delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/red.png delete mode 100644 web/ext/ui/iCheck-1.0.2-patch/skins/square/red@2x.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/external/jquery/jquery.js delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_flat_30_cccccc_40x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_flat_50_5c5c5c_40x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_glass_20_555555_1x400.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_glass_40_0078a3_1x400.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_glass_40_ffc73d_1x400.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_gloss-wave_25_333333_500x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_highlight-soft_80_eeeeee_1x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_inset-soft_25_000000_1x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-bg_inset-soft_30_f58400_1x100.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-icons_222222_256x240.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-icons_4b8e0b_256x240.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-icons_a83300_256x240.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-icons_cccccc_256x240.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/images/ui-icons_ffffff_256x240.png delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.css delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.js delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.min.css delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.min.js delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.structure.css delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.structure.min.css delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.theme.css delete mode 100644 web/ext/ui/jquery-ui-1.11.4/jquery-ui.theme.min.css delete mode 100644 web/ext/ui/jquery.jscrollpane-2.0.22/jquery.jscrollpane.css delete mode 100644 web/ext/ui/jquery.jscrollpane-2.0.22/jquery.jscrollpane.js delete mode 100644 web/ext/ui/jquery.jscrollpane-2.0.22/jquery.jscrollpane.min.css delete mode 100644 web/ext/ui/jquery.jscrollpane-2.0.22/jquery.jscrollpane.min.js delete mode 100644 web/ext/ui/noUiSlider-6.1.10/jquery.nouislider.css delete mode 100644 web/ext/ui/noUiSlider-6.1.10/jquery.nouislider.min.js diff --git a/Gruntfile.js b/Gruntfile.js index 4f71e5d865..451c44721a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -385,7 +385,6 @@ module.exports = function(grunt) { '!build/worldview-debug/web/css/bulkDownload.css', '!build/worldview-debug/web/ext/**/*' ], - modules: ['web/ext/node_modules/**'], config_src: ['web/config/**/*'], build_source: [ 'build/worldview', 'build/worldview-debug' diff --git a/package.json b/package.json index c5a886f760..1d5c919a98 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "worldview-options-eosdis": "github:nasa-gibs/worldview-options-eosdis#v2.1.2" }, "browser": { - "d3": "./web/ext/ui/d3/d3.js", + "d3": "./web/ext/d3/d3.js", "isotope-layout": "./node_modules/isotope-layout/dist/isotope.pkgd.js", "jquery": "./node_modules/jquery/dist/jquery.js" }, diff --git a/web/ext/ui/d3/d3.js b/web/ext/d3/d3.js similarity index 100% rename from web/ext/ui/d3/d3.js rename to web/ext/d3/d3.js diff --git a/web/ext/ui/d3/d3.min.js b/web/ext/d3/d3.min.js similarity index 100% rename from web/ext/ui/d3/d3.min.js rename to web/ext/d3/d3.min.js diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.css b/web/ext/date/mobiscroll-2.6.0/mobiscroll.css deleted file mode 100644 index ba8c746b2a..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.css +++ /dev/null @@ -1,2082 +0,0 @@ -/* Datewheel overlay */ -.dw { - position: absolute; - top: 5%; - left: 0; - z-index: 1001; - color: #fff; - font-family: arial, verdana, sans-serif; - font-size: 12px; - text-shadow: none; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -ms-touch-action: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; -} -.dwi { - position: static; - display: inline-block; -} -.dwwr { - min-width: 170px; - zoom: 1; - padding: 0 10px; - text-align: center; -} -/* Datewheel overlay background */ -.dw-persp, .dwo { - width: 100%; - height: auto; - position: absolute; - top: 0; - left: 0; - z-index: 1001; -} -.dwo { - background: #000; - opacity: .7; - filter: Alpha(Opacity=70); - display:none; -} -/* Bubble positionings */ -.dw-bubble .dw { - margin: 20px 0; -} -.dw-bubble .dw-arrw { - position: absolute; - left: 0; - width: 100%; -} -.dw-bubble-top .dw-arrw { - bottom: -36px; -} -.dw-bubble-bottom .dw-arrw { - top: -36px; -} -.dw-bubble .dw-arrw-i { - margin: 0 30px; - position: relative; - height: 36px; -} -.dw-bubble .dw-arr { - display: block; -} -.dw-arr { - display: none; - position: absolute; - left: 0; - width: 0; - height: 0; - border-width: 18px 18px; - border-style: solid; - margin-left: -18px; -} -.dw-bubble-bottom .dw-arr { - top: 0; - border-color: transparent transparent #fff transparent; -} -.dw-bubble-top .dw-arr { - bottom: 0; - border-color: #fff transparent transparent transparent; -} -/* Datewheel wheel container wrapper */ -.dwc { - padding: 30px 2px 5px 2px; - display: inline-block; -} -/* Datewheel label */ -.dwl { - text-align: center; - line-height: 30px; - height: 30px; - white-space: nowrap; - position: absolute; - top: -30px; - width: 100%; -} -/* Datewheel value */ -.dwv { - padding: 10px 0; - border-bottom: 1px solid #000; -} -/* Datewheel wheel container */ -.dwrc { - -webkit-border-radius: 3px; - border-radius: 3px; -} -.dwwc { - margin: 0; - padding: 0 2px; - position: relative; - background: #000; - zoom: 1; -} -/* Datewheel wheels */ -.dwwl { - margin: 4px 2px; - padding: 0 2px; - position: relative; - z-index: 5; -} -.dwww { - position: relative; - padding: 1px; -} -.dww { - overflow: hidden; - position: relative; - z-index: 2; -} -.dw-moz .dww { - opacity: .99; /* Fixes Firefox translate overflow bug */ -} -.dwsc .dwwl { - background: #888; - background: linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.35, #333),color-stop(0.50, #888),color-stop(0.65, #333),to(#000)); - background: -webkit-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); - background: -moz-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); -} -.dwsc .dww { - color: #fff; - background: #444; - background: linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.45, #444),color-stop(0.55, #444),to(#000)); - background: -webkit-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); - background: -moz-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); -} -.dw-bf { - -webkit-perspective: 1000; - -webkit-backface-visibility: hidden; -} -.dw-ul { - position: relative; - z-index: 2; -} -.dw-li { - padding: 0 5px; - display: block; - text-align: center; - line-height: 40px; - font-size: 26px; - white-space: nowrap; - text-shadow: 0 1px 1px #000; - vertical-align: bottom; - opacity: .3; - filter: Alpha(Opacity=30); -} -/* Higlighted */ -.dw-li.dw-hl { - background: #fff; - background: rgba(255,255,255,.3); -} -/* Valid entry */ -.dw-li.dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -/* Hidden entry */ -.dw-li.dw-h { - visibility: hidden; -} -.dw-i { - position: relative; - height: 100%; -} -/* Wheel +/- buttons */ -.dwwb { - position: absolute; - z-index: 4; - left: 0; - cursor: pointer; - width: 100%; - height: 40px; - text-align: center; - opacity: 1; - transition: opacity .2s linear; - -webkit-transition: opacity .2s linear; -} -.dwa .dwwb { - opacity: 0; -} -.dwwbp { - top: 0; - -webkit-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - font-size: 40px; -} -.dwwbm { - bottom: 0; - -webkit-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - font-size: 32px; - font-weight: bold; -} -.dwpm .dwwc { - background: transparent; -} -.dwpm .dwwl { - padding: 0; -} -.dwpm .dw-li { - text-shadow: none; -} -.dwpm .dwwol { - display: none; -} -/* Datewheel wheel overlay */ -.dwwo { - position: absolute; - z-index: 3; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.52, rgba(44,44,44,0)),color-stop(0.48, rgba(44,44,44,0)),to(#000)); - background: -webkit-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); - background: -moz-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); -} -/* Background line */ -.dwwol { - position: absolute; - z-index: 1; - top: 50%; - left: 0; - width: 100%; - height: 0; - margin-top: -1px; - border-top: 1px solid #333; - border-bottom: 1px solid #555; -} -/* Datewheel button */ -.dwbg .dwb { - cursor: pointer; - overflow: hidden; - display: block; - height: 40px; - line-height: 40px; - padding: 0 15px; - margin: 0 2px; - font-size: 14px; - font-weight: bold; - text-decoration: none; - text-shadow: 0 -1px 1px #000; - border-radius: 5px; - box-shadow: 0 1px 3px rgba(0,0,0,0.5); - color: #fff; - background: #000; - background: linear-gradient(#6e6e6e 50%,#000 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #000),color-stop(0.5, #6e6e6e)); - background: -webkit-linear-gradient(#6e6e6e 50%,#000 50%); - background: -moz-linear-gradient(#6e6e6e 50%,#000 50%); - white-space: nowrap; - text-overflow: ellipsis; - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5); - -webkit-border-radius: 5px; - -webkit-backface-visibility: hidden; -} -/* Datewheel button container */ -.dwbc { - padding: 5px 0; - text-align: center; -} -/* Datewheel button wrapper */ -.dwbw { - display: inline-block; - width: 50%; - position: relative; - z-index: 5; -} -.dwbc-p .dwbw { - width: 33.33%; -} -/* Hidden label */ -.dwhl { - padding-top: 10px; -} -.dwhl .dwl { - display: none; -} -/* Multiple selection */ -.dwms .dwwms .dw-li { - padding: 0 40px; - position: relative; -} -.dwms .dw-msel:after { - width: 40px; - text-align: center; - position: absolute; - top: 0; - left: 0; - content: '✔'; -} -/* Backgrounds */ -.dwbg { - background: rgba(38,43,49,0.85); - border-radius: 3px; - -webkit-border-radius: 3px; -} -.dwbg .dwpm .dwwl { - border: 1px solid #aaa; -} -.dwbg .dwpm .dww { - color: #000; - background: #fff; - -webkit-border-radius: 3px; -} -.dwbg .dwwb { - background: #ccc; - color: #888; - text-shadow: 0 -1px 1px #333; - box-shadow: 0 0 5px #333; - -webkit-box-shadow: 0 0 5px #333; -} -.dwbg .dwwbp { - background: linear-gradient(#f7f7f7,#bdbdbd); - background: -webkit-gradient(linear,left bottom,left top,from(#bdbdbd),to(#f7f7f7)); - background: -webkit-linear-gradient(#f7f7f7,#bdbdbd); - background: -moz-linear-gradient(#f7f7f7,#bdbdbd); -} -.dwbg .dwwbm { - background: linear-gradient(#bdbdbd,#f7f7f7); - background: -webkit-gradient(linear,left bottom,left top,from(#f7f7f7),to(#bdbdbd)); - background: -webkit-linear-gradient(#bdbdbd,#f7f7f7); - background: -moz-linear-gradient(#bdbdbd,#f7f7f7); -} -.dwbg .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840 50%,#3c7500 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #3c7500),color-stop(0.5, #94c840)); - background: -webkit-linear-gradient(#94c840 50%,#3c7500 50%); - background: -moz-linear-gradient(#94c840 50%,#3c7500 50%); -} -.dwbg .dwwl .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840,#3c7500); - background: -webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840)); - background: -webkit-linear-gradient(#94c840,#3c7500); - background: -moz-linear-gradient(#94c840,#3c7500); -} - -/* jQuery Mobile Theme */ -.jqm .dwo { - background: none; -} -.jqm .dw { - padding: 6px; - z-index: 1003; -} -.jqm .dwv { - position: static; - width: auto; - padding: .7em 15px .7em 15px; - border: 0; -} -.jqm .dwwr { - border: 0; - padding: 0; -} -.jqm .dwpm .dwwo { - background: none; -} -.jqm .dwc { - padding: 30px 5px 5px 5px; - } -.jqm .dwhl { - padding: 5px; -} -.jqm .dwwb { - margin: 0; - border: 0; -} -.jqm .dwwb span { - padding: 0; -} -.jqm .dwwbp .ui-btn-inner { - font-size: 40px; - border-radius: 3px 3px 0 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; -} -.jqm .dwwbm .ui-btn-inner { - font-size: 32px; - border-radius: 0 0 3px 3px; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; -} -.jqm .dwwbp span { - font-weight: normal; -} -.jqm .dwbc { - padding: 0; -} -.jqm .dwbc .ui-btn { - margin: .5em 5px; -} -.jqm .dwbc .ui-btn-inner { - font-size: 12px; -} -.jqm .dwpm .dwl { - border: 0; - background: none; -} -/* Bubble positioning */ -.jqm .dw-bubble-bottom .dw-arr -{ - border-color: transparent transparent #444 transparent; -} -.jqm .dw-bubble-top .dw-arr -{ - border-color: #222 transparent transparent transparent; -} -/* Docked */ -.jqm.dw-bottom .dw, .jqm.dw-top .dw { - padding: 0; - border-radius: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; -} -.jqm.dw-top .dw { - border-right: 0; - border-top: 0; - border-left: 0; -} -.jqm.dw-bottom .dw { - border-bottom: 0; - border-right: 0; - border-left: 0; -} - -/* Android Skin */ -.android .dw { - padding: 0; - background: #000; - border: 2px solid #555; - color: #fff; -} -.android .dwv { - padding: 10px; - border-bottom: 1px solid #333; -} -.android .dwwr { - padding: 0; -} -.android .dww { - top: 0; -} -.android .dwwc { - background: #000; -} -.android .dw .dwpm .dww, -.android .dw .dwpm .dwwl { - border: 0; - background: #fff; -} -.android .dw .dwpm .dww { - margin: 0; -} -.android .dwpm .dww .dw-li { - color: #000; - text-shadow: none; -} -.android .dwbc { - padding: 5px 1px; - background: #9c9c9c; -} -.android .dw .dwb { - margin: 0 5px; - background: #ccc; - background: linear-gradient(#eee,#ccc); - background: -webkit-gradient(linear,left bottom,left top,from(#ccc),to(#eee)); - background: -moz-linear-gradient(#eee,#ccc); - background: -o-linear-gradient(#eee,#ccc); - color: #000; - font-weight: normal; - text-shadow: none; - border-radius: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; -} -.android .dw .dwb-a, .android .dw .dwwl .dwb-a { - background: #ffb25a; - background: linear-gradient(#ffb25a,#ef6100); - background: -webkit-gradient(linear,left bottom,left top,from(#ef6100),to(#ffb25a)); - background: -moz-linear-gradient(#ffb25a,#ef6100); - background: -o-linear-gradient(#ffb25a,#ef6100); -} -/* Bubble positioning */ -.android .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #000 transparent; -} -.android .dw-bubble-top .dw-arr { - border-color: #9c9c9c transparent transparent transparent; -} -/* Docked */ -.android.dw-top .dw, -.android.dw-bottom .dw { - border-right: 0; - border-left: 0; -} -.android.dw-top .dw { - border-top: 0; -} -.android.dw-bottom .dw { - border-bottom: 0; -} - -/* Android ICS skin */ -.android-ics .dw { - padding: 0; - color: #31b6e7; - background: #292829; -} -.android-ics .dw .dwwc, -.android-ics .dw .dwwl, -.android-ics .dw .dww, -.android-ics .dw .dwb, -.android-ics .dw .dwpm .dww { - background: none; -} -.android-ics .dwwr { - padding: 0; -} -.android-ics .dwc { - padding: 30px 10px 1px 10px; -} -.android-ics .dwhl { - padding: 1px 10px; -} -.android-ics .dwv { - height: 36px; - line-height: 36px; - padding: 0; - border-bottom: 2px solid #31b6e7; - font-size: 18px; -} -.android-ics .dwwl { - margin: 0 2px; -} -.android-ics .dww, -.android-ics .dw .dwpm .dwwl, -.android-ics .dw .dwpm .dww { - border: 0; -} -.android-ics .dww .dw-li { - color: #fff; - font-size: 18px; - text-shadow: none; -} -.android-ics .dww .dw-li.dw-hl { - background: #31b6e7; - background: rgba(49,182,231,.5); -} -.android-ics .dwwo { - background: linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#282828),color-stop(0.52, rgba(40,40,40,0)),color-stop(0.48, rgba(40,40,40,0)),to(#282828)); - background: -moz-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); - background: -o-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); -} -.android-ics .dw .dwwb { - background: #292829; - box-shadow: none; - -webkit-box-shadow: none; -} -.android-ics .dwwb span { - display: none; -} -.android-ics .dwwb:after { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; - color: #7e7e7e; - width: 0; - height: 0; - border-width: 8px; - border-style: solid; - content: ''; -} -.android-ics .dwwbm { - top: 0; - bottom: auto; -} -.android-ics .dwwbp { - bottom: 0; - top: auto; -} -.android-ics .dwwbm:after { - border-color: transparent transparent #7e7e7e transparent; -} -.android-ics .dwwbp:after { - border-color: #7e7e7e transparent transparent transparent; -} -.android-ics .dw .dwwl .dwb-a { - background: #292829; -} -.android-ics .dwwbm.dwb-a:after { - border-color: transparent transparent #319abd transparent; -} -.android-ics .dwwbp.dwb-a:after { - border-color: #319abd transparent transparent transparent; -} -.android-ics .dw .dwwol { - width: 60%; - left: 20%; - height: 36px; - border-top: 2px solid #31b6e7; - border-bottom: 2px solid #31b6e7; - margin-top: -20px; - display: block; -} -.android-ics .dwbc { - border-top: 1px solid #424542; - padding: 0; -} -.android-ics .dw .dwb { - height: 36px; - line-height: 36px; - padding: 0; - margin: 0; - font-weight: normal; - text-shadow: none; - box-shadow: none; - border-radius: 0; - -webkit-border-radius: 0; - -webkit-box-shadow: none; -} -.android-ics .dw .dwb-a { - background: #29799c; -} -.android-ics .dwb-s .dwb, .android-ics .dwb-n .dwb { - border-right: 1px solid #424542; -} -/* Docked */ -.android-ics.dw-bottom .dw, .android-ics.dw-top .dw { - border-radius: 0; - -webkit-border-radius: 0; -} -/* Multiple select */ -.android-ics .dwwms .dwwol { - display: none; -} -.android-ics .dwwms .dw-li { - padding-left: 5px; - padding-right: 36px; -} -.android-ics .dwwms .dw-li:after { - content: ''; - position: absolute; - top: 50%; - left: auto; - right: 10px; - width: 14px; - height: 14px; - margin-top: -9px; - color: #31b6e7; - line-height: 14px; - border: 1px solid #424542; - text-shadow: 0 0 5px #29799c; -} -.android-ics .dwwms .dw-msel:after { - content: '✔'; -} -/* Light version */ -.android-ics.light .dw { - background: #f5f5f5; -} -.android-ics.light .dww .dw-li { - color: #000; -} -.android-ics.light .dwwo { - background: linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#f5f5f5),color-stop(0.52, rgba(245,245,245,0)),color-stop(0.48, rgba(245,245,245,0)),to(#f5f5f5)); - background: -moz-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); - background: -o-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); -} -.android-ics.light .dw .dwwb { - background: #f5f5f5; - color: #f5f5f5; -} -.android-ics.light .dwbc { - border-top: 1px solid #dbdbdb; -} -.android-ics.light .dwb { - color: #000; -} -.android-ics.light .dwb-a { - color: #fff; -} -.android-ics.light .dwb-s .dwb, .android-ics.light .dwb-n .dwb { - border-right: 1px solid #dbdbdb; -} -/* Bubble positioning */ -.android-ics .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #292829 transparent; -} -.android-ics .dw-bubble-top .dw-arr { - border-color: #292829 transparent transparent transparent; -} -/* Bubble positioning */ -.android-ics.light .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #f5f5f5 transparent; -} -.android-ics.light .dw-bubble-top .dw-arr { - border-color: #f5f5f5 transparent transparent transparent; -} -/* Multiple select */ -.android-ics.light .dwwms .dw-li:after { - text-shadow: 0 0 5px #31b6e7; -} - -/* iOS Skin */ -.ios .dw { - min-width: 134px; - padding: 0; - border: 1px solid #2d3034; - background: none; - color: #fff; - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dwo { - background: none; -} -.ios .dwwr { - position: relative; - margin-top: 40px; - background: #50515d; - background: linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); - background: -webkit-gradient(linear,left top,left bottom,from(#9f9fa6),color-stop(0.5, #484a55),color-stop(0.5, #272836),to(#282a39)); - background: -webkit-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); - background: -moz-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); -} -.ios .dwi .dwwr { - margin-top: 0; -} -.ios .dwv { - display: none; -} -.ios .dwc { - padding: 30px 2px; - margin: 0; -} -.ios .dwhl { - padding: 10px 2px; -} -.ios .dwwc { - background: transparent; -} -.ios .dwwl { - margin: 4px 0; - border-left: 1px solid #000; - border-right: 1px solid #000; - background: #cbcce0; - background: linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#2c2c38),color-stop(0.35, #cbcce0),color-stop(0.65, #cbcce0),to(#2c2c38)); - background: -webkit-linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - background: -moz-linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - box-shadow: 0 1px 1px rgba(255,255,255,0.3); - -webkit-box-shadow: 0 1px 1px rgba(255,255,255,0.3); -} -.ios td:first-child .dwwl { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; -} -.ios td:last-child .dwwl { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; -} -.ios .dwsc .dwwl { - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dwsc .dww { - background: #fff; - background: linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.10, #999),color-stop(0.30, #fff),color-stop(0.70, #fff),color-stop(0.90, #999),to(#333)); - background: -webkit-linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - background: -moz-linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dw .dwpm .dww { - background: linear-gradient(#333,#fff 48%,#fff 52%,#333); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.48, #fff),color-stop(0.52, #fff),to(#333)); - background: -webkit-linear-gradient(#333 0%,#fff 48%,#fff 52%,#333 100%); - background: -moz-linear-gradient(#333 0%,#fff 48%,#fff 52%,#333 100%); -} -.ios .dw .dwpm .dwwl { - margin: 4px 2px; - border: 1px solid #000; -} -.ios .dw .dwpm .dww { - margin: 0; - border: 0; -} -.ios .dww .dw-li { - color: #000; - font-size: 20px; - font-weight: bold; - text-align: right; - text-shadow: none; -} -.ios .dww .dw-li.dw-hl { - background: linear-gradient(#0288f3,#005de6); - background: -webkit-gradient(linear,left bottom,left top,from(#0288f3),to(#005de6)); - background: -webkit-linear-gradient(#0288f3,#005de6); - background: -moz-linear-gradient(#0288f3,#005de6); - color: #fff; -} -.ios .dwwo { - background: linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1, rgba(153,153,153,0)),color-stop(0.9, rgba(153,153,153,0)),to(#333)); - background: -webkit-linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); - background: -moz-linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); -} -.ios .dwwol { - height: 28px; - padding: 1px; - margin-top: -16px; - border-color: #7b8699; - background: #6f75b0; - background: linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, rgba(111, 117, 176, 0.5)),color-stop(0.5, rgba(151, 157, 197, 0.5))); - background: -webkit-linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - background: -moz-linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - z-index: 10; - left: -1px; - box-shadow: 0 1px 3px rgba(0,0,0,0.5); - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5); - filter: alpha(opacity=50); -} -.ios .dww .dwwol { - display: none; -} -.ios .dw .dwbc { - position: absolute; - top: -40px; - left: 0; - width: 100%; - height: 28px; - padding: 5px 0; - background: #454545; - background: linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - background: -webkit-gradient(linear,left top,left bottom,from(rgba(69,69,69,0.7)),color-stop(0.5, rgba(37,37,37,0.7)),color-stop(0.5, rgba(16,16,16,0.7)),to(rgba(0,0,0,0.7))); - background: -webkit-linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - background: -moz-linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - border-bottom: 1px solid #888; - border-bottom: 1px solid rgba(255,255,255,0.5); - border-top: 1px solid #888; - border-top: 1px solid rgba(255,255,255,0.5); -} -.ios .dw .dwb { - margin: 0 5px; - padding: 0 10px; - display: inline-block; - font-size: 12px; - height: 26px; - line-height: 26px; - border: 1px solid #1f1f1f; - background: #1a1a1a; - background: linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - background: -webkit-gradient(linear,left top,left bottom,from(#7b7b7b),color-stop(0.5, #1a1a1a),color-stop(0.5, #000)); - background: -webkit-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - background: -moz-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - box-shadow: 0 1px 0 rgba(255,255,255,0.3); - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.3); -} -.ios .dwb-s .dwb { - border: 1px solid #194aab; - background: #194aab; - background: linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); - background: -webkit-gradient(linear,left top,left bottom,from(#82aaff),color-stop(0.5,#3162c4),color-stop(0.5,#194aab)); - background: -webkit-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); - background: -moz-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); -} -.ios .dwb-a { - opacity: .8; - filter: alpha(opacity=80); -} -.ios .dw .dwwb { - color: #fff; - border: 0; - background: #3f4e68; - background: linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#3f4e68),color-stop(0.5, #75859f),color-stop(0.5, #808ea6),to(#c7d1e2)); - background: -webkit-linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); - background: -moz-linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); -} -.ios .dw .dwwl .dwb-a { - background: #252c36; - background: linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#252c36),color-stop(0.5, #171e28),color-stop(0.5, #272e38),to(#6b6e75)); - background: -webkit-linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); - background: -moz-linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); -} -.ios .dwb-s, .ios .dwb-n { - width: auto; - float: right; - text-align: right; -} -.ios .dwb-c { - width: auto; - float: left; - text-align: left; -} -/* Bubble positioning */ -.ios.dw-bubble .dw { - padding: 6px; - background: #afafaf; - background: linear-gradient(#afafaf, #1b2530 30%); - background: -webkit-gradient(linear,left top,left bottom,from(#afafaf),color-stop(0.3, #1b2530)); - background: -webkit-linear-gradient(#afafaf, #1b2530 30%); - background: -moz-linear-gradient(#afafaf, #1b2530 30%); - box-shadow: 0 0 25px rgba(0,0,0,0.7); - border-radius: 5px; - -webkit-border-radius: 5px; - -webkit-box-shadow: 0 0 25px rgba(0,0,0,0.7); -} -.ios .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #2d3034 transparent; -} -.ios .dw-bubble-bottom .dw-arr:after { - content: ''; - position: absolute; - top: -16px; - left: -17px; - border: 17px solid #afafaf; - border-color: transparent transparent #afafaf transparent; -} -.ios .dw-bubble-top .dw-arr { - border-color: #1b2530 transparent transparent transparent; -} -/* Multiple select */ -.ios .dwwms .dwwol { - display: none; -} -.ios .dwwms .dw-li { - padding: 0 5px 0 30px; - text-align: left; -} -.ios .dw-msel:after { - width: 30px; -} -.ios .dww .dw-msel { - color: #215085; -} - -/* Sense UI Skin */ -.sense-ui .dw { - padding: 0; - background: #333; - border: 2px solid #fff; - color: #fff; -} -.sense-ui .dwwr { - padding: 0; -} -.sense-ui .dwv { - padding: 5px 10px; - border-bottom: 1px solid #666; - text-align: left; -} -.sense-ui .dwwc { - background: #333; -} -.sense-ui .dw .dwpm .dwwl, -.sense-ui .dw .dwpm .dww { - background: #fff; - border: 0; - padding: 0; -} -.sense-ui .dwbc { - padding: 5px 1px; - background: #000; - background: linear-gradient(#666 50%,#000 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #000),color-stop(0.5, #666)); - background: -moz-linear-gradient(#666 50%,#000 50%); - background: -o-linear-gradient(#666 50%,#000 50%); -} -.sense-ui .dw .dwb { - margin: 0 5px; - border: 1px solid #333; - background: #222; - background: linear-gradient(#444,#000); - background: -webkit-gradient(linear,left bottom,left top,from(#000),to(#444)); - background: -moz-linear-gradient(#444,#000); - background: -o-linear-gradient(#444,#000); - box-shadow: inset 0 0 5px #000; -} -.sense-ui .dw .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840,#3c7500); - background: -webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840)); - background: -moz-linear-gradient(#94c840,#3c7500); - background: -o-linear-gradient(#94c840,#3c7500); -} -/* Docked */ -.sense-ui.dw-top .dw { - border: 0; - border-radius: 0; - -webkit-border-radius: 0; -} -.sense-ui.dw-bottom .dw { - border: 0; - border-top: 1px solid #666; - border-radius: 0; - -webkit-border-radius: 0; -} - -.wp .dw { - background: #1f1f1f; - border-radius: 0; - -webkit-border-radius: 0; -} -.wp .dwwr { - padding: 10px; -} -.wp .dwv { - display: none; -} -.wp .dwc { - padding: 30px 0 0 0; - vertical-align: middle; -} -.wp .dwhl { - padding: 0; -} -.wp .dwwc { - padding: 3px; - background: none; -} -.wp .dwwl { - margin: 0; - padding: 0 2px; - background: none; -} -.wp .dwl { - color: #fff; -} -.wp .dw .dwwl .dww { - background: none; - border: 0; - color: #fff; -} -.wp .dw-li { - position: relative; - padding: 0; - font-size: 26px; - letter-spacing: -1px; - text-align: left; - text-shadow: none; - opacity: 0; - box-sizing: border-box; - filter: Alpha(Opacity=0); - /*transition: opacity .3s linear;*/ - -webkit-box-sizing: border-box; - /*-webkit-transition: opacity .3s linear;*/ - -moz-box-sizing: border-box; - /*-moz-transition: opacity .3s linear;*/ -} -.wp .dw-i { - position: relative; - top: 4%; - height: 92%; - padding: 0 5px; - border: 1px solid #4c4c4c; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - filter: inherit; -} -.wp .wpa .dw-li, .wp .dwa .dw-li { - opacity: .3; - filter: Alpha(Opacity=30); -} -.wp .wpa .dw-v, .wp .dwa .dw-v, .wp .wpam .dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dw-day, .wp .dw-mon { - display: block; - color: #a9a9a9; - line-height: 18px; - font-size: 11px; - letter-spacing: normal; - position: absolute; - bottom: 0; - filter: inherit; -} -.wp .dw-sel { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dw .dw-sel .dw-i { - color: #fff; - background: #4c4c4c; - /*transition: all .1s linear; - -webkit-transition: all .1s linear; - -moz-transition: all .1s linear;*/ -} -.wp .dw-sel .dw-day, .wp .dw-sel .dw-mon { - color: #fff; -} -.wp .dw-hl { - background: none; -} -.wp .dw-hl .dw-i { - background: #4c4c4c; -} -.wp .dwa .dww .dw-sel .dw-i { - border: 1px solid #4c4c4c; - background-color: transparent; -} -.wp .dwa .dw-day, .wp .dwa .dw-month { - color: #a9a9a9; -} -.wp .dwwo { - display: none; -} -.wp .dwwol { - display: none; -} -.wp .dwbc { - padding: 0; -} -.wp .dwbw { - float: none; - width: auto; -} -.wp .dw .dwb { - position: relative; - top: 0; - min-width: 32px; - display: inline-block; - height: 20px; - padding: 29px 5px 0 5px; - background: none; - box-shadow: none; - line-height: 20px; - font-size: 11px; - font-weight: normal; - text-transform: lowercase; - text-shadow: none; - transition: top .1s linear; - -webkit-box-shadow: none; - -webkit-transition: top .1s linear; - -moz-transition: top .1s linear; -} -.wp .dwb:after { - content: ''; - position: absolute; - top: 3px; - left: 50%; - width: 26px; - height: 26px; - margin: 0 -13px; - background: url(wp_icons.png) center center no-repeat; -} -.wp .dwb-s .dwb:after { - background-position: 0 0; -} -.wp .dwb-c .dwb:after { - background-position: -26px 0; -} -.wp .dwb-n .dwb:after { - background-position: -52px 0; -} -.wp .dwb-s .dwb-a:after { - background-position: 0 -26px; -} -.wp .dwb-c .dwb-a:after { - background-position: -26px -26px; -} -.wp .dwb-n .dwb-a:after { - background-position: -52px -26px; -} -.wp .dwb.dwb-a { - top: -3px; -} -/* +/- buttons */ -.wp .dw .dwwl .dwb-a { - background: #1f1f1f; -} -.wp .dw .dwpm .dwwl { - border: 0; -} -.wp .dw .dwwb { - background: #1f1f1f; - border-radius: 0; - box-shadow: none; - box-sizing: border-box; - color: #a9a9a9; - -webkit-box-shadow: none; - -webkit-border-radius: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; -} -.wp .dwwb span { - position: absolute; - top: 50%; - left: 50%; - width: 26px; - height: 0; - padding-top: 26px; - overflow: hidden; - margin: -13px; - display: block; - background: url(wp_icons.png) center center no-repeat; -} -.wp .dwwbp span { - background-position: -78px 0; -} -.wp .dwwbp.dwb-a span { - background-position: -78px -26px; -} -.wp .dwwbm span { - background-position: -104px 0; -} -.wp .dwwbm.dwb-a span { - background-position: -104px -26px; -} -/* Bubble positioning */ -.wp .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #1f1f1f transparent; -} -.wp .dw-bubble-top .dw-arr { - border-color: #1f1f1f transparent transparent transparent; -} -/* Multiple select */ -.wp .dwwms .dw-li { - opacity: .3; - filter: Alpha(Opacity=30); - padding: 0 0 0 30px; -} -.wp .dwwms .dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dwc .dwwms .dw-i, -.wp .dwc .dwwms .dw-sel .dw-i, -.wp .dwc .dwwms .dw-hl .dw-i, -.wp .dwc .dwwms.dwa .dw-sel .dw-i { - border: 0; - background: none; -} -.wp .dwwms .dw-li:after { - content: ''; - position: absolute; - top: 50%; - left: 5px; - width: 20px; - height: 20px; - margin-top: -10px; - font-size: 18px; - line-height: 20px; - background: #4c4c4c; - color: #fff; -} -.wp .dwwms .dw-msel:after { - content: '✔'; -} -/* Light version */ -.wp.light .dw { - background: #dedede; -} -.wp.light .dwv, -.wp.light .dwl, -.wp.light .dwb { - color: #000; -} -.wp.light .dw-li { - color: #6b6b6b; -} -.wp.light .dw-i { - border-color: #b5b5b5; -} -.wp.light .dw-sel .dw-i { - background: #b5b5b5; -} -.wp.light .dw-hl .dw-i { - color: #fff; - background: #b5b5b5; -} -.wp.light .dw-day, .wp.light .dw-mon { - color: #6b6b6b; -} -.wp.light .dw-sel .dw-day, .wp.light .dw-sel .dw-mon { - color: #fff; -} -.wp.light .dw .dwa .dw-sel .dw-i { - color: #6b6b6b; - border: 1px solid #b5b5b5; - background-color: transparent; -} -.wp.light .dw .dwc .dwa .dw-day, .wp.light .dw .dwc .dwa .dw-mon { - color: #6b6b6b; -} -.wp.light .dwb:after { - background-image: url(wp_icons_light.png); -} -.wp.light .dw .dwwb { - background: #dedede; -} -.wp.light .dwwb span { - background-image: url(wp_icons_light.png); -} -/* Bubble positioning */ -.wp.light .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #dedede transparent; -} -.wp.light .dw-bubble-top .dw-arr { - border-color: #dedede transparent transparent transparent; -} -/* Multiple select */ -.wp.light .dwc .dwwms .dw-i, -.wp.light .dwwms.dwa .dw-sel .dw-i { - border: 0; - background: none; - color: #000; -} -.wp.light .dwwms .dw-li:after { - background: #b5b5b5; -} -.wp.light .wp-none .dwwms .dw-li:after { - color: #000; -} -/* Accents */ -.wp.light .wp-none .dw-sel .dw-i, .wp.light .wp-none .dw-hl .dw-i { - color: #000; -} -.wp.light .wp-none .dw-day, .wp.light .wp-none .dw-mon { - color: #6b6b6b; -} -.wp .wp-lime .dw-sel .dw-i, .wp .wp-lime .dw-hl .dw-i, .wp .wp-lime .dwwms .dw-li:after { - background: #a4c400; - border-color: #a4c400; -} -.wp .wp-green .dw-sel .dw-i, .wp .wp-green .dw-hl .dw-i, .wp .wp-green .dwwms .dw-li:after { - background: #60a917; - border-color: #60a917; -} -.wp .wp-emerald .dw-sel .dw-i, .wp .wp-emerald .dw-hl .dw-i, .wp .wp-emerald .dwwms .dw-li:after { - background: #008a00; - border-color: #008a00; -} -.wp .wp-teal .dw-sel .dw-i, .wp .wp-teal .dw-hl .dw-i, .wp .wp-teal .dwwms .dw-li:after { - background: #00aba9; - border-color: #00aba9; -} -.wp .wp-cyan .dw-sel .dw-i, .wp .wp-cyan .dw-hl .dw-i, .wp .wp-cyan .dwwms .dw-li:after { - background: #1ba1e2; - border-color: #1ba1e2; -} -.wp .wp-cobalt .dw-sel .dw-i, .wp .wp-cobalt .dw-hl .dw-i, .wp .wp-cobalt .dwwms .dw-li:after { - background: #0050ef; - border-color: #0050ef; -} -.wp .wp-indigo .dw-sel .dw-i, .wp .wp-indigo .dw-hl .dw-i, .wp .wp-indigo .dwwms .dw-li:after { - background: #6a00ff; - border-color: #6a00ff; -} -.wp .wp-violet .dw-sel .dw-i, .wp .wp-violet .dw-hl .dw-i, .wp .wp-violet .dwwms .dw-li:after { - background: #aa00ff; - border-color: #aa00ff; -} -.wp .wp-pink .dw-sel .dw-i, .wp .wp-pink .dw-hl .dw-i, .wp .wp-pink .dwwms .dw-li:after { - background: #f472d0; - border-color: #f472d0; -} -.wp .wp-magenta .dw-sel .dw-i, .wp .wp-magenta .dw-hl .dw-i, .wp .wp-magenta .dwwms .dw-li:after { - background: #d80073; - border-color: #d80073; -} -.wp .wp-crimson .dw-sel .dw-i, .wp .wp-crimson .dw-hl .dw-i, .wp .wp-crimson .dwwms .dw-li:after { - background: #a20025; - border-color: #a20025; -} -.wp .wp-red .dw-sel .dw-i, .wp .wp-red .dw-hl .dw-i, .wp .wp-red .dwwms .dw-li:after { - background: #e51400; - border-color: #e51400; -} -.wp .wp-orange .dw-sel .dw-i, .wp .wp-orange .dw-hl .dw-i, .wp .wp-orange .dwwms .dw-li:after { - background: #fa6800; - border-color: #fa6800; -} -.wp .wp-amber .dw-sel .dw-i, .wp .wp-amber .dw-hl .dw-i, .wp .wp-amber .dwwms .dw-li:after { - background: #f0a30a; - border-color: #f0a30a; -} -.wp .wp-yellow .dw-sel .dw-i, .wp .wp-yellow .dw-hl .dw-i, .wp .wp-yellow .dwwms .dw-li:after { - background: #d8c100; - border-color: #d8c100; -} -.wp .wp-brown .dw-sel .dw-i, .wp .wp-brown .dw-hl .dw-i, .wp .wp-brown .dwwms .dw-li:after { - background: #825a2c; - border-color: #825a2c; -} -.wp .wp-olive .dw-sel .dw-i, .wp .wp-olive .dw-hl .dw-i, .wp .wp-olive .dwwms .dw-li:after { - background: #6d8764; - border-color: #6d8764; -} -.wp .wp-steel .dw-sel .dw-i, .wp .wp-steel .dw-hl .dw-i, .wp .wp-steel .dwwms .dw-li:after { - background: #647687; - border-color: #647687; -} -.wp .wp-mauve .dw-sel .dw-i, .wp .wp-mauve .dw-hl .dw-i, .wp .wp-mauve .dwwms .dw-li:after { - background: #76608a; - border-color: #76608a; -} -.wp .wp-sienna .dw-sel .dw-i, .wp .wp-sienna .dw-hl .dw-i, .wp .wp-sienna .dwwms .dw-li:after { - background: #7a3b3f; - border-color: #7a3b3f; -} - -.dw-trans .dw-persp { - overflow: hidden; - perspective: 1000px; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; -} -.dw-trans .dwwb, -.dw-trans .dwwo { - -webkit-backface-visibility: hidden; -} -.dw-in, -.dw-out { - animation-duration: 350ms; - -webkit-animation-duration: 350ms; - -moz-animation-duration: 350ms; -} -.dw-in { - animation-timing-function: ease-out; - -webkit-animation-timing-function: ease-out; - -moz-animation-timing-function: ease-out; -} -.dw-out { - animation-timing-function: ease-in; - -webkit-animation-timing-function: ease-in; - -moz-animation-timing-function: ease-in; -} -.dw-flip, -.dw-swing, -.dw-slidehorizontal, -.dw-slidevertical, -.dw-slidedown, -.dw-slideup, -.dw-fade { - backface-visibility: hidden; - transform: translateX(0); - -webkit-backface-visibility: hidden; - -webkit-transform: translateX(0); - -moz-backface-visibility: hidden; - -moz-transform: translateX(0); -} -.dw-swing, -.dw-slidehorizontal, -.dw-slidevertical, -.dw-slidedown, -.dw-slideup, -.dw-fade { - transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; -} -.dw-flip, -.dw-pop { - transform-origin: 50% 50%; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; -} -.dw-pop.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-p-in; - -webkit-animation-name: dw-p-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-p-in; - -moz-transform: scale(1); -} -.dw-pop.dw-out { - opacity: 0; - animation-name: dw-p-out; - -webkit-animation-name: dw-p-out; - -moz-animation-name: dw-p-out; -} -.dw-flip.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-fl-in; - -webkit-animation-name: dw-fl-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-fl-in; - -moz-transform: scale(1); -} -.dw-flip.dw-out { - opacity: 0; - animation-name: dw-fl-out; - -webkit-animation-name: dw-fl-out; - -moz-animation-name: dw-fl-out; -} -.dw-swing.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-sw-in; - -webkit-animation-name: dw-sw-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sw-in; - -moz-transform: scale(1); -} -.dw-swing.dw-out { - opacity: 0; - animation-name: dw-sw-out; - -webkit-animation-name: dw-sw-out; - -moz-animation-name: dw-sw-out; -} -.dw-slidehorizontal.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-sh-in; - -webkit-animation-name: dw-sh-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sh-in; - -moz-transform: scale(1); -} -.dw-slidehorizontal.dw-out { - opacity: 0; - animation-name: dw-sh-out; - -webkit-animation-name: dw-sh-out; - -moz-animation-name: dw-sh-out; -} -.dw-slidevertical.dw-in { - opacity: 1; - animation-name: dw-dw-sv-in; - transform: scale(1); - -webkit-animation-name: dw-dw-sv-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-dw-sv-in; - -moz-transform: scale(1); -} -.dw-slidevertical.dw-out { - opacity: 0; - animation-name: dw-sv-out; - -webkit-animation-name: dw-sv-out; - -moz-animation-name: dw-sv-out; -} -.dw-slidedown.dw-in { - animation-name: dw-sd-in; - transform: scale(1); - -webkit-animation-name: dw-sd-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sd-in; - -moz-transform: scale(1); -} -.dw-slidedown.dw-out { - animation-name: dw-sd-out; - -webkit-animation-name: dw-sd-out; - -moz-animation-name: dw-sd-out; -} -.dw-slideup.dw-in { - transform: scale(1); - animation-name: dw-su-in; - -webkit-animation-name: dw-su-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-su-in; - -moz-transform: scale(1); -} -.dw-slideup.dw-out { - animation-name: dw-su-out; - -webkit-animation-name: dw-su-out; - -moz-animation-name: dw-su-out; -} -.dw-fade.dw-in { - opacity: 1; - animation-name: dw-f-in; - -webkit-animation-name: dw-f-in; - -moz-animation-name: dw-f-in; -} -.dw-fade.dw-out { - opacity: 0; - animation-name: dw-f-out; - -webkit-animation-name: dw-f-out; - -moz-animation-name: dw-f-out; -} -/* Fade in */ -@keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-webkit-keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-moz-keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -/* Fade out */ -@keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@-webkit-keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@-moz-keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -/* Pop in */ -@keyframes dw-p-in { - from { - opacity: 0; - transform: scale(0.8); - } - to { - opacity: 1; - transform: scale(1); - } -} -@-webkit-keyframes dw-p-in { - from { - opacity: 0; - -webkit-transform: scale(0.8); - } - to { - opacity: 1; - -webkit-transform: scale(1); - } -} -@-moz-keyframes dw-p-in { - from { - opacity: 0; - -moz-transform: scale(0.8); - } - to { - opacity: 1; - -moz-transform: scale(1); - } -} -/* Pop out */ -@keyframes dw-p-out { - from { - opacity: 1; - transform: scale(1); - } - to { - opacity: 0; - transform: scale(0.8); - } -} -@-webkit-keyframes dw-p-out { - from { - opacity: 1; - -webkit-transform: scale(1); - } - to { - opacity: 0; - -webkit-transform: scale(0.8); - } -} -@-moz-keyframes dw-p-out { - from { - opacity: 1; - -moz-transform: scale(1); - } - to { - opacity: 0; - -moz-transform: scale(0.8); - } -} -/* Flip in */ -@keyframes dw-fl-in { - from { - opacity: 0; - transform: rotateY(90deg); - } - to { - opacity: 1; - transform: rotateY(0); - } -} -@-webkit-keyframes dw-fl-in { - from { - opacity: 0; - -webkit-transform: rotateY(90deg); - } - to { - opacity: 1; - -webkit-transform: rotateY(0); - } -} -@-moz-keyframes dw-fl-in { - from { - opacity: 0; - -moz-transform: rotateY(90deg); - } - to { - opacity: 1; - -moz-transform: rotateY(0); - } -} -/* Flip out */ -@keyframes dw-fl-out { - from { - opacity: 1; - transform: rotateY(0deg); - } - to { - opacity: 0; - transform: rotateY(-90deg); - } -} -@-webkit-keyframes dw-fl-out { - from { - opacity: 1; - -webkit-transform: rotateY(0deg); - } - to { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } -} -@-moz-keyframes dw-fl-out { - from { - opacity: 1; - -moz-transform: rotateY(0deg); - } - to { - opacity: 0; - -moz-transform: rotateY(-90deg); - } -} -/* Swing in */ -@keyframes dw-sw-in { - from { - opacity: 0; - transform: rotateY(-90deg); - } - to { - opacity: 1; - transform: rotateY(0deg); - } -} -@-webkit-keyframes dw-sw-in { - from { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } - to { - opacity: 1; - -webkit-transform: rotateY(0deg); - } -} -@-moz-keyframes dw-sw-in { - from { - opacity: 0; - -moz-transform: rotateY(-90deg); - } - to { - opacity: 1; - -moz-transform: rotateY(0deg); - } -} -/* Swing out */ -@keyframes dw-sw-out { - from { - opacity: 1; - transform: rotateY(0deg); - } - to { - opacity: 0; - transform: rotateY(-90deg); - } -} -@-webkit-keyframes dw-sw-out { - from { - opacity: 1; - -webkit-transform: rotateY(0deg); - } - to { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } -} -@-moz-keyframes dw-sw-out { - from { - opacity: 1; - -moz-transform: rotateY(0deg); - } - to { - opacity: 0; - -moz-transform: rotateY(-90deg); - } -} -/* Slide horizontal in */ -@keyframes dw-sh-in { - from { - opacity: 0; - transform: translateX(-100%); - } - to { - opacity: 1; - transform: translateX(0); - } -} -@-webkit-keyframes dw-sh-in { - from { - opacity: 0; - -webkit-transform: translateX(-100%); - } - to { - opacity: 1; - -webkit-transform: translateX(0); - } -} -@-moz-keyframes dw-sh-in { - from { - opacity: 0; - -moz-transform: translateX(-100%); - } - to { - opacity: 1; - -moz-transform: translateX(0); - } -} -/* Slide horizontal out */ -@keyframes dw-sh-out { - from { - opacity: 1; - transform: translateX(0); - } - to { - opacity: 0; - transform: translateX(100%); - } -} -@-webkit-keyframes dw-sh-out { - from { - opacity: 1; - -webkit-transform: translateX(0); - } - to { - opacity: 0; - -webkit-transform: translateX(100%); - } -} -@-moz-keyframes dw-sh-out { - from { - opacity: 1; - -moz-transform: translateX(0); - } - to { - opacity: 0; - -moz-transform: translateX(100%); - } -} -/* Slide vertical in */ -@keyframes dw-dw-sv-in { - from { - opacity: 0; - transform: translateY(-100%); - } - to { - opacity: 1; - transform: translateY(0); - } -} -@-webkit-keyframes dw-dw-sv-in { - from { - opacity: 0; - -webkit-transform: translateY(-100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-dw-sv-in { - from { - opacity: 0; - -moz-transform: translateY(-100%); - } - to { - opacity: 1; - -moz-transform: translateY(0); - } -} -/* Slide vertical out */ -@keyframes dw-sv-out { - from { - opacity: 1; - transform: translateY(0); - } - to { - opacity: 0; - transform: translateY(100%); - } -} -@-webkit-keyframes dw-sv-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 0; - -webkit-transform: translateY(100%); - } -} -@-moz-keyframes dw-sv-out { - from { - opacity: 1; - -moz-transform: translateY(0); - } - to { - opacity: 0; - -moz-transform: translateY(100%); - } -} -/* Slide Down In */ -@keyframes dw-sd-in { - from { - transform: translateY(-100%); - } - to { - transform: translateY(0); - } -} -@-webkit-keyframes dw-sd-in { - from { - opacity: 1; - -webkit-transform: translateY(-100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-sd-in { - from { - -moz-transform: translateY(-100%); - } - to { - -moz-transform: translateY(0); - } -} -/* Slide down out */ -@keyframes dw-sd-out { - from { - transform: translateY(0); - } - to { - transform: translateY(-100%); - } -} -@-webkit-keyframes dw-sd-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 1; - -webkit-transform: translateY(-100%); - } -} -@-moz-keyframes dw-sd-out { - from { - -moz-transform: translateY(0); - } - to { - -moz-transform: translateY(-100%); - } -} -/* Slide Up In */ -@keyframes dw-su-in { - from { - transform: translateY(100%); - } - to { - transform: translateY(0); - } -} -@-webkit-keyframes dw-su-in { - from { - opacity: 1; - -webkit-transform: translateY(100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-su-in { - from { - -moz-transform: translateY(100%); - } - to { - -moz-transform: translateY(0); - } -} -/* Slide up out */ -@keyframes dw-su-out { - from { - transform: translateY(0); - } - to { - transform: translateY(100%); - } -} -@-webkit-keyframes dw-su-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 1; - -webkit-transform: translateY(100%); - } -} -@-moz-keyframes dw-su-out { - from { - -moz-transform: translateY(0); - } - to { - -moz-transform: translateY(100%); - } -} diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.js b/web/ext/date/mobiscroll-2.6.0/mobiscroll.js deleted file mode 100644 index 02950e3425..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.js +++ /dev/null @@ -1,2236 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true, nomen: true */ -/*! - * jQuery MobiScroll v2.6.0 - * http://mobiscroll.com - * - * Copyright 2010-2013, Acid Media - * Licensed under the MIT license. - * - */ -(function ($) { - - function Scroller(elem, settings) { - var m, - hi, - v, - dw, - ww, // Window width - wh, // Window height - rwh, - mw, // Modal width - mh, // Modal height - anim, - debounce, - theme, - lang, - click, - scrollable, - moved, - start, - startTime, - stop, - p, - min, - max, - target, - index, - timer, - readOnly, - that = this, - ms = $.mobiscroll, - e = elem, - elm = $(e), - s = extend({}, defaults), - pres = {}, - iv = {}, - pos = {}, - pixels = {}, - wheels = [], - input = elm.is('input'), - visible = false, - onStart = function (e) { - // Scroll start - if (testTouch(e) && !move && !isReadOnly(this) && !click) { - // Prevent scroll - e.preventDefault(); - - move = true; - scrollable = s.mode != 'clickpick'; - target = $('.dw-ul', this); - setGlobals(target); - moved = iv[index] !== undefined; // Don't allow tap, if still moving - p = moved ? getCurrentPosition(target) : pos[index]; - start = getCoord(e, 'Y'); - startTime = new Date(); - stop = start; - scroll(target, index, p, 0.001); - - if (scrollable) { - target.closest('.dwwl').addClass('dwa'); - } - - $(document).bind(MOVE_EVENT, onMove).bind(END_EVENT, onEnd); - } - }, - onMove = function (e) { - if (scrollable) { - e.preventDefault(); - e.stopPropagation(); - stop = getCoord(e, 'Y'); - scroll(target, index, constrain(p + (start - stop) / hi, min - 1, max + 1)); - } - moved = true; - }, - onEnd = function (e) { - var time = new Date() - startTime, - val = constrain(p + (start - stop) / hi, min - 1, max + 1), - speed, - dist, - tindex, - ttop = target.offset().top; - - if (time < 300) { - speed = (stop - start) / time; - dist = (speed * speed) / s.speedUnit; - if (stop - start < 0) { - dist = -dist; - } - } else { - dist = stop - start; - } - - tindex = Math.round(p - dist / hi); - - if (!dist && !moved) { // this is a "tap" - var idx = Math.floor((stop - ttop) / hi), - li = $('.dw-li', target).eq(idx), - hl = scrollable; - - if (event('onValueTap', [li]) !== false) { - tindex = idx; - } else { - hl = true; - } - - if (hl) { - li.addClass('dw-hl'); // Highlight - setTimeout(function () { - li.removeClass('dw-hl'); - }, 200); - } - } - - if (scrollable) { - calc(target, tindex, 0, true, Math.round(val)); - } - - move = false; - target = null; - - $(document).unbind(MOVE_EVENT, onMove).unbind(END_EVENT, onEnd); - }, - onBtnStart = function (e) { - $(document).bind(END_EVENT, onBtnEnd); - // Active button - if (!$(this).hasClass('dwb-d')) { - $(this).addClass('dwb-a'); - } - // +/- buttons - if ($(this).hasClass('dwwb')) { - var w = $(this).closest('.dwwl'); - if (testTouch(e) && !isReadOnly(w) && !w.hasClass('dwa')) { - e.stopPropagation(); - e.preventDefault(); - click = true; - // + Button - var t = w.find('.dw-ul'), - func = $(this).hasClass('dwwbp') ? plus : minus; - - setGlobals(t); - clearInterval(timer); - timer = setInterval(function () { func(t); }, s.delay); - func(t); - } - } - }, - onBtnEnd = function (e) { - if (click) { - clearInterval(timer); - click = false; - } - $(document).unbind(END_EVENT, onBtnEnd); - $('.dwb-a', dw).removeClass('dwb-a'); - }, - onScroll = function (e) { - if (!isReadOnly(this)) { - e.preventDefault(); - e = e.originalEvent; - var delta = e.wheelDelta ? (e.wheelDelta / 120) : (e.detail ? (-e.detail / 3) : 0), - t = $('.dw-ul', this); - - setGlobals(t); - calc(t, Math.round(pos[index] - delta), delta < 0 ? 1 : 2); - } - }; - - // Private functions - - function isReadOnly(wh) { - if ($.isArray(s.readonly)) { - var i = $('.dwwl', dw).index(wh); - return s.readonly[i]; - } - return s.readonly; - } - - function generateWheelItems(i) { - var html = '
        ', - ww = wheels[i], - w = ww.values ? ww : convert(ww), - l = 1, - values = w.values, - keys = w.keys || values; - - $.each(values, function (j, v) { - if (l % 20 == 0) { - html += '
        '; - } - html += '
        ' + v + '
        '; - l++; - }); - - html += '
        '; - return html; - } - - function setGlobals(t) { - min = $('.dw-li', t).index($('.dw-v', t).eq(0)); - max = $('.dw-li', t).index($('.dw-v', t).eq(-1)); - index = $('.dw-ul', dw).index(t); - } - - function formatHeader(v) { - var t = s.headerText; - return t ? (typeof t === 'function' ? t.call(e, v) : t.replace(/\{value\}/i, v)) : ''; - } - - function read() { - that.temp = ((input && that.val !== null && that.val != elm.val()) || that.values === null) ? s.parseValue(elm.val() || '', that) : that.values.slice(0); - setVal(); - } - - function getCurrentPosition(t) { - var style = window.getComputedStyle ? getComputedStyle(t[0]) : t[0].style, - matrix, - px; - - if (has3d) { - $.each(['t', 'webkitT', 'MozT', 'OT', 'msT'], function (i, v) { - if (style[v + 'ransform'] !== undefined) { - matrix = style[v + 'ransform']; - return false; - } - }); - matrix = matrix.split(')')[0].split(', '); - px = matrix[13] || matrix[5]; - } else { - px = style.top.replace('px', ''); - } - - return Math.round(m - (px / hi)); - } - - function ready(t, i) { - clearTimeout(iv[i]); - delete iv[i]; - t.closest('.dwwl').removeClass('dwa'); - } - - function scroll(t, index, val, time, active) { - - var px = (m - val) * hi, - style = t[0].style, - i; - - if (px == pixels[index] && iv[index]) { - return; - } - - if (time && px != pixels[index]) { - // Trigger animation start event - event('onAnimStart', [dw, index, time]); - } - - pixels[index] = px; - - style[pr + 'Transition'] = 'all ' + (time ? time.toFixed(3) : 0) + 's ease-out'; - - if (has3d) { - style[pr + 'Transform'] = 'translate3d(0,' + px + 'px,0)'; - } else { - style.top = px + 'px'; - } - - if (iv[index]) { - ready(t, index); - } - - if (time && active !== undefined) { - t.closest('.dwwl').addClass('dwa'); - iv[index] = setTimeout(function () { - ready(t, index); - }, time * 1000); - } - - pos[index] = val; - } - - function scrollToPos(time, index, manual, dir, active) { - - // Call validation event - if (event('validate', [dw, index, time]) !== false) { - - // Set scrollers to position - $('.dw-ul', dw).each(function (i) { - var t = $(this), - cell = $('.dw-li[data-val="' + that.temp[i] + '"]', t), - cells = $('.dw-li', t), - v = cells.index(cell), - l = cells.length, - sc = i == index || index === undefined; - - // Scroll to a valid cell - if (!cell.hasClass('dw-v')) { - var cell1 = cell, - cell2 = cell, - dist1 = 0, - dist2 = 0; - - while (v - dist1 >= 0 && !cell1.hasClass('dw-v')) { - dist1++; - cell1 = cells.eq(v - dist1); - } - - while (v + dist2 < l && !cell2.hasClass('dw-v')) { - dist2++; - cell2 = cells.eq(v + dist2); - } - - // If we have direction (+/- or mouse wheel), the distance does not count - if (((dist2 < dist1 && dist2 && dir !== 2) || !dist1 || (v - dist1 < 0) || dir == 1) && cell2.hasClass('dw-v')) { - cell = cell2; - v = v + dist2; - } else { - cell = cell1; - v = v - dist1; - } - } - - if (!(cell.hasClass('dw-sel')) || sc) { - // Set valid value - that.temp[i] = cell.attr('data-val'); - - // Add selected class to cell - $('.dw-sel', t).removeClass('dw-sel'); - cell.addClass('dw-sel'); - - // Scroll to position - scroll(t, i, v, sc ? time : 0.1, sc ? active : false); - } - }); - - // Reformat value if validation changed something - v = s.formatResult(that.temp); - if (s.display == 'inline') { - setVal(manual, 0, true); - } else { - $('.dwv', dw).html(formatHeader(v)); - } - - if (manual) { - event('onChange', [v]); - } - } - - } - - function event(name, args) { - var ret; - args.push(that); - $.each([theme.defaults, pres, settings], function (i, v) { - if (v[name]) { // Call preset event - ret = v[name].apply(e, args); - } - }); - return ret; - } - - function calc(t, val, dir, anim, orig) { - val = constrain(val, min, max); - - var cell = $('.dw-li', t).eq(val), - o = orig === undefined ? val : orig, - idx = index, - time = anim ? (val == o ? 0.1 : Math.abs((val - o) * s.timeUnit)) : 0; - - // Set selected scroller value - that.temp[idx] = cell.attr('data-val'); - - scroll(t, idx, val, time, orig); - - setTimeout(function () { - // Validate - scrollToPos(time, idx, true, dir, orig); - }, 10); - } - - function plus(t) { - var val = pos[index] + 1; - calc(t, val > max ? min : val, 1, true); - } - - function minus(t) { - var val = pos[index] - 1; - calc(t, val < min ? max : val, 2, true); - } - - function setVal(fill, time, noscroll, temp) { - - if (visible && !noscroll) { - scrollToPos(time); - } - - v = s.formatResult(that.temp); - - if (!temp) { - that.values = that.temp.slice(0); - that.val = v; - } - - if (fill) { - if (input) { - elm.val(v).trigger('change'); - } - } - } - - // Public functions - - that.position = function (check) { - - if (s.display == 'inline' || (ww === $(window).width() && rwh === $(window).height() && check) || (event('onPosition', [dw]) === false)) { - return; - } - - var w, - l, - t, - aw, // anchor width - ah, // anchor height - ap, // anchor position - at, // anchor top - al, // anchor left - arr, // arrow - arrw, // arrow width - arrl, // arrow left - scroll, - totalw = 0, - minw = 0, - st = $(window).scrollTop(), - wr = $('.dwwr', dw), - d = $('.dw', dw), - css = {}, - anchor = s.anchor === undefined ? elm : s.anchor; - - ww = $(window).width(); - rwh = $(window).height(); - wh = window.innerHeight; // on iOS we need innerHeight - wh = wh || rwh; - - if (/modal|bubble/.test(s.display)) { - $('.dwc', dw).each(function () { - w = $(this).outerWidth(true); - totalw += w; - minw = (w > minw) ? w : minw; - }); - w = totalw > ww ? minw : totalw; - wr.width(w).css('white-space', totalw > ww ? '' : 'nowrap'); - } - - mw = d.outerWidth(); - mh = d.outerHeight(true); - - if (s.display == 'modal') { - l = (ww - mw) / 2; - t = st + (wh - mh) / 2; - } else if (s.display == 'bubble') { - scroll = true; - arr = $('.dw-arrw-i', dw); - ap = anchor.offset(); - at = ap.top; - al = ap.left; - - // horizontal positioning - aw = anchor.outerWidth(); - ah = anchor.outerHeight(); - l = al - (d.outerWidth(true) - aw) / 2; - l = l > (ww - mw) ? (ww - (mw + 20)) : l; - l = l >= 0 ? l : 20; - - // vertical positioning - t = at - mh; // above the input - if ((t < st) || (at > st + wh)) { // if doesn't fit above or the input is out of the screen - d.removeClass('dw-bubble-top').addClass('dw-bubble-bottom'); - t = at + ah; // below the input - } else { - d.removeClass('dw-bubble-bottom').addClass('dw-bubble-top'); - } - - // Calculate Arrow position - arrw = arr.outerWidth(); - arrl = al + aw / 2 - (l + (mw - arrw) / 2); - - // Limit Arrow position - $('.dw-arr', dw).css({ left: constrain(arrl, 0, arrw) }); - } else { - css.width = '100%'; - if (s.display == 'top') { - t = st; - } else if (s.display == 'bottom') { - t = st + wh - mh; - } - } - - css.top = t < 0 ? 0 : t; - css.left = l; - d.css(css); - - // If top + modal height > doc height, increase doc height - $('.dw-persp', dw).height(0).height(t + mh > $(document).height() ? t + mh : $(document).height()); - - // Scroll needed - if (scroll && ((t + mh > st + wh) || (at > st + wh))) { - $(window).scrollTop(t + mh - wh); - } - }; - - /** - * Enables the scroller and the associated input. - */ - that.enable = function () { - s.disabled = false; - if (input) { - elm.prop('disabled', false); - } - }; - - /** - * Disables the scroller and the associated input. - */ - that.disable = function () { - s.disabled = true; - if (input) { - elm.prop('disabled', true); - } - }; - - /** - * Gets the selected wheel values, formats it, and set the value of the scroller instance. - * If input parameter is true, populates the associated input element. - * @param {Array} values - Wheel values. - * @param {Boolean} [fill=false] - Also set the value of the associated input element. - * @param {Number} [time=0] - Animation time - * @param {Boolean} [temp=false] - If true, then only set the temporary value.(only scroll there but not set the value) - */ - that.setValue = function (values, fill, time, temp) { - that.temp = $.isArray(values) ? values.slice(0) : s.parseValue.call(e, values + '', that); - setVal(fill, time, false, temp); - }; - - that.getValue = function () { - return that.values; - }; - - that.getValues = function () { - var ret = [], - i; - - for (i in that._selectedValues) { - ret.push(that._selectedValues[i]); - } - return ret; - }; - - /** - * Changes the values of a wheel, and scrolls to the correct position - */ - that.changeWheel = function (idx, time) { - if (dw) { - var i = 0, - nr = idx.length; - - $.each(s.wheels, function (j, wg) { - $.each(wg, function (k, w) { - if ($.inArray(i, idx) > -1) { - wheels[i] = w; - $('.dw-ul', dw).eq(i).html(generateWheelItems(i)); - nr--; - if (!nr) { - that.position(); - scrollToPos(time, undefined, true); - return false; - } - } - i++; - }); - if (!nr) { - return false; - } - }); - } - }; - - /** - * Return true if the scroller is currently visible. - */ - that.isVisible = function () { - return visible; - }; - - that.tap = function (el, handler) { - var startX, - startY; - - if (s.tap) { - el.bind('touchstart', function (e) { - e.preventDefault(); - startX = getCoord(e, 'X'); - startY = getCoord(e, 'Y'); - }).bind('touchend', function (e) { - // If movement is less than 20px, fire the click event handler - if (Math.abs(getCoord(e, 'X') - startX) < 20 && Math.abs(getCoord(e, 'Y') - startY) < 20) { - handler.call(this, e); - } - tap = true; - setTimeout(function () { - tap = false; - }, 300); - }); - } - - el.bind('click', function (e) { - if (!tap) { - // If handler was not called on touchend, call it on click; - handler.call(this, e); - } - }); - - }; - - /** - * Shows the scroller instance. - * @param {Boolean} prevAnim - Prevent animation if true - */ - that.show = function (prevAnim) { - if (s.disabled || visible) { - return false; - } - - if (s.display == 'top') { - anim = 'slidedown'; - } - - if (s.display == 'bottom') { - anim = 'slideup'; - } - - // Parse value from input - read(); - - event('onBeforeShow', []); - - // Create wheels - var l = 0, - mAnim = ''; - - if (anim && !prevAnim) { - mAnim = 'dw-' + anim + ' dw-in'; - } - // Create wheels containers - var html = '
        ' + (s.display == 'inline' ? '
        ' : '
        ' + '
        ' + (s.headerText ? '
        ' : '')) + '
        '; - - $.each(s.wheels, function (i, wg) { // Wheel groups - html += '
        '; - $.each(wg, function (j, w) { // Wheels - wheels[l] = w; - html += ''; - l++; - }); - - html += '
        ' + (s.mode != 'scroller' ? '
        +
        ' : '') + '
        ' + (w.label || j) + '
        '; - // Create wheel values - html += generateWheelItems(l); - html += '
        '; - }); - - html += '
        ' + (s.display != 'inline' ? '
        ' + s.setText + '' + (s.button3 ? '' + s.button3Text + '' : '') + '' + s.cancelText + '
        ' : '') + '
        '; - dw = $(html); - - scrollToPos(); - - event('onMarkupReady', [dw]); - - // Show - if (s.display != 'inline') { - dw.appendTo('body'); - if (anim && !prevAnim) { - dw.addClass('dw-trans'); - // Remove animation class - setTimeout(function () { - dw.removeClass('dw-trans').find('.dw').removeClass(mAnim); - }, 350); - } - } else if (elm.is('div')) { - elm.html(dw); - } else { - dw.insertAfter(elm); - } - - event('onMarkupInserted', [dw]); - - visible = true; - - // Theme init - theme.init(dw, that); - - if (s.display != 'inline') { - // Init buttons - that.tap($('.dwb-s span', dw), function () { - if (that.hide(false, 'set') !== false) { - setVal(true, 0, true); - event('onSelect', [that.val]); - } - }); - - that.tap($('.dwb-c span', dw), function () { - that.cancel(); - }); - - if (s.button3) { - that.tap($('.dwb-n span', dw), s.button3); - } - - // prevent scrolling if not specified otherwise - if (s.scrollLock) { - dw.bind('touchmove', function (e) { - if (mh <= wh && mw <= ww) { - e.preventDefault(); - } - }); - } - - // Disable inputs to prevent bleed through (Android bug) and set autocomplete to off (for Firefox) - /*$('input,select,button').each(function () { - if (!this.disabled) { - $(this).addClass('dwtd').prop('disabled', true).data('autocomplete', $(this).attr('autocomplete')).attr('autocomplete', 'off'); - } - });*/ - - // Set position - that.position(); - $(window).bind('orientationchange.dw resize.dw', function () { - // Sometimes scrollTop is not correctly set, so we wait a little - clearTimeout(debounce); - debounce = setTimeout(function () { - that.position(true); - }, 100); - }); - } - - // Events - dw.delegate('.dwwl', 'DOMMouseScroll mousewheel', onScroll).delegate('.dwb-e', START_EVENT, onBtnStart).delegate('.dwwl', START_EVENT, onStart); - - event('onShow', [dw, v]); - }; - - /** - * Hides the scroller instance. - */ - that.hide = function (prevAnim, btn) { - // If onClose handler returns false, prevent hide - if (!visible || event('onClose', [v, btn]) === false) { - return false; - } - - // Re-enable temporary disabled fields - $('.dwtd').each(function () { - $(this).prop('disabled', false).removeClass('dwtd'); - if ($(this).data('autocomplete')) { - $(this).attr('autocomplete', $(this).data('autocomplete')); - } else { - $(this).removeAttr('autocomplete'); - } - }); - elm.blur(); - - // Hide wheels and overlay - if (dw) { - if (s.display != 'inline' && anim && !prevAnim) { - dw.addClass('dw-trans').find('.dw').addClass('dw-' + anim + ' dw-out'); - setTimeout(function () { - dw.remove(); - dw = null; - }, 350); - } else { - dw.remove(); - dw = null; - } - visible = false; - pixels = {}; - // Stop positioning on window resize - $(window).unbind('.dw'); - } - }; - - /** - * Cancel and hide the scroller instance. - */ - that.cancel = function () { - if (that.hide(false, 'cancel') !== false) { - event('onCancel', [that.val]); - } - }; - - /** - * Scroller initialization. - */ - that.init = function (ss) { - // Get theme defaults - theme = extend({ defaults: {}, init: empty }, ms.themes[ss.theme || s.theme]); - - // Get language defaults - lang = ms.i18n[ss.lang || s.lang]; - - extend(settings, ss); // Update original user settings - extend(s, theme.defaults, lang, settings); - - that.settings = s; - - // Unbind all events (if re-init) - elm.unbind('.dw'); - - var preset = ms.presets[s.preset]; - - if (preset) { - pres = preset.call(e, that); - extend(s, pres, settings); // Load preset settings - } - - // Set private members - m = Math.floor(s.rows / 2); - hi = s.height; - anim = s.animate; - - if (visible) { - that.hide(); - } - - if (s.display == 'inline') { - that.show(); - } else { - read(); - if (input && s.showOnFocus) { - // Set element readonly, save original state - if (readOnly === undefined) { - readOnly = e.readOnly; - } - e.readOnly = true; - // Init show datewheel - elm.bind('focus.dw', function () { that.show(); }); - } - } - }; - - that.trigger = function (name, params) { - return event(name, params); - }; - - that.option = function (opt, value) { - var obj = {}; - if (typeof opt === 'object') { - obj = opt; - } else { - obj[opt] = value; - } - that.init(obj); - }; - - that.destroy = function () { - that.hide(); - elm.unbind('.dw'); - delete scrollers[e.id]; - if (input) { - e.readOnly = readOnly; - } - }; - - that.getInst = function () { - return that; - }; - - that.values = null; - that.val = null; - that.temp = null; - that._selectedValues = {}; - - that.init(settings); - } - - function testProps(props) { - var i; - for (i in props) { - if (mod[props[i]] !== undefined) { - return true; - } - } - return false; - } - - function testPrefix() { - var prefixes = ['Webkit', 'Moz', 'O', 'ms'], - p; - - for (p in prefixes) { - if (testProps([prefixes[p] + 'Transform'])) { - return '-' + prefixes[p].toLowerCase(); - } - } - return ''; - } - - function testTouch(e) { - if (e.type === 'touchstart') { - touch = true; - /*setTimeout(function () { - touch = false; // Reset if mouse event was not fired - }, 500);*/ - } else if (touch) { - touch = false; - return false; - } - return true; - } - - function getCoord(e, c) { - var org = e.originalEvent, - ct = e.changedTouches; - return ct || (org && org.changedTouches) ? (org ? org.changedTouches[0]['page' + c] : ct[0]['page' + c]) : e['page' + c]; - - } - - function constrain(val, min, max) { - return Math.max(min, Math.min(val, max)); - } - - function convert(w) { - var ret = { - values: [], - keys: [] - }; - $.each(w, function (k, v) { - ret.keys.push(k); - ret.values.push(v); - }); - return ret; - } - - function init(that, options, args) { - var ret = that; - - // Init - if (typeof options === 'object') { - return that.each(function () { - if (!this.id) { - uuid += 1; - this.id = 'mobiscroll' + uuid; - } - scrollers[this.id] = new Scroller(this, options); - }); - } - - // Method call - if (typeof options === 'string') { - that.each(function () { - var r, - inst = scrollers[this.id]; - - if (inst && inst[options]) { - r = inst[options].apply(this, Array.prototype.slice.call(args, 1)); - if (r !== undefined) { - ret = r; - return false; - } - } - }); - } - - return ret; - } - - var move, - tap, - touch, - date = new Date(), - uuid = date.getTime(), - scrollers = {}, - empty = function () {}, - mod = document.createElement('modernizr').style, - has3d = testProps(['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective']), - prefix = testPrefix(), - pr = prefix.replace(/^\-/, '').replace('moz', 'Moz'), - extend = $.extend, - START_EVENT = 'touchstart mousedown', - MOVE_EVENT = 'touchmove mousemove', - END_EVENT = 'touchend mouseup', - defaults = { - // Options - width: 70, - height: 40, - rows: 3, - delay: 300, - disabled: false, - readonly: false, - showOnFocus: true, - showLabel: true, - wheels: [], - theme: '', - headerText: '{value}', - display: 'modal', - mode: 'scroller', - preset: '', - lang: 'en-US', - setText: 'Set', - cancelText: 'Cancel', - scrollLock: true, - tap: true, - speedUnit: 0.0012, - timeUnit: 0.1, - formatResult: function (d) { - return d.join(' '); - }, - parseValue: function (value, inst) { - var val = value.split(' '), - ret = [], - i = 0, - keys; - - $.each(inst.settings.wheels, function (j, wg) { - $.each(wg, function (k, w) { - w = w.values ? w : convert(w); - keys = w.keys || w.values; - if ($.inArray(val[i], keys) !== -1) { - ret.push(val[i]); - } else { - ret.push(keys[0]); - } - i++; - }); - }); - return ret; - } - }; - - $(document).bind('mouseover mouseup mousedown click', function (e) { // Prevent standard behaviour on body click - if (tap) { - e.stopPropagation(); - e.preventDefault(); - return false; - } - }); - - $.fn.mobiscroll = function (method) { - extend(this, $.mobiscroll.shorts); - return init(this, method, arguments); - }; - - $.mobiscroll = $.mobiscroll || { - /** - * Set settings for all instances. - * @param {Object} o - New default settings. - */ - setDefaults: function (o) { - extend(defaults, o); - }, - presetShort: function (name) { - this.shorts[name] = function (method) { - return init(this, extend(method, { preset: name }), arguments); - }; - }, - shorts: {}, - presets: {}, - themes: {}, - i18n: {} - }; - - $.scroller = $.scroller || $.mobiscroll; - $.fn.scroller = $.fn.scroller || $.fn.mobiscroll; - -})(jQuery); - -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -(function ($) { - - var ms = $.mobiscroll, - date = new Date(), - defaults = { - dateFormat: 'mm/dd/yy', - dateOrder: 'mmddy', - timeWheels: 'hhiiA', - timeFormat: 'hh:ii A', - startYear: date.getFullYear() - 100, - endYear: date.getFullYear() + 1, - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - shortYearCutoff: '+10', - monthText: 'Month', - dayText: 'Day', - yearText: 'Year', - hourText: 'Hours', - minuteText: 'Minutes', - secText: 'Seconds', - ampmText: ' ', - nowText: 'Now', - showNow: false, - stepHour: 1, - stepMinute: 1, - stepSecond: 1, - separator: ' ' - }, - preset = function (inst) { - var that = $(this), - html5def = {}, - format; - // Force format for html5 date inputs (experimental) - if (that.is('input')) { - switch (that.attr('type')) { - case 'date': - format = 'yy-mm-dd'; - break; - case 'datetime': - format = 'yy-mm-ddTHH:ii:ssZ'; - break; - case 'datetime-local': - format = 'yy-mm-ddTHH:ii:ss'; - break; - case 'month': - format = 'yy-mm'; - html5def.dateOrder = 'mmyy'; - break; - case 'time': - format = 'HH:ii:ss'; - break; - } - // Check for min/max attributes - var min = that.attr('min'), - max = that.attr('max'); - if (min) { - html5def.minDate = ms.parseDate(format, min); - } - if (max) { - html5def.maxDate = ms.parseDate(format, max); - } - } - - // Set year-month-day order - var i, - k, - keys, - values, - wg, - start, - end, - orig = $.extend({}, inst.settings), - s = $.extend(inst.settings, defaults, html5def, orig), - offset = 0, - wheels = [], - ord = [], - o = {}, - f = { y: 'getFullYear', m: 'getMonth', d: 'getDate', h: getHour, i: getMinute, s: getSecond, a: getAmPm }, - p = s.preset, - dord = s.dateOrder, - tord = s.timeWheels, - regen = dord.match(/D/), - ampm = tord.match(/a/i), - hampm = tord.match(/h/), - hformat = p == 'datetime' ? s.dateFormat + s.separator + s.timeFormat : p == 'time' ? s.timeFormat : s.dateFormat, - defd = new Date(), - stepH = s.stepHour, - stepM = s.stepMinute, - stepS = s.stepSecond, - mind = s.minDate || new Date(s.startYear, 0, 1), - maxd = s.maxDate || new Date(s.endYear, 11, 31, 23, 59, 59); - - format = format || hformat; - - if (p.match(/date/i)) { - - // Determine the order of year, month, day wheels - $.each(['y', 'm', 'd'], function (j, v) { - i = dord.search(new RegExp(v, 'i')); - if (i > -1) { - ord.push({ o: i, v: v }); - } - }); - ord.sort(function (a, b) { return a.o > b.o ? 1 : -1; }); - $.each(ord, function (i, v) { - o[v.v] = i; - }); - - wg = []; - for (k = 0; k < 3; k++) { - if (k == o.y) { - offset++; - values = []; - keys = []; - start = mind.getFullYear(); - end = maxd.getFullYear(); - for (i = start; i <= end; i++) { - keys.push(i); - values.push(dord.match(/yy/i) ? i : (i + '').substr(2, 2)); - } - addWheel(wg, keys, values, s.yearText); - } else if (k == o.m) { - offset++; - values = []; - keys = []; - for (i = 0; i < 12; i++) { - var str = dord.replace(/[dy]/gi, '').replace(/mm/, i < 9 ? '0' + (i + 1) : i + 1).replace(/m/, (i + 1)); - keys.push(i); - values.push(str.match(/MM/) ? str.replace(/MM/, '' + s.monthNames[i] + '') : str.replace(/M/, '' + s.monthNamesShort[i] + '')); - } - addWheel(wg, keys, values, s.monthText); - } else if (k == o.d) { - offset++; - values = []; - keys = []; - for (i = 1; i < 32; i++) { - keys.push(i); - values.push(dord.match(/dd/i) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.dayText); - } - } - wheels.push(wg); - } - - if (p.match(/time/i)) { - - // Determine the order of hours, minutes, seconds wheels - ord = []; - $.each(['h', 'i', 's', 'a'], function (i, v) { - i = tord.search(new RegExp(v, 'i')); - if (i > -1) { - ord.push({ o: i, v: v }); - } - }); - ord.sort(function (a, b) { - return a.o > b.o ? 1 : -1; - }); - $.each(ord, function (i, v) { - o[v.v] = offset + i; - }); - - wg = []; - for (k = offset; k < offset + 4; k++) { - if (k == o.h) { - offset++; - values = []; - keys = []; - for (i = 0; i < (hampm ? 12 : 24); i += stepH) { - keys.push(i); - values.push(hampm && i == 0 ? 12 : tord.match(/hh/i) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.hourText); - } else if (k == o.i) { - offset++; - values = []; - keys = []; - for (i = 0; i < 60; i += stepM) { - keys.push(i); - values.push(tord.match(/ii/) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.minuteText); - } else if (k == o.s) { - offset++; - values = []; - keys = []; - for (i = 0; i < 60; i += stepS) { - keys.push(i); - values.push(tord.match(/ss/) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.secText); - } else if (k == o.a) { - offset++; - var upper = tord.match(/A/); - addWheel(wg, [0, 1], upper ? ['AM', 'PM'] : ['am', 'pm'], s.ampmText); - } - } - - wheels.push(wg); - } - - function get(d, i, def) { - if (o[i] !== undefined) { - return +d[o[i]]; - } - if (def !== undefined) { - return def; - } - return defd[f[i]] ? defd[f[i]]() : f[i](defd); - } - - function addWheel(wg, k, v, lbl) { - wg.push({ - values: v, - keys: k, - label: lbl - }); - } - - function step(v, st) { - return Math.floor(v / st) * st; - } - - function getHour(d) { - var hour = d.getHours(); - hour = hampm && hour >= 12 ? hour - 12 : hour; - return step(hour, stepH); - } - - function getMinute(d) { - return step(d.getMinutes(), stepM); - } - - function getSecond(d) { - return step(d.getSeconds(), stepS); - } - - function getAmPm(d) { - return ampm && d.getHours() > 11 ? 1 : 0; - } - - function getDate(d) { - var hour = get(d, 'h', 0); - return new Date(get(d, 'y'), get(d, 'm'), get(d, 'd', 1), get(d, 'a') ? hour + 12 : hour, get(d, 'i', 0), get(d, 's', 0)); - } - - // Extended methods - // --- - - /** - * Sets the selected date - * - * @param {Date} d Date to select. - * @param {Boolean} [fill=false] Also set the value of the associated input element. Default is true. - * @return {Object} jQuery object to maintain chainability - */ - inst.setDate = function (d, fill, time, temp) { - var i; - - // Set wheels - for (i in o) { - inst.temp[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d); - } - inst.setValue(inst.temp, fill, time, temp); - }; - - /** - * Returns the currently selected date. - * - * @param {Boolean} [temp=false] If true, return the currently shown date on the picker, otherwise the last selected one - * @return {Date} - */ - inst.getDate = function (temp) { - return getDate(temp ? inst.temp : inst.values); - }; - - // --- - - return { - button3Text: s.showNow ? s.nowText : undefined, - button3: s.showNow ? function () { inst.setDate(new Date(), false, 0.3, true); } : undefined, - wheels: wheels, - headerText: function (v) { - return ms.formatDate(hformat, getDate(inst.temp), s); - }, - /** - * Builds a date object from the wheel selections and formats it to the given date/time format - * @param {Array} d - An array containing the selected wheel values - * @return {String} - The formatted date string - */ - formatResult: function (d) { - return ms.formatDate(format, getDate(d), s); - }, - /** - * Builds a date object from the input value and returns an array to set wheel values - * @return {Array} - An array containing the wheel values to set - */ - parseValue: function (val) { - var d = new Date(), - i, - result = []; - try { - d = ms.parseDate(format, val, s); - } catch (e) { - } - // Set wheels - for (i in o) { - result[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d); - } - return result; - }, - /** - * Validates the selected date to be in the minDate / maxDate range and sets unselectable values to disabled - * @param {Object} dw - jQuery object containing the generated html - * @param {Integer} [i] - Index of the changed wheel, not set for initial validation - */ - validate: function (dw, i) { - var temp = inst.temp, //.slice(0), - mins = { y: mind.getFullYear(), m: 0, d: 1, h: 0, i: 0, s: 0, a: 0 }, - maxs = { y: maxd.getFullYear(), m: 11, d: 31, h: step(hampm ? 11 : 23, stepH), i: step(59, stepM), s: step(59, stepS), a: 1 }, - minprop = true, - maxprop = true; - $.each(['y', 'm', 'd', 'a', 'h', 'i', 's'], function (x, i) { - if (o[i] !== undefined) { - var min = mins[i], - max = maxs[i], - maxdays = 31, - val = get(temp, i), - t = $('.dw-ul', dw).eq(o[i]), - y, - m; - if (i == 'd') { - y = get(temp, 'y'); - m = get(temp, 'm'); - maxdays = 32 - new Date(y, m, 32).getDate(); - max = maxdays; - if (regen) { - $('.dw-li', t).each(function () { - var that = $(this), - d = that.data('val'), - w = new Date(y, m, d).getDay(), - str = dord.replace(/[my]/gi, '').replace(/dd/, d < 10 ? '0' + d : d).replace(/d/, d); - $('.dw-i', that).html(str.match(/DD/) ? str.replace(/DD/, '' + s.dayNames[w] + '') : str.replace(/D/, '' + s.dayNamesShort[w] + '')); - }); - } - } - if (minprop && mind) { - min = mind[f[i]] ? mind[f[i]]() : f[i](mind); - } - if (maxprop && maxd) { - max = maxd[f[i]] ? maxd[f[i]]() : f[i](maxd); - } - if (i != 'y') { - var i1 = $('.dw-li', t).index($('.dw-li[data-val="' + min + '"]', t)), - i2 = $('.dw-li', t).index($('.dw-li[data-val="' + max + '"]', t)); - $('.dw-li', t).removeClass('dw-v').slice(i1, i2 + 1).addClass('dw-v'); - if (i == 'd') { // Hide days not in month - $('.dw-li', t).removeClass('dw-h').slice(maxdays).addClass('dw-h'); - } - } - if (val < min) { - val = min; - } - if (val > max) { - val = max; - } - if (minprop) { - minprop = val == min; - } - if (maxprop) { - maxprop = val == max; - } - // Disable some days - if (s.invalid && i == 'd') { - var idx = []; - // Disable exact dates - if (s.invalid.dates) { - $.each(s.invalid.dates, function (i, v) { - if (v.getFullYear() == y && v.getMonth() == m) { - idx.push(v.getDate() - 1); - } - }); - } - // Disable days of week - if (s.invalid.daysOfWeek) { - var first = new Date(y, m, 1).getDay(), - j; - $.each(s.invalid.daysOfWeek, function (i, v) { - for (j = v - first; j < maxdays; j += 7) { - if (j >= 0) { - idx.push(j); - } - } - }); - } - // Disable days of month - if (s.invalid.daysOfMonth) { - $.each(s.invalid.daysOfMonth, function (i, v) { - v = (v + '').split('/'); - if (v[1]) { - if (v[0] - 1 == m) { - idx.push(v[1] - 1); - } - } else { - idx.push(v[0] - 1); - } - }); - } - $.each(idx, function (i, v) { - $('.dw-li', t).eq(v).removeClass('dw-v'); - }); - } - - // Set modified value - temp[o[i]] = val; - } - }); - } - }; - }; - - $.each(['date', 'time', 'datetime'], function (i, v) { - ms.presets[v] = preset; - ms.presetShort(v); - }); - - /** - * Format a date into a string value with a specified format. - * @param {String} format - Output format. - * @param {Date} date - Date to format. - * @param {Object} settings - Settings. - * @return {String} - Returns the formatted date string. - */ - ms.formatDate = function (format, date, settings) { - if (!date) { - return null; - } - var s = $.extend({}, defaults, settings), - look = function (m) { // Check whether a format character is doubled - var n = 0; - while (i + 1 < format.length && format.charAt(i + 1) == m) { - n++; - i++; - } - return n; - }, - f1 = function (m, val, len) { // Format a number, with leading zero if necessary - var n = '' + val; - if (look(m)) { - while (n.length < len) { - n = '0' + n; - } - } - return n; - }, - f2 = function (m, val, s, l) { // Format a name, short or long as requested - return (look(m) ? l[val] : s[val]); - }, - i, - output = '', - literal = false; - - for (i = 0; i < format.length; i++) { - if (literal) { - if (format.charAt(i) == "'" && !look("'")) { - literal = false; - } else { - output += format.charAt(i); - } - } else { - switch (format.charAt(i)) { - case 'd': - output += f1('d', date.getDate(), 2); - break; - case 'D': - output += f2('D', date.getDay(), s.dayNamesShort, s.dayNames); - break; - case 'o': - output += f1('o', (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3); - break; - case 'm': - output += f1('m', date.getMonth() + 1, 2); - break; - case 'M': - output += f2('M', date.getMonth(), s.monthNamesShort, s.monthNames); - break; - case 'y': - output += (look('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); - break; - case 'h': - var h = date.getHours(); - output += f1('h', (h > 12 ? (h - 12) : (h == 0 ? 12 : h)), 2); - break; - case 'H': - output += f1('H', date.getHours(), 2); - break; - case 'i': - output += f1('i', date.getMinutes(), 2); - break; - case 's': - output += f1('s', date.getSeconds(), 2); - break; - case 'a': - output += date.getHours() > 11 ? 'pm' : 'am'; - break; - case 'A': - output += date.getHours() > 11 ? 'PM' : 'AM'; - break; - case "'": - if (look("'")) { - output += "'"; - } else { - literal = true; - } - break; - default: - output += format.charAt(i); - } - } - } - return output; - }; - - /** - * Extract a date from a string value with a specified format. - * @param {String} format - Input format. - * @param {String} value - String to parse. - * @param {Object} settings - Settings. - * @return {Date} - Returns the extracted date. - */ - ms.parseDate = function (format, value, settings) { - var def = new Date(); - - if (!format || !value) { - return def; - } - - value = (typeof value == 'object' ? value.toString() : value + ''); - - var s = $.extend({}, defaults, settings), - shortYearCutoff = s.shortYearCutoff, - year = def.getFullYear(), - month = def.getMonth() + 1, - day = def.getDate(), - doy = -1, - hours = def.getHours(), - minutes = def.getMinutes(), - seconds = 0, //def.getSeconds(), - ampm = -1, - literal = false, // Check whether a format character is doubled - lookAhead = function (match) { - var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); - if (matches) { - iFormat++; - } - return matches; - }, - getNumber = function (match) { // Extract a number from the string value - lookAhead(match); - var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)))), - digits = new RegExp('^\\d{1,' + size + '}'), - num = value.substr(iValue).match(digits); - - if (!num) { - return 0; - } - //throw 'Missing number at position ' + iValue; - iValue += num[0].length; - return parseInt(num[0], 10); - }, - getName = function (match, s, l) { // Extract a name from the string value and convert to an index - var names = (lookAhead(match) ? l : s), - i; - - for (i = 0; i < names.length; i++) { - if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) { - iValue += names[i].length; - return i + 1; - } - } - return 0; - //throw 'Unknown name at position ' + iValue; - }, - checkLiteral = function () { - //if (value.charAt(iValue) != format.charAt(iFormat)) - //throw 'Unexpected literal at position ' + iValue; - iValue++; - }, - iValue = 0, - iFormat; - - for (iFormat = 0; iFormat < format.length; iFormat++) { - if (literal) { - if (format.charAt(iFormat) == "'" && !lookAhead("'")) { - literal = false; - } else { - checkLiteral(); - } - } else { - switch (format.charAt(iFormat)) { - case 'd': - day = getNumber('d'); - break; - case 'D': - getName('D', s.dayNamesShort, s.dayNames); - break; - case 'o': - doy = getNumber('o'); - break; - case 'm': - month = getNumber('m'); - break; - case 'M': - month = getName('M', s.monthNamesShort, s.monthNames); - break; - case 'y': - year = getNumber('y'); - break; - case 'H': - hours = getNumber('H'); - break; - case 'h': - hours = getNumber('h'); - break; - case 'i': - minutes = getNumber('i'); - break; - case 's': - seconds = getNumber('s'); - break; - case 'a': - ampm = getName('a', ['am', 'pm'], ['am', 'pm']) - 1; - break; - case 'A': - ampm = getName('A', ['am', 'pm'], ['am', 'pm']) - 1; - break; - case "'": - if (lookAhead("'")) { - checkLiteral(); - } else { - literal = true; - } - break; - default: - checkLiteral(); - } - } - } - if (year < 100) { - year += new Date().getFullYear() - new Date().getFullYear() % 100 + - (year <= (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)) ? 0 : -100); - } - if (doy > -1) { - month = 1; - day = doy; - do { - var dim = 32 - new Date(year, month - 1, 32).getDate(); - if (day <= dim) { - break; - } - month++; - day -= dim; - } while (true); - } - hours = (ampm == -1) ? hours : ((ampm && hours < 12) ? (hours + 12) : (!ampm && hours == 12 ? 0 : hours)); - var date = new Date(year, month - 1, day, hours, minutes, seconds); - if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) { - throw 'Invalid date'; - } - return date; - }; - -})(jQuery); - -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -(function ($) { - - var defaults = { - inputClass: '', - invalid: [], - rtl: false, - group: false, - groupLabel: 'Groups' - }; - - $.mobiscroll.presetShort('select'); - - $.mobiscroll.presets.select = function (inst) { - var orig = $.extend({}, inst.settings), - s = $.extend(inst.settings, defaults, orig), - elm = $(this), - multiple = elm.prop('multiple'), - id = this.id + '_dummy', - option = multiple ? (elm.val() ? elm.val()[0] : $('option', elm).attr('value')) : elm.val(), - group = elm.find('option[value="' + option + '"]').parent(), - prev = group.index() + '', - gr = prev, - prevent, - l1 = $('label[for="' + this.id + '"]').attr('for', id), - l2 = $('label[for="' + id + '"]'), - label = s.label !== undefined ? s.label : (l2.length ? l2.text() : elm.attr('name')), - invalid = [], - origValues = [], - main = {}, - grIdx, - optIdx, - timer, - input, - roPre = s.readonly, - w; - - function genWheels() { - var cont, - wg = 0, - values = [], - keys = [], - w = [[]]; - - if (s.group) { - if (s.rtl) { - wg = 1; - } - - $('optgroup', elm).each(function (i) { - values.push($(this).attr('label')); - keys.push(i); - }); - - w[wg] = [{ - values: values, - keys: keys, - label: label - }]; - - cont = group; - wg += (s.rtl ? -1 : 1); - - } else { - cont = elm; - } - - values = []; - keys = []; - - $('option', cont).each(function () { - var v = $(this).attr('value'); - values.push($(this).text()); - keys.push(v); - if ($(this).prop('disabled')) { - invalid.push(v); - } - }); - - w[wg] = [{ - values: values, - keys: keys, - label: label - }]; - - return w; - } - - function setVal(v, fill) { - var value = []; - - if (multiple) { - var sel = [], - i = 0; - - for (i in inst._selectedValues) { - sel.push(main[i]); - value.push(i); - } - input.val(sel.join(', ')); - } else { - input.val(v); - value = fill ? inst.values[optIdx] : null; - } - - if (fill) { - prevent = true; - elm.val(value).trigger('change'); - } - } - - // if groups is true and there are no groups fall back to no grouping - if (s.group && !$('optgroup', elm).length) { - s.group = false; - } - - if (!s.invalid.length) { - s.invalid = invalid; - } - - if (s.group) { - if (s.rtl) { - grIdx = 1; - optIdx = 0; - } else { - grIdx = 0; - optIdx = 1; - } - } else { - grIdx = -1; - optIdx = 0; - } - - $('#' + id).remove(); - - input = $('').insertBefore(elm), - - $('option', elm).each(function () { - main[$(this).attr('value')] = $(this).text(); - }); - - if (s.showOnFocus) { - input.focus(function () { - inst.show(); - }); - } - - var v = elm.val() || [], - i = 0; - - for (i; i < v.length; i++) { - inst._selectedValues[v[i]] = v[i]; - } - - setVal(main[option]); - - elm.unbind('.dwsel').bind('change.dwsel', function () { - if (!prevent) { - inst.setValue(multiple ? elm.val() || [] : [elm.val()], true); - } - prevent = false; - }).hide().closest('.ui-field-contain').trigger('create'); - - // Extended methods - // --- - - if (!inst._setValue) { - inst._setValue = inst.setValue; - } - - inst.setValue = function (d, fill, time, noscroll, temp) { - var value, - v = $.isArray(d) ? d[0] : d; - - option = v !== undefined ? v : $('option', elm).attr('value'); - - if (multiple) { - inst._selectedValues = {}; - var i = 0; - for (i; i < d.length; i++) { - inst._selectedValues[d[i]] = d[i]; - } - } - - if (s.group) { - group = elm.find('option[value="' + option + '"]').parent(); - gr = group.index(); - value = s.rtl ? [option, group.index()] : [group.index(), option]; - if (gr !== prev) { // Need to regenerate wheels, if group changed - s.wheels = genWheels(); - inst.changeWheel([optIdx]); - prev = gr + ''; - } - } else { - value = [option]; - } - - inst._setValue(value, fill, time, noscroll, temp); - - // Set input/select values - if (fill) { - var changed = multiple ? true : option !== elm.val(); - setVal(main[option], changed); - } - }; - - inst.getValue = function (temp) { - var val = temp ? inst.temp : inst.values; - return val[optIdx]; - }; - - // --- - - return { - width: 50, - wheels: w, - headerText: false, - multiple: multiple, - anchor: input, - formatResult: function (d) { - return main[d[optIdx]]; - }, - parseValue: function () { - var v = elm.val() || [], - i = 0; - - if (multiple) { - inst._selectedValues = {}; - for (i; i < v.length; i++) { - inst._selectedValues[v[i]] = v[i]; - } - } - - option = multiple ? (elm.val() ? elm.val()[0] : $('option', elm).attr('value')) : elm.val(); - - group = elm.find('option[value="' + option + '"]').parent(); - gr = group.index(); - prev = gr + ''; - return s.group && s.rtl ? [option, gr] : s.group ? [gr, option] : [option]; - }, - validate: function (dw, i, time) { - if (i === undefined && multiple) { - var v = inst._selectedValues, - j = 0; - - $('.dwwl' + optIdx + ' .dw-li', dw).removeClass('dw-msel'); - - for (j in v) { - $('.dwwl' + optIdx + ' .dw-li[data-val="' + v[j] + '"]', dw).addClass('dw-msel'); - } - } - - if (i === grIdx) { - gr = inst.temp[grIdx]; - if (gr !== prev) { - group = elm.find('optgroup').eq(gr); - gr = group.index(); - option = group.find('option').eq(0).val(); - option = option || elm.val(); - s.wheels = genWheels(); - if (s.group) { - inst.temp = s.rtl ? [option, gr] : [gr, option]; - s.readonly = [s.rtl, !s.rtl]; - clearTimeout(timer); - timer = setTimeout(function () { - inst.changeWheel([optIdx]); - s.readonly = roPre; - prev = gr + ''; - }, time * 1000); - return false; - } - } else { - s.readonly = roPre; - } - } else { - option = inst.temp[optIdx]; - } - - var t = $('.dw-ul', dw).eq(optIdx); - $.each(s.invalid, function (i, v) { - $('.dw-li[data-val="' + v + '"]', t).removeClass('dw-v'); - }); - }, - onBeforeShow: function (dw) { - s.wheels = genWheels(); - if (s.group) { - inst.temp = s.rtl ? [option, group.index()] : [group.index(), option]; - } - }, - onMarkupReady: function (dw) { - $('.dwwl' + grIdx, dw).bind('mousedown touchstart', function () { - clearTimeout(timer); - }); - if (multiple) { - dw.addClass('dwms'); - $('.dwwl', dw).eq(optIdx).addClass('dwwms'); - origValues = {}; - var i; - for (i in inst._selectedValues) { - origValues[i] = inst._selectedValues[i]; - } - } - }, - onValueTap: function (li) { - if (multiple && li.hasClass('dw-v') && li.closest('.dw').find('.dw-ul').index(li.closest('.dw-ul')) == optIdx) { - var val = li.attr('data-val'); - if (li.hasClass('dw-msel')) { - delete inst._selectedValues[val]; - } else { - inst._selectedValues[val] = val; - } - li.toggleClass('dw-msel'); - - if (s.display == 'inline') { - setVal(val, true); - } - return false; - } - }, - onSelect: function (v) { - setVal(v, true); - if (s.group) { - inst.values = null; - } - }, - onCancel: function () { - if (s.group) { - inst.values = null; - } - if (multiple) { - inst._selectedValues = {}; - var i; - for (i in origValues) { - inst._selectedValues[i] = origValues[i]; - } - } - }, - onChange: function (v) { - if (s.display == 'inline' && !multiple) { - input.val(v); - prevent = true; - elm.val(inst.temp[optIdx]).trigger('change'); - } - }, - onClose: function () { - input.blur(); - } - }; - }; - -})(jQuery); - -(function ($) { - - $.mobiscroll.themes.jqm = { - defaults: { - jqmBorder: 'a', - jqmBody: 'c', - jqmHeader: 'b', - jqmWheel: 'd', - jqmClickPick: 'c', - jqmSet: 'b', - jqmCancel: 'c' - }, - init: function (elm, inst) { - var s = inst.settings; - $('.dw', elm).removeClass('dwbg').addClass('ui-overlay-shadow ui-corner-all ui-body-' + s.jqmBorder); - $('.dwb-s span', elm).attr('data-role', 'button').attr('data-theme', s.jqmSet); - $('.dwb-n span', elm).attr('data-role', 'button').attr('data-theme', s.jqmCancel); - $('.dwb-c span', elm).attr('data-role', 'button').attr('data-theme', s.jqmCancel); - $('.dwwb', elm).attr('data-role', 'button').attr('data-theme', s.jqmClickPick); - $('.dwv', elm).addClass('ui-header ui-bar-' + s.jqmHeader); - $('.dwwr', elm).addClass('ui-body-' + s.jqmBody); - $('.dwpm .dwwl', elm).addClass('ui-body-' + s.jqmWheel); - $('.dwpm .dwl', elm).addClass('ui-body-' + s.jqmBody); - elm.trigger('create'); - // Hide on overlay click - $('.dwo', elm).click(function () { inst.cancel(); }); - } - }; - -})(jQuery); - -(function ($) { - - $.mobiscroll.themes.ios = { - defaults: { - dateOrder: 'MMdyy', - rows: 5, - height: 30, - width: 55, - headerText: false, - showLabel: false, - useShortLabels: true - } - } - -})(jQuery); - -(function ($) { - - $.mobiscroll.themes.android = { - defaults: { - dateOrder: 'Mddyy', - mode: 'clickpick', - height: 50, - showLabel: false - } - } - -})(jQuery); - - -(function ($) { - var theme = { - defaults: { - dateOrder: 'Mddyy', - mode: 'mixed', - rows: 5, - width: 70, - height: 36, - showLabel: false, - useShortLabels: true - } - }; - - $.mobiscroll.themes['android-ics'] = theme; - $.mobiscroll.themes['android-ics light'] = theme; - -})(jQuery); - - -(function ($) { - - var anim; - - $.mobiscroll.themes.wp = { - defaults: { - width: 70, - height: 76, - accent: 'none', - dateOrder: 'mmMMddDDyy', - showLabel: false, - onAnimStart: function (dw, i, time) { - $('.dwwl' + i, dw).addClass('wpam'); - clearTimeout(anim[i]); - anim[i] = setTimeout(function () { - $('.dwwl' + i, dw).removeClass('wpam'); - }, time * 1000 + 100); - } - }, - init: function (elm, inst) { - var click, - active; - - anim = {}; - - $('.dw', elm).addClass('wp-' + inst.settings.accent); - - //$('.dwwl', elm).bind('touchstart mousedown DOMMouseScroll mousewheel', function () { - $('.dwwl', elm).delegate('.dw-sel', 'touchstart mousedown DOMMouseScroll mousewheel', function () { - click = true; - active = $(this).closest('.dwwl').hasClass('wpa'); - $('.dwwl', elm).removeClass('wpa'); - $(this).closest('.dwwl').addClass('wpa'); - }).bind('touchmove mousemove', function () { - click = false; - }).bind('touchend mouseup', function () { - if (click && active) { - $(this).closest('.dwwl').removeClass('wpa'); - } - }); - } - }; - - $.mobiscroll.themes['wp light'] = $.mobiscroll.themes.wp; - -})(jQuery); - - diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css b/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css deleted file mode 100644 index 2d6ebcc0d4..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css +++ /dev/null @@ -1 +0,0 @@ -.dw{position:absolute;top:5%;left:0;z-index:1001;color:#fff;font-family:arial,verdana,sans-serif;font-size:12px;text-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-ms-touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-backface-visibility:hidden}.dwi{position:static;display:inline-block}.dwwr{min-width:170px;zoom:1;padding:0 10px;text-align:center}.dw-persp,.dwo{width:100%;height:auto;position:absolute;top:0;left:0;z-index:1001}.dwo{background:#000;opacity:.7;filter:Alpha(Opacity=70);display:none}.dw-bubble .dw{margin:20px 0}.dw-bubble .dw-arrw{position:absolute;left:0;width:100%}.dw-bubble-top .dw-arrw{bottom:-36px}.dw-bubble-bottom .dw-arrw{top:-36px}.dw-bubble .dw-arrw-i{margin:0 30px;position:relative;height:36px}.dw-bubble .dw-arr{display:block}.dw-arr{display:none;position:absolute;left:0;width:0;height:0;border-width:18px;border-style:solid;margin-left:-18px}.dw-bubble-bottom .dw-arr{top:0;border-color:transparent transparent #fff}.dw-bubble-top .dw-arr{bottom:0;border-color:#fff transparent transparent}.dwc{padding:30px 2px 5px;display:inline-block}.dwl{text-align:center;line-height:30px;height:30px;white-space:nowrap;position:absolute;top:-30px;width:100%}.dwv{padding:10px 0;border-bottom:1px solid #000}.dwrc{-webkit-border-radius:3px;border-radius:3px}.dwwc{margin:0;padding:0 2px;position:relative;background:#000;zoom:1}.dwwl{margin:4px 2px;padding:0 2px;position:relative;z-index:5}.dwww{position:relative;padding:1px}.dww{overflow:hidden;position:relative;z-index:2}.dw-moz .dww{opacity:.99}.dwsc .dwwl{background:#888;background:linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.35,#333),color-stop(0.5,#888),color-stop(0.65,#333),to(#000));background:-webkit-linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%);background:-moz-linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%)}.dwsc .dww{color:#fff;background:#444;background:linear-gradient(#000 0,#444 45%,#444 55%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.45,#444),color-stop(0.55,#444),to(#000));background:-webkit-linear-gradient(#000 0,#444 45%,#444 55%,#000 100%);background:-moz-linear-gradient(#000 0,#444 45%,#444 55%,#000 100%)}.dw-bf{-webkit-perspective:1000;-webkit-backface-visibility:hidden}.dw-ul{position:relative;z-index:2}.dw-li{padding:0 5px;display:block;text-align:center;line-height:40px;font-size:26px;white-space:nowrap;text-shadow:0 1px 1px #000;vertical-align:bottom;opacity:.3;filter:Alpha(Opacity=30)}.dw-li.dw-hl{background:#fff;background:rgba(255,255,255,.3)}.dw-li.dw-v{opacity:1;filter:Alpha(Opacity=100)}.dw-li.dw-h{visibility:hidden}.dw-i{position:relative;height:100%}.dwwb{position:absolute;z-index:4;left:0;cursor:pointer;width:100%;height:40px;text-align:center;opacity:1;transition:opacity .2s linear;-webkit-transition:opacity .2s linear}.dwa .dwwb{opacity:0}.dwwbp{top:0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;font-size:40px}.dwwbm{bottom:0;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;font-size:32px;font-weight:700}.dwpm .dwwc{background:0 0}.dwpm .dwwl{padding:0}.dwpm .dw-li{text-shadow:none}.dwpm .dwwol{display:none}.dwwo{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background:linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.52,rgba(44,44,44,0)),color-stop(0.48,rgba(44,44,44,0)),to(#000));background:-webkit-linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%);background:-moz-linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%)}.dwwol{position:absolute;z-index:1;top:50%;left:0;width:100%;height:0;margin-top:-1px;border-top:1px solid #333;border-bottom:1px solid #555}.dwbg .dwb{cursor:pointer;overflow:hidden;display:block;height:40px;line-height:40px;padding:0 15px;margin:0 2px;font-size:14px;font-weight:700;text-decoration:none;text-shadow:0 -1px 1px #000;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,.5);color:#fff;background:#000;background:linear-gradient(#6e6e6e 50%,#000 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#000),color-stop(0.5,#6e6e6e));background:-webkit-linear-gradient(#6e6e6e 50%,#000 50%);background:-moz-linear-gradient(#6e6e6e 50%,#000 50%);white-space:nowrap;text-overflow:ellipsis;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.5);-webkit-border-radius:5px;-webkit-backface-visibility:hidden}.dwbc{padding:5px 0;text-align:center}.dwbw{display:inline-block;width:50%;position:relative;z-index:5}.dwbc-p .dwbw{width:33.33%}.dwhl{padding-top:10px}.dwhl .dwl{display:none}.dwms .dwwms .dw-li{padding:0 40px;position:relative}.dwms .dw-msel:after{width:40px;text-align:center;position:absolute;top:0;left:0;content:'✔'}.dwbg{background:rgba(38,43,49,.85);border-radius:3px;-webkit-border-radius:3px}.dwbg .dwpm .dwwl{border:1px solid #aaa}.dwbg .dwpm .dww{color:#000;background:#fff;-webkit-border-radius:3px}.dwbg .dwwb{background:#ccc;color:#888;text-shadow:0 -1px 1px #333;box-shadow:0 0 5px #333;-webkit-box-shadow:0 0 5px #333}.dwbg .dwwbp{background:linear-gradient(#f7f7f7,#bdbdbd);background:-webkit-gradient(linear,left bottom,left top,from(#bdbdbd),to(#f7f7f7));background:-webkit-linear-gradient(#f7f7f7,#bdbdbd);background:-moz-linear-gradient(#f7f7f7,#bdbdbd)}.dwbg .dwwbm{background:linear-gradient(#bdbdbd,#f7f7f7);background:-webkit-gradient(linear,left bottom,left top,from(#f7f7f7),to(#bdbdbd));background:-webkit-linear-gradient(#bdbdbd,#f7f7f7);background:-moz-linear-gradient(#bdbdbd,#f7f7f7)}.dwbg .dwb-a{background:#3c7500;background:linear-gradient(#94c840 50%,#3c7500 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#3c7500),color-stop(0.5,#94c840));background:-webkit-linear-gradient(#94c840 50%,#3c7500 50%);background:-moz-linear-gradient(#94c840 50%,#3c7500 50%)}.dwbg .dwwl .dwb-a{background:#3c7500;background:linear-gradient(#94c840,#3c7500);background:-webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840));background:-webkit-linear-gradient(#94c840,#3c7500);background:-moz-linear-gradient(#94c840,#3c7500)}.jqm .dwo{background:0 0}.jqm .dw{padding:6px;z-index:1003}.jqm .dwv{position:static;width:auto;padding:.7em 15px;border:0}.jqm .dwwr{border:0;padding:0}.jqm .dwpm .dwwo{background:0 0}.jqm .dwc{padding:30px 5px 5px}.jqm .dwhl{padding:5px}.jqm .dwwb{margin:0;border:0}.jqm .dwwb span{padding:0}.jqm .dwwbp .ui-btn-inner{font-size:40px;border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0}.jqm .dwwbm .ui-btn-inner{font-size:32px;border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px}.jqm .dwwbp span{font-weight:400}.jqm .dwbc{padding:0}.jqm .dwbc .ui-btn{margin:.5em 5px}.jqm .dwbc .ui-btn-inner{font-size:12px}.jqm .dwpm .dwl{border:0;background:0 0}.jqm .dw-bubble-bottom .dw-arr{border-color:transparent transparent #444}.jqm .dw-bubble-top .dw-arr{border-color:#222 transparent transparent}.jqm.dw-bottom .dw,.jqm.dw-top .dw{padding:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0}.jqm.dw-top .dw{border-right:0;border-top:0;border-left:0}.jqm.dw-bottom .dw{border-bottom:0;border-right:0;border-left:0}.android .dw{padding:0;background:#000;border:2px solid #555;color:#fff}.android .dwv{padding:10px;border-bottom:1px solid #333}.android .dwwr{padding:0}.android .dww{top:0}.android .dwwc{background:#000}.android .dw .dwpm .dww,.android .dw .dwpm .dwwl{border:0;background:#fff}.android .dw .dwpm .dww{margin:0}.android .dwpm .dww .dw-li{color:#000;text-shadow:none}.android .dwbc{padding:5px 1px;background:#9c9c9c}.android .dw .dwb{margin:0 5px;background:#ccc;background:linear-gradient(#eee,#ccc);background:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#eee));background:-moz-linear-gradient(#eee,#ccc);background:-o-linear-gradient(#eee,#ccc);color:#000;font-weight:400;text-shadow:none;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.android .dw .dwb-a,.android .dw .dwwl .dwb-a{background:#ffb25a;background:linear-gradient(#ffb25a,#ef6100);background:-webkit-gradient(linear,left bottom,left top,from(#ef6100),to(#ffb25a));background:-moz-linear-gradient(#ffb25a,#ef6100);background:-o-linear-gradient(#ffb25a,#ef6100)}.android .dw-bubble-bottom .dw-arr{border-color:transparent transparent #000}.android .dw-bubble-top .dw-arr{border-color:#9c9c9c transparent transparent}.android.dw-bottom .dw,.android.dw-top .dw{border-right:0;border-left:0}.android.dw-top .dw{border-top:0}.android.dw-bottom .dw{border-bottom:0}.android-ics .dw{padding:0;color:#31b6e7;background:#292829}.android-ics .dw .dwb,.android-ics .dw .dwpm .dww,.android-ics .dw .dww,.android-ics .dw .dwwc,.android-ics .dw .dwwl{background:0 0}.android-ics .dwwr{padding:0}.android-ics .dwc{padding:30px 10px 1px}.android-ics .dwhl{padding:1px 10px}.android-ics .dwv{height:36px;line-height:36px;padding:0;border-bottom:2px solid #31b6e7;font-size:18px}.android-ics .dwwl{margin:0 2px}.android-ics .dw .dwpm .dww,.android-ics .dw .dwpm .dwwl,.android-ics .dww{border:0}.android-ics .dww .dw-li{color:#fff;font-size:18px;text-shadow:none}.android-ics .dww .dw-li.dw-hl{background:#31b6e7;background:rgba(49,182,231,.5)}.android-ics .dwwo{background:linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%);background:-webkit-gradient(linear,left bottom,left top,from(#282828),color-stop(0.52,rgba(40,40,40,0)),color-stop(0.48,rgba(40,40,40,0)),to(#282828));background:-moz-linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%);background:-o-linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%)}.android-ics .dw .dwwb{background:#292829;box-shadow:none;-webkit-box-shadow:none}.android-ics .dwwb span{display:none}.android-ics .dwwb:after{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;color:#7e7e7e;width:0;height:0;border-width:8px;border-style:solid;content:''}.android-ics .dwwbm{top:0;bottom:auto}.android-ics .dwwbp{bottom:0;top:auto}.android-ics .dwwbm:after{border-color:transparent transparent #7e7e7e}.android-ics .dwwbp:after{border-color:#7e7e7e transparent transparent}.android-ics .dw .dwwl .dwb-a{background:#292829}.android-ics .dwwbm.dwb-a:after{border-color:transparent transparent #319abd}.android-ics .dwwbp.dwb-a:after{border-color:#319abd transparent transparent}.android-ics .dw .dwwol{width:60%;left:20%;height:36px;border-top:2px solid #31b6e7;border-bottom:2px solid #31b6e7;margin-top:-20px;display:block}.android-ics .dwbc{border-top:1px solid #424542;padding:0}.android-ics .dw .dwb{height:36px;line-height:36px;padding:0;margin:0;font-weight:400;text-shadow:none;box-shadow:none;border-radius:0;-webkit-border-radius:0;-webkit-box-shadow:none}.android-ics .dw .dwb-a{background:#29799c}.android-ics .dwb-n .dwb,.android-ics .dwb-s .dwb{border-right:1px solid #424542}.android-ics.dw-bottom .dw,.android-ics.dw-top .dw{border-radius:0;-webkit-border-radius:0}.android-ics .dwwms .dwwol{display:none}.android-ics .dwwms .dw-li{padding-left:5px;padding-right:36px}.android-ics .dwwms .dw-li:after{content:'';position:absolute;top:50%;left:auto;right:10px;width:14px;height:14px;margin-top:-9px;color:#31b6e7;line-height:14px;border:1px solid #424542;text-shadow:0 0 5px #29799c}.android-ics .dwwms .dw-msel:after{content:'✔'}.android-ics.light .dw{background:#f5f5f5}.android-ics.light .dww .dw-li{color:#000}.android-ics.light .dwwo{background:linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%);background:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),color-stop(0.52,rgba(245,245,245,0)),color-stop(0.48,rgba(245,245,245,0)),to(#f5f5f5));background:-moz-linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%);background:-o-linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%)}.android-ics.light .dw .dwwb{background:#f5f5f5;color:#f5f5f5}.android-ics.light .dwbc{border-top:1px solid #dbdbdb}.android-ics.light .dwb{color:#000}.android-ics.light .dwb-a{color:#fff}.android-ics.light .dwb-n .dwb,.android-ics.light .dwb-s .dwb{border-right:1px solid #dbdbdb}.android-ics .dw-bubble-bottom .dw-arr{border-color:transparent transparent #292829}.android-ics .dw-bubble-top .dw-arr{border-color:#292829 transparent transparent}.android-ics.light .dw-bubble-bottom .dw-arr{border-color:transparent transparent #f5f5f5}.android-ics.light .dw-bubble-top .dw-arr{border-color:#f5f5f5 transparent transparent}.android-ics.light .dwwms .dw-li:after{text-shadow:0 0 5px #31b6e7}.ios .dw{min-width:134px;padding:0;border:1px solid #2d3034;background:0 0;color:#fff;border-radius:0;-webkit-border-radius:0}.ios .dwo{background:0 0}.ios .dwwr{position:relative;margin-top:40px;background:#50515d;background:linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39);background:-webkit-gradient(linear,left top,left bottom,from(#9f9fa6),color-stop(0.5,#484a55),color-stop(0.5,#272836),to(#282a39));background:-webkit-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39);background:-moz-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39)}.ios .dwi .dwwr{margin-top:0}.ios .dwv{display:none}.ios .dwc{padding:30px 2px;margin:0}.ios .dwhl{padding:10px 2px}.ios .dwwc{background:0 0}.ios .dwwl{margin:4px 0;border-left:1px solid #000;border-right:1px solid #000;background:#cbcce0;background:linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);background:-webkit-gradient(linear,left bottom,left top,from(#2c2c38),color-stop(0.35,#cbcce0),color-stop(0.65,#cbcce0),to(#2c2c38));background:-webkit-linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);background:-moz-linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);box-shadow:0 1px 1px rgba(255,255,255,.3);-webkit-box-shadow:0 1px 1px rgba(255,255,255,.3)}.ios td:first-child .dwwl{border-top-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px}.ios td:last-child .dwwl{border-top-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px}.ios .dwsc .dwwl{border-radius:0;-webkit-border-radius:0}.ios .dwsc .dww{background:#fff;background:linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1,#999),color-stop(0.3,#fff),color-stop(0.7,#fff),color-stop(0.9,#999),to(#333));background:-webkit-linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);background:-moz-linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);border-radius:0;-webkit-border-radius:0}.ios .dw .dwpm .dww{background:linear-gradient(#333,#fff 48%,#fff 52%,#333);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.48,#fff),color-stop(0.52,#fff),to(#333));background:-webkit-linear-gradient(#333 0,#fff 48%,#fff 52%,#333 100%);background:-moz-linear-gradient(#333 0,#fff 48%,#fff 52%,#333 100%)}.ios .dw .dwpm .dwwl{margin:4px 2px;border:1px solid #000}.ios .dw .dwpm .dww{margin:0;border:0}.ios .dww .dw-li{color:#000;font-size:20px;font-weight:700;text-align:right;text-shadow:none}.ios .dww .dw-li.dw-hl{background:linear-gradient(#0288f3,#005de6);background:-webkit-gradient(linear,left bottom,left top,from(#0288f3),to(#005de6));background:-webkit-linear-gradient(#0288f3,#005de6);background:-moz-linear-gradient(#0288f3,#005de6);color:#fff}.ios .dwwo{background:linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1,rgba(153,153,153,0)),color-stop(0.9,rgba(153,153,153,0)),to(#333));background:-webkit-linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%);background:-moz-linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%)}.ios .dwwol{height:28px;padding:1px;margin-top:-16px;border-color:#7b8699;background:#6f75b0;background:linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,rgba(111,117,176,.5)),color-stop(0.5,rgba(151,157,197,.5)));background:-webkit-linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);background:-moz-linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);z-index:10;left:-1px;box-shadow:0 1px 3px rgba(0,0,0,.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.5);filter:alpha(opacity=50)}.ios .dww .dwwol{display:none}.ios .dw .dwbc{position:absolute;top:-40px;left:0;width:100%;height:28px;padding:5px 0;background:#454545;background:linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));background:-webkit-gradient(linear,left top,left bottom,from(rgba(69,69,69,.7)),color-stop(0.5,rgba(37,37,37,.7)),color-stop(0.5,rgba(16,16,16,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));background:-moz-linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));border-bottom:1px solid #888;border-bottom:1px solid rgba(255,255,255,.5);border-top:1px solid #888;border-top:1px solid rgba(255,255,255,.5)}.ios .dw .dwb{margin:0 5px;padding:0 10px;display:inline-block;font-size:12px;height:26px;line-height:26px;border:1px solid #1f1f1f;background:#1a1a1a;background:linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);background:-webkit-gradient(linear,left top,left bottom,from(#7b7b7b),color-stop(0.5,#1a1a1a),color-stop(0.5,#000));background:-webkit-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);background:-moz-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3)}.ios .dwb-s .dwb{border:1px solid #194aab;background:#194aab;background:linear-gradient(#82aaff,#3162c4 50%,#194aab 50%);background:-webkit-gradient(linear,left top,left bottom,from(#82aaff),color-stop(0.5,#3162c4),color-stop(0.5,#194aab));background:-webkit-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%);background:-moz-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%)}.ios .dwb-a{opacity:.8;filter:alpha(opacity=80)}.ios .dw .dwwb{color:#fff;border:0;background:#3f4e68;background:linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%);background:-webkit-gradient(linear,left bottom,left top,from(#3f4e68),color-stop(0.5,#75859f),color-stop(0.5,#808ea6),to(#c7d1e2));background:-webkit-linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%);background:-moz-linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%)}.ios .dw .dwwl .dwb-a{background:#252c36;background:linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%);background:-webkit-gradient(linear,left bottom,left top,from(#252c36),color-stop(0.5,#171e28),color-stop(0.5,#272e38),to(#6b6e75));background:-webkit-linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%);background:-moz-linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%)}.ios .dwb-n,.ios .dwb-s{width:auto;float:right;text-align:right}.ios .dwb-c{width:auto;float:left;text-align:left}.ios.dw-bubble .dw{padding:6px;background:#afafaf;background:linear-gradient(#afafaf,#1b2530 30%);background:-webkit-gradient(linear,left top,left bottom,from(#afafaf),color-stop(0.3,#1b2530));background:-webkit-linear-gradient(#afafaf,#1b2530 30%);background:-moz-linear-gradient(#afafaf,#1b2530 30%);box-shadow:0 0 25px rgba(0,0,0,.7);border-radius:5px;-webkit-border-radius:5px;-webkit-box-shadow:0 0 25px rgba(0,0,0,.7)}.ios .dw-bubble-bottom .dw-arr{border-color:transparent transparent #2d3034}.ios .dw-bubble-bottom .dw-arr:after{content:'';position:absolute;top:-16px;left:-17px;border:17px solid #afafaf;border-color:transparent transparent #afafaf}.ios .dw-bubble-top .dw-arr{border-color:#1b2530 transparent transparent}.ios .dwwms .dwwol{display:none}.ios .dwwms .dw-li{padding:0 5px 0 30px;text-align:left}.ios .dw-msel:after{width:30px}.ios .dww .dw-msel{color:#215085}.sense-ui .dw{padding:0;background:#333;border:2px solid #fff;color:#fff}.sense-ui .dwwr{padding:0}.sense-ui .dwv{padding:5px 10px;border-bottom:1px solid #666;text-align:left}.sense-ui .dwwc{background:#333}.sense-ui .dw .dwpm .dww,.sense-ui .dw .dwpm .dwwl{background:#fff;border:0;padding:0}.sense-ui .dwbc{padding:5px 1px;background:#000;background:linear-gradient(#666 50%,#000 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#000),color-stop(0.5,#666));background:-moz-linear-gradient(#666 50%,#000 50%);background:-o-linear-gradient(#666 50%,#000 50%)}.sense-ui .dw .dwb{margin:0 5px;border:1px solid #333;background:#222;background:linear-gradient(#444,#000);background:-webkit-gradient(linear,left bottom,left top,from(#000),to(#444));background:-moz-linear-gradient(#444,#000);background:-o-linear-gradient(#444,#000);box-shadow:inset 0 0 5px #000}.sense-ui .dw .dwb-a{background:#3c7500;background:linear-gradient(#94c840,#3c7500);background:-webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840));background:-moz-linear-gradient(#94c840,#3c7500);background:-o-linear-gradient(#94c840,#3c7500)}.sense-ui.dw-top .dw{border:0;border-radius:0;-webkit-border-radius:0}.sense-ui.dw-bottom .dw{border:0;border-top:1px solid #666;border-radius:0;-webkit-border-radius:0}.wp .dw{background:#1f1f1f;border-radius:0;-webkit-border-radius:0}.wp .dwwr{padding:10px}.wp .dwv{display:none}.wp .dwc{padding:30px 0 0;vertical-align:middle}.wp .dwhl{padding:0}.wp .dwwc{padding:3px;background:0 0}.wp .dwwl{margin:0;padding:0 2px;background:0 0}.wp .dwl{color:#fff}.wp .dw .dwwl .dww{background:0 0;border:0;color:#fff}.wp .dw-li{position:relative;padding:0;font-size:26px;letter-spacing:-1px;text-align:left;text-shadow:none;opacity:0;box-sizing:border-box;filter:Alpha(Opacity=0);-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp .dw-i{position:relative;top:4%;height:92%;padding:0 5px;border:1px solid #4c4c4c;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;filter:inherit}.wp .dwa .dw-li,.wp .wpa .dw-li{opacity:.3;filter:Alpha(Opacity=30)}.wp .dwa .dw-v,.wp .wpa .dw-v,.wp .wpam .dw-v{opacity:1;filter:Alpha(Opacity=100)}.wp .dw-day,.wp .dw-mon{display:block;color:#a9a9a9;line-height:18px;font-size:11px;letter-spacing:normal;position:absolute;bottom:0;filter:inherit}.wp .dw-sel{opacity:1;filter:Alpha(Opacity=100)}.wp .dw .dw-sel .dw-i{color:#fff;background:#4c4c4c}.wp .dw-sel .dw-day,.wp .dw-sel .dw-mon{color:#fff}.wp .dw-hl{background:0 0}.wp .dw-hl .dw-i{background:#4c4c4c}.wp .dwa .dww .dw-sel .dw-i{border:1px solid #4c4c4c;background-color:transparent}.wp .dwa .dw-day,.wp .dwa .dw-month{color:#a9a9a9}.wp .dwwo,.wp .dwwol{display:none}.wp .dwbc{padding:0}.wp .dwbw{float:none;width:auto}.wp .dw .dwb{position:relative;top:0;min-width:32px;display:inline-block;height:20px;padding:29px 5px 0;background:0 0;box-shadow:none;line-height:20px;font-size:11px;font-weight:400;text-transform:lowercase;text-shadow:none;transition:top .1s linear;-webkit-box-shadow:none;-webkit-transition:top .1s linear;-moz-transition:top .1s linear}.wp .dwb:after{content:'';position:absolute;top:3px;left:50%;width:26px;height:26px;margin:0 -13px;background:url(wp_icons.png) center center no-repeat}.wp .dwb-s .dwb:after{background-position:0 0}.wp .dwb-c .dwb:after{background-position:-26px 0}.wp .dwb-n .dwb:after{background-position:-52px 0}.wp .dwb-s .dwb-a:after{background-position:0 -26px}.wp .dwb-c .dwb-a:after{background-position:-26px -26px}.wp .dwb-n .dwb-a:after{background-position:-52px -26px}.wp .dwb.dwb-a{top:-3px}.wp .dw .dwwl .dwb-a{background:#1f1f1f}.wp .dw .dwpm .dwwl{border:0}.wp .dw .dwwb{background:#1f1f1f;border-radius:0;box-shadow:none;box-sizing:border-box;color:#a9a9a9;-webkit-box-shadow:none;-webkit-border-radius:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp .dwwb span{position:absolute;top:50%;left:50%;width:26px;height:0;padding-top:26px;overflow:hidden;margin:-13px;display:block;background:url(wp_icons.png) center center no-repeat}.wp .dwwbp span{background-position:-78px 0}.wp .dwwbp.dwb-a span{background-position:-78px -26px}.wp .dwwbm span{background-position:-104px 0}.wp .dwwbm.dwb-a span{background-position:-104px -26px}.wp .dw-bubble-bottom .dw-arr{border-color:transparent transparent #1f1f1f}.wp .dw-bubble-top .dw-arr{border-color:#1f1f1f transparent transparent}.wp .dwwms .dw-li{opacity:.3;filter:Alpha(Opacity=30);padding:0 0 0 30px}.wp .dwwms .dw-v{opacity:1;filter:Alpha(Opacity=100)}.wp .dwc .dwwms .dw-hl .dw-i,.wp .dwc .dwwms .dw-i,.wp .dwc .dwwms .dw-sel .dw-i,.wp .dwc .dwwms.dwa .dw-sel .dw-i{border:0;background:0 0}.wp .dwwms .dw-li:after{content:'';position:absolute;top:50%;left:5px;width:20px;height:20px;margin-top:-10px;font-size:18px;line-height:20px;background:#4c4c4c;color:#fff}.wp .dwwms .dw-msel:after{content:'✔'}.wp.light .dw{background:#dedede}.wp.light .dwb,.wp.light .dwl,.wp.light .dwv{color:#000}.wp.light .dw-li{color:#6b6b6b}.wp.light .dw-i{border-color:#b5b5b5}.wp.light .dw-sel .dw-i{background:#b5b5b5}.wp.light .dw-hl .dw-i{color:#fff;background:#b5b5b5}.wp.light .dw-day,.wp.light .dw-mon{color:#6b6b6b}.wp.light .dw-sel .dw-day,.wp.light .dw-sel .dw-mon{color:#fff}.wp.light .dw .dwa .dw-sel .dw-i{color:#6b6b6b;border:1px solid #b5b5b5;background-color:transparent}.wp.light .dw .dwc .dwa .dw-day,.wp.light .dw .dwc .dwa .dw-mon{color:#6b6b6b}.wp.light .dwb:after{background-image:url(wp_icons_light.png)}.wp.light .dw .dwwb{background:#dedede}.wp.light .dwwb span{background-image:url(wp_icons_light.png)}.wp.light .dw-bubble-bottom .dw-arr{border-color:transparent transparent #dedede}.wp.light .dw-bubble-top .dw-arr{border-color:#dedede transparent transparent}.wp.light .dwc .dwwms .dw-i,.wp.light .dwwms.dwa .dw-sel .dw-i{border:0;background:0 0;color:#000}.wp.light .dwwms .dw-li:after{background:#b5b5b5}.wp.light .wp-none .dw-hl .dw-i,.wp.light .wp-none .dw-sel .dw-i,.wp.light .wp-none .dwwms .dw-li:after{color:#000}.wp.light .wp-none .dw-day,.wp.light .wp-none .dw-mon{color:#6b6b6b}.wp .wp-lime .dw-hl .dw-i,.wp .wp-lime .dw-sel .dw-i,.wp .wp-lime .dwwms .dw-li:after{background:#a4c400;border-color:#a4c400}.wp .wp-green .dw-hl .dw-i,.wp .wp-green .dw-sel .dw-i,.wp .wp-green .dwwms .dw-li:after{background:#60a917;border-color:#60a917}.wp .wp-emerald .dw-hl .dw-i,.wp .wp-emerald .dw-sel .dw-i,.wp .wp-emerald .dwwms .dw-li:after{background:#008a00;border-color:#008a00}.wp .wp-teal .dw-hl .dw-i,.wp .wp-teal .dw-sel .dw-i,.wp .wp-teal .dwwms .dw-li:after{background:#00aba9;border-color:#00aba9}.wp .wp-cyan .dw-hl .dw-i,.wp .wp-cyan .dw-sel .dw-i,.wp .wp-cyan .dwwms .dw-li:after{background:#1ba1e2;border-color:#1ba1e2}.wp .wp-cobalt .dw-hl .dw-i,.wp .wp-cobalt .dw-sel .dw-i,.wp .wp-cobalt .dwwms .dw-li:after{background:#0050ef;border-color:#0050ef}.wp .wp-indigo .dw-hl .dw-i,.wp .wp-indigo .dw-sel .dw-i,.wp .wp-indigo .dwwms .dw-li:after{background:#6a00ff;border-color:#6a00ff}.wp .wp-violet .dw-hl .dw-i,.wp .wp-violet .dw-sel .dw-i,.wp .wp-violet .dwwms .dw-li:after{background:#a0f;border-color:#a0f}.wp .wp-pink .dw-hl .dw-i,.wp .wp-pink .dw-sel .dw-i,.wp .wp-pink .dwwms .dw-li:after{background:#f472d0;border-color:#f472d0}.wp .wp-magenta .dw-hl .dw-i,.wp .wp-magenta .dw-sel .dw-i,.wp .wp-magenta .dwwms .dw-li:after{background:#d80073;border-color:#d80073}.wp .wp-crimson .dw-hl .dw-i,.wp .wp-crimson .dw-sel .dw-i,.wp .wp-crimson .dwwms .dw-li:after{background:#a20025;border-color:#a20025}.wp .wp-red .dw-hl .dw-i,.wp .wp-red .dw-sel .dw-i,.wp .wp-red .dwwms .dw-li:after{background:#e51400;border-color:#e51400}.wp .wp-orange .dw-hl .dw-i,.wp .wp-orange .dw-sel .dw-i,.wp .wp-orange .dwwms .dw-li:after{background:#fa6800;border-color:#fa6800}.wp .wp-amber .dw-hl .dw-i,.wp .wp-amber .dw-sel .dw-i,.wp .wp-amber .dwwms .dw-li:after{background:#f0a30a;border-color:#f0a30a}.wp .wp-yellow .dw-hl .dw-i,.wp .wp-yellow .dw-sel .dw-i,.wp .wp-yellow .dwwms .dw-li:after{background:#d8c100;border-color:#d8c100}.wp .wp-brown .dw-hl .dw-i,.wp .wp-brown .dw-sel .dw-i,.wp .wp-brown .dwwms .dw-li:after{background:#825a2c;border-color:#825a2c}.wp .wp-olive .dw-hl .dw-i,.wp .wp-olive .dw-sel .dw-i,.wp .wp-olive .dwwms .dw-li:after{background:#6d8764;border-color:#6d8764}.wp .wp-steel .dw-hl .dw-i,.wp .wp-steel .dw-sel .dw-i,.wp .wp-steel .dwwms .dw-li:after{background:#647687;border-color:#647687}.wp .wp-mauve .dw-hl .dw-i,.wp .wp-mauve .dw-sel .dw-i,.wp .wp-mauve .dwwms .dw-li:after{background:#76608a;border-color:#76608a}.wp .wp-sienna .dw-hl .dw-i,.wp .wp-sienna .dw-sel .dw-i,.wp .wp-sienna .dwwms .dw-li:after{background:#7a3b3f;border-color:#7a3b3f}.dw-trans .dw-persp{overflow:hidden;perspective:1000px;-webkit-perspective:1000px;-moz-perspective:1000px}.dw-trans .dwwb,.dw-trans .dwwo{-webkit-backface-visibility:hidden}.dw-in,.dw-out{animation-duration:350ms;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.dw-in{animation-timing-function:ease-out;-webkit-animation-timing-function:ease-out;-moz-animation-timing-function:ease-out}.dw-out{animation-timing-function:ease-in;-webkit-animation-timing-function:ease-in;-moz-animation-timing-function:ease-in}.dw-fade,.dw-flip,.dw-slidedown,.dw-slidehorizontal,.dw-slideup,.dw-slidevertical,.dw-swing{backface-visibility:hidden;transform:translateX(0);-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0)}.dw-fade,.dw-slidedown,.dw-slidehorizontal,.dw-slideup,.dw-slidevertical,.dw-swing{transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0}.dw-flip,.dw-pop{transform-origin:50% 50%;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.dw-pop.dw-in{opacity:1;transform:scale(1);animation-name:dw-p-in;-webkit-animation-name:dw-p-in;-webkit-transform:scale(1);-moz-animation-name:dw-p-in;-moz-transform:scale(1)}.dw-pop.dw-out{opacity:0;animation-name:dw-p-out;-webkit-animation-name:dw-p-out;-moz-animation-name:dw-p-out}.dw-flip.dw-in{opacity:1;transform:scale(1);animation-name:dw-fl-in;-webkit-animation-name:dw-fl-in;-webkit-transform:scale(1);-moz-animation-name:dw-fl-in;-moz-transform:scale(1)}.dw-flip.dw-out{opacity:0;animation-name:dw-fl-out;-webkit-animation-name:dw-fl-out;-moz-animation-name:dw-fl-out}.dw-swing.dw-in{opacity:1;transform:scale(1);animation-name:dw-sw-in;-webkit-animation-name:dw-sw-in;-webkit-transform:scale(1);-moz-animation-name:dw-sw-in;-moz-transform:scale(1)}.dw-swing.dw-out{opacity:0;animation-name:dw-sw-out;-webkit-animation-name:dw-sw-out;-moz-animation-name:dw-sw-out}.dw-slidehorizontal.dw-in{opacity:1;transform:scale(1);animation-name:dw-sh-in;-webkit-animation-name:dw-sh-in;-webkit-transform:scale(1);-moz-animation-name:dw-sh-in;-moz-transform:scale(1)}.dw-slidehorizontal.dw-out{opacity:0;animation-name:dw-sh-out;-webkit-animation-name:dw-sh-out;-moz-animation-name:dw-sh-out}.dw-slidevertical.dw-in{opacity:1;animation-name:dw-dw-sv-in;transform:scale(1);-webkit-animation-name:dw-dw-sv-in;-webkit-transform:scale(1);-moz-animation-name:dw-dw-sv-in;-moz-transform:scale(1)}.dw-slidevertical.dw-out{opacity:0;animation-name:dw-sv-out;-webkit-animation-name:dw-sv-out;-moz-animation-name:dw-sv-out}.dw-slidedown.dw-in{animation-name:dw-sd-in;transform:scale(1);-webkit-animation-name:dw-sd-in;-webkit-transform:scale(1);-moz-animation-name:dw-sd-in;-moz-transform:scale(1)}.dw-slidedown.dw-out{animation-name:dw-sd-out;-webkit-animation-name:dw-sd-out;-moz-animation-name:dw-sd-out}.dw-slideup.dw-in{transform:scale(1);animation-name:dw-su-in;-webkit-animation-name:dw-su-in;-webkit-transform:scale(1);-moz-animation-name:dw-su-in;-moz-transform:scale(1)}.dw-slideup.dw-out{animation-name:dw-su-out;-webkit-animation-name:dw-su-out;-moz-animation-name:dw-su-out}.dw-fade.dw-in{opacity:1;animation-name:dw-f-in;-webkit-animation-name:dw-f-in;-moz-animation-name:dw-f-in}.dw-fade.dw-out{opacity:0;animation-name:dw-f-out;-webkit-animation-name:dw-f-out;-moz-animation-name:dw-f-out}@keyframes dw-f-in{from{opacity:0}to{opacity:1}}@-webkit-keyframes dw-f-in{from{opacity:0}to{opacity:1}}@-moz-keyframes dw-f-in{from{opacity:0}to{opacity:1}}@keyframes dw-f-out{from{opacity:1}to{opacity:0}}@-webkit-keyframes dw-f-out{from{opacity:1}to{opacity:0}}@-moz-keyframes dw-f-out{from{opacity:1}to{opacity:0}}@keyframes dw-p-in{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:scale(1)}}@-webkit-keyframes dw-p-in{from{opacity:0;-webkit-transform:scale(0.8)}to{opacity:1;-webkit-transform:scale(1)}}@-moz-keyframes dw-p-in{from{opacity:0;-moz-transform:scale(0.8)}to{opacity:1;-moz-transform:scale(1)}}@keyframes dw-p-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.8)}}@-webkit-keyframes dw-p-out{from{opacity:1;-webkit-transform:scale(1)}to{opacity:0;-webkit-transform:scale(0.8)}}@-moz-keyframes dw-p-out{from{opacity:1;-moz-transform:scale(1)}to{opacity:0;-moz-transform:scale(0.8)}}@keyframes dw-fl-in{from{opacity:0;transform:rotateY(90deg)}to{opacity:1;transform:rotateY(0)}}@-webkit-keyframes dw-fl-in{from{opacity:0;-webkit-transform:rotateY(90deg)}to{opacity:1;-webkit-transform:rotateY(0)}}@-moz-keyframes dw-fl-in{from{opacity:0;-moz-transform:rotateY(90deg)}to{opacity:1;-moz-transform:rotateY(0)}}@keyframes dw-fl-out{from{opacity:1;transform:rotateY(0deg)}to{opacity:0;transform:rotateY(-90deg)}}@-webkit-keyframes dw-fl-out{from{opacity:1;-webkit-transform:rotateY(0deg)}to{opacity:0;-webkit-transform:rotateY(-90deg)}}@-moz-keyframes dw-fl-out{from{opacity:1;-moz-transform:rotateY(0deg)}to{opacity:0;-moz-transform:rotateY(-90deg)}}@keyframes dw-sw-in{from{opacity:0;transform:rotateY(-90deg)}to{opacity:1;transform:rotateY(0deg)}}@-webkit-keyframes dw-sw-in{from{opacity:0;-webkit-transform:rotateY(-90deg)}to{opacity:1;-webkit-transform:rotateY(0deg)}}@-moz-keyframes dw-sw-in{from{opacity:0;-moz-transform:rotateY(-90deg)}to{opacity:1;-moz-transform:rotateY(0deg)}}@keyframes dw-sw-out{from{opacity:1;transform:rotateY(0deg)}to{opacity:0;transform:rotateY(-90deg)}}@-webkit-keyframes dw-sw-out{from{opacity:1;-webkit-transform:rotateY(0deg)}to{opacity:0;-webkit-transform:rotateY(-90deg)}}@-moz-keyframes dw-sw-out{from{opacity:1;-moz-transform:rotateY(0deg)}to{opacity:0;-moz-transform:rotateY(-90deg)}}@keyframes dw-sh-in{from{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes dw-sh-in{from{opacity:0;-webkit-transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes dw-sh-in{from{opacity:0;-moz-transform:translateX(-100%)}to{opacity:1;-moz-transform:translateX(0)}}@keyframes dw-sh-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@-webkit-keyframes dw-sh-out{from{opacity:1;-webkit-transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(100%)}}@-moz-keyframes dw-sh-out{from{opacity:1;-moz-transform:translateX(0)}to{opacity:0;-moz-transform:translateX(100%)}}@keyframes dw-dw-sv-in{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes dw-dw-sv-in{from{opacity:0;-webkit-transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-dw-sv-in{from{opacity:0;-moz-transform:translateY(-100%)}to{opacity:1;-moz-transform:translateY(0)}}@keyframes dw-sv-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@-webkit-keyframes dw-sv-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100%)}}@-moz-keyframes dw-sv-out{from{opacity:1;-moz-transform:translateY(0)}to{opacity:0;-moz-transform:translateY(100%)}}@keyframes dw-sd-in{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes dw-sd-in{from{opacity:1;-webkit-transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-sd-in{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes dw-sd-out{from{transform:translateY(0)}to{transform:translateY(-100%)}}@-webkit-keyframes dw-sd-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:1;-webkit-transform:translateY(-100%)}}@-moz-keyframes dw-sd-out{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes dw-su-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes dw-su-in{from{opacity:1;-webkit-transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-su-in{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes dw-su-out{from{transform:translateY(0)}to{transform:translateY(100%)}}@-webkit-keyframes dw-su-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:1;-webkit-transform:translateY(100%)}}@-moz-keyframes dw-su-out{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}} \ No newline at end of file diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js b/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js deleted file mode 100644 index 697fde48be..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){function b(b,c){function d(b){if(a.isArray(jb.readonly)){var c=a(".dwwl",K).index(b);return jb.readonly[c]}return jb.readonly}function i(b){var c='
        ',d=ob[b],e=d.values?d:h(d),f=1,g=e.values,i=e.keys||g;return a.each(g,function(a,b){f%20==0&&(c+='
        '),c+='
        '+b+"
        ",f++}),c+="
        "}function l(b){_=a(".dw-li",b).index(a(".dw-v",b).eq(0)),ab=a(".dw-li",b).index(a(".dw-v",b).eq(-1)),cb=a(".dw-ul",K).index(b)}function m(a){var b=jb.headerText;return b?"function"==typeof b?b.call(hb,a):b.replace(/\{value\}/i,a):""}function n(){fb.temp=pb&&null!==fb.val&&fb.val!=ib.val()||null===fb.values?jb.parseValue(ib.val()||"",fb):fb.values.slice(0),G()}function q(b){var c,d,e=window.getComputedStyle?getComputedStyle(b[0]):b[0].style;return r?(a.each(["t","webkitT","MozT","OT","msT"],function(a,b){return void 0!==e[b+"ransform"]?(c=e[b+"ransform"],!1):void 0}),c=c.split(")")[0].split(", "),d=c[13]||c[5]):d=e.top.replace("px",""),Math.round(H-d/I)}function z(a,b){clearTimeout(lb[b]),delete lb[b],a.closest(".dwwl").removeClass("dwa")}function A(a,b,c,d,e){var f=(H-c)*I,g=a[0].style;f==nb[b]&&lb[b]||(d&&f!=nb[b]&&C("onAnimStart",[K,b,d]),nb[b]=f,g[t+"Transition"]="all "+(d?d.toFixed(3):0)+"s ease-out",r?g[t+"Transform"]="translate3d(0,"+f+"px,0)":g.top=f+"px",lb[b]&&z(a,b),d&&void 0!==e&&(a.closest(".dwwl").addClass("dwa"),lb[b]=setTimeout(function(){z(a,b)},1e3*d)),mb[b]=c)}function B(b,c,d,e,f){C("validate",[K,c,b])!==!1&&(a(".dw-ul",K).each(function(d){var g=a(this),h=a('.dw-li[data-val="'+fb.temp[d]+'"]',g),i=a(".dw-li",g),j=i.index(h),k=i.length,l=d==c||void 0===c;if(!h.hasClass("dw-v")){for(var m=h,n=h,o=0,p=0;j-o>=0&&!m.hasClass("dw-v");)o++,m=i.eq(j-o);for(;k>j+p&&!n.hasClass("dw-v");)p++,n=i.eq(j+p);(o>p&&p&&2!==e||!o||0>j-o||1==e)&&n.hasClass("dw-v")?(h=n,j+=p):(h=m,j-=o)}(!h.hasClass("dw-sel")||l)&&(fb.temp[d]=h.attr("data-val"),a(".dw-sel",g).removeClass("dw-sel"),h.addClass("dw-sel"),A(g,d,j,l?b:.1,l?f:!1))}),J=jb.formatResult(fb.temp),"inline"==jb.display?G(d,0,!0):a(".dwv",K).html(m(J)),d&&C("onChange",[J]))}function C(b,d){var e;return d.push(fb),a.each([S.defaults,kb,c],function(a,c){c[b]&&(e=c[b].apply(hb,d))}),e}function D(b,c,d,e,f){c=g(c,_,ab);var h=a(".dw-li",b).eq(c),i=void 0===f?c:f,j=cb,k=e?c==i?.1:Math.abs((c-i)*jb.timeUnit):0;fb.temp[j]=h.attr("data-val"),A(b,j,c,k,f),setTimeout(function(){B(k,j,!0,d,f)},10)}function E(a){var b=mb[cb]+1;D(a,b>ab?_:b,1,!0)}function F(a){var b=mb[cb]-1;D(a,_>b?ab:b,2,!0)}function G(a,b,c,d){qb&&!c&&B(b),J=jb.formatResult(fb.temp),d||(fb.values=fb.temp.slice(0),fb.val=J),a&&pb&&ib.val(J).trigger("change")}var H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,fb=this,gb=a.mobiscroll,hb=b,ib=a(hb),jb=u({},y),kb={},lb={},mb={},nb={},ob=[],pb=ib.is("input"),qb=!1,rb=function(b){!e(b)||j||d(this)||U||(b.preventDefault(),j=!0,V="clickpick"!=jb.mode,bb=a(".dw-ul",this),l(bb),W=void 0!==lb[cb],$=W?q(bb):mb[cb],X=f(b,"Y"),Y=new Date,Z=X,A(bb,cb,$,.001),V&&bb.closest(".dwwl").addClass("dwa"),a(document).bind(w,sb).bind(x,tb))},sb=function(a){V&&(a.preventDefault(),a.stopPropagation(),Z=f(a,"Y"),A(bb,cb,g($+(X-Z)/I,_-1,ab+1))),W=!0},tb=function(){var b,c,d,e=new Date-Y,f=g($+(X-Z)/I,_-1,ab+1),h=bb.offset().top;if(300>e?(b=(Z-X)/e,c=b*b/jb.speedUnit,0>Z-X&&(c=-c)):c=Z-X,d=Math.round($-c/I),!c&&!W){var i=Math.floor((Z-h)/I),k=a(".dw-li",bb).eq(i),l=V;C("onValueTap",[k])!==!1?d=i:l=!0,l&&(k.addClass("dw-hl"),setTimeout(function(){k.removeClass("dw-hl")},200))}V&&D(bb,d,0,!0,Math.round(f)),j=!1,bb=null,a(document).unbind(w,sb).unbind(x,tb)},ub=function(b){if(a(document).bind(x,vb),a(this).hasClass("dwb-d")||a(this).addClass("dwb-a"),a(this).hasClass("dwwb")){var c=a(this).closest(".dwwl");if(e(b)&&!d(c)&&!c.hasClass("dwa")){b.stopPropagation(),b.preventDefault(),U=!0;var f=c.find(".dw-ul"),g=a(this).hasClass("dwwbp")?E:F;l(f),clearInterval(db),db=setInterval(function(){g(f)},jb.delay),g(f)}}},vb=function(){U&&(clearInterval(db),U=!1),a(document).unbind(x,vb),a(".dwb-a",K).removeClass("dwb-a")},wb=function(b){if(!d(this)){b.preventDefault(),b=b.originalEvent;var c=b.wheelDelta?b.wheelDelta/120:b.detail?-b.detail/3:0,e=a(".dw-ul",this);l(e),D(e,Math.round(mb[cb]-c),0>c?1:2)}};fb.position=function(b){if(!("inline"==jb.display||L===a(window).width()&&N===a(window).height()&&b||C("onPosition",[K])===!1)){var c,d,e,f,h,i,j,k,l,m,n,o,p=0,q=0,r=a(window).scrollTop(),s=a(".dwwr",K),t=a(".dw",K),u={},v=void 0===jb.anchor?ib:jb.anchor;L=a(window).width(),N=a(window).height(),M=window.innerHeight,M=M||N,/modal|bubble/.test(jb.display)&&(a(".dwc",K).each(function(){c=a(this).outerWidth(!0),p+=c,q=c>q?c:q}),c=p>L?q:p,s.width(c).css("white-space",p>L?"":"nowrap")),O=t.outerWidth(),P=t.outerHeight(!0),"modal"==jb.display?(d=(L-O)/2,e=r+(M-P)/2):"bubble"==jb.display?(o=!0,l=a(".dw-arrw-i",K),i=v.offset(),j=i.top,k=i.left,f=v.outerWidth(),h=v.outerHeight(),d=k-(t.outerWidth(!0)-f)/2,d=d>L-O?L-(O+20):d,d=d>=0?d:20,e=j-P,r>e||j>r+M?(t.removeClass("dw-bubble-top").addClass("dw-bubble-bottom"),e=j+h):t.removeClass("dw-bubble-bottom").addClass("dw-bubble-top"),m=l.outerWidth(),n=k+f/2-(d+(O-m)/2),a(".dw-arr",K).css({left:g(n,0,m)})):(u.width="100%","top"==jb.display?e=r:"bottom"==jb.display&&(e=r+M-P)),u.top=0>e?0:e,u.left=d,t.css(u),a(".dw-persp",K).height(0).height(e+P>a(document).height()?e+P:a(document).height()),o&&(e+P>r+M||j>r+M)&&a(window).scrollTop(e+P-M)}},fb.enable=function(){jb.disabled=!1,pb&&ib.prop("disabled",!1)},fb.disable=function(){jb.disabled=!0,pb&&ib.prop("disabled",!0)},fb.setValue=function(b,c,d,e){fb.temp=a.isArray(b)?b.slice(0):jb.parseValue.call(hb,b+"",fb),G(c,d,!1,e)},fb.getValue=function(){return fb.values},fb.getValues=function(){var a,b=[];for(a in fb._selectedValues)b.push(fb._selectedValues[a]);return b},fb.changeWheel=function(b,c){if(K){var d=0,e=b.length;a.each(jb.wheels,function(f,g){return a.each(g,function(f,g){return a.inArray(d,b)>-1&&(ob[d]=g,a(".dw-ul",K).eq(d).html(i(d)),e--,!e)?(fb.position(),B(c,void 0,!0),!1):(d++,void 0)}),e?void 0:!1})}},fb.isVisible=function(){return qb},fb.tap=function(a,b){var c,d;jb.tap&&a.bind("touchstart",function(a){a.preventDefault(),c=f(a,"X"),d=f(a,"Y")}).bind("touchend",function(a){Math.abs(f(a,"X")-c)<20&&Math.abs(f(a,"Y")-d)<20&&b.call(this,a),k=!0,setTimeout(function(){k=!1},300)}),a.bind("click",function(a){k||b.call(this,a)})},fb.show=function(b){if(jb.disabled||qb)return!1;"top"==jb.display&&(Q="slidedown"),"bottom"==jb.display&&(Q="slideup"),n(),C("onBeforeShow",[]);var c=0,d="";Q&&!b&&(d="dw-"+Q+" dw-in");var e='
        '+("inline"==jb.display?'
        ':'
        '+(jb.headerText?'
        ':""))+'
        ';a.each(jb.wheels,function(b,d){e+='
        ',a.each(d,function(a,b){ob[c]=b,e+='',c++}),e+="
        '+("scroller"!=jb.mode?'
        +
        ':"")+'
        '+(b.label||a)+'
        ',e+=i(c),e+='
        "}),e+="
        "+("inline"!=jb.display?'
        '+jb.setText+""+(jb.button3?''+jb.button3Text+"":"")+''+jb.cancelText+"
        ":"")+"
        ",K=a(e),B(),C("onMarkupReady",[K]),"inline"!=jb.display?(K.appendTo("body"),Q&&!b&&(K.addClass("dw-trans"),setTimeout(function(){K.removeClass("dw-trans").find(".dw").removeClass(d)},350))):ib.is("div")?ib.html(K):K.insertAfter(ib),C("onMarkupInserted",[K]),qb=!0,S.init(K,fb),"inline"!=jb.display&&(fb.tap(a(".dwb-s span",K),function(){fb.hide(!1,"set")!==!1&&(G(!0,0,!0),C("onSelect",[fb.val]))}),fb.tap(a(".dwb-c span",K),function(){fb.cancel()}),jb.button3&&fb.tap(a(".dwb-n span",K),jb.button3),jb.scrollLock&&K.bind("touchmove",function(a){M>=P&&L>=O&&a.preventDefault()}),fb.position(),a(window).bind("orientationchange.dw resize.dw",function(){clearTimeout(R),R=setTimeout(function(){fb.position(!0)},100)})),K.delegate(".dwwl","DOMMouseScroll mousewheel",wb).delegate(".dwb-e",v,ub).delegate(".dwwl",v,rb),C("onShow",[K,J])},fb.hide=function(b,c){return qb&&C("onClose",[J,c])!==!1?(a(".dwtd").each(function(){a(this).prop("disabled",!1).removeClass("dwtd"),a(this).data("autocomplete")?a(this).attr("autocomplete",a(this).data("autocomplete")):a(this).removeAttr("autocomplete")}),ib.blur(),K&&("inline"!=jb.display&&Q&&!b?(K.addClass("dw-trans").find(".dw").addClass("dw-"+Q+" dw-out"),setTimeout(function(){K.remove(),K=null},350)):(K.remove(),K=null),qb=!1,nb={},a(window).unbind(".dw")),void 0):!1},fb.cancel=function(){fb.hide(!1,"cancel")!==!1&&C("onCancel",[fb.val])},fb.init=function(a){S=u({defaults:{},init:p},gb.themes[a.theme||jb.theme]),T=gb.i18n[a.lang||jb.lang],u(c,a),u(jb,S.defaults,T,c),fb.settings=jb,ib.unbind(".dw");var b=gb.presets[jb.preset];b&&(kb=b.call(hb,fb),u(jb,kb,c)),H=Math.floor(jb.rows/2),I=jb.height,Q=jb.animate,qb&&fb.hide(),"inline"==jb.display?fb.show():(n(),pb&&jb.showOnFocus&&(void 0===eb&&(eb=hb.readOnly),hb.readOnly=!0,ib.bind("focus.dw",function(){fb.show()})))},fb.trigger=function(a,b){return C(a,b)},fb.option=function(a,b){var c={};"object"==typeof a?c=a:c[a]=b,fb.init(c)},fb.destroy=function(){fb.hide(),ib.unbind(".dw"),delete o[hb.id],pb&&(hb.readOnly=eb)},fb.getInst=function(){return fb},fb.values=null,fb.val=null,fb.temp=null,fb._selectedValues={},fb.init(c)}function c(a){var b;for(b in a)if(void 0!==q[a[b]])return!0;return!1}function d(){var a,b=["Webkit","Moz","O","ms"];for(a in b)if(c([b[a]+"Transform"]))return"-"+b[a].toLowerCase();return""}function e(a){if("touchstart"===a.type)l=!0;else if(l)return l=!1,!1;return!0}function f(a,b){var c=a.originalEvent,d=a.changedTouches;return d||c&&c.changedTouches?c?c.changedTouches[0]["page"+b]:d[0]["page"+b]:a["page"+b]}function g(a,b,c){return Math.max(b,Math.min(a,c))}function h(b){var c={values:[],keys:[]};return a.each(b,function(a,b){c.keys.push(a),c.values.push(b)}),c}function i(a,c,d){var e=a;return"object"==typeof c?a.each(function(){this.id||(n+=1,this.id="mobiscroll"+n),o[this.id]=new b(this,c)}):("string"==typeof c&&a.each(function(){var a,b=o[this.id];return b&&b[c]&&(a=b[c].apply(this,Array.prototype.slice.call(d,1)),void 0!==a)?(e=a,!1):void 0}),e)}var j,k,l,m=new Date,n=m.getTime(),o={},p=function(){},q=document.createElement("modernizr").style,r=c(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]),s=d(),t=s.replace(/^\-/,"").replace("moz","Moz"),u=a.extend,v="touchstart mousedown",w="touchmove mousemove",x="touchend mouseup",y={width:70,height:40,rows:3,delay:300,disabled:!1,readonly:!1,showOnFocus:!0,showLabel:!0,wheels:[],theme:"",headerText:"{value}",display:"modal",mode:"scroller",preset:"",lang:"en-US",setText:"Set",cancelText:"Cancel",scrollLock:!0,tap:!0,speedUnit:.0012,timeUnit:.1,formatResult:function(a){return a.join(" ")},parseValue:function(b,c){var d,e=b.split(" "),f=[],g=0;return a.each(c.settings.wheels,function(b,c){a.each(c,function(b,c){c=c.values?c:h(c),d=c.keys||c.values,-1!==a.inArray(e[g],d)?f.push(e[g]):f.push(d[0]),g++})}),f}};a(document).bind("mouseover mouseup mousedown click",function(a){return k?(a.stopPropagation(),a.preventDefault(),!1):void 0}),a.fn.mobiscroll=function(b){return u(this,a.mobiscroll.shorts),i(this,b,arguments)},a.mobiscroll=a.mobiscroll||{setDefaults:function(a){u(y,a)},presetShort:function(a){this.shorts[a]=function(b){return i(this,u(b,{preset:a}),arguments)}},shorts:{},presets:{},themes:{},i18n:{}},a.scroller=a.scroller||a.mobiscroll,a.fn.scroller=a.fn.scroller||a.fn.mobiscroll}(jQuery),function(a){var b=a.mobiscroll,c=new Date,d={dateFormat:"mm/dd/yy",dateOrder:"mmddy",timeWheels:"hhiiA",timeFormat:"hh:ii A",startYear:c.getFullYear()-100,endYear:c.getFullYear()+1,monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortYearCutoff:"+10",monthText:"Month",dayText:"Day",yearText:"Year",hourText:"Hours",minuteText:"Minutes",secText:"Seconds",ampmText:" ",nowText:"Now",showNow:!1,stepHour:1,stepMinute:1,stepSecond:1,separator:" "},e=function(c){function e(a,b,c){return void 0!==D[b]?+a[D[b]]:void 0!==c?c:M[E[b]]?M[E[b]]():E[b](M)}function f(a,b,c,d){a.push({values:c,keys:b,label:d})}function g(a,b){return Math.floor(a/b)*b}function h(a){var b=a.getHours();return b=K&&b>=12?b-12:b,g(b,N)}function i(a){return g(a.getMinutes(),O)}function j(a){return g(a.getSeconds(),P)}function k(a){return J&&a.getHours()>11?1:0}function l(a){var b=e(a,"h",0);return new Date(e(a,"y"),e(a,"m"),e(a,"d",1),e(a,"a")?b+12:b,e(a,"i",0),e(a,"s",0))}var m,n=a(this),o={};if(n.is("input")){switch(n.attr("type")){case"date":m="yy-mm-dd";break;case"datetime":m="yy-mm-ddTHH:ii:ssZ";break;case"datetime-local":m="yy-mm-ddTHH:ii:ss";break;case"month":m="yy-mm",o.dateOrder="mmyy";break;case"time":m="HH:ii:ss"}var p=n.attr("min"),q=n.attr("max");p&&(o.minDate=b.parseDate(m,p)),q&&(o.maxDate=b.parseDate(m,q))}var r,s,t,u,v,w,x,y=a.extend({},c.settings),z=a.extend(c.settings,d,o,y),A=0,B=[],C=[],D={},E={y:"getFullYear",m:"getMonth",d:"getDate",h:h,i:i,s:j,a:k},F=z.preset,G=z.dateOrder,H=z.timeWheels,I=G.match(/D/),J=H.match(/a/i),K=H.match(/h/),L="datetime"==F?z.dateFormat+z.separator+z.timeFormat:"time"==F?z.timeFormat:z.dateFormat,M=new Date,N=z.stepHour,O=z.stepMinute,P=z.stepSecond,Q=z.minDate||new Date(z.startYear,0,1),R=z.maxDate||new Date(z.endYear,11,31,23,59,59);if(m=m||L,F.match(/date/i)){for(a.each(["y","m","d"],function(a,b){r=G.search(new RegExp(b,"i")),r>-1&&C.push({o:r,v:b})}),C.sort(function(a,b){return a.o>b.o?1:-1}),a.each(C,function(a,b){D[b.v]=a}),v=[],s=0;3>s;s++)if(s==D.y){for(A++,u=[],t=[],w=Q.getFullYear(),x=R.getFullYear(),r=w;x>=r;r++)t.push(r),u.push(G.match(/yy/i)?r:(r+"").substr(2,2));f(v,t,u,z.yearText)}else if(s==D.m){for(A++,u=[],t=[],r=0;12>r;r++){var S=G.replace(/[dy]/gi,"").replace(/mm/,9>r?"0"+(r+1):r+1).replace(/m/,r+1);t.push(r),u.push(S.match(/MM/)?S.replace(/MM/,''+z.monthNames[r]+""):S.replace(/M/,''+z.monthNamesShort[r]+""))}f(v,t,u,z.monthText)}else if(s==D.d){for(A++,u=[],t=[],r=1;32>r;r++)t.push(r),u.push(G.match(/dd/i)&&10>r?"0"+r:r);f(v,t,u,z.dayText)}B.push(v)}if(F.match(/time/i)){for(C=[],a.each(["h","i","s","a"],function(a,b){a=H.search(new RegExp(b,"i")),a>-1&&C.push({o:a,v:b})}),C.sort(function(a,b){return a.o>b.o?1:-1}),a.each(C,function(a,b){D[b.v]=A+a}),v=[],s=A;A+4>s;s++)if(s==D.h){for(A++,u=[],t=[],r=0;(K?12:24)>r;r+=N)t.push(r),u.push(K&&0==r?12:H.match(/hh/i)&&10>r?"0"+r:r);f(v,t,u,z.hourText)}else if(s==D.i){for(A++,u=[],t=[],r=0;60>r;r+=O)t.push(r),u.push(H.match(/ii/)&&10>r?"0"+r:r);f(v,t,u,z.minuteText)}else if(s==D.s){for(A++,u=[],t=[],r=0;60>r;r+=P)t.push(r),u.push(H.match(/ss/)&&10>r?"0"+r:r);f(v,t,u,z.secText)}else if(s==D.a){A++;var T=H.match(/A/);f(v,[0,1],T?["AM","PM"]:["am","pm"],z.ampmText)}B.push(v)}return c.setDate=function(a,b,d,e){var f;for(f in D)c.temp[D[f]]=a[E[f]]?a[E[f]]():E[f](a);c.setValue(c.temp,b,d,e)},c.getDate=function(a){return l(a?c.temp:c.values)},{button3Text:z.showNow?z.nowText:void 0,button3:z.showNow?function(){c.setDate(new Date,!1,.3,!0)}:void 0,wheels:B,headerText:function(){return b.formatDate(L,l(c.temp),z)},formatResult:function(a){return b.formatDate(m,l(a),z)},parseValue:function(a){var c,d=new Date,e=[];try{d=b.parseDate(m,a,z)}catch(f){}for(c in D)e[D[c]]=d[E[c]]?d[E[c]]():E[c](d);return e},validate:function(b){var d=c.temp,f={y:Q.getFullYear(),m:0,d:1,h:0,i:0,s:0,a:0},h={y:R.getFullYear(),m:11,d:31,h:g(K?11:23,N),i:g(59,O),s:g(59,P),a:1},i=!0,j=!0;a.each(["y","m","d","a","h","i","s"],function(c,g){if(void 0!==D[g]){var k,l,m=f[g],n=h[g],o=31,p=e(d,g),q=a(".dw-ul",b).eq(D[g]);if("d"==g&&(k=e(d,"y"),l=e(d,"m"),o=32-new Date(k,l,32).getDate(),n=o,I&&a(".dw-li",q).each(function(){var b=a(this),c=b.data("val"),d=new Date(k,l,c).getDay(),e=G.replace(/[my]/gi,"").replace(/dd/,10>c?"0"+c:c).replace(/d/,c);a(".dw-i",b).html(e.match(/DD/)?e.replace(/DD/,''+z.dayNames[d]+""):e.replace(/D/,''+z.dayNamesShort[d]+""))})),i&&Q&&(m=Q[E[g]]?Q[E[g]]():E[g](Q)),j&&R&&(n=R[E[g]]?R[E[g]]():E[g](R)),"y"!=g){var r=a(".dw-li",q).index(a('.dw-li[data-val="'+m+'"]',q)),s=a(".dw-li",q).index(a('.dw-li[data-val="'+n+'"]',q));a(".dw-li",q).removeClass("dw-v").slice(r,s+1).addClass("dw-v"),"d"==g&&a(".dw-li",q).removeClass("dw-h").slice(o).addClass("dw-h")}if(m>p&&(p=m),p>n&&(p=n),i&&(i=p==m),j&&(j=p==n),z.invalid&&"d"==g){var t=[];if(z.invalid.dates&&a.each(z.invalid.dates,function(a,b){b.getFullYear()==k&&b.getMonth()==l&&t.push(b.getDate()-1)}),z.invalid.daysOfWeek){var u,v=new Date(k,l,1).getDay();a.each(z.invalid.daysOfWeek,function(a,b){for(u=b-v;o>u;u+=7)u>=0&&t.push(u)})}z.invalid.daysOfMonth&&a.each(z.invalid.daysOfMonth,function(a,b){b=(b+"").split("/"),b[1]?b[0]-1==l&&t.push(b[1]-1):t.push(b[0]-1)}),a.each(t,function(b,c){a(".dw-li",q).eq(c).removeClass("dw-v")})}d[D[g]]=p}})}}};a.each(["date","time","datetime"],function(a,c){b.presets[c]=e,b.presetShort(c)}),b.formatDate=function(b,c,e){if(!c)return null;var f,g=a.extend({},d,e),h=function(a){for(var c=0;f+112?m-12:0==m?12:m,2);break;case"H":k+=i("H",c.getHours(),2);break;case"i":k+=i("i",c.getMinutes(),2);break;case"s":k+=i("s",c.getSeconds(),2);break;case"a":k+=c.getHours()>11?"pm":"am";break;case"A":k+=c.getHours()>11?"PM":"AM";break;case"'":h("'")?k+="'":l=!0;break;default:k+=b.charAt(f)}return k},b.parseDate=function(b,c,e){var f=new Date;if(!b||!c)return f;c="object"==typeof c?c.toString():c+"";var g,h=a.extend({},d,e),i=h.shortYearCutoff,j=f.getFullYear(),k=f.getMonth()+1,l=f.getDate(),m=-1,n=f.getHours(),o=f.getMinutes(),p=0,q=-1,r=!1,s=function(a){var c=g+1j&&(j+=(new Date).getFullYear()-(new Date).getFullYear()%100+(j<=("string"!=typeof i?i:(new Date).getFullYear()%100+parseInt(i,10))?0:-100)),m>-1)for(k=1,l=m;;){var x=32-new Date(j,k-1,32).getDate();if(x>=l)break;k++,l-=x}n=-1==q?n:q&&12>n?n+12:q||12!=n?n:0;var y=new Date(j,k-1,l,n,o,p);if(y.getFullYear()!=j||y.getMonth()+1!=k||y.getDate()!=l)throw"Invalid date";return y}}(jQuery),function(a){var b={inputClass:"",invalid:[],rtl:!1,group:!1,groupLabel:"Groups"};a.mobiscroll.presetShort("select"),a.mobiscroll.presets.select=function(c){function d(){var b,c=0,d=[],e=[],f=[[]];return m.group?(m.rtl&&(c=1),a("optgroup",n).each(function(b){d.push(a(this).attr("label")),e.push(b)}),f[c]=[{values:d,keys:e,label:v}],b=r,c+=m.rtl?-1:1):b=n,d=[],e=[],a("option",b).each(function(){var b=a(this).attr("value");d.push(a(this).text()),e.push(b),a(this).prop("disabled")&&w.push(b)}),f[c]=[{values:d,keys:e,label:v}],f}function e(a,b){var d=[];if(o){var e=[],g=0;for(g in c._selectedValues)e.push(y[g]),d.push(g);j.val(e.join(", "))}else j.val(a),d=b?c.values[h]:null;b&&(f=!0,n.val(d).trigger("change"))}var f,g,h,i,j,k,l=a.extend({},c.settings),m=a.extend(c.settings,b,l),n=a(this),o=n.prop("multiple"),p=this.id+"_dummy",q=o?n.val()?n.val()[0]:a("option",n).attr("value"):n.val(),r=n.find('option[value="'+q+'"]').parent(),s=r.index()+"",t=s,u=(a('label[for="'+this.id+'"]').attr("for",p),a('label[for="'+p+'"]')),v=void 0!==m.label?m.label:u.length?u.text():n.attr("name"),w=[],x=[],y={},z=m.readonly;m.group&&!a("optgroup",n).length&&(m.group=!1),m.invalid.length||(m.invalid=w),m.group?m.rtl?(g=1,h=0):(g=0,h=1):(g=-1,h=0),a("#"+p).remove(),j=a('').insertBefore(n),a("option",n).each(function(){y[a(this).attr("value")]=a(this).text()}),m.showOnFocus&&j.focus(function(){c.show()});var A=n.val()||[],B=0;for(B;B9b#5NV>2k zBC~b@b~P=nNfWAe-b%_i6tS^-1y(h@EsB~1TqDA_h@fkxG$bHgvj}VxE1JLgr!*!^ ILUxTc0Q$^Q5C8xG diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.css b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.css deleted file mode 100644 index 7264b08333..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.css +++ /dev/null @@ -1,167 +0,0 @@ -/* jquery.Jcrop.css v0.9.12 - MIT License */ -/* - The outer-most container in a typical Jcrop instance - If you are having difficulty with formatting related to styles - on a parent element, place any fixes here or in a like selector - - You can also style this element if you want to add a border, etc - A better method for styling can be seen below with .jcrop-light - (Add a class to the holder and style elements for that extended class) -*/ -.jcrop-holder { - direction: ltr; - text-align: left; - /* IE10 touch compatibility */ - -ms-touch-action: none; -} -/* Selection Border */ -.jcrop-vline, -.jcrop-hline { - background: #ffffff url("Jcrop.gif"); - font-size: 0; - position: absolute; -} -.jcrop-vline { - height: 100%; - width: 1px !important; -} -.jcrop-vline.right { - right: 0; -} -.jcrop-hline { - height: 1px !important; - width: 100%; -} -.jcrop-hline.bottom { - bottom: 0; -} -/* Invisible click targets */ -.jcrop-tracker { - height: 100%; - width: 100%; - /* "turn off" link highlight */ - -webkit-tap-highlight-color: transparent; - /* disable callout, image save panel */ - -webkit-touch-callout: none; - /* disable cut copy paste */ - -webkit-user-select: none; -} -/* Selection Handles */ -.jcrop-handle { - background-color: #333333; - border: 1px #eeeeee solid; - width: 7px; - height: 7px; - font-size: 1px; -} -.jcrop-handle.ord-n { - left: 50%; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-s { - bottom: 0; - left: 50%; - margin-bottom: -4px; - margin-left: -4px; -} -.jcrop-handle.ord-e { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 50%; -} -.jcrop-handle.ord-w { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 50%; -} -.jcrop-handle.ord-nw { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-ne { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 0; -} -.jcrop-handle.ord-se { - bottom: 0; - margin-bottom: -4px; - margin-right: -4px; - right: 0; -} -.jcrop-handle.ord-sw { - bottom: 0; - left: 0; - margin-bottom: -4px; - margin-left: -4px; -} -/* Dragbars */ -.jcrop-dragbar.ord-n, -.jcrop-dragbar.ord-s { - height: 7px; - width: 100%; -} -.jcrop-dragbar.ord-e, -.jcrop-dragbar.ord-w { - height: 100%; - width: 7px; -} -.jcrop-dragbar.ord-n { - margin-top: -4px; -} -.jcrop-dragbar.ord-s { - bottom: 0; - margin-bottom: -4px; -} -.jcrop-dragbar.ord-e { - margin-right: -4px; - right: 0; -} -.jcrop-dragbar.ord-w { - margin-left: -4px; -} -/* The "jcrop-light" class/extension */ -.jcrop-light .jcrop-vline, -.jcrop-light .jcrop-hline { - background: #ffffff; - filter: alpha(opacity=70) !important; - opacity: .70!important; -} -.jcrop-light .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #000000; - border-color: #ffffff; - border-radius: 3px; -} -/* The "jcrop-dark" class/extension */ -.jcrop-dark .jcrop-vline, -.jcrop-dark .jcrop-hline { - background: #000000; - filter: alpha(opacity=70) !important; - opacity: 0.7 !important; -} -.jcrop-dark .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #ffffff; - border-color: #000000; - border-radius: 3px; -} -/* Simple macro to turn off the antlines */ -.solid-line .jcrop-vline, -.solid-line .jcrop-hline { - background: #ffffff; -} -/* Fix for twitter bootstrap et al. */ -.jcrop-holder img, -img.jcrop-preview { - max-width: none; -} diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.js b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.js deleted file mode 100644 index 09b1bcf795..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.js +++ /dev/null @@ -1,1694 +0,0 @@ -/** - * jquery.Jcrop.js v0.9.12 - * jQuery Image Cropping Plugin - released under MIT License - * Author: Kelly Hallman - * http://github.com/tapmodo/Jcrop - * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{ - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * }}} - */ - -(function ($) { - - $.Jcrop = function (obj, opt) { - var options = $.extend({}, $.Jcrop.defaults), - docOffset, - _ua = navigator.userAgent.toLowerCase(), - is_msie = /msie/.test(_ua), - ie6mode = /msie [1-6]\./.test(_ua); - - // Internal Methods {{{ - function px(n) { - return Math.round(n) + 'px'; - } - function cssClass(cl) { - return options.baseClass + '-' + cl; - } - function supportsColorFade() { - return $.fx.step.hasOwnProperty('backgroundColor'); - } - function getPos(obj) //{{{ - { - var pos = $(obj).offset(); - return [pos.left, pos.top]; - } - //}}} - function mouseAbs(e) //{{{ - { - return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; - } - //}}} - function setOptions(opt) //{{{ - { - if (typeof(opt) !== 'object') opt = {}; - options = $.extend(options, opt); - - $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { - if (typeof(options[e]) !== 'function') options[e] = function () {}; - }); - } - //}}} - function startDragMode(mode, pos, touch) //{{{ - { - docOffset = getPos($img); - Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); - - if (mode === 'move') { - return Tracker.activateHandlers(createMover(pos), doneSelect, touch); - } - - var fc = Coords.getFixed(); - var opp = oppLockCorner(mode); - var opc = Coords.getCorner(oppLockCorner(opp)); - - Coords.setPressed(Coords.getCorner(opp)); - Coords.setCurrent(opc); - - Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch); - } - //}}} - function dragmodeHandler(mode, f) //{{{ - { - return function (pos) { - if (!options.aspectRatio) { - switch (mode) { - case 'e': - pos[1] = f.y2; - break; - case 'w': - pos[1] = f.y2; - break; - case 'n': - pos[0] = f.x2; - break; - case 's': - pos[0] = f.x2; - break; - } - } else { - switch (mode) { - case 'e': - pos[1] = f.y + 1; - break; - case 'w': - pos[1] = f.y + 1; - break; - case 'n': - pos[0] = f.x + 1; - break; - case 's': - pos[0] = f.x + 1; - break; - } - } - Coords.setCurrent(pos); - Selection.update(); - }; - } - //}}} - function createMover(pos) //{{{ - { - var lloc = pos; - KeyManager.watchKeys(); - - return function (pos) { - Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); - lloc = pos; - - Selection.update(); - }; - } - //}}} - function oppLockCorner(ord) //{{{ - { - switch (ord) { - case 'n': - return 'sw'; - case 's': - return 'nw'; - case 'e': - return 'nw'; - case 'w': - return 'ne'; - case 'ne': - return 'sw'; - case 'nw': - return 'se'; - case 'se': - return 'nw'; - case 'sw': - return 'ne'; - } - } - //}}} - function createDragger(ord) //{{{ - { - return function (e) { - if (options.disabled) { - return false; - } - if ((ord === 'move') && !options.allowMove) { - return false; - } - - // Fix position of crop area when dragged the very first time. - // Necessary when crop image is in a hidden element when page is loaded. - docOffset = getPos($img); - - btndown = true; - startDragMode(ord, mouseAbs(e)); - e.stopPropagation(); - e.preventDefault(); - return false; - }; - } - //}}} - function presize($obj, w, h) //{{{ - { - var nw = $obj.width(), - nh = $obj.height(); - if ((nw > w) && w > 0) { - nw = w; - nh = (w / $obj.width()) * $obj.height(); - } - if ((nh > h) && h > 0) { - nh = h; - nw = (h / $obj.height()) * $obj.width(); - } - xscale = $obj.width() / nw; - yscale = $obj.height() / nh; - $obj.width(nw).height(nh); - } - //}}} - function unscale(c) //{{{ - { - return { - x: c.x * xscale, - y: c.y * yscale, - x2: c.x2 * xscale, - y2: c.y2 * yscale, - w: c.w * xscale, - h: c.h * yscale - }; - } - //}}} - function doneSelect(pos) //{{{ - { - var c = Coords.getFixed(); - if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { - Selection.enableHandles(); - Selection.done(); - } else { - Selection.release(); - } - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - } - //}}} - function newSelection(e) //{{{ - { - if (options.disabled) { - return; - } - if (!options.allowSelect) { - return; - } - btndown = true; - docOffset = getPos($img); - Selection.disableHandles(); - Tracker.setCursor('crosshair'); - var pos = mouseAbs(e); - Coords.setPressed(pos); - Selection.update(); - Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch'); - KeyManager.watchKeys(); - - e.stopPropagation(); - e.preventDefault(); - return false; - } - //}}} - function selectDrag(pos) //{{{ - { - Coords.setCurrent(pos); - Selection.update(); - } - //}}} - function newTracker() //{{{ - { - var trk = $('
        ').addClass(cssClass('tracker')); - if (is_msie) { - trk.css({ - opacity: 0, - backgroundColor: 'white' - }); - } - return trk; - } - //}}} - - // }}} - // Initialization {{{ - // Sanitize some options {{{ - if (typeof(obj) !== 'object') { - obj = $(obj)[0]; - } - if (typeof(opt) !== 'object') { - opt = {}; - } - // }}} - setOptions(opt); - // Initialize some jQuery objects {{{ - // The values are SET on the image(s) for the interface - // If the original image has any of these set, they will be reset - // However, if you destroy() the Jcrop instance the original image's - // character in the DOM will be as you left it. - var img_css = { - border: 'none', - visibility: 'visible', - margin: 0, - padding: 0, - position: 'absolute', - top: 0, - left: 0 - }; - - var $origimg = $(obj), - img_mode = true; - - if (obj.tagName == 'IMG') { - // Fix size of crop image. - // Necessary when crop image is within a hidden element when page is loaded. - if ($origimg[0].width != 0 && $origimg[0].height != 0) { - // Obtain dimensions from contained img element. - $origimg.width($origimg[0].width); - $origimg.height($origimg[0].height); - } else { - // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). - var tempImage = new Image(); - tempImage.src = $origimg[0].src; - $origimg.width(tempImage.width); - $origimg.height(tempImage.height); - } - - var $img = $origimg.clone().removeAttr('id').css(img_css).show(); - - $img.width($origimg.width()); - $img.height($origimg.height()); - $origimg.after($img).hide(); - - } else { - $img = $origimg.css(img_css).show(); - img_mode = false; - if (options.shade === null) { options.shade = true; } - } - - presize($img, options.boxWidth, options.boxHeight); - - var boundx = $img.width(), - boundy = $img.height(), - - - $div = $('
        ').width(boundx).height(boundy).addClass(cssClass('holder')).css({ - position: 'relative', - backgroundColor: options.bgColor - }).insertAfter($origimg).append($img); - - if (options.addClass) { - $div.addClass(options.addClass); - } - - var $img2 = $('
        '), - - $img_holder = $('
        ') - .width('100%').height('100%').css({ - zIndex: 310, - position: 'absolute', - overflow: 'hidden' - }), - - $hdl_holder = $('
        ') - .width('100%').height('100%').css('zIndex', 320), - - $sel = $('
        ') - .css({ - position: 'absolute', - zIndex: 600 - }).dblclick(function(){ - var c = Coords.getFixed(); - options.onDblClick.call(api,c); - }).insertBefore($img).append($img_holder, $hdl_holder); - - if (img_mode) { - - $img2 = $('') - .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), - - $img_holder.append($img2); - - } - - if (ie6mode) { - $sel.css({ - overflowY: 'hidden' - }); - } - - var bound = options.boundary; - var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ - position: 'absolute', - top: px(-bound), - left: px(-bound), - zIndex: 290 - }).mousedown(newSelection); - - /* }}} */ - // Set more variables {{{ - var bgcolor = options.bgColor, - bgopacity = options.bgOpacity, - xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, - btndown, animating, shift_down; - - docOffset = getPos($img); - // }}} - // }}} - // Internal Modules {{{ - // Touch Module {{{ - var Touch = (function () { - // Touch support detection function adapted (under MIT License) - // from code by Jeffrey Sambells - http://github.com/iamamused/ - function hasTouchSupport() { - var support = {}, events = ['touchstart', 'touchmove', 'touchend'], - el = document.createElement('div'), i; - - try { - for(i=0; i x1 + ox) { - ox -= ox + x1; - } - if (0 > y1 + oy) { - oy -= oy + y1; - } - - if (boundy < y2 + oy) { - oy += boundy - (y2 + oy); - } - if (boundx < x2 + ox) { - ox += boundx - (x2 + ox); - } - - x1 += ox; - x2 += ox; - y1 += oy; - y2 += oy; - } - //}}} - function getCorner(ord) //{{{ - { - var c = getFixed(); - switch (ord) { - case 'ne': - return [c.x2, c.y]; - case 'nw': - return [c.x, c.y]; - case 'se': - return [c.x2, c.y2]; - case 'sw': - return [c.x, c.y2]; - } - } - //}}} - function getFixed() //{{{ - { - if (!options.aspectRatio) { - return getRect(); - } - // This function could use some optimization I think... - var aspect = options.aspectRatio, - min_x = options.minSize[0] / xscale, - - - //min_y = options.minSize[1]/yscale, - max_x = options.maxSize[0] / xscale, - max_y = options.maxSize[1] / yscale, - rw = x2 - x1, - rh = y2 - y1, - rwa = Math.abs(rw), - rha = Math.abs(rh), - real_ratio = rwa / rha, - xx, yy, w, h; - - if (max_x === 0) { - max_x = boundx * 10; - } - if (max_y === 0) { - max_y = boundy * 10; - } - if (real_ratio < aspect) { - yy = y2; - w = rha * aspect; - xx = rw < 0 ? x1 - w : w + x1; - - if (xx < 0) { - xx = 0; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } else if (xx > boundx) { - xx = boundx; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } - } else { - xx = x2; - h = rwa / aspect; - yy = rh < 0 ? y1 - h : y1 + h; - if (yy < 0) { - yy = 0; - w = Math.abs((yy - y1) * aspect); - xx = rw < 0 ? x1 - w : w + x1; - } else if (yy > boundy) { - yy = boundy; - w = Math.abs(yy - y1) * aspect; - xx = rw < 0 ? x1 - w : w + x1; - } - } - - // Magic %-) - if (xx > x1) { // right side - if (xx - x1 < min_x) { - xx = x1 + min_x; - } else if (xx - x1 > max_x) { - xx = x1 + max_x; - } - if (yy > y1) { - yy = y1 + (xx - x1) / aspect; - } else { - yy = y1 - (xx - x1) / aspect; - } - } else if (xx < x1) { // left side - if (x1 - xx < min_x) { - xx = x1 - min_x; - } else if (x1 - xx > max_x) { - xx = x1 - max_x; - } - if (yy > y1) { - yy = y1 + (x1 - xx) / aspect; - } else { - yy = y1 - (x1 - xx) / aspect; - } - } - - if (xx < 0) { - x1 -= xx; - xx = 0; - } else if (xx > boundx) { - x1 -= xx - boundx; - xx = boundx; - } - - if (yy < 0) { - y1 -= yy; - yy = 0; - } else if (yy > boundy) { - y1 -= yy - boundy; - yy = boundy; - } - - return makeObj(flipCoords(x1, y1, xx, yy)); - } - //}}} - function rebound(p) //{{{ - { - if (p[0] < 0) p[0] = 0; - if (p[1] < 0) p[1] = 0; - - if (p[0] > boundx) p[0] = boundx; - if (p[1] > boundy) p[1] = boundy; - - return [Math.round(p[0]), Math.round(p[1])]; - } - //}}} - function flipCoords(x1, y1, x2, y2) //{{{ - { - var xa = x1, - xb = x2, - ya = y1, - yb = y2; - if (x2 < x1) { - xa = x2; - xb = x1; - } - if (y2 < y1) { - ya = y2; - yb = y1; - } - return [xa, ya, xb, yb]; - } - //}}} - function getRect() //{{{ - { - var xsize = x2 - x1, - ysize = y2 - y1, - delta; - - if (xlimit && (Math.abs(xsize) > xlimit)) { - x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); - } - if (ylimit && (Math.abs(ysize) > ylimit)) { - y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); - } - - if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { - y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); - } - if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { - x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); - } - - if (x1 < 0) { - x2 -= x1; - x1 -= x1; - } - if (y1 < 0) { - y2 -= y1; - y1 -= y1; - } - if (x2 < 0) { - x1 -= x2; - x2 -= x2; - } - if (y2 < 0) { - y1 -= y2; - y2 -= y2; - } - if (x2 > boundx) { - delta = x2 - boundx; - x1 -= delta; - x2 -= delta; - } - if (y2 > boundy) { - delta = y2 - boundy; - y1 -= delta; - y2 -= delta; - } - if (x1 > boundx) { - delta = x1 - boundy; - y2 -= delta; - y1 -= delta; - } - if (y1 > boundy) { - delta = y1 - boundy; - y2 -= delta; - y1 -= delta; - } - - return makeObj(flipCoords(x1, y1, x2, y2)); - } - //}}} - function makeObj(a) //{{{ - { - return { - x: a[0], - y: a[1], - x2: a[2], - y2: a[3], - w: a[2] - a[0], - h: a[3] - a[1] - }; - } - //}}} - - return { - flipCoords: flipCoords, - setPressed: setPressed, - setCurrent: setCurrent, - getOffset: getOffset, - moveOffset: moveOffset, - getCorner: getCorner, - getFixed: getFixed - }; - }()); - - //}}} - // Shade Module {{{ - var Shade = (function() { - var enabled = false, - holder = $('
        ').css({ - position: 'absolute', - zIndex: 240, - opacity: 0 - }), - shades = { - top: createShade(), - left: createShade().height(boundy), - right: createShade().height(boundy), - bottom: createShade() - }; - - function resizeShades(w,h) { - shades.left.css({ height: px(h) }); - shades.right.css({ height: px(h) }); - } - function updateAuto() - { - return updateShade(Coords.getFixed()); - } - function updateShade(c) - { - shades.top.css({ - left: px(c.x), - width: px(c.w), - height: px(c.y) - }); - shades.bottom.css({ - top: px(c.y2), - left: px(c.x), - width: px(c.w), - height: px(boundy-c.y2) - }); - shades.right.css({ - left: px(c.x2), - width: px(boundx-c.x2) - }); - shades.left.css({ - width: px(c.x) - }); - } - function createShade() { - return $('
        ').css({ - position: 'absolute', - backgroundColor: options.shadeColor||options.bgColor - }).appendTo(holder); - } - function enableShade() { - if (!enabled) { - enabled = true; - holder.insertBefore($img); - updateAuto(); - Selection.setBgOpacity(1,0,1); - $img2.hide(); - - setBgColor(options.shadeColor||options.bgColor,1); - if (Selection.isAwake()) - { - setOpacity(options.bgOpacity,1); - } - else setOpacity(1,1); - } - } - function setBgColor(color,now) { - colorChangeMacro(getShades(),color,now); - } - function disableShade() { - if (enabled) { - holder.remove(); - $img2.show(); - enabled = false; - if (Selection.isAwake()) { - Selection.setBgOpacity(options.bgOpacity,1,1); - } else { - Selection.setBgOpacity(1,1,1); - Selection.disableHandles(); - } - colorChangeMacro($div,0,1); - } - } - function setOpacity(opacity,now) { - if (enabled) { - if (options.bgFade && !now) { - holder.animate({ - opacity: 1-opacity - },{ - queue: false, - duration: options.fadeTime - }); - } - else holder.css({opacity:1-opacity}); - } - } - function refreshAll() { - options.shade ? enableShade() : disableShade(); - if (Selection.isAwake()) setOpacity(options.bgOpacity); - } - function getShades() { - return holder.children(); - } - - return { - update: updateAuto, - updateRaw: updateShade, - getShades: getShades, - setBgColor: setBgColor, - enable: enableShade, - disable: disableShade, - resize: resizeShades, - refresh: refreshAll, - opacity: setOpacity - }; - }()); - // }}} - // Selection Module {{{ - var Selection = (function () { - var awake, - hdep = 370, - borders = {}, - handle = {}, - dragbar = {}, - seehandles = false; - - // Private Methods - function insertBorder(type) //{{{ - { - var jq = $('
        ').css({ - position: 'absolute', - opacity: options.borderOpacity - }).addClass(cssClass(type)); - $img_holder.append(jq); - return jq; - } - //}}} - function dragDiv(ord, zi) //{{{ - { - var jq = $('
        ').mousedown(createDragger(ord)).css({ - cursor: ord + '-resize', - position: 'absolute', - zIndex: zi - }).addClass('ord-'+ord); - - if (Touch.support) { - jq.bind('touchstart.jcrop', Touch.createDragger(ord)); - } - - $hdl_holder.append(jq); - return jq; - } - //}}} - function insertHandle(ord) //{{{ - { - var hs = options.handleSize, - - div = dragDiv(ord, hdep++).css({ - opacity: options.handleOpacity - }).addClass(cssClass('handle')); - - if (hs) { div.width(hs).height(hs); } - - return div; - } - //}}} - function insertDragbar(ord) //{{{ - { - return dragDiv(ord, hdep++).addClass('jcrop-dragbar'); - } - //}}} - function createDragbars(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - dragbar[li[i]] = insertDragbar(li[i]); - } - } - //}}} - function createBorders(li) //{{{ - { - var cl,i; - for (i = 0; i < li.length; i++) { - switch(li[i]){ - case'n': cl='hline'; break; - case's': cl='hline bottom'; break; - case'e': cl='vline right'; break; - case'w': cl='vline'; break; - } - borders[li[i]] = insertBorder(cl); - } - } - //}}} - function createHandles(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - handle[li[i]] = insertHandle(li[i]); - } - } - //}}} - function moveto(x, y) //{{{ - { - if (!options.shade) { - $img2.css({ - top: px(-y), - left: px(-x) - }); - } - $sel.css({ - top: px(y), - left: px(x) - }); - } - //}}} - function resize(w, h) //{{{ - { - $sel.width(Math.round(w)).height(Math.round(h)); - } - //}}} - function refresh() //{{{ - { - var c = Coords.getFixed(); - - Coords.setPressed([c.x, c.y]); - Coords.setCurrent([c.x2, c.y2]); - - updateVisible(); - } - //}}} - - // Internal Methods - function updateVisible(select) //{{{ - { - if (awake) { - return update(select); - } - } - //}}} - function update(select) //{{{ - { - var c = Coords.getFixed(); - - resize(c.w, c.h); - moveto(c.x, c.y); - if (options.shade) Shade.updateRaw(c); - - awake || show(); - - if (select) { - options.onSelect.call(api, unscale(c)); - } else { - options.onChange.call(api, unscale(c)); - } - } - //}}} - function setBgOpacity(opacity,force,now) //{{{ - { - if (!awake && !force) return; - if (options.bgFade && !now) { - $img.animate({ - opacity: opacity - },{ - queue: false, - duration: options.fadeTime - }); - } else { - $img.css('opacity', opacity); - } - } - //}}} - function show() //{{{ - { - $sel.show(); - - if (options.shade) Shade.opacity(bgopacity); - else setBgOpacity(bgopacity,true); - - awake = true; - } - //}}} - function release() //{{{ - { - disableHandles(); - $sel.hide(); - - if (options.shade) Shade.opacity(1); - else setBgOpacity(1); - - awake = false; - options.onRelease.call(api); - } - //}}} - function showHandles() //{{{ - { - if (seehandles) { - $hdl_holder.show(); - } - } - //}}} - function enableHandles() //{{{ - { - seehandles = true; - if (options.allowResize) { - $hdl_holder.show(); - return true; - } - } - //}}} - function disableHandles() //{{{ - { - seehandles = false; - $hdl_holder.hide(); - } - //}}} - function animMode(v) //{{{ - { - if (v) { - animating = true; - disableHandles(); - } else { - animating = false; - enableHandles(); - } - } - //}}} - function done() //{{{ - { - animMode(false); - refresh(); - } - //}}} - // Insert draggable elements {{{ - // Insert border divs for outline - - if (options.dragEdges && $.isArray(options.createDragbars)) - createDragbars(options.createDragbars); - - if ($.isArray(options.createHandles)) - createHandles(options.createHandles); - - if (options.drawBorders && $.isArray(options.createBorders)) - createBorders(options.createBorders); - - //}}} - - // This is a hack for iOS5 to support drag/move touch functionality - $(document).bind('touchstart.jcrop-ios',function(e) { - if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); - }); - - var $track = newTracker().mousedown(createDragger('move')).css({ - cursor: 'move', - position: 'absolute', - zIndex: 360 - }); - - if (Touch.support) { - $track.bind('touchstart.jcrop', Touch.createDragger('move')); - } - - $img_holder.append($track); - disableHandles(); - - return { - updateVisible: updateVisible, - update: update, - release: release, - refresh: refresh, - isAwake: function () { - return awake; - }, - setCursor: function (cursor) { - $track.css('cursor', cursor); - }, - enableHandles: enableHandles, - enableOnly: function () { - seehandles = true; - }, - showHandles: showHandles, - disableHandles: disableHandles, - animMode: animMode, - setBgOpacity: setBgOpacity, - done: done - }; - }()); - - //}}} - // Tracker Module {{{ - var Tracker = (function () { - var onMove = function () {}, - onDone = function () {}, - trackDoc = options.trackDocument; - - function toFront(touch) //{{{ - { - $trk.css({ - zIndex: 450 - }); - - if (touch) - $(document) - .bind('touchmove.jcrop', trackTouchMove) - .bind('touchend.jcrop', trackTouchEnd); - - else if (trackDoc) - $(document) - .bind('mousemove.jcrop',trackMove) - .bind('mouseup.jcrop',trackUp); - } - //}}} - function toBack() //{{{ - { - $trk.css({ - zIndex: 290 - }); - $(document).unbind('.jcrop'); - } - //}}} - function trackMove(e) //{{{ - { - onMove(mouseAbs(e)); - return false; - } - //}}} - function trackUp(e) //{{{ - { - e.preventDefault(); - e.stopPropagation(); - - if (btndown) { - btndown = false; - - onDone(mouseAbs(e)); - - if (Selection.isAwake()) { - options.onSelect.call(api, unscale(Coords.getFixed())); - } - - toBack(); - onMove = function () {}; - onDone = function () {}; - } - - return false; - } - //}}} - function activateHandlers(move, done, touch) //{{{ - { - btndown = true; - onMove = move; - onDone = done; - toFront(touch); - return false; - } - //}}} - function trackTouchMove(e) //{{{ - { - onMove(mouseAbs(Touch.cfilter(e))); - return false; - } - //}}} - function trackTouchEnd(e) //{{{ - { - return trackUp(Touch.cfilter(e)); - } - //}}} - function setCursor(t) //{{{ - { - $trk.css('cursor', t); - } - //}}} - - if (!trackDoc) { - $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); - } - - $img.before($trk); - return { - activateHandlers: activateHandlers, - setCursor: setCursor - }; - }()); - //}}} - // KeyManager Module {{{ - var KeyManager = (function () { - var $keymgr = $('').css({ - position: 'fixed', - left: '-120px', - width: '12px' - }).addClass('jcrop-keymgr'), - - $keywrap = $('
        ').css({ - position: 'absolute', - overflow: 'hidden' - }).append($keymgr); - - function watchKeys() //{{{ - { - if (options.keySupport) { - $keymgr.show(); - $keymgr.focus(); - } - } - //}}} - function onBlur(e) //{{{ - { - $keymgr.hide(); - } - //}}} - function doNudge(e, x, y) //{{{ - { - if (options.allowMove) { - Coords.moveOffset([x, y]); - Selection.updateVisible(true); - } - e.preventDefault(); - e.stopPropagation(); - } - //}}} - function parseKey(e) //{{{ - { - if (e.ctrlKey || e.metaKey) { - return true; - } - shift_down = e.shiftKey ? true : false; - var nudge = shift_down ? 10 : 1; - - switch (e.keyCode) { - case 37: - doNudge(e, -nudge, 0); - break; - case 39: - doNudge(e, nudge, 0); - break; - case 38: - doNudge(e, 0, -nudge); - break; - case 40: - doNudge(e, 0, nudge); - break; - case 27: - if (options.allowSelect) Selection.release(); - break; - case 9: - return true; - } - - return false; - } - //}}} - - if (options.keySupport) { - $keymgr.keydown(parseKey).blur(onBlur); - if (ie6mode || !options.fixedSupport) { - $keymgr.css({ - position: 'absolute', - left: '-20px' - }); - $keywrap.append($keymgr).insertBefore($img); - } else { - $keymgr.insertBefore($img); - } - } - - - return { - watchKeys: watchKeys - }; - }()); - //}}} - // }}} - // API methods {{{ - function setClass(cname) //{{{ - { - $div.removeClass().addClass(cssClass('holder')).addClass(cname); - } - //}}} - function animateTo(a, callback) //{{{ - { - var x1 = a[0] / xscale, - y1 = a[1] / yscale, - x2 = a[2] / xscale, - y2 = a[3] / yscale; - - if (animating) { - return; - } - - var animto = Coords.flipCoords(x1, y1, x2, y2), - c = Coords.getFixed(), - initcr = [c.x, c.y, c.x2, c.y2], - animat = initcr, - interv = options.animationDelay, - ix1 = animto[0] - initcr[0], - iy1 = animto[1] - initcr[1], - ix2 = animto[2] - initcr[2], - iy2 = animto[3] - initcr[3], - pcent = 0, - velocity = options.swingSpeed; - - x1 = animat[0]; - y1 = animat[1]; - x2 = animat[2]; - y2 = animat[3]; - - Selection.animMode(true); - var anim_timer; - - function queueAnimator() { - window.setTimeout(animator, interv); - } - var animator = (function () { - return function () { - pcent += (100 - pcent) / velocity; - - animat[0] = Math.round(x1 + ((pcent / 100) * ix1)); - animat[1] = Math.round(y1 + ((pcent / 100) * iy1)); - animat[2] = Math.round(x2 + ((pcent / 100) * ix2)); - animat[3] = Math.round(y2 + ((pcent / 100) * iy2)); - - if (pcent >= 99.8) { - pcent = 100; - } - if (pcent < 100) { - setSelectRaw(animat); - queueAnimator(); - } else { - Selection.done(); - Selection.animMode(false); - if (typeof(callback) === 'function') { - callback.call(api); - } - } - }; - }()); - queueAnimator(); - } - //}}} - function setSelect(rect) //{{{ - { - setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]); - options.onSelect.call(api, unscale(Coords.getFixed())); - Selection.enableHandles(); - } - //}}} - function setSelectRaw(l) //{{{ - { - Coords.setPressed([l[0], l[1]]); - Coords.setCurrent([l[2], l[3]]); - Selection.update(); - } - //}}} - function tellSelect() //{{{ - { - return unscale(Coords.getFixed()); - } - //}}} - function tellScaled() //{{{ - { - return Coords.getFixed(); - } - //}}} - function setOptionsNew(opt) //{{{ - { - setOptions(opt); - interfaceUpdate(); - } - //}}} - function disableCrop() //{{{ - { - options.disabled = true; - Selection.disableHandles(); - Selection.setCursor('default'); - Tracker.setCursor('default'); - } - //}}} - function enableCrop() //{{{ - { - options.disabled = false; - interfaceUpdate(); - } - //}}} - function cancelCrop() //{{{ - { - Selection.done(); - Tracker.activateHandlers(null, null); - } - //}}} - function destroy() //{{{ - { - $div.remove(); - $origimg.show(); - $origimg.css('visibility','visible'); - $(obj).removeData('Jcrop'); - } - //}}} - function setImage(src, callback) //{{{ - { - Selection.release(); - disableCrop(); - var img = new Image(); - img.onload = function () { - var iw = img.width; - var ih = img.height; - var bw = options.boxWidth; - var bh = options.boxHeight; - $img.width(iw).height(ih); - $img.attr('src', src); - $img2.attr('src', src); - presize($img, bw, bh); - boundx = $img.width(); - boundy = $img.height(); - $img2.width(boundx).height(boundy); - $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); - $div.width(boundx).height(boundy); - Shade.resize(boundx,boundy); - enableCrop(); - - if (typeof(callback) === 'function') { - callback.call(api); - } - }; - img.src = src; - } - //}}} - function colorChangeMacro($obj,color,now) { - var mycolor = color || options.bgColor; - if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { - $obj.animate({ - backgroundColor: mycolor - }, { - queue: false, - duration: options.fadeTime - }); - } else { - $obj.css('backgroundColor', mycolor); - } - } - function interfaceUpdate(alt) //{{{ - // This method tweaks the interface based on options object. - // Called when options are changed and at end of initialization. - { - if (options.allowResize) { - if (alt) { - Selection.enableOnly(); - } else { - Selection.enableHandles(); - } - } else { - Selection.disableHandles(); - } - - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - Selection.setCursor(options.allowMove ? 'move' : 'default'); - - if (options.hasOwnProperty('trueSize')) { - xscale = options.trueSize[0] / boundx; - yscale = options.trueSize[1] / boundy; - } - - if (options.hasOwnProperty('setSelect')) { - setSelect(options.setSelect); - Selection.done(); - delete(options.setSelect); - } - - Shade.refresh(); - - if (options.bgColor != bgcolor) { - colorChangeMacro( - options.shade? Shade.getShades(): $div, - options.shade? - (options.shadeColor || options.bgColor): - options.bgColor - ); - bgcolor = options.bgColor; - } - - if (bgopacity != options.bgOpacity) { - bgopacity = options.bgOpacity; - if (options.shade) Shade.refresh(); - else Selection.setBgOpacity(bgopacity); - } - - xlimit = options.maxSize[0] || 0; - ylimit = options.maxSize[1] || 0; - xmin = options.minSize[0] || 0; - ymin = options.minSize[1] || 0; - - if (options.hasOwnProperty('outerImage')) { - $img.attr('src', options.outerImage); - delete(options.outerImage); - } - - Selection.refresh(); - } - //}}} - //}}} - - if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); - - $hdl_holder.hide(); - interfaceUpdate(true); - - var api = { - setImage: setImage, - animateTo: animateTo, - setSelect: setSelect, - setOptions: setOptionsNew, - tellSelect: tellSelect, - tellScaled: tellScaled, - setClass: setClass, - - disable: disableCrop, - enable: enableCrop, - cancel: cancelCrop, - release: Selection.release, - destroy: destroy, - - focus: KeyManager.watchKeys, - - getBounds: function () { - return [boundx * xscale, boundy * yscale]; - }, - getWidgetSize: function () { - return [boundx, boundy]; - }, - getScaleFactor: function () { - return [xscale, yscale]; - }, - getOptions: function() { - // careful: internal values are returned - return options; - }, - - ui: { - holder: $div, - selection: $sel - } - }; - - if (is_msie) $div.bind('selectstart', function () { return false; }); - - $origimg.data('Jcrop', api); - return api; - }; - $.fn.Jcrop = function (options, callback) //{{{ - { - var api; - // Iterate over each object, attach Jcrop - this.each(function () { - // If we've already attached to this object - if ($(this).data('Jcrop')) { - // The API can be requested this way (undocumented) - if (options === 'api') return $(this).data('Jcrop'); - // Otherwise, we just reset the options... - else $(this).data('Jcrop').setOptions(options); - } - // If we haven't been attached, preload and attach - else { - if (this.tagName == 'IMG') - $.Jcrop.Loader(this,function(){ - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - }); - else { - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - } - } - }); - - // Return "this" so the object is chainable (jQuery-style) - return this; - }; - //}}} - // $.Jcrop.Loader - basic image loader {{{ - - $.Jcrop.Loader = function(imgobj,success,error){ - var $img = $(imgobj), img = $img[0]; - - function completeCheck(){ - if (img.complete) { - $img.unbind('.jcloader'); - if ($.isFunction(success)) success.call(img); - } - else window.setTimeout(completeCheck,50); - } - - $img - .bind('load.jcloader',completeCheck) - .bind('error.jcloader',function(e){ - $img.unbind('.jcloader'); - if ($.isFunction(error)) error.call(img); - }); - - if (img.complete && $.isFunction(success)){ - $img.unbind('.jcloader'); - success.call(img); - } - }; - - //}}} - // Global Defaults {{{ - $.Jcrop.defaults = { - - // Basic Settings - allowSelect: true, - allowMove: true, - allowResize: true, - - trackDocument: true, - - // Styling Options - baseClass: 'jcrop', - addClass: null, - bgColor: 'black', - bgOpacity: 0.6, - bgFade: false, - borderOpacity: 0.4, - handleOpacity: 0.5, - handleSize: null, - - aspectRatio: 0, - keySupport: true, - createHandles: ['n','s','e','w','nw','ne','se','sw'], - createDragbars: ['n','s','e','w'], - createBorders: ['n','s','e','w'], - drawBorders: true, - dragEdges: true, - fixedSupport: true, - touchSupport: null, - - shade: null, - - boxWidth: 0, - boxHeight: 0, - boundary: 2, - fadeTime: 400, - animationDelay: 20, - swingSpeed: 3, - - minSelect: [0, 0], - maxSize: [0, 0], - minSize: [0, 0], - - // Callbacks / Event Handlers - onChange: function () {}, - onSelect: function () {}, - onDblClick: function () {}, - onRelease: function () {} - }; - - // }}} -}(jQuery)); diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css deleted file mode 100644 index 51ee2c8fdc..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* jquery.Jcrop.min.css v0.9.12 (build:20140524) */ -.jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none} \ No newline at end of file diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js deleted file mode 100644 index d9ae1adfc8..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * jquery.Jcrop.min.js v0.9.12 (build:20140524) - * jQuery Image Cropping Plugin - released under MIT License - * Copyright (c) 2008-2013 Tapmodo Interactive LLC - * https://github.com/tapmodo/Jcrop - */ -!function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("
        ").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("
        ").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("
        "),$img_holder=$("
        ").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("
        ").width("100%").height("100%").css("zIndex",320),$sel=$("
        ").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;ix1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("
        ").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("
        ").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("
        ").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("
        ").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("
        ").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery); \ No newline at end of file diff --git a/web/ext/layers/jcarousel/jcarousel.js b/web/ext/layers/jcarousel/jcarousel.js deleted file mode 100755 index 9f9a21b969..0000000000 --- a/web/ext/layers/jcarousel/jcarousel.js +++ /dev/null @@ -1,1026 +0,0 @@ -/*! jCarousel - v0.3.3 - 2015-04-07 -* http://sorgalla.com/jcarousel/ -* Copyright (c) 2006-2015 Jan Sorgalla; Licensed MIT */ -(function($) { - 'use strict'; - - var jCarousel = $.jCarousel = {}; - - jCarousel.version = '0.3.3'; - - var rRelativeTarget = /^([+\-]=)?(.+)$/; - - jCarousel.parseTarget = function(target) { - var relative = false, - parts = typeof target !== 'object' ? - rRelativeTarget.exec(target) : - null; - - if (parts) { - target = parseInt(parts[2], 10) || 0; - - if (parts[1]) { - relative = true; - if (parts[1] === '-=') { - target *= -1; - } - } - } else if (typeof target !== 'object') { - target = parseInt(target, 10) || 0; - } - - return { - target: target, - relative: relative - }; - }; - - jCarousel.detectCarousel = function(element) { - var carousel; - - while (element.length > 0) { - carousel = element.filter('[data-jcarousel]'); - - if (carousel.length > 0) { - return carousel; - } - - carousel = element.find('[data-jcarousel]'); - - if (carousel.length > 0) { - return carousel; - } - - element = element.parent(); - } - - return null; - }; - - jCarousel.base = function(pluginName) { - return { - version: jCarousel.version, - _options: {}, - _element: null, - _carousel: null, - _init: $.noop, - _create: $.noop, - _destroy: $.noop, - _reload: $.noop, - create: function() { - this._element - .attr('data-' + pluginName.toLowerCase(), true) - .data(pluginName, this); - - if (false === this._trigger('create')) { - return this; - } - - this._create(); - - this._trigger('createend'); - - return this; - }, - destroy: function() { - if (false === this._trigger('destroy')) { - return this; - } - - this._destroy(); - - this._trigger('destroyend'); - - this._element - .removeData(pluginName) - .removeAttr('data-' + pluginName.toLowerCase()); - - return this; - }, - reload: function(options) { - if (false === this._trigger('reload')) { - return this; - } - - if (options) { - this.options(options); - } - - this._reload(); - - this._trigger('reloadend'); - - return this; - }, - element: function() { - return this._element; - }, - options: function(key, value) { - if (arguments.length === 0) { - return $.extend({}, this._options); - } - - if (typeof key === 'string') { - if (typeof value === 'undefined') { - return typeof this._options[key] === 'undefined' ? - null : - this._options[key]; - } - - this._options[key] = value; - } else { - this._options = $.extend({}, this._options, key); - } - - return this; - }, - carousel: function() { - if (!this._carousel) { - this._carousel = jCarousel.detectCarousel(this.options('carousel') || this._element); - - if (!this._carousel) { - $.error('Could not detect carousel for plugin "' + pluginName + '"'); - } - } - - return this._carousel; - }, - _trigger: function(type, element, data) { - var event, - defaultPrevented = false; - - data = [this].concat(data || []); - - (element || this._element).each(function() { - event = $.Event((pluginName + ':' + type).toLowerCase()); - - $(this).trigger(event, data); - - if (event.isDefaultPrevented()) { - defaultPrevented = true; - } - }); - - return !defaultPrevented; - } - }; - }; - - jCarousel.plugin = function(pluginName, pluginPrototype) { - var Plugin = $[pluginName] = function(element, options) { - this._element = $(element); - this.options(options); - - this._init(); - this.create(); - }; - - Plugin.fn = Plugin.prototype = $.extend( - {}, - jCarousel.base(pluginName), - pluginPrototype - ); - - $.fn[pluginName] = function(options) { - var args = Array.prototype.slice.call(arguments, 1), - returnValue = this; - - if (typeof options === 'string') { - this.each(function() { - var instance = $(this).data(pluginName); - - if (!instance) { - return $.error( - 'Cannot call methods on ' + pluginName + ' prior to initialization; ' + - 'attempted to call method "' + options + '"' - ); - } - - if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { - return $.error( - 'No such method "' + options + '" for ' + pluginName + ' instance' - ); - } - - var methodValue = instance[options].apply(instance, args); - - if (methodValue !== instance && typeof methodValue !== 'undefined') { - returnValue = methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $(this).data(pluginName); - - if (instance instanceof Plugin) { - instance.reload(options); - } else { - new Plugin(this, options); - } - }); - } - - return returnValue; - }; - - return Plugin; - }; -}(jQuery)); - -(function($, window) { - 'use strict'; - - var toFloat = function(val) { - return parseFloat(val) || 0; - }; - - $.jCarousel.plugin('jcarousel', { - animating: false, - tail: 0, - inTail: false, - resizeTimer: null, - lt: null, - vertical: false, - rtl: false, - circular: false, - underflow: false, - relative: false, - - _options: { - list: function() { - return this.element().children().eq(0); - }, - items: function() { - return this.list().children(); - }, - animation: 400, - transitions: false, - wrap: null, - vertical: null, - rtl: null, - center: false - }, - - // Protected, don't access directly - _list: null, - _items: null, - _target: $(), - _first: $(), - _last: $(), - _visible: $(), - _fullyvisible: $(), - _init: function() { - var self = this; - - this.onWindowResize = function() { - if (self.resizeTimer) { - clearTimeout(self.resizeTimer); - } - - self.resizeTimer = setTimeout(function() { - self.reload(); - }, 100); - }; - - return this; - }, - _create: function() { - this._reload(); - - $(window).on('resize.jcarousel', this.onWindowResize); - }, - _destroy: function() { - $(window).off('resize.jcarousel', this.onWindowResize); - }, - _reload: function() { - this.vertical = this.options('vertical'); - - if (this.vertical == null) { - this.vertical = this.list().height() > this.list().width(); - } - - this.rtl = this.options('rtl'); - - if (this.rtl == null) { - this.rtl = (function(element) { - if (('' + element.attr('dir')).toLowerCase() === 'rtl') { - return true; - } - - var found = false; - - element.parents('[dir]').each(function() { - if ((/rtl/i).test($(this).attr('dir'))) { - found = true; - return false; - } - }); - - return found; - }(this._element)); - } - - this.lt = this.vertical ? 'top' : 'left'; - - // Ensure before closest() call - this.relative = this.list().css('position') === 'relative'; - - // Force list and items reload - this._list = null; - this._items = null; - - var item = this.index(this._target) >= 0 ? - this._target : - this.closest(); - - // _prepare() needs this here - this.circular = this.options('wrap') === 'circular'; - this.underflow = false; - - var props = {'left': 0, 'top': 0}; - - if (item.length > 0) { - this._prepare(item); - this.list().find('[data-jcarousel-clone]').remove(); - - // Force items reload - this._items = null; - - this.underflow = this._fullyvisible.length >= this.items().length; - this.circular = this.circular && !this.underflow; - - props[this.lt] = this._position(item) + 'px'; - } - - this.move(props); - - return this; - }, - list: function() { - if (this._list === null) { - var option = this.options('list'); - this._list = $.isFunction(option) ? option.call(this) : this._element.find(option); - } - - return this._list; - }, - items: function() { - if (this._items === null) { - var option = this.options('items'); - this._items = ($.isFunction(option) ? option.call(this) : this.list().find(option)).not('[data-jcarousel-clone]'); - } - - return this._items; - }, - index: function(item) { - return this.items().index(item); - }, - closest: function() { - var self = this, - pos = this.list().position()[this.lt], - closest = $(), // Ensure we're returning a jQuery instance - stop = false, - lrb = this.vertical ? 'bottom' : (this.rtl && !this.relative ? 'left' : 'right'), - width; - - if (this.rtl && this.relative && !this.vertical) { - pos += this.list().width() - this.clipping(); - } - - this.items().each(function() { - closest = $(this); - - if (stop) { - return false; - } - - var dim = self.dimension(closest); - - pos += dim; - - if (pos >= 0) { - width = dim - toFloat(closest.css('margin-' + lrb)); - - if ((Math.abs(pos) - dim + (width / 2)) <= 0) { - stop = true; - } else { - return false; - } - } - }); - - - return closest; - }, - target: function() { - return this._target; - }, - first: function() { - return this._first; - }, - last: function() { - return this._last; - }, - visible: function() { - return this._visible; - }, - fullyvisible: function() { - return this._fullyvisible; - }, - hasNext: function() { - if (false === this._trigger('hasnext')) { - return true; - } - - var wrap = this.options('wrap'), - end = this.items().length - 1, - check = this.options('center') ? this._target : this._last; - - return end >= 0 && !this.underflow && - ((wrap && wrap !== 'first') || - (this.index(check) < end) || - (this.tail && !this.inTail)) ? true : false; - }, - hasPrev: function() { - if (false === this._trigger('hasprev')) { - return true; - } - - var wrap = this.options('wrap'); - - return this.items().length > 0 && !this.underflow && - ((wrap && wrap !== 'last') || - (this.index(this._first) > 0) || - (this.tail && this.inTail)) ? true : false; - }, - clipping: function() { - return this._element['inner' + (this.vertical ? 'Height' : 'Width')](); - }, - dimension: function(element) { - return element['outer' + (this.vertical ? 'Height' : 'Width')](true); - }, - scroll: function(target, animate, callback) { - if (this.animating) { - return this; - } - - if (false === this._trigger('scroll', null, [target, animate])) { - return this; - } - - if ($.isFunction(animate)) { - callback = animate; - animate = true; - } - - var parsed = $.jCarousel.parseTarget(target); - - if (parsed.relative) { - var end = this.items().length - 1, - scroll = Math.abs(parsed.target), - wrap = this.options('wrap'), - current, - first, - index, - start, - curr, - isVisible, - props, - i; - - if (parsed.target > 0) { - var last = this.index(this._last); - - if (last >= end && this.tail) { - if (!this.inTail) { - this._scrollTail(animate, callback); - } else { - if (wrap === 'both' || wrap === 'last') { - this._scroll(0, animate, callback); - } else { - if ($.isFunction(callback)) { - callback.call(this, false); - } - } - } - } else { - current = this.index(this._target); - - if ((this.underflow && current === end && (wrap === 'circular' || wrap === 'both' || wrap === 'last')) || - (!this.underflow && last === end && (wrap === 'both' || wrap === 'last'))) { - this._scroll(0, animate, callback); - } else { - index = current + scroll; - - if (this.circular && index > end) { - i = end; - curr = this.items().get(-1); - - while (i++ < index) { - curr = this.items().eq(0); - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().append(curr); - - if (!isVisible) { - props = {}; - props[this.lt] = this.dimension(curr); - this.moveBy(props); - } - - // Force items reload - this._items = null; - } - - this._scroll(curr, animate, callback); - } else { - this._scroll(Math.min(index, end), animate, callback); - } - } - } - } else { - if (this.inTail) { - this._scroll(Math.max((this.index(this._first) - scroll) + 1, 0), animate, callback); - } else { - first = this.index(this._first); - current = this.index(this._target); - start = this.underflow ? current : first; - index = start - scroll; - - if (start <= 0 && ((this.underflow && wrap === 'circular') || wrap === 'both' || wrap === 'first')) { - this._scroll(end, animate, callback); - } else { - if (this.circular && index < 0) { - i = index; - curr = this.items().get(0); - - while (i++ < 0) { - curr = this.items().eq(-1); - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().prepend(curr); - - // Force items reload - this._items = null; - - var dim = this.dimension(curr); - - props = {}; - props[this.lt] = -dim; - this.moveBy(props); - - } - - this._scroll(curr, animate, callback); - } else { - this._scroll(Math.max(index, 0), animate, callback); - } - } - } - } - } else { - this._scroll(parsed.target, animate, callback); - } - - this._trigger('scrollend'); - - return this; - }, - moveBy: function(properties, opts) { - var position = this.list().position(), - multiplier = 1, - correction = 0; - - if (this.rtl && !this.vertical) { - multiplier = -1; - - if (this.relative) { - correction = this.list().width() - this.clipping(); - } - } - - if (properties.left) { - properties.left = (position.left + correction + toFloat(properties.left) * multiplier) + 'px'; - } - - if (properties.top) { - properties.top = (position.top + correction + toFloat(properties.top) * multiplier) + 'px'; - } - - return this.move(properties, opts); - }, - move: function(properties, opts) { - opts = opts || {}; - - var option = this.options('transitions'), - transitions = !!option, - transforms = !!option.transforms, - transforms3d = !!option.transforms3d, - duration = opts.duration || 0, - list = this.list(); - - if (!transitions && duration > 0) { - list.animate(properties, opts); - return; - } - - var complete = opts.complete || $.noop, - css = {}; - - if (transitions) { - var backup = { - transitionDuration: list.css('transitionDuration'), - transitionTimingFunction: list.css('transitionTimingFunction'), - transitionProperty: list.css('transitionProperty') - }, - oldComplete = complete; - - complete = function() { - $(this).css(backup); - oldComplete.call(this); - }; - css = { - transitionDuration: (duration > 0 ? duration / 1000 : 0) + 's', - transitionTimingFunction: option.easing || opts.easing, - transitionProperty: duration > 0 ? (function() { - if (transforms || transforms3d) { - // We have to use 'all' because jQuery doesn't prefix - // css values, like transition-property: transform; - return 'all'; - } - - return properties.left ? 'left' : 'top'; - })() : 'none', - transform: 'none' - }; - } - - if (transforms3d) { - css.transform = 'translate3d(' + (properties.left || 0) + ',' + (properties.top || 0) + ',0)'; - } else if (transforms) { - css.transform = 'translate(' + (properties.left || 0) + ',' + (properties.top || 0) + ')'; - } else { - $.extend(css, properties); - } - - if (transitions && duration > 0) { - list.one('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', complete); - } - - list.css(css); - - if (duration <= 0) { - list.each(function() { - complete.call(this); - }); - } - }, - _scroll: function(item, animate, callback) { - if (this.animating) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - if (typeof item !== 'object') { - item = this.items().eq(item); - } else if (typeof item.jquery === 'undefined') { - item = $(item); - } - - if (item.length === 0) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - this.inTail = false; - - this._prepare(item); - - var pos = this._position(item), - currPos = this.list().position()[this.lt]; - - if (pos === currPos) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - var properties = {}; - properties[this.lt] = pos + 'px'; - - this._animate(properties, animate, callback); - - return this; - }, - _scrollTail: function(animate, callback) { - if (this.animating || !this.tail) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - var pos = this.list().position()[this.lt]; - - if (this.rtl && this.relative && !this.vertical) { - pos += this.list().width() - this.clipping(); - } - - if (this.rtl && !this.vertical) { - pos += this.tail; - } else { - pos -= this.tail; - } - - this.inTail = true; - - var properties = {}; - properties[this.lt] = pos + 'px'; - - this._update({ - target: this._target.next(), - fullyvisible: this._fullyvisible.slice(1).add(this._visible.last()) - }); - - this._animate(properties, animate, callback); - - return this; - }, - _animate: function(properties, animate, callback) { - callback = callback || $.noop; - - if (false === this._trigger('animate')) { - callback.call(this, false); - return this; - } - - this.animating = true; - - var animation = this.options('animation'), - complete = $.proxy(function() { - this.animating = false; - - var c = this.list().find('[data-jcarousel-clone]'); - - if (c.length > 0) { - c.remove(); - this._reload(); - } - - this._trigger('animateend'); - - callback.call(this, true); - }, this); - - var opts = typeof animation === 'object' ? - $.extend({}, animation) : - {duration: animation}, - oldComplete = opts.complete || $.noop; - - if (animate === false) { - opts.duration = 0; - } else if (typeof $.fx.speeds[opts.duration] !== 'undefined') { - opts.duration = $.fx.speeds[opts.duration]; - } - - opts.complete = function() { - complete(); - oldComplete.call(this); - }; - - this.move(properties, opts); - - return this; - }, - _prepare: function(item) { - var index = this.index(item), - idx = index, - wh = this.dimension(item), - clip = this.clipping(), - lrb = this.vertical ? 'bottom' : (this.rtl ? 'left' : 'right'), - center = this.options('center'), - update = { - target: item, - first: item, - last: item, - visible: item, - fullyvisible: wh <= clip ? item : $() - }, - curr, - isVisible, - margin, - dim; - - if (center) { - wh /= 2; - clip /= 2; - } - - if (wh < clip) { - while (true) { - curr = this.items().eq(++idx); - - if (curr.length === 0) { - if (!this.circular) { - break; - } - - curr = this.items().eq(0); - - if (item.get(0) === curr.get(0)) { - break; - } - - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().append(curr); - - if (!isVisible) { - var props = {}; - props[this.lt] = this.dimension(curr); - this.moveBy(props); - } - - // Force items reload - this._items = null; - } - - dim = this.dimension(curr); - - if (dim === 0) { - break; - } - - wh += dim; - - update.last = curr; - update.visible = update.visible.add(curr); - - // Remove right/bottom margin from total width - margin = toFloat(curr.css('margin-' + lrb)); - - if ((wh - margin) <= clip) { - update.fullyvisible = update.fullyvisible.add(curr); - } - - if (wh >= clip) { - break; - } - } - } - - if (!this.circular && !center && wh < clip) { - idx = index; - - while (true) { - if (--idx < 0) { - break; - } - - curr = this.items().eq(idx); - - if (curr.length === 0) { - break; - } - - dim = this.dimension(curr); - - if (dim === 0) { - break; - } - - wh += dim; - - update.first = curr; - update.visible = update.visible.add(curr); - - // Remove right/bottom margin from total width - margin = toFloat(curr.css('margin-' + lrb)); - - if ((wh - margin) <= clip) { - update.fullyvisible = update.fullyvisible.add(curr); - } - - if (wh >= clip) { - break; - } - } - } - - this._update(update); - - this.tail = 0; - - if (!center && - this.options('wrap') !== 'circular' && - this.options('wrap') !== 'custom' && - this.index(update.last) === (this.items().length - 1)) { - - // Remove right/bottom margin from total width - wh -= toFloat(update.last.css('margin-' + lrb)); - - if (wh > clip) { - this.tail = wh - clip; - } - } - - return this; - }, - _position: function(item) { - var first = this._first, - pos = first.position()[this.lt], - center = this.options('center'), - centerOffset = center ? (this.clipping() / 2) - (this.dimension(first) / 2) : 0; - - if (this.rtl && !this.vertical) { - if (this.relative) { - pos -= this.list().width() - this.dimension(first); - } else { - pos -= this.clipping() - this.dimension(first); - } - - pos += centerOffset; - } else { - pos -= centerOffset; - } - - if (!center && - (this.index(item) > this.index(first) || this.inTail) && - this.tail) { - pos = this.rtl && !this.vertical ? pos - this.tail : pos + this.tail; - this.inTail = true; - } else { - this.inTail = false; - } - - return -pos; - }, - _update: function(update) { - var self = this, - current = { - target: this._target, - first: this._first, - last: this._last, - visible: this._visible, - fullyvisible: this._fullyvisible - }, - back = this.index(update.first || current.first) < this.index(current.first), - key, - doUpdate = function(key) { - var elIn = [], - elOut = []; - - update[key].each(function() { - if (current[key].index(this) < 0) { - elIn.push(this); - } - }); - - current[key].each(function() { - if (update[key].index(this) < 0) { - elOut.push(this); - } - }); - - if (back) { - elIn = elIn.reverse(); - } else { - elOut = elOut.reverse(); - } - - self._trigger(key + 'in', $(elIn)); - self._trigger(key + 'out', $(elOut)); - - self['_' + key] = update[key]; - }; - - for (key in update) { - doUpdate(key); - } - - return this; - } - }); -}(jQuery, window)); diff --git a/web/ext/layers/jcarousel/jcarousel.min.js b/web/ext/layers/jcarousel/jcarousel.min.js deleted file mode 100755 index 96e91a3d57..0000000000 --- a/web/ext/layers/jcarousel/jcarousel.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jCarousel - v0.3.3 - 2015-04-07 -* http://sorgalla.com/jcarousel/ -* Copyright (c) 2006-2015 Jan Sorgalla; Licensed MIT */ -!function(a){"use strict";var b=a.jCarousel={};b.version="0.3.3";var c=/^([+\-]=)?(.+)$/;b.parseTarget=function(a){var b=!1,d="object"!=typeof a?c.exec(a):null;return d?(a=parseInt(d[2],10)||0,d[1]&&(b=!0,"-="===d[1]&&(a*=-1))):"object"!=typeof a&&(a=parseInt(a,10)||0),{target:a,relative:b}},b.detectCarousel=function(a){for(var b;a.length>0;){if(b=a.filter("[data-jcarousel]"),b.length>0)return b;if(b=a.find("[data-jcarousel]"),b.length>0)return b;a=a.parent()}return null},b.base=function(c){return{version:b.version,_options:{},_element:null,_carousel:null,_init:a.noop,_create:a.noop,_destroy:a.noop,_reload:a.noop,create:function(){return this._element.attr("data-"+c.toLowerCase(),!0).data(c,this),!1===this._trigger("create")?this:(this._create(),this._trigger("createend"),this)},destroy:function(){return!1===this._trigger("destroy")?this:(this._destroy(),this._trigger("destroyend"),this._element.removeData(c).removeAttr("data-"+c.toLowerCase()),this)},reload:function(a){return!1===this._trigger("reload")?this:(a&&this.options(a),this._reload(),this._trigger("reloadend"),this)},element:function(){return this._element},options:function(b,c){if(0===arguments.length)return a.extend({},this._options);if("string"==typeof b){if("undefined"==typeof c)return"undefined"==typeof this._options[b]?null:this._options[b];this._options[b]=c}else this._options=a.extend({},this._options,b);return this},carousel:function(){return this._carousel||(this._carousel=b.detectCarousel(this.options("carousel")||this._element),this._carousel||a.error('Could not detect carousel for plugin "'+c+'"')),this._carousel},_trigger:function(b,d,e){var f,g=!1;return e=[this].concat(e||[]),(d||this._element).each(function(){f=a.Event((c+":"+b).toLowerCase()),a(this).trigger(f,e),f.isDefaultPrevented()&&(g=!0)}),!g}}},b.plugin=function(c,d){var e=a[c]=function(b,c){this._element=a(b),this.options(c),this._init(),this.create()};return e.fn=e.prototype=a.extend({},b.base(c),d),a.fn[c]=function(b){var d=Array.prototype.slice.call(arguments,1),f=this;return this.each("string"==typeof b?function(){var e=a(this).data(c);if(!e)return a.error("Cannot call methods on "+c+' prior to initialization; attempted to call method "'+b+'"');if(!a.isFunction(e[b])||"_"===b.charAt(0))return a.error('No such method "'+b+'" for '+c+" instance");var g=e[b].apply(e,d);return g!==e&&"undefined"!=typeof g?(f=g,!1):void 0}:function(){var d=a(this).data(c);d instanceof e?d.reload(b):new e(this,b)}),f},e}}(jQuery),function(a,b){"use strict";var c=function(a){return parseFloat(a)||0};a.jCarousel.plugin("jcarousel",{animating:!1,tail:0,inTail:!1,resizeTimer:null,lt:null,vertical:!1,rtl:!1,circular:!1,underflow:!1,relative:!1,_options:{list:function(){return this.element().children().eq(0)},items:function(){return this.list().children()},animation:400,transitions:!1,wrap:null,vertical:null,rtl:null,center:!1},_list:null,_items:null,_target:a(),_first:a(),_last:a(),_visible:a(),_fullyvisible:a(),_init:function(){var a=this;return this.onWindowResize=function(){a.resizeTimer&&clearTimeout(a.resizeTimer),a.resizeTimer=setTimeout(function(){a.reload()},100)},this},_create:function(){this._reload(),a(b).on("resize.jcarousel",this.onWindowResize)},_destroy:function(){a(b).off("resize.jcarousel",this.onWindowResize)},_reload:function(){this.vertical=this.options("vertical"),null==this.vertical&&(this.vertical=this.list().height()>this.list().width()),this.rtl=this.options("rtl"),null==this.rtl&&(this.rtl=function(b){if("rtl"===(""+b.attr("dir")).toLowerCase())return!0;var c=!1;return b.parents("[dir]").each(function(){return/rtl/i.test(a(this).attr("dir"))?(c=!0,!1):void 0}),c}(this._element)),this.lt=this.vertical?"top":"left",this.relative="relative"===this.list().css("position"),this._list=null,this._items=null;var b=this.index(this._target)>=0?this._target:this.closest();this.circular="circular"===this.options("wrap"),this.underflow=!1;var c={left:0,top:0};return b.length>0&&(this._prepare(b),this.list().find("[data-jcarousel-clone]").remove(),this._items=null,this.underflow=this._fullyvisible.length>=this.items().length,this.circular=this.circular&&!this.underflow,c[this.lt]=this._position(b)+"px"),this.move(c),this},list:function(){if(null===this._list){var b=this.options("list");this._list=a.isFunction(b)?b.call(this):this._element.find(b)}return this._list},items:function(){if(null===this._items){var b=this.options("items");this._items=(a.isFunction(b)?b.call(this):this.list().find(b)).not("[data-jcarousel-clone]")}return this._items},index:function(a){return this.items().index(a)},closest:function(){var b,d=this,e=this.list().position()[this.lt],f=a(),g=!1,h=this.vertical?"bottom":this.rtl&&!this.relative?"left":"right";return this.rtl&&this.relative&&!this.vertical&&(e+=this.list().width()-this.clipping()),this.items().each(function(){if(f=a(this),g)return!1;var i=d.dimension(f);if(e+=i,e>=0){if(b=i-c(f.css("margin-"+h)),!(Math.abs(e)-i+b/2<=0))return!1;g=!0}}),f},target:function(){return this._target},first:function(){return this._first},last:function(){return this._last},visible:function(){return this._visible},fullyvisible:function(){return this._fullyvisible},hasNext:function(){if(!1===this._trigger("hasnext"))return!0;var a=this.options("wrap"),b=this.items().length-1,c=this.options("center")?this._target:this._last;return b>=0&&!this.underflow&&(a&&"first"!==a||this.index(c)0&&!this.underflow&&(a&&"last"!==a||this.index(this._first)>0||this.tail&&this.inTail)?!0:!1},clipping:function(){return this._element["inner"+(this.vertical?"Height":"Width")]()},dimension:function(a){return a["outer"+(this.vertical?"Height":"Width")](!0)},scroll:function(b,c,d){if(this.animating)return this;if(!1===this._trigger("scroll",null,[b,c]))return this;a.isFunction(c)&&(d=c,c=!0);var e=a.jCarousel.parseTarget(b);if(e.relative){var f,g,h,i,j,k,l,m,n=this.items().length-1,o=Math.abs(e.target),p=this.options("wrap");if(e.target>0){var q=this.index(this._last);if(q>=n&&this.tail)this.inTail?"both"===p||"last"===p?this._scroll(0,c,d):a.isFunction(d)&&d.call(this,!1):this._scrollTail(c,d);else if(f=this.index(this._target),this.underflow&&f===n&&("circular"===p||"both"===p||"last"===p)||!this.underflow&&q===n&&("both"===p||"last"===p))this._scroll(0,c,d);else if(h=f+o,this.circular&&h>n){for(m=n,j=this.items().get(-1);m++=0,k&&j.after(j.clone(!0).attr("data-jcarousel-clone",!0)),this.list().append(j),k||(l={},l[this.lt]=this.dimension(j),this.moveBy(l)),this._items=null;this._scroll(j,c,d)}else this._scroll(Math.min(h,n),c,d)}else if(this.inTail)this._scroll(Math.max(this.index(this._first)-o+1,0),c,d);else if(g=this.index(this._first),f=this.index(this._target),i=this.underflow?f:g,h=i-o,0>=i&&(this.underflow&&"circular"===p||"both"===p||"first"===p))this._scroll(n,c,d);else if(this.circular&&0>h){for(m=h,j=this.items().get(0);m++<0;){j=this.items().eq(-1),k=this._visible.index(j)>=0,k&&j.after(j.clone(!0).attr("data-jcarousel-clone",!0)),this.list().prepend(j),this._items=null;var r=this.dimension(j);l={},l[this.lt]=-r,this.moveBy(l)}this._scroll(j,c,d)}else this._scroll(Math.max(h,0),c,d)}else this._scroll(e.target,c,d);return this._trigger("scrollend"),this},moveBy:function(a,b){var d=this.list().position(),e=1,f=0;return this.rtl&&!this.vertical&&(e=-1,this.relative&&(f=this.list().width()-this.clipping())),a.left&&(a.left=d.left+f+c(a.left)*e+"px"),a.top&&(a.top=d.top+f+c(a.top)*e+"px"),this.move(a,b)},move:function(b,c){c=c||{};var d=this.options("transitions"),e=!!d,f=!!d.transforms,g=!!d.transforms3d,h=c.duration||0,i=this.list();if(!e&&h>0)return void i.animate(b,c);var j=c.complete||a.noop,k={};if(e){var l={transitionDuration:i.css("transitionDuration"),transitionTimingFunction:i.css("transitionTimingFunction"),transitionProperty:i.css("transitionProperty")},m=j;j=function(){a(this).css(l),m.call(this)},k={transitionDuration:(h>0?h/1e3:0)+"s",transitionTimingFunction:d.easing||c.easing,transitionProperty:h>0?function(){return f||g?"all":b.left?"left":"top"}():"none",transform:"none"}}g?k.transform="translate3d("+(b.left||0)+","+(b.top||0)+",0)":f?k.transform="translate("+(b.left||0)+","+(b.top||0)+")":a.extend(k,b),e&&h>0&&i.one("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",j),i.css(k),0>=h&&i.each(function(){j.call(this)})},_scroll:function(b,c,d){if(this.animating)return a.isFunction(d)&&d.call(this,!1),this;if("object"!=typeof b?b=this.items().eq(b):"undefined"==typeof b.jquery&&(b=a(b)),0===b.length)return a.isFunction(d)&&d.call(this,!1),this;this.inTail=!1,this._prepare(b);var e=this._position(b),f=this.list().position()[this.lt];if(e===f)return a.isFunction(d)&&d.call(this,!1),this;var g={};return g[this.lt]=e+"px",this._animate(g,c,d),this},_scrollTail:function(b,c){if(this.animating||!this.tail)return a.isFunction(c)&&c.call(this,!1),this;var d=this.list().position()[this.lt];this.rtl&&this.relative&&!this.vertical&&(d+=this.list().width()-this.clipping()),this.rtl&&!this.vertical?d+=this.tail:d-=this.tail,this.inTail=!0;var e={};return e[this.lt]=d+"px",this._update({target:this._target.next(),fullyvisible:this._fullyvisible.slice(1).add(this._visible.last())}),this._animate(e,b,c),this},_animate:function(b,c,d){if(d=d||a.noop,!1===this._trigger("animate"))return d.call(this,!1),this;this.animating=!0;var e=this.options("animation"),f=a.proxy(function(){this.animating=!1;var a=this.list().find("[data-jcarousel-clone]");a.length>0&&(a.remove(),this._reload()),this._trigger("animateend"),d.call(this,!0)},this),g="object"==typeof e?a.extend({},e):{duration:e},h=g.complete||a.noop;return c===!1?g.duration=0:"undefined"!=typeof a.fx.speeds[g.duration]&&(g.duration=a.fx.speeds[g.duration]),g.complete=function(){f(),h.call(this)},this.move(b,g),this},_prepare:function(b){var d,e,f,g,h=this.index(b),i=h,j=this.dimension(b),k=this.clipping(),l=this.vertical?"bottom":this.rtl?"left":"right",m=this.options("center"),n={target:b,first:b,last:b,visible:b,fullyvisible:k>=j?b:a()};if(m&&(j/=2,k/=2),k>j)for(;;){if(d=this.items().eq(++i),0===d.length){if(!this.circular)break;if(d=this.items().eq(0),b.get(0)===d.get(0))break;if(e=this._visible.index(d)>=0,e&&d.after(d.clone(!0).attr("data-jcarousel-clone",!0)),this.list().append(d),!e){var o={};o[this.lt]=this.dimension(d),this.moveBy(o)}this._items=null}if(g=this.dimension(d),0===g)break;if(j+=g,n.last=d,n.visible=n.visible.add(d),f=c(d.css("margin-"+l)),k>=j-f&&(n.fullyvisible=n.fullyvisible.add(d)),j>=k)break}if(!this.circular&&!m&&k>j)for(i=h;;){if(--i<0)break;if(d=this.items().eq(i),0===d.length)break;if(g=this.dimension(d),0===g)break;if(j+=g,n.first=d,n.visible=n.visible.add(d),f=c(d.css("margin-"+l)),k>=j-f&&(n.fullyvisible=n.fullyvisible.add(d)),j>=k)break}return this._update(n),this.tail=0,m||"circular"===this.options("wrap")||"custom"===this.options("wrap")||this.index(n.last)!==this.items().length-1||(j-=c(n.last.css("margin-"+l)),j>k&&(this.tail=j-k)),this},_position:function(a){var b=this._first,c=b.position()[this.lt],d=this.options("center"),e=d?this.clipping()/2-this.dimension(b)/2:0;return this.rtl&&!this.vertical?(c-=this.relative?this.list().width()-this.dimension(b):this.clipping()-this.dimension(b),c+=e):c-=e,!d&&(this.index(a)>this.index(b)||this.inTail)&&this.tail?(c=this.rtl&&!this.vertical?c-this.tail:c+this.tail,this.inTail=!0):this.inTail=!1,-c},_update:function(b){var c,d=this,e={target:this._target,first:this._first,last:this._last,visible:this._visible,fullyvisible:this._fullyvisible},f=this.index(b.first||e.first)= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // We once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android<4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Support: Firefox, Chrome, Safari -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - thead: [ 1, "", "
        " ], - col: [ 2, "", "
        " ], - tr: [ 2, "", "
        " ], - td: [ 3, "", "
        " ], - - _default: [ 0, "", "" ] - }; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optimization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "