From 278120d090077637aaf123a7c540d62a04898d3d Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 13:33:50 -0500 Subject: [PATCH 01/25] Stub modularized Buster tests --- buster.js | 25 ++------------------- package.json | 4 +++- tasks/buildJS.js | 7 ++++-- test/{wv.brand-test.js => brand-spec.js} | 0 test/date/{wv.date-test.js => date-spec.js} | 0 test/fixtures.js | 22 ++++++++++++------ test/main.js | 16 +++++++++++++ 7 files changed, 41 insertions(+), 33 deletions(-) rename test/{wv.brand-test.js => brand-spec.js} (100%) rename test/date/{wv.date-test.js => date-spec.js} (100%) create mode 100644 test/main.js diff --git a/buster.js b/buster.js index 3bc2b9dbf2..42c9e20b2e 100644 --- a/buster.js +++ b/buster.js @@ -3,29 +3,8 @@ var config = module.exports; config['wv'] = { rootPath: './', environment: 'browser', - libs: [ - 'web/ext/main/lodash-2.4.1/lodash.js', - 'web/ext/main/jquery-2.1.4/jquery.js', - 'web/ext/main/jquery.migrate-1.2.1/jquery-migrate.min.js', - 'web/ext/main/jscache-gitba01cdc/cache.js', - 'web/ext/proj/proj4js-2.3.3-1/proj4.js', - 'node_modules/openlayers/dist/ol-debug.js', - 'test/fixtures.js' - ], src: [ - 'web/js/util/wv.*.js', - 'web/js/wv.*.js', - '!web/js/wv.main.js', - 'web/js/ui/wv.ui.js', - 'web/js/ui/wv.ui.mouse.js', - 'web/js/ui/wv.ui.indicator.js', - 'web/js/date/wv.*.js', - 'web/js/layers/wv.*.js', - 'web/js/link/wv.*.js', - 'web/js/palettes/wv.*.js', - 'web/js/proj/wv.*.js', - 'web/js/data/wv.*.js', - 'web/js/map/wv.*.js' + 'web/build/wv-test-bundle.js' ], - tests: ['test/**/*.js'] + tests: ['test/**/*-spec.js'] }; diff --git a/package.json b/package.json index 9a606fd333..41d710b6b9 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "report": "node e2e/create-report.js", "build": "run-s --print-name build:* && grunt", "build:css": "node ./tasks/buildCSS", - "build:js": "node ./tasks/buildJS" + "build:js": "node ./tasks/buildJS", + "build:tests": "node ./tasks/buildJS --tests" }, "devDependencies": { "autoprefixer": "7.1.1", @@ -67,6 +68,7 @@ "grunt-rename": "0.1.x", "grunt-text-replace": "0.4.x", "gruntify-eslint": "^4.0.0", + "minimist": "^1.2.0", "moment": "2.13.x", "nightwatch": "^0.9.16", "nightwatch-cucumber": "^8.2.10", diff --git a/tasks/buildJS.js b/tasks/buildJS.js index cfd10ba43d..625d7cd7e8 100644 --- a/tasks/buildJS.js +++ b/tasks/buildJS.js @@ -2,11 +2,14 @@ const fs = require('fs'); const browserify = require('browserify'); const watchify = require('watchify'); +const minimist = require('minimist'); +const argv = minimist(process.argv.slice(2)); const isDebug = process.env.NODE_ENV === 'development'; +const isTest = argv.tests; const outputDir = './web/build/'; -const entryPoint = './web/js/main.js'; -const outputPath = outputDir + 'wv.js'; +const entryPoint = isTest ? './test/main.js' : './web/js/main.js'; +const outputPath = outputDir + (isTest ? 'wv-test-bundle.js' : 'wv.js'); var bundler = browserify(entryPoint, { debug: isDebug, // Include source maps (makes bundle size larger) diff --git a/test/wv.brand-test.js b/test/brand-spec.js similarity index 100% rename from test/wv.brand-test.js rename to test/brand-spec.js diff --git a/test/date/wv.date-test.js b/test/date/date-spec.js similarity index 100% rename from test/date/wv.date-test.js rename to test/date/date-spec.js diff --git a/test/fixtures.js b/test/fixtures.js index 3a33003545..632c01689c 100644 --- a/test/fixtures.js +++ b/test/fixtures.js @@ -1,6 +1,12 @@ +import { dateModel } from '../web/js/date/model'; +import { layersModel } from '../web/js/layers/model'; +import { mapModel } from '../web/js/map/model'; +import { palettesModel } from '../web/js/palettes/model'; +import { projectionModel } from '../web/js/projection/model'; + // FIXME: OL3 -proj4.defs('EPSG:3413', '+title=WGS 84 / NSIDC Sea Ice Polar Stereographic North +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); -proj4.defs('EPSG:3031', '+title=WGS 84 / Antarctic Polar Stereographic +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); +// proj4.defs('EPSG:3413', '+title=WGS 84 / NSIDC Sea Ice Polar Stereographic North +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); +// proj4.defs('EPSG:3031', '+title=WGS 84 / Antarctic Polar Stereographic +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); var fixtures = { red: 'ff0000ff', @@ -148,11 +154,13 @@ fixtures.config = function () { fixtures.models = function (config) { var models = {}; - models.date = wv.date.model(config); - models.proj = wv.proj.model(config); - models.layers = wv.layers.model(models, config); - models.palettes = wv.palettes.model(models, config); - models.map = wv.map.model(models, config); + models.date = dateModel(config); + models.proj = projectionModel(config); + models.layers = layersModel(models, config); + models.palettes = palettesModel(models, config); + models.map = mapModel(models, config); return models; }; + +export default fixtures; diff --git a/test/main.js b/test/main.js new file mode 100644 index 0000000000..255cca9e4a --- /dev/null +++ b/test/main.js @@ -0,0 +1,16 @@ +// This file is an entry point used to build a testable bundle of the WV core +// It exposes some internal methods on a global `wv` var for testing purposes +import brand from '../web/js/brand'; +import { parse as dateParser } from '../web/js/date/date'; +import util from '../web/js/util/util'; +import fixtures from './fixtures.js'; + +window.wv = { + brand: brand, + date: { + parse: dateParser + }, + util: util +}; + +window.fixtures = fixtures; From ba2a2a2a30aed09a4181059607a53a53e76d6741 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 13:41:44 -0500 Subject: [PATCH 02/25] Modularize dateModel tests --- test/date/{wv.date.model-test.js => model-spec.js} | 0 test/main.js | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) rename test/date/{wv.date.model-test.js => model-spec.js} (100%) diff --git a/test/date/wv.date.model-test.js b/test/date/model-spec.js similarity index 100% rename from test/date/wv.date.model-test.js rename to test/date/model-spec.js diff --git a/test/main.js b/test/main.js index 255cca9e4a..cd553ce344 100644 --- a/test/main.js +++ b/test/main.js @@ -2,13 +2,15 @@ // It exposes some internal methods on a global `wv` var for testing purposes import brand from '../web/js/brand'; import { parse as dateParser } from '../web/js/date/date'; +import { dateModel } from '../web/js/date/model'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; window.wv = { brand: brand, date: { - parse: dateParser + parse: dateParser, + model: dateModel }, util: util }; From 59e096c85c8e5054f628a2f90d90864197a1b75b Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 16:14:41 -0500 Subject: [PATCH 03/25] Update Buster and add babel-polyfill Fixes some bugs with running tests --- package-lock.json | 1378 +++++++++++++++++++++++++++++---------------- package.json | 4 +- test/main.js | 1 + 3 files changed, 886 insertions(+), 497 deletions(-) diff --git a/package-lock.json b/package-lock.json index 04d8ff3932..b22323205d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,13 @@ "through": "2.3.8" } }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true, + "optional": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -55,6 +62,25 @@ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "dev": true, + "optional": true, + "requires": { + "acorn": "2.7.0" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + } + } + }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", @@ -123,6 +149,17 @@ "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", @@ -147,12 +184,6 @@ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, - "ansi-grid": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ansi-grid/-/ansi-grid-0.5.0.tgz", - "integrity": "sha1-v9QxIjFxSVsXvqT002WTpsIYLGg=", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -395,9 +426,9 @@ } }, "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "async-each": { @@ -1049,6 +1080,7 @@ "version": "6.16.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "dev": true, "requires": { "babel-runtime": "6.26.0", "core-js": "2.5.3", @@ -1120,6 +1152,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, "requires": { "core-js": "2.5.3", "regenerator-runtime": "0.11.1" @@ -1128,7 +1161,8 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true } } }, @@ -1227,9 +1261,9 @@ "dev": true }, "bane": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bane/-/bane-1.0.0.tgz", - "integrity": "sha1-lJ/okStCs481Lh+tIE2CXa+h/0A=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bane/-/bane-1.1.2.tgz", + "integrity": "sha1-vGQkjMgjFgx98/I4uH/mLEThB7k=", "dev": true }, "base64-js": { @@ -1266,6 +1300,12 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "dev": true + }, "bl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", @@ -1708,210 +1748,180 @@ "dev": true }, "buster": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/buster/-/buster-0.7.12.tgz", - "integrity": "sha1-g0ocPa8vrl+iXQFYYRwNt9whiRU=", + "version": "github:busterjs/buster#0a0568f1169f66d0a1a19fad7fe0de9b44b934c8", "dev": true, "requires": { - "async": "0.2.10", - "bane": "1.0.0", - "buster-autotest": "0.4.2", - "buster-server-cli": "0.3.4", + "async": "1.5.2", + "bane": "1.1.2", + "buster-autotest": "0.6.0", + "buster-ci": "0.3.0", + "buster-server-cli": "0.4.0", "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", + "buster-static": "0.7.0", + "buster-syntax": "0.5.0", + "buster-test": "0.8.0", + "buster-test-cli": "0.9.0", "evented-logger": "1.0.1", - "formatio": "1.0.2", - "lodash": "1.0.2", - "platform": "1.0.0", - "referee": "1.0.3", + "formatio": "1.1.1", + "lodash": "3.10.1", + "platform": "1.3.4", + "referee": "1.2.0", "referee-sinon": "1.0.3", "samsam": "1.1.2", - "sinon": "1.9.1", + "sinon": "1.17.7", "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "when": "3.7.8" }, "dependencies": { - "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": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "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=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/buster-analyzer/-/buster-analyzer-0.6.0.tgz", + "integrity": "sha1-lw6/ofR22MvQgiUXBtJ6f2k2bnk=", "dev": true, "requires": { - "bane": "1.0.0", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "bane": "1.1.2" } }, "buster-autotest": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.4.2.tgz", - "integrity": "sha1-TY/uKYG7K5jPW4mqCu2zBOj6LIM=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.6.0.tgz", + "integrity": "sha1-Wy2Dshh2TCHxmswQXYPj4CzRMec=", "dev": true, "requires": { - "fs-watch-tree": "0.2.5", - "multi-glob": "0.4.0" + "chokidar": "1.7.0", + "multi-glob": "1.0.1" + } + }, + "buster-ci": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/buster-ci/-/buster-ci-0.3.0.tgz", + "integrity": "sha1-urgk4Y4QkklHb10NxL9b5L5OaKw=", + "dev": true, + "requires": { + "async": "1.5.2", + "buster-ci-agent": "0.2.0", + "buster-server-cli": "0.4.0", + "buster-syntax": "0.5.0", + "buster-test-cli": "0.9.0", + "faye": "1.2.4", + "formatio": "1.1.1", + "stream-logger": "1.0.1", + "when": "3.7.8" + } + }, + "buster-ci-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buster-ci-agent/-/buster-ci-agent-0.2.0.tgz", + "integrity": "sha1-nVRjmYMLmVxlNSEonkff4stz2YA=", + "dev": true, + "requires": { + "async": "1.5.2", + "evented-logger": "1.0.1", + "faye": "1.2.4", + "ffi": "2.2.0", + "formatio": "1.1.1", + "ref": "1.3.5" } }, "buster-cli": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.6.3.tgz", - "integrity": "sha1-XSZTPf8MMB3jJB8IlGsf6DczMwk=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.8.0.tgz", + "integrity": "sha1-I2VvBRv3uU+s2AR33FCo6yMy/9w=", "dev": true, "requires": { "ansi-colorizer": "1.0.1", - "bane": "1.0.0", - "buster-configuration": "0.7.6", + "bane": "1.1.2", + "buster-configuration": "0.8.1", "minimatch": "3.0.4", - "posix-argv-parser": "1.0.2", - "rimraf": "1.0.9", + "posix-argv-parser": "2.0.0", + "rimraf": "2.5.4", "stream-logger": "1.0.1" - }, - "dependencies": { - "rimraf": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz", - "integrity": "sha1-vkgB/3bCum8cUMeOlwDrHSHyOfE=", - "dev": true - } } }, "buster-configuration": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.7.6.tgz", - "integrity": "sha1-o4RYOMLg0TK2HvZYtfeEFD2LuzY=", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.8.1.tgz", + "integrity": "sha1-xgL1hEoMm6xsr0xoTK/2b+VyEd8=", "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" + "async": "1.5.2", + "bane": "1.1.2", + "glob": "5.0.15", + "lodash": "3.10.1", + "ramp-resources": "2.0.2", + "when": "3.7.8" }, "dependencies": { - "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=", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "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": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "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=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/buster-server-cli/-/buster-server-cli-0.4.0.tgz", + "integrity": "sha1-67/SxVF1x5wAaHlsmwgH4XnguHU=", "dev": true, "requires": { - "buster-cli": "0.6.3", - "ejs": "0.4.3", - "paperboy": "0.0.5", + "buster-cli": "0.8.0", + "ejs": "2.5.7", + "finalhandler": "0.4.1", "phantom-proxy": "0.1.792", - "platform": "1.2.0", - "ramp": "1.0.6", - "ramp-resources": "1.0.5" + "platform": "1.3.4", + "ramp": "2.0.2", + "ramp-resources": "2.0.2", + "serve-static": "1.12.1" }, "dependencies": { - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", + "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" + } + }, + "finalhandler": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "unpipe": "1.0.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true } } @@ -1922,104 +1932,137 @@ "integrity": "sha1-FUGAbyU40IYyuDPs2wgZYnkDezc=", "dev": true }, + "buster-static": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.7.0.tgz", + "integrity": "sha1-bs5GvT8YJncZg7g1ZBw9EnpERaM=", + "dev": true, + "requires": { + "async": "1.5.2", + "buster-cli": "0.8.0", + "buster-test": "0.8.0", + "mkdirp": "0.5.1", + "ramp-resources": "2.0.2", + "stack-filter": "1.0.1", + "when": "3.7.8" + } + }, "buster-syntax": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.4.3.tgz", - "integrity": "sha1-rkJRTg6sg9iQdacGp+W7kAVwsHM=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.5.0.tgz", + "integrity": "sha1-q/pGCfJYGJnqdCdLJrNnIdoYdtE=", "dev": true, "requires": { - "jsdom": "0.10.6", - "uglify-js": "1.2.5" + "uglify-js": "2.8.29" }, "dependencies": { - "jsdom": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-0.10.6.tgz", - "integrity": "sha1-o7HYdUVLoBZVdYKWeZOewAa/Wrg=", + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, - "optional": true, "requires": { - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "htmlparser2": "3.9.2", - "nwmatcher": "1.3.9", - "request": "2.83.0", - "xmlhttprequest": "1.8.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" } }, - "nwmatcher": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", - "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, "buster-test": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.7.14.tgz", - "integrity": "sha1-lMCQckUYm5F1xPSimpoepMmUQoE=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.8.0.tgz", + "integrity": "sha1-sTSlqo8uGxzxB5Q/+c0mlmuN0qo=", "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" + "async": "1.5.2", + "bane": "1.1.2", + "jsdom": "7.2.2", + "lodash": "3.10.1", + "platform": "1.3.4", + "semver-compare": "1.0.0", + "when": "3.7.8" }, "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": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "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=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/buster-test-cli/-/buster-test-cli-0.9.0.tgz", + "integrity": "sha1-uxhVn79TwfmYrtMXWFzS2kAj/lM=", "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", + "bane": "1.1.2", + "buster-analyzer": "0.6.0", + "buster-cli": "0.8.0", + "buster-test": "0.8.0", + "ejs": "2.5.7", + "lodash": "3.10.1", + "platform": "1.3.4", + "ramp": "2.0.2", "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "when": "3.7.8" }, "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=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } @@ -2140,6 +2183,16 @@ "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=", "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", @@ -2771,16 +2824,11 @@ "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.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2952,6 +3000,15 @@ "randomfill": "1.0.3" } }, + "csprng": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz", + "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=", + "dev": true, + "requires": { + "sequin": "0.1.1" + } + }, "css": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", @@ -4240,9 +4297,9 @@ "dev": true }, "ejs": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.4.3.tgz", - "integrity": "sha1-gUPDZWlVuJNNtdnag+m+cxdvH08=", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", "dev": true }, "electron-to-chromium": { @@ -4751,7 +4808,7 @@ "integrity": "sha1-n+1Zxc7MhzFuzv25X76RDwPmNqc=", "dev": true, "requires": { - "bane": "1.0.0", + "bane": "1.1.2", "lodash": "3.10.1" }, "dependencies": { @@ -5078,6 +5135,14 @@ "dev": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, "readable-stream": { @@ -5127,13 +5192,16 @@ "dev": true }, "faye": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/faye/-/faye-0.8.11.tgz", - "integrity": "sha1-BrJfIsm+Uevm/m2NWd7m5UZ1GWc=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/faye/-/faye-1.2.4.tgz", + "integrity": "sha1-l47YpY8dSB5cH5i6y4lZ3l7FxkM=", "dev": true, "requires": { - "cookiejar": "2.1.1", - "faye-websocket": "0.11.1" + "asap": "2.0.6", + "csprng": "0.1.2", + "faye-websocket": "0.11.1", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0" } }, "faye-websocket": { @@ -5175,6 +5243,20 @@ "pend": "1.2.0" } }, + "ffi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ffi/-/ffi-2.2.0.tgz", + "integrity": "sha1-vxiwRmain3EiftVoldVDCvRwQvo=", + "dev": true, + "optional": true, + "requires": { + "bindings": "1.2.1", + "debug": "2.6.9", + "nan": "2.8.0", + "ref": "1.3.5", + "ref-struct": "1.1.0" + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -5364,6 +5446,12 @@ "mime": "1.2.11" }, "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, "mime": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", @@ -5430,33 +5518,6 @@ } } }, - "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", @@ -5476,13 +5537,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": { @@ -5492,18 +5555,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": { @@ -5513,42 +5579,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": { @@ -5557,7 +5630,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" @@ -5565,7 +5639,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" @@ -5573,7 +5648,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", @@ -5582,29 +5658,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" @@ -5612,22 +5693,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" @@ -5635,7 +5720,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": { @@ -5644,7 +5730,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 } @@ -5652,7 +5739,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": { @@ -5661,30 +5749,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": { @@ -5693,24 +5786,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": { @@ -5721,12 +5818,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", @@ -5737,7 +5836,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": { @@ -5748,7 +5848,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": { @@ -5764,7 +5865,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": { @@ -5773,7 +5875,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 } @@ -5781,7 +5884,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", @@ -5794,18 +5898,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": { @@ -5815,13 +5922,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", @@ -5832,12 +5941,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": { @@ -5848,7 +5959,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", @@ -5857,18 +5969,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" @@ -5876,24 +5991,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": { @@ -5902,19 +6021,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": { @@ -5923,19 +6045,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": { @@ -5947,7 +6072,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 } @@ -5955,12 +6081,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" @@ -5968,7 +6096,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" @@ -5976,12 +6105,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" @@ -5989,7 +6120,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 }, @@ -6002,7 +6134,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": { @@ -6021,7 +6154,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": { @@ -6031,7 +6165,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": { @@ -6043,24 +6178,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" @@ -6068,19 +6207,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": { @@ -6090,35 +6232,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": { @@ -6130,7 +6278,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 } @@ -6138,7 +6287,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", @@ -6152,7 +6302,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": { @@ -6182,7 +6333,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" @@ -6190,30 +6342,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" @@ -6221,7 +6378,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": { @@ -6238,7 +6396,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 } @@ -6246,7 +6405,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", @@ -6256,7 +6416,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" @@ -6264,13 +6425,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" @@ -6278,13 +6441,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", @@ -6294,7 +6459,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": { @@ -6310,7 +6476,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": { @@ -6319,7 +6486,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": { @@ -6328,30 +6496,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": { @@ -6360,7 +6533,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": { @@ -6369,7 +6543,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } @@ -8101,6 +8276,81 @@ "resolved": "https://registry.npmjs.org/jscrollpane/-/jscrollpane-2.0.22.tgz", "integrity": "sha1-WwMSK2A46FvUvYp4kZMvbRv+mAs=" }, + "jsdom": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", + "dev": true, + "optional": true, + "requires": { + "abab": "1.0.4", + "acorn": "2.7.0", + "acorn-globals": "1.0.9", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "2.0.1", + "whatwg-url-compat": "0.6.5", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "optional": 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, + "optional": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true, + "optional": true + } + } + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -8344,6 +8594,12 @@ } } }, + "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", @@ -8793,6 +9049,12 @@ "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 + }, "longest-streak": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", @@ -9183,9 +9445,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "minimist-options": { @@ -9205,6 +9467,14 @@ "dev": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, "mkpath": { @@ -9331,9 +9601,9 @@ "dev": true }, "mori": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/mori/-/mori-0.2.1.tgz", - "integrity": "sha1-rrmoe5y/VWkoDH7GoRDaCImymLE=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/mori/-/mori-0.3.2.tgz", + "integrity": "sha1-GlPaFlKH877wyrYjmMSTG+zoCj8=", "dev": true }, "mothership": { @@ -9358,14 +9628,35 @@ "dev": true }, "multi-glob": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/multi-glob/-/multi-glob-0.4.0.tgz", - "integrity": "sha1-GqnQhdljeX8Xr5JziEDthDqY0HA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multi-glob/-/multi-glob-1.0.1.tgz", + "integrity": "sha1-5n0qtEKdJ2BubrTbNQlK/JF4h1A=", "dev": true, "requires": { - "async": "0.2.10", - "glob": "7.1.2", - "lodash": "4.15.0" + "async": "1.5.2", + "glob": "5.0.15", + "lodash": "3.10.1" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } } }, "multimatch": { @@ -9398,9 +9689,9 @@ } }, "nan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", - "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "dev": true }, "natural-compare": { @@ -9702,6 +9993,13 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true, + "optional": true + }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -9784,10 +10082,16 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", + "minimist": "0.0.10", "wordwrap": "0.0.3" }, "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -9996,12 +10300,6 @@ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, - "paperboy": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/paperboy/-/paperboy-0.0.5.tgz", - "integrity": "sha1-D/NSBMUyKJ8BVrV3RW5vWB7TSLw=", - "dev": true - }, "parents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", @@ -10065,6 +10363,13 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true, + "optional": true + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -10546,9 +10851,9 @@ } }, "platform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.0.0.tgz", - "integrity": "sha1-XMxFrd4M6iyCAWdcZX5wyf+HOkk=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", "dev": true }, "plur": { @@ -10573,12 +10878,12 @@ "dev": true }, "posix-argv-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/posix-argv-parser/-/posix-argv-parser-1.0.2.tgz", - "integrity": "sha1-9D2zPmKpT4DZRsnezOvaAXbFvnY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/posix-argv-parser/-/posix-argv-parser-2.0.0.tgz", + "integrity": "sha1-w4TbMZ029+O7VLyJ8PkQX/DWWl0=", "dev": true, "requires": { - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "when": "3.7.8" } }, "postcss": { @@ -13035,94 +13340,90 @@ "integrity": "sha1-AmMIGPmq5OyrJvAQP5jQYcF8WPM=" }, "ramp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ramp/-/ramp-1.0.6.tgz", - "integrity": "sha1-rNjALXP/e5HJ3ATGHbeQsjAZIm0=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ramp/-/ramp-2.0.2.tgz", + "integrity": "sha1-5069y/PnhpjNSlAz9b5vN+9cNVw=", "dev": true, "requires": { - "ejs": "0.8.8", - "faye": "0.8.11", - "mori": "0.2.1", + "ejs": "2.5.7", + "faye": "1.1.2", + "mori": "0.3.2", "node-uuid": "1.4.8", - "ramp-resources": "1.0.5", - "when": "2.2.1" + "ramp-resources": "2.0.2", + "when": "3.7.8" }, "dependencies": { - "ejs": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.8.tgz", - "integrity": "sha1-/9xW3MNdApJt1QrRNDm7xUBh1Zg=", - "dev": true + "csprng": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz", + "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=", + "dev": true, + "requires": { + "sequin": "0.1.1" + } }, - "when": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/when/-/when-2.2.1.tgz", - "integrity": "sha1-sd75lAFzULgIf26adZarKDO9xxI=", - "dev": true + "faye": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/faye/-/faye-1.1.2.tgz", + "integrity": "sha1-195MlOO5FotMLCslTes9JktgroA=", + "dev": true, + "requires": { + "csprng": "0.1.2", + "faye-websocket": "0.11.1", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } } } }, "ramp-resources": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/ramp-resources/-/ramp-resources-1.0.5.tgz", - "integrity": "sha1-yyq0pttIDqmx8956mXoxDuiUzG8=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ramp-resources/-/ramp-resources-2.0.2.tgz", + "integrity": "sha1-/C46MdJaL5Yup7yXy3GyvYbiy4Q=", "dev": true, "requires": { - "glob": "3.2.11", - "lodash": "0.5.2", + "glob": "5.0.15", + "lodash": "3.10.1", "mime": "1.6.0", - "minimatch": "0.1.5", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "minimatch": "3.0.4", + "when": "3.7.8" }, "dependencies": { "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { + "inflight": "1.0.6", "inherits": "2.0.3", - "minimatch": "0.3.0" - }, - "dependencies": { - "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" - } - } + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "lodash": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.5.2.tgz", - "integrity": "sha1-TIc/k73d6qB0AaZ1+OF97Vr5qCc=", - "dev": true - }, - "minimatch": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.1.5.tgz", - "integrity": "sha1-t2LzEgZsu/5QRipoNgv8nKDMsbk=", - "dev": true, - "requires": { - "lru-cache": "1.0.6" - }, - "dependencies": { - "lru-cache": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-1.0.6.tgz", - "integrity": "sha1-qlD5cEdCKsclQ72hd6nJ0BjZhFI=", - "dev": true - } - } - }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } @@ -13433,21 +13734,43 @@ } } }, + "ref": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz", + "integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==", + "dev": true, + "requires": { + "bindings": "1.2.1", + "debug": "2.6.9", + "nan": "2.8.0" + } + }, + "ref-struct": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz", + "integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "ref": "1.3.5" + } + }, "referee": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/referee/-/referee-1.0.3.tgz", - "integrity": "sha1-wOt5ux/dwbQoinhmB20b53nmRvM=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referee/-/referee-1.2.0.tgz", + "integrity": "sha1-eneb7llVx4r/fYjAFhxaH0VFjJA=", "dev": true, "requires": { - "bane": "1.0.0", - "lodash": "1.0.2", + "bane": "1.1.2", + "lodash": "3.10.1", "samsam": "1.1.2" }, "dependencies": { "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } @@ -13467,7 +13790,8 @@ "regenerator-runtime": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=", + "dev": true }, "regenerator-transform": { "version": "0.10.1", @@ -13822,6 +14146,15 @@ "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", @@ -13905,6 +14238,12 @@ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "send": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", @@ -13925,6 +14264,12 @@ } } }, + "sequin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sequin/-/sequin-0.1.1.tgz", + "integrity": "sha1-XC04nWajg3NOqvvEXt6ywcsb5wE=", + "dev": true + }, "serve-static": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz", @@ -15774,6 +16119,13 @@ } } }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true, + "optional": true + }, "sync-request": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-4.1.0.tgz", @@ -16069,11 +16421,17 @@ "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" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true, + "optional": true + }, "transformify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/transformify/-/transformify-0.1.2.tgz", @@ -16156,7 +16514,6 @@ "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" } @@ -16210,6 +16567,13 @@ "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, + "optional": true + }, "uglifyify": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/uglifyify/-/uglifyify-4.0.5.tgz", @@ -16541,6 +16905,13 @@ "xtend": "4.0.1" } }, + "webidl-conversions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", + "dev": true, + "optional": true + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -16562,9 +16933,20 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" }, + "whatwg-url-compat": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", + "dev": true, + "optional": true, + "requires": { + "tr46": "0.0.3" + } + }, "when": { - "version": "https://github.com/cujojs/when/tarball/1.8.1", - "integrity": "sha1-sbqqctx3tPjCZ7yy/r5mjS/ArYc=", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", "dev": true }, "whet.extend": { @@ -16688,6 +17070,12 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", "dev": true + }, + "nan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", + "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=", + "dev": true } } }, diff --git a/package.json b/package.json index 41d710b6b9..46e79f498f 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "autoprefixer": "7.1.1", "babel-core": "^6.26.0", "babel-eslint": "^7.2.3", + "babel-polyfill": "^6.16.0", "babel-preset-env": "^1.6.1", "babelify": "^7.3.0", "browserify": "^14.4.0", @@ -40,7 +41,7 @@ "browserify-shim": "^3.8.14", "browserstack-capabilities": "^0.4.0", "browserstack-local": "^1.3.0", - "buster": "0.7.12", + "buster": "github:busterjs/buster#v0.8.0", "chromedriver": "2.25.1", "cssnano": "^3.10.0", "cucumber": "^3.0.2", @@ -84,7 +85,6 @@ "watchify": "^3.9.0" }, "dependencies": { - "babel-polyfill": "6.16.0", "bluebird": "3.4.6", "cachai": "^1.0.2", "clipboard": "^1.7.1", diff --git a/test/main.js b/test/main.js index cd553ce344..e38e7fdf41 100644 --- a/test/main.js +++ b/test/main.js @@ -1,5 +1,6 @@ // This file is an entry point used to build a testable bundle of the WV core // It exposes some internal methods on a global `wv` var for testing purposes +import 'babel-polyfill'; // Polyfill fixes a bug in Phantom 2.1.x import brand from '../web/js/brand'; import { parse as dateParser } from '../web/js/date/date'; import { dateModel } from '../web/js/date/model'; From 8e773abd41e7be87ae4467c1af7c1dec74448bf1 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 16:15:05 -0500 Subject: [PATCH 04/25] Modularize layer tests Lodash was mistakenly used before instead of underscore --- package-lock.json | 12 +++++++++--- package.json | 1 + ...ers.model.dateRange-test.js => dateRange-spec.js} | 0 test/layers/{wv.layers-test.js => layers-spec.js} | 0 .../{wv.layers.model-test.js => model-spec.js} | 0 test/main.js | 12 ++++++++++++ 6 files changed, 22 insertions(+), 3 deletions(-) rename test/layers/{wv.layers.model.dateRange-test.js => dateRange-spec.js} (100%) rename test/layers/{wv.layers-test.js => layers-spec.js} (100%) rename test/layers/{wv.layers.model-test.js => model-spec.js} (100%) diff --git a/package-lock.json b/package-lock.json index b22323205d..1e5e894283 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10549,6 +10549,12 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz", "integrity": "sha1-WV4lHBNww6aLqyE20ONIuBBa3xM=", "dev": true + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true } } }, @@ -16624,9 +16630,9 @@ "dev": true }, "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", "dev": true }, "underscore.string": { diff --git a/package.json b/package.json index 46e79f498f..022c98d653 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "stylefmt": "^6.0.0", "stylelint": "^8.0.0", "uglifyify": "^4.0.5", + "underscore": "^1.8.3", "watchify": "^3.9.0" }, "dependencies": { diff --git a/test/layers/wv.layers.model.dateRange-test.js b/test/layers/dateRange-spec.js similarity index 100% rename from test/layers/wv.layers.model.dateRange-test.js rename to test/layers/dateRange-spec.js diff --git a/test/layers/wv.layers-test.js b/test/layers/layers-spec.js similarity index 100% rename from test/layers/wv.layers-test.js rename to test/layers/layers-spec.js diff --git a/test/layers/wv.layers.model-test.js b/test/layers/model-spec.js similarity index 100% rename from test/layers/wv.layers.model-test.js rename to test/layers/model-spec.js diff --git a/test/main.js b/test/main.js index e38e7fdf41..26a65c3ce9 100644 --- a/test/main.js +++ b/test/main.js @@ -1,9 +1,13 @@ // This file is an entry point used to build a testable bundle of the WV core // It exposes some internal methods on a global `wv` var for testing purposes +import underscore from 'underscore'; import 'babel-polyfill'; // Polyfill fixes a bug in Phantom 2.1.x import brand from '../web/js/brand'; import { parse as dateParser } from '../web/js/date/date'; import { dateModel } from '../web/js/date/model'; +import { parse as layerParser } from '../web/js/layers/layers'; +import { layersModel } from '../web/js/layers/model'; +import { projectionModel } from '../web/js/projection/model'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; @@ -13,7 +17,15 @@ window.wv = { parse: dateParser, model: dateModel }, + layers: { + parse: layerParser, + model: layersModel + }, + proj: { + model: projectionModel + }, util: util }; window.fixtures = fixtures; +window._ = underscore; From 97295a2ef894226160bab51484c40e028c9ab8fd Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 16:27:47 -0500 Subject: [PATCH 05/25] Modularize link tests Add --- test/link/{wv.link.model-test.js => model-spec.js} | 0 test/main.js | 4 ++++ 2 files changed, 4 insertions(+) rename test/link/{wv.link.model-test.js => model-spec.js} (100%) diff --git a/test/link/wv.link.model-test.js b/test/link/model-spec.js similarity index 100% rename from test/link/wv.link.model-test.js rename to test/link/model-spec.js diff --git a/test/main.js b/test/main.js index 26a65c3ce9..7e6e430dc2 100644 --- a/test/main.js +++ b/test/main.js @@ -7,6 +7,7 @@ import { parse as dateParser } from '../web/js/date/date'; import { dateModel } from '../web/js/date/model'; import { parse as layerParser } from '../web/js/layers/layers'; import { layersModel } from '../web/js/layers/model'; +import { linkModel } from '../web/js/link/model'; import { projectionModel } from '../web/js/projection/model'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; @@ -21,6 +22,9 @@ window.wv = { parse: layerParser, model: layersModel }, + link: { + model: linkModel + }, proj: { model: projectionModel }, From 35d4a60acfa2af1820720ceee512752cf1b761a9 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Thu, 7 Dec 2017 16:44:54 -0500 Subject: [PATCH 06/25] Modularize map tests --- test/main.js | 8 ++++++++ test/map/{wv.map-test.js => map-spec.js} | 0 test/map/{wv.map.model-test.js => model-spec.js} | 0 .../{wv.map.runningdata-test.js => runningdata-spec.js} | 2 +- web/js/map/runningdata.js | 2 +- web/js/map/ui.js | 6 +++--- 6 files changed, 13 insertions(+), 5 deletions(-) rename test/map/{wv.map-test.js => map-spec.js} (100%) rename test/map/{wv.map.model-test.js => model-spec.js} (100%) rename test/map/{wv.map.runningdata-test.js => runningdata-spec.js} (97%) diff --git a/test/main.js b/test/main.js index 7e6e430dc2..d4672a2de5 100644 --- a/test/main.js +++ b/test/main.js @@ -8,6 +8,9 @@ import { dateModel } from '../web/js/date/model'; import { parse as layerParser } from '../web/js/layers/layers'; import { layersModel } from '../web/js/layers/model'; import { linkModel } from '../web/js/link/model'; +import { parse as mapParser } from '../web/js/map/map'; +import { mapModel } from '../web/js/map/model'; +import { mapRunningData } from '../web/js/map/runningdata'; import { projectionModel } from '../web/js/projection/model'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; @@ -25,6 +28,11 @@ window.wv = { link: { model: linkModel }, + map: { + parse: mapParser, + model: mapModel, + runningdata: mapRunningData + }, proj: { model: projectionModel }, diff --git a/test/map/wv.map-test.js b/test/map/map-spec.js similarity index 100% rename from test/map/wv.map-test.js rename to test/map/map-spec.js diff --git a/test/map/wv.map.model-test.js b/test/map/model-spec.js similarity index 100% rename from test/map/wv.map.model-test.js rename to test/map/model-spec.js diff --git a/test/map/wv.map.runningdata-test.js b/test/map/runningdata-spec.js similarity index 97% rename from test/map/wv.map.runningdata-test.js rename to test/map/runningdata-spec.js index 437444236c..148a0b1651 100644 --- a/test/map/wv.map.runningdata-test.js +++ b/test/map/runningdata-spec.js @@ -3,7 +3,7 @@ buster.testCase('wv.map.runningdata', { errors: null, setUp: function () { - models = { + var models = { layers: { events: { on: this.stub() diff --git a/web/js/map/runningdata.js b/web/js/map/runningdata.js index 7017703f60..9839bbd39c 100644 --- a/web/js/map/runningdata.js +++ b/web/js/map/runningdata.js @@ -3,7 +3,7 @@ import util from '../util/util'; import loDifference from 'lodash/difference'; import loEach from 'lodash/each'; -export function MapRunningData(models) { +export function mapRunningData(models) { var self; var $productsBox; var productsBoxHeight; diff --git a/web/js/map/ui.js b/web/js/map/ui.js index f4ffc872ac..ace0a125db 100644 --- a/web/js/map/ui.js +++ b/web/js/map/ui.js @@ -25,7 +25,7 @@ import olProj from 'ol/proj'; import {MapRotate} from './rotation'; import {mapDateLineBuilder} from './datelinebuilder'; import {mapLayerBuilder} from './layerbuilder'; -import {MapRunningData} from './runningdata'; +import {mapRunningData} from './runningdata'; import {mapPrecacheTile} from './precachetile'; import Cache from 'cachai'; @@ -41,7 +41,7 @@ export function mapui(models, config) { var createLayer; var precache = mapPrecacheTile(models, config, cache, self); - var dataRunner = self.runningdata = new MapRunningData(models); + var dataRunner = self.runningdata = new mapRunningData(models); self.mapIsbeingDragged = false; self.mapIsbeingZoomed = false; @@ -885,7 +885,7 @@ export function mapui(models, config) { var isDataTabActive = (typeof models.data !== 'undefined' && models.data.active); var isMapAnimating = (typeof models.anim !== 'undefined' && models.anim.rangeState.playing); if (isEventsTabActive || isDataTabActive || isMapAnimating) return; - + dataRunner.newPoint(pixels, map); } $(map.getViewport()) From 8af0be1fc425853a3acccafbb1f10aab8ccf1a8c Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 09:02:29 -0500 Subject: [PATCH 07/25] Add step to build tests on Travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 03fd7fa8b2..aa66cb8289 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,3 +3,4 @@ node_js: - '6.8.1' before_install: npm install -g grunt-cli install: npm install +before_script: npm run build:tests From ab80b6cef2cfd22d17f90d88826a9f6665fc9c14 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 09:12:18 -0500 Subject: [PATCH 08/25] Update Node version on Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aa66cb8289..e3c337a664 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: -- '6.8.1' +- '8.8.1' before_install: npm install -g grunt-cli install: npm install before_script: npm run build:tests From 8d5703015cfa030abffc1669065fc7a23912c35c Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 09:26:41 -0500 Subject: [PATCH 09/25] Fix lodash/indexOf case --- web/js/brand.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/brand.js b/web/js/brand.js index fddfacf6e0..c4916aa8da 100644 --- a/web/js/brand.js +++ b/web/js/brand.js @@ -1,4 +1,4 @@ -import loIndexOf from 'lodash/indexof'; +import loIndexOf from 'lodash/indexOf'; /** * @class wv.brand * @static From d012db9d1e1c41cd341a955984f2bd03a66b6406 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 09:34:46 -0500 Subject: [PATCH 10/25] Exclude /web/build from linting --- .eslintignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintignore b/.eslintignore index ed2ae9c3ba..c2d254a5c8 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,3 +8,4 @@ options/* reports/* web/ext/* web/dist/* +web/build/* From 5c43258b6375ee3278e250069d6826dad4facc36 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 09:40:31 -0500 Subject: [PATCH 11/25] Disable watchify to avoid linter failure --- tasks/buildJS.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/buildJS.js b/tasks/buildJS.js index 625d7cd7e8..d208f16d57 100644 --- a/tasks/buildJS.js +++ b/tasks/buildJS.js @@ -1,7 +1,7 @@ #!/usr/bin/env node const fs = require('fs'); const browserify = require('browserify'); -const watchify = require('watchify'); +// const watchify = require('watchify'); const minimist = require('minimist'); const argv = minimist(process.argv.slice(2)); From a26222f9da6c542e72db9e7e11cac6480a51dc3c Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 10:00:54 -0500 Subject: [PATCH 12/25] Modularize palettes tests --- test/main.js | 5 +++++ test/palettes/{wv.palettes.model-test.js => model-spec.js} | 0 test/palettes/{wv.palettes-test.js => palettes-spec.js} | 0 3 files changed, 5 insertions(+) rename test/palettes/{wv.palettes.model-test.js => model-spec.js} (100%) rename test/palettes/{wv.palettes-test.js => palettes-spec.js} (100%) diff --git a/test/main.js b/test/main.js index d4672a2de5..3123579da6 100644 --- a/test/main.js +++ b/test/main.js @@ -11,10 +11,14 @@ import { linkModel } from '../web/js/link/model'; import { parse as mapParser } from '../web/js/map/map'; import { mapModel } from '../web/js/map/model'; import { mapRunningData } from '../web/js/map/runningdata'; +import palettes from '../web/js/palettes/palettes'; +import { palettesModel } from '../web/js/palettes/model'; import { projectionModel } from '../web/js/projection/model'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; +palettes.model = palettesModel; + window.wv = { brand: brand, date: { @@ -33,6 +37,7 @@ window.wv = { model: mapModel, runningdata: mapRunningData }, + palettes: palettes, proj: { model: projectionModel }, diff --git a/test/palettes/wv.palettes.model-test.js b/test/palettes/model-spec.js similarity index 100% rename from test/palettes/wv.palettes.model-test.js rename to test/palettes/model-spec.js diff --git a/test/palettes/wv.palettes-test.js b/test/palettes/palettes-spec.js similarity index 100% rename from test/palettes/wv.palettes-test.js rename to test/palettes/palettes-spec.js From 52c425a9bc1668788d89e0af408407b8613acf6e Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 10:01:43 -0500 Subject: [PATCH 13/25] Fix broken palettes test palettes variable was undefined, but it was intended to reference self --- web/js/palettes/palettes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/palettes/palettes.js b/web/js/palettes/palettes.js index 8594a9312d..7795069428 100644 --- a/web/js/palettes/palettes.js +++ b/web/js/palettes/palettes.js @@ -138,7 +138,7 @@ export default (function (self) { // Only for permalink 1.1 support self.parse = function (state, errors, config) { if (state.palettes) { - if (!palettes.supported) { + if (!self.supported) { // FIXME: This should go in errors delete state.palettes; wvui.notify('The custom palette feature is not supported ' + From 079accd262148c8e87c5f41eee75e1c8c2ee17b4 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 10:09:31 -0500 Subject: [PATCH 14/25] Modularize projection tests --- test/main.js | 8 +++++++- .../wv.proj.change-test.js => projection/change-spec.js} | 0 .../wv.proj.model-test.js => projection/model-spec.js} | 0 .../wv.proj-test.js => projection/projection-spec.js} | 0 4 files changed, 7 insertions(+), 1 deletion(-) rename test/{proj/wv.proj.change-test.js => projection/change-spec.js} (100%) rename test/{proj/wv.proj.model-test.js => projection/model-spec.js} (100%) rename test/{proj/wv.proj-test.js => projection/projection-spec.js} (100%) diff --git a/test/main.js b/test/main.js index 3123579da6..1c346eaedf 100644 --- a/test/main.js +++ b/test/main.js @@ -13,7 +13,10 @@ import { mapModel } from '../web/js/map/model'; import { mapRunningData } from '../web/js/map/runningdata'; import palettes from '../web/js/palettes/palettes'; import { palettesModel } from '../web/js/palettes/model'; +import { parse as projectionParser } from '../web/js/projection/projection'; import { projectionModel } from '../web/js/projection/model'; +import { projectionChange } from '../web/js/projection/change'; +import ui from '../web/js/ui/ui'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; @@ -39,8 +42,11 @@ window.wv = { }, palettes: palettes, proj: { - model: projectionModel + parse: projectionParser, + model: projectionModel, + change: projectionChange }, + ui: ui, util: util }; diff --git a/test/proj/wv.proj.change-test.js b/test/projection/change-spec.js similarity index 100% rename from test/proj/wv.proj.change-test.js rename to test/projection/change-spec.js diff --git a/test/proj/wv.proj.model-test.js b/test/projection/model-spec.js similarity index 100% rename from test/proj/wv.proj.model-test.js rename to test/projection/model-spec.js diff --git a/test/proj/wv.proj-test.js b/test/projection/projection-spec.js similarity index 100% rename from test/proj/wv.proj-test.js rename to test/projection/projection-spec.js From 3439c9ba0a548ec758cede384f593187c7dfa9a9 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 10:12:18 -0500 Subject: [PATCH 15/25] Modularize ui tests --- test/main.js | 4 ++++ test/ui/{wv.ui.indicator-test.js => indicator-spec.js} | 0 test/ui/{wv.ui.mouse-test.js => mouse-spec.js} | 0 3 files changed, 4 insertions(+) rename test/ui/{wv.ui.indicator-test.js => indicator-spec.js} (100%) rename test/ui/{wv.ui.mouse-test.js => mouse-spec.js} (100%) diff --git a/test/main.js b/test/main.js index 1c346eaedf..89417935be 100644 --- a/test/main.js +++ b/test/main.js @@ -17,10 +17,14 @@ import { parse as projectionParser } from '../web/js/projection/projection'; import { projectionModel } from '../web/js/projection/model'; import { projectionChange } from '../web/js/projection/change'; import ui from '../web/js/ui/ui'; +import uiIndicator from '../web/js/ui/indicator'; +import uiMouse from '../web/js/ui/mouse'; import util from '../web/js/util/util'; import fixtures from './fixtures.js'; palettes.model = palettesModel; +ui.indicator = uiIndicator; +ui.mouse = uiMouse; window.wv = { brand: brand, diff --git a/test/ui/wv.ui.indicator-test.js b/test/ui/indicator-spec.js similarity index 100% rename from test/ui/wv.ui.indicator-test.js rename to test/ui/indicator-spec.js diff --git a/test/ui/wv.ui.mouse-test.js b/test/ui/mouse-spec.js similarity index 100% rename from test/ui/wv.ui.mouse-test.js rename to test/ui/mouse-spec.js From 66fc56b1429d3607e3e81586faf2c3528442e423 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 13:45:53 -0500 Subject: [PATCH 16/25] Refactor browser utilities to be testable --- web/js/util/browser.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/web/js/util/browser.js b/web/js/util/browser.js index 090a38bb4b..983d56d016 100644 --- a/web/js/util/browser.js +++ b/web/js/util/browser.js @@ -194,13 +194,15 @@ export default (function () { }; self.tests.small = function () { - return $(window) - .width() < self.mobileWidth; + return self.tests.getWindowDimensions()[0] < self.mobileWidth; + }; + + self.tests.getWindowDimensions = function () { + return [$(window).width(), $(window).height()]; }; self.tests.constrained = function () { - return $(window) - .height() < self.constrainedHeight; + return self.tests.getWindowDimensions()[1] < self.constrainedHeight; }; self.tests.history = function () { From eda7ecb405267a039a1f8e099e520c539b0ca0db Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 13:46:06 -0500 Subject: [PATCH 17/25] Modularize util tests --- ...v.util.browser-test.js => browser-spec.js} | 38 ++++++++----------- ...{wv.util.events-test.js => events-spec.js} | 0 test/util/{wv.util-test.js => util-spec.js} | 0 3 files changed, 15 insertions(+), 23 deletions(-) rename test/util/{wv.util.browser-test.js => browser-spec.js} (88%) rename test/util/{wv.util.events-test.js => events-spec.js} (100%) rename test/util/{wv.util-test.js => util-spec.js} (100%) diff --git a/test/util/wv.util.browser-test.js b/test/util/browser-spec.js similarity index 88% rename from test/util/wv.util.browser-test.js rename to test/util/browser-spec.js index adfb5827b8..32a2b1ba4a 100644 --- a/test/util/wv.util.browser-test.js +++ b/test/util/browser-spec.js @@ -106,36 +106,28 @@ buster.testCase('wv.util.browser', { */ 'Large device': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(1000), - height: this.stub() - .returns(1000) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([1000, 1000]); buster.refute(wv.util.browser.tests.small()); buster.refute(wv.util.browser.tests.constrained()); }, - 'Small device': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(200), - height: this.stub() - .returns(200) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([200, 200]); buster.assert(wv.util.browser.tests.small()); }, - 'Constrained device, height': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(1000), - height: this.stub() - .returns(300) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([1000, 300]); buster.assert(wv.util.browser.tests.constrained()); } }); diff --git a/test/util/wv.util.events-test.js b/test/util/events-spec.js similarity index 100% rename from test/util/wv.util.events-test.js rename to test/util/events-spec.js diff --git a/test/util/wv.util-test.js b/test/util/util-spec.js similarity index 100% rename from test/util/wv.util-test.js rename to test/util/util-spec.js From b6aad33be5be53ac22f2d5dc91aae0c2fb27e56c Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 14:10:38 -0500 Subject: [PATCH 18/25] Remove unused code --- test/fixtures.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/fixtures.js b/test/fixtures.js index 632c01689c..d6252cf2a1 100644 --- a/test/fixtures.js +++ b/test/fixtures.js @@ -4,10 +4,6 @@ import { mapModel } from '../web/js/map/model'; import { palettesModel } from '../web/js/palettes/model'; import { projectionModel } from '../web/js/projection/model'; -// FIXME: OL3 -// proj4.defs('EPSG:3413', '+title=WGS 84 / NSIDC Sea Ice Polar Stereographic North +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); -// proj4.defs('EPSG:3031', '+title=WGS 84 / Antarctic Polar Stereographic +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); - var fixtures = { red: 'ff0000ff', light_red: 'fff0f0ff', From 03d270150b3d2ccfeb96c8ac5dce61cbb412d13b Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 17:31:26 -0500 Subject: [PATCH 19/25] Move test tasks from grunt to npm scripts --- Gruntfile.js | 61 ---- package-lock.json | 732 +--------------------------------------------- package.json | 14 +- 3 files changed, 14 insertions(+), 793 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 304067280b..e855b0c181 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -39,15 +39,6 @@ module.exports = function(grunt) { optionsPath: optionsPath, apache_version: grunt.option('apache-version') || '22', - buster: { - console: {}, - report: { - test: { - reporter: 'xml' - } - } - }, - copy: { apache: { src: 'etc/dev/worldview-dev.httpd<%=apache_version%>.conf', @@ -240,14 +231,6 @@ module.exports = function(grunt) { } }, - eslint: { - options: { - configFile: '.eslintrc', - format: 'stylish' - }, - src: ['**/*.js', '!node_modules/**/*', '!build/**/*', '!dist/**/*', '!lib/**/*', '!options/**/*', '!web/dist/**/*', '!web/ext/**/*', '!etc/**/*'] - }, - exec: { config: { command: 'bash -c "PATH=' + pythonPath + ':"${PATH}" bin/wv-options-build "' + env @@ -309,21 +292,6 @@ module.exports = function(grunt) { } }, - lineremover: { - // After removing all the references, there - // are a lot of blank lines in index.html. Remove them - release: { - files: [ - { - expand: true, - cwd: 'build', - src: ['**/web/**/*.html'], - dest: 'build' - } - ] - } - }, - markdown: { metadata: { files: [ @@ -412,24 +380,6 @@ module.exports = function(grunt) { ] }, - // Remove all development links and uncomment - // all the release links - links: { - src: [ - 'build/**/web/index.html', 'build/**/web/pages/*.html' - ], - overwrite: true, - replacements: [ - { - from: /.*link.dev.*/g, - to: '' - }, { - from: /.*link.prod.*(!--|\/\*)(.*)(--|\*\/).*/g, - to: '$2' - } - ] - }, - rpm_sources: { src: [ 'build/rpmbuild/SOURCES/*', 'build/rpmbuild/SPECS/*', '!**/*.tar.bz2' @@ -486,13 +436,8 @@ module.exports = function(grunt) { }); - grunt.loadNpmTasks('grunt-buster'); grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-compress'); grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('gruntify-eslint'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-line-remover'); grunt.loadNpmTasks('grunt-exec'); grunt.loadNpmTasks('grunt-git-rev-parse'); grunt.loadNpmTasks('grunt-markdown'); @@ -526,8 +471,6 @@ module.exports = function(grunt) { 'remove:source', 'exec:empty', 'copy:release', - 'replace:links', - 'lineremover', 'mkdir:dist', 'exec:tar_source_debug', 'copy:dist_source_debug_versioned', @@ -574,13 +517,9 @@ module.exports = function(grunt) { ]); grunt.registerTask('apache-config', ['load_branding', 'copy:apache', 'replace:apache']); - 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']); - grunt.registerTask('test', ['buster:console']); grunt.registerTask('default', [ 'update-packages', diff --git a/package-lock.json b/package-lock.json index 1e5e894283..f8a7629dcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,23 +81,6 @@ } } }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, "active-x-obfuscator": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz", @@ -178,12 +161,6 @@ "integrity": "sha1-YFF/i9/iUQmF95I+zngZYwiO3Gs=", "dev": true }, - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -221,48 +198,6 @@ "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=", "dev": true }, - "archiver": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.4.10.tgz", - "integrity": "sha1-3w/qyPHRKV5ezrOiBVWQctIfR0c=", - "dev": true, - "requires": { - "iconv-lite": "0.2.11", - "readable-stream": "1.0.34" - }, - "dependencies": { - "iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "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", - "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 - } - } - }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -1357,69 +1292,6 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, - "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": { - "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 - } - } - }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", @@ -2084,21 +1956,6 @@ "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": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -2238,12 +2095,6 @@ "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", "dev": true }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -2380,12 +2231,6 @@ } } }, - "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 - }, "clipboard": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", @@ -2937,28 +2782,6 @@ } } }, - "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": { - "lru-cache": "4.1.1", - "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" - } - } - } - }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", @@ -3751,7 +3574,8 @@ "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 + "dev": true, + "optional": true }, "define-properties": { "version": "1.1.2", @@ -4486,131 +4310,6 @@ } } }, - "eslint": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.1.tgz", - "integrity": "sha512-UCJVV50RtLHYzBp1DZ8CMPtRSg4iVZvjgO9IJHIKyWU/AnJVjtdRikoUPLB29n5pzMB7TnsLQWf0V6VUJfoPfw==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "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.2", - "eslint-scope": "3.7.1", - "espree": "3.5.2", - "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": "11.1.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.1", - "js-yaml": "3.10.0", - "json-stable-stringify-without-jsonify": "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": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.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.2", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", - "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", - "dev": true, - "requires": { - "esutils": "2.0.2" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "globals": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", - "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", - "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 - }, - "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", @@ -4687,83 +4386,12 @@ "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" - }, - "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.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", - "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-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": { - "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" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } - } - }, - "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" - }, - "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": "1.5.1", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", @@ -5079,17 +4707,6 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, - "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", - "dev": true, - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" - } - }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -5189,7 +4806,8 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "dev": true, + "optional": true }, "faye": { "version": "1.2.4", @@ -6611,27 +6229,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "gather-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", "dev": true }, - "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" - } - }, "geckodriver": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.2.0.tgz", @@ -6819,25 +6422,6 @@ "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", - "minimatch": "3.0.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, "gonzales-pe": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", @@ -7081,26 +6665,6 @@ } } }, - "grunt-buster": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/grunt-buster/-/grunt-buster-0.4.2.tgz", - "integrity": "sha1-eRwcvIDEjria0mnG/palTlNoWRk=", - "dev": true, - "requires": { - "cross-spawn-async": "2.2.5", - "resolve-bin": "0.3.0", - "when": "3.7.8", - "which": "1.3.0" - }, - "dependencies": { - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", - "dev": true - } - } - }, "grunt-contrib-clean": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz", @@ -7119,17 +6683,6 @@ } } }, - "grunt-contrib-compress": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-0.5.3.tgz", - "integrity": "sha1-ujtbL/Q4xFMFeeaWLKuAaWWA6+0=", - "dev": true, - "requires": { - "archiver": "0.4.10", - "lazystream": "0.1.0", - "prettysize": "0.0.3" - } - }, "grunt-contrib-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", @@ -7210,32 +6763,6 @@ } } }, - "grunt-contrib-watch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", - "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", - "dev": true, - "requires": { - "async": "1.5.2", - "gaze": "1.1.2", - "lodash": "3.10.1", - "tiny-lr": "0.2.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, "grunt-exec": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.7.tgz", @@ -7335,12 +6862,6 @@ } } }, - "grunt-line-remover": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/grunt-line-remover/-/grunt-line-remover-0.0.2.tgz", - "integrity": "sha1-OCIcxr64o2uCUnY4ddu2NIIh6i0=", - "dev": true - }, "grunt-markdown": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/grunt-markdown/-/grunt-markdown-0.7.0.tgz", @@ -7387,15 +6908,6 @@ "integrity": "sha1-252c5Z4v5J2id+nbwZXD4Rz7FsI=", "dev": true }, - "gruntify-eslint": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gruntify-eslint/-/gruntify-eslint-4.0.0.tgz", - "integrity": "sha512-wEa2WjMGVDzQbq1QmOiDX51/CfaAIS5xx1oSKIjfWVLl/fYbV7PtfWsUhuaQrPIy1se4Crpg3kZFZndw02l16g==", - "dev": true, - "requires": { - "eslint": "4.13.1" - } - }, "gzip-size": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", @@ -7743,45 +7255,6 @@ } } }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.15.0", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - }, - "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" - } - } - } - }, "insert-module-globals": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", @@ -8051,12 +7524,6 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -8084,12 +7551,6 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "is-resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", - "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", - "dev": true - }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -8384,12 +7845,6 @@ "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", @@ -8600,41 +8055,6 @@ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, - "lazystream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "integrity": "sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA=", - "dev": true, - "requires": { - "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", - "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 - } - } - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -8695,6 +8115,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, + "optional": true, "requires": { "prelude-ls": "1.1.2", "type-check": "0.3.2" @@ -8709,12 +8130,6 @@ "astw": "2.2.0" } }, - "livereload-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", - "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", - "dev": true - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -9671,12 +9086,6 @@ "minimatch": "3.0.4" } }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -9694,12 +9103,6 @@ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "dev": true }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -10105,6 +9508,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, + "optional": true, "requires": { "deep-is": "0.1.3", "fast-levenshtein": "2.0.6", @@ -10871,12 +10275,6 @@ "irregular-plurals": "1.4.0" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "policyfile": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", @@ -13128,12 +12526,6 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, - "prettysize": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz", - "integrity": "sha1-FK//amReWRpN3xxykZwjtBRhgaE=", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -14076,16 +13468,6 @@ "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", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", @@ -14095,23 +13477,6 @@ "path-parse": "1.0.5" } }, - "resolve-bin": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.3.0.tgz", - "integrity": "sha1-eY+1toraFbgPkGzjnVE0OhdWmqE=", - "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-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", @@ -14122,12 +13487,6 @@ "global-modules": "0.2.3" } }, - "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-protobuf-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.0.0.tgz", @@ -14180,35 +13539,11 @@ "inherits": "2.0.3" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "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", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "4.0.8" - } - }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -14933,12 +14268,6 @@ } } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -16339,52 +15668,6 @@ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" }, - "tiny-lr": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", - "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", - "dev": true, - "requires": { - "body-parser": "1.14.2", - "debug": "2.2.0", - "faye-websocket": "0.10.0", - "livereload-js": "2.2.2", - "parseurl": "1.3.2", - "qs": "5.1.0" - }, - "dependencies": { - "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" - } - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", - "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", - "dev": true - } - } - }, "tinycolor": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", @@ -16986,7 +16269,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "dev": true, + "optional": true }, "worldview-components": { "version": "1.5.3", diff --git a/package.json b/package.json index 022c98d653..86dda8b622 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,13 @@ "scripts": { "preinstall": "node version-check.js", "start": "node ./bin/www", - "test": "grunt test lint", + "test": "npm run lint && run-p test:server test:run", + "test:server": "buster-server -c", + "test:run": "buster-test && npm run test:end", + "test:end": "kill $(ps aux | grep '[b]uster-server' | awk '{print $2}')", "lint": "run-s lint:*", - "lint:css": "grunt stylelint", - "lint:js": "grunt eslint", + "lint:css": "stylelint ./web/css/**/*.css", + "lint:js": "eslint .", "e2e": "run-s --print-name --continue-on-error --silent e2e:*", "e2e:chrome": "nightwatch -e chrome", "e2e:firefox": "nightwatch -e firefox --skiptags wip", @@ -54,21 +57,16 @@ "express": "4.15.2", "geckodriver": "1.2.0", "grunt": "0.4.x", - "grunt-buster": "0.4.x", "grunt-contrib-clean": "1.0.x", - "grunt-contrib-compress": "0.5.x", "grunt-contrib-concat": "1.0.x", "grunt-contrib-copy": "1.0.x", - "grunt-contrib-watch": "^1.0.0", "grunt-exec": "0.4.x", "grunt-git-rev-parse": "0.1.x", - "grunt-line-remover": "0.0.x", "grunt-markdown": "0.7.x", "grunt-minjson": "0.4.x", "grunt-mkdir": "0.1.x", "grunt-rename": "0.1.x", "grunt-text-replace": "0.4.x", - "gruntify-eslint": "^4.0.0", "minimist": "^1.2.0", "moment": "2.13.x", "nightwatch": "^0.9.16", From d4c75378db29fef39de28fe7371246db6861e161 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 17:31:54 -0500 Subject: [PATCH 20/25] Fix CSS formatting error --- web/css/layers.modal.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/css/layers.modal.css b/web/css/layers.modal.css index bea1711d07..1b791d5a0e 100644 --- a/web/css/layers.modal.css +++ b/web/css/layers.modal.css @@ -518,7 +518,8 @@ line-height: 20px; } -.layers-all-header.has-checkbox.checked::before {color: white; +.layers-all-header.has-checkbox.checked::before { + color: #fff; content: '\2713'; background-color: #d54f21; } From 905337e5b703780cda8e45fb70da209721a4a135 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Fri, 8 Dec 2017 17:36:48 -0500 Subject: [PATCH 21/25] Add eslint to devDependencies --- package-lock.json | 395 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 2 files changed, 388 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8a7629dcd..f8d5f86197 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,6 +81,23 @@ } } }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, "active-x-obfuscator": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz", @@ -161,6 +178,12 @@ "integrity": "sha1-YFF/i9/iUQmF95I+zngZYwiO3Gs=", "dev": true }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1956,6 +1979,21 @@ "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": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -2095,6 +2133,12 @@ "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", "dev": true }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -2231,6 +2275,12 @@ } } }, + "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 + }, "clipboard": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", @@ -3574,8 +3624,7 @@ "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, - "optional": true + "dev": true }, "define-properties": { "version": "1.1.2", @@ -4310,6 +4359,131 @@ } } }, + "eslint": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.1.tgz", + "integrity": "sha512-UCJVV50RtLHYzBp1DZ8CMPtRSg4iVZvjgO9IJHIKyWU/AnJVjtdRikoUPLB29n5pzMB7TnsLQWf0V6VUJfoPfw==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "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.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "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": "11.1.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "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": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.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.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "globals": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", + "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 + }, + "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", @@ -4386,12 +4560,83 @@ "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" + }, + "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.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", + "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-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": { + "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" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "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" + }, + "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": "1.5.1", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", @@ -4707,6 +4952,17 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -4806,8 +5062,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true, - "optional": true + "dev": true }, "faye": { "version": "1.2.4", @@ -6229,6 +6484,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gather-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", @@ -7255,6 +7516,45 @@ } } }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.15.0", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "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" + } + } + } + }, "insert-module-globals": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", @@ -7524,6 +7824,12 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -7551,6 +7857,12 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -7845,6 +8157,12 @@ "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", @@ -8115,7 +8433,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, - "optional": true, "requires": { "prelude-ls": "1.1.2", "type-check": "0.3.2" @@ -9086,6 +9403,12 @@ "minimatch": "3.0.4" } }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -9103,6 +9426,12 @@ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -9508,7 +9837,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, - "optional": true, "requires": { "deep-is": "0.1.3", "fast-levenshtein": "2.0.6", @@ -10275,6 +10603,12 @@ "irregular-plurals": "1.4.0" } }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, "policyfile": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", @@ -13468,6 +13802,16 @@ "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", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", @@ -13487,6 +13831,12 @@ "global-modules": "0.2.3" } }, + "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-protobuf-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.0.0.tgz", @@ -13539,11 +13889,35 @@ "inherits": "2.0.3" } }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "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", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -14268,6 +14642,12 @@ } } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -16269,8 +16649,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true, - "optional": true + "dev": true }, "worldview-components": { "version": "1.5.3", diff --git a/package.json b/package.json index 86dda8b622..8283486518 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "cssnano": "^3.10.0", "cucumber": "^3.0.2", "cucumber-html-reporter": "^3.0.4", + "eslint": "^4.13.0", "eslint-config-standard": "^10.2.1", "eslint-plugin-import": "^2.8.0", "eslint-plugin-node": "^5.2.1", From 795c21b4cc4289d3a015d807323f9c605b05d0d2 Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 19 Dec 2017 09:57:08 -0500 Subject: [PATCH 22/25] Delay test run to avoid race condition --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8283486518..3cd6b98ad9 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "start": "node ./bin/www", "test": "npm run lint && run-p test:server test:run", "test:server": "buster-server -c", - "test:run": "buster-test && npm run test:end", + "test:run": "sleep 2 && buster-test && npm run test:end", "test:end": "kill $(ps aux | grep '[b]uster-server' | awk '{print $2}')", "lint": "run-s lint:*", "lint:css": "stylelint ./web/css/**/*.css", From 47ab4750c91b32a44b055ccf9418f276324eecce Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 19 Dec 2017 10:01:26 -0500 Subject: [PATCH 23/25] Add note about PhantomJS for Windows users --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4403c5772d..a9a0ccbc5e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,7 +42,9 @@ Please lint your code with `npm run lint`. Our style rules are defined in `.styl ### Unit Tests -All of the unit tests for this project need to pass before your submission will be accepted. You can run `npm test` in the command line after making changes to verify that the tests pass. If you add new functionality, please consider adding tests for that functionality as well. +All of the unit tests for this project need to pass before your submission will be accepted. You can run `npm build && npm test` in the command line after making changes to verify that the tests pass. If you add new functionality, please consider adding tests for that functionality as well. + +Note for Windows users: `npm test` may fail unless you [install PhantomJS manually](http://phantomjs.org/download.html). ### End-to-end Tests From 88a5fea8292830b174e5c288a7251c99f32e8ecd Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 19 Dec 2017 13:53:54 -0500 Subject: [PATCH 24/25] Capitalize MapRunningData --- test/main.js | 4 ++-- web/js/main.js | 4 ++-- web/js/map/runningdata.js | 2 +- web/js/map/ui.js | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/test/main.js b/test/main.js index 89417935be..e8aa437076 100644 --- a/test/main.js +++ b/test/main.js @@ -10,7 +10,7 @@ import { layersModel } from '../web/js/layers/model'; import { linkModel } from '../web/js/link/model'; import { parse as mapParser } from '../web/js/map/map'; import { mapModel } from '../web/js/map/model'; -import { mapRunningData } from '../web/js/map/runningdata'; +import { MapRunningData } from '../web/js/map/runningdata'; import palettes from '../web/js/palettes/palettes'; import { palettesModel } from '../web/js/palettes/model'; import { parse as projectionParser } from '../web/js/projection/projection'; @@ -42,7 +42,7 @@ window.wv = { map: { parse: mapParser, model: mapModel, - runningdata: mapRunningData + runningdata: MapRunningData }, palettes: palettes, proj: { diff --git a/web/js/main.js b/web/js/main.js index f45b19f828..31a4fddf0b 100644 --- a/web/js/main.js +++ b/web/js/main.js @@ -30,7 +30,7 @@ import {parse as mapParser} from './map/map'; import {mapModel} from './map/model'; import {mapui} from './map/ui'; import {mapRotate} from './map/rotation'; -import {mapRunningData} from './map/runningdata'; +import {MapRunningData} from './map/runningdata'; import {mapLayerBuilder} from './map/layerbuilder'; import {mapDatelineBuilder} from './map/datelinebuilder'; import {mapPrecacheTile} from './map/precachetile'; @@ -200,7 +200,7 @@ window.onload = () => { // HACK: Map needs to be created before the data download model var mapComponents = { Rotation: mapRotate, - Runningdata: mapRunningData, + Runningdata: MapRunningData, Layerbuilder: mapLayerBuilder, Dateline: mapDatelineBuilder, Precache: mapPrecacheTile diff --git a/web/js/map/runningdata.js b/web/js/map/runningdata.js index 9839bbd39c..7017703f60 100644 --- a/web/js/map/runningdata.js +++ b/web/js/map/runningdata.js @@ -3,7 +3,7 @@ import util from '../util/util'; import loDifference from 'lodash/difference'; import loEach from 'lodash/each'; -export function mapRunningData(models) { +export function MapRunningData(models) { var self; var $productsBox; var productsBoxHeight; diff --git a/web/js/map/ui.js b/web/js/map/ui.js index ace0a125db..2c7363f598 100644 --- a/web/js/map/ui.js +++ b/web/js/map/ui.js @@ -25,7 +25,7 @@ import olProj from 'ol/proj'; import {MapRotate} from './rotation'; import {mapDateLineBuilder} from './datelinebuilder'; import {mapLayerBuilder} from './layerbuilder'; -import {mapRunningData} from './runningdata'; +import {MapRunningData} from './runningdata'; import {mapPrecacheTile} from './precachetile'; import Cache from 'cachai'; @@ -41,7 +41,7 @@ export function mapui(models, config) { var createLayer; var precache = mapPrecacheTile(models, config, cache, self); - var dataRunner = self.runningdata = new mapRunningData(models); + var dataRunner = self.runningdata = new MapRunningData(models); self.mapIsbeingDragged = false; self.mapIsbeingZoomed = false; From 464ba64b12fb384a8fbaea6e6f42372c63f4502d Mon Sep 17 00:00:00 2001 From: Jo Sprague Date: Tue, 19 Dec 2017 16:23:07 -0500 Subject: [PATCH 25/25] Fix shutting down test server on Windows --- package-lock.json | 6 ++++++ package.json | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index f8d5f86197..ab76b84901 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13898,6 +13898,12 @@ "is-promise": "2.1.0" } }, + "run-script-os": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.0.2.tgz", + "integrity": "sha1-mAMz9vakFMFebwLFh5FkgM3ilk8=", + "dev": true + }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", diff --git a/package.json b/package.json index 3cd6b98ad9..9ac0af628c 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "test": "npm run lint && run-p test:server test:run", "test:server": "buster-server -c", "test:run": "sleep 2 && buster-test && npm run test:end", - "test:end": "kill $(ps aux | grep '[b]uster-server' | awk '{print $2}')", + "test:end": "run-script-os", + "test:end:darwin:linux": "pkill -f buster-server", + "test:end:win32": "tskill node", "lint": "run-s lint:*", "lint:css": "stylelint ./web/css/**/*.css", "lint:js": "eslint .", @@ -77,6 +79,7 @@ "postcss-cli": "^4.1.1", "postcss-import": "^11.0.0", "postcss-url": "^7.2.1", + "run-script-os": "^1.0.2", "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", "stylelint": "^8.0.0",