From b66e6ef15952134ae95cad2c953c9cf74119f488 Mon Sep 17 00:00:00 2001 From: Mat Brown Date: Mon, 15 Aug 2016 14:19:47 -0400 Subject: [PATCH 1/4] Fix broken CSS test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Wasn’t returning the promise, so failed without reporting failure * Also was asserting the wrong thing Nice. --- spec/examples/validations/css.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/examples/validations/css.spec.js b/spec/examples/validations/css.spec.js index aab3275184..0bf40b3954 100644 --- a/spec/examples/validations/css.spec.js +++ b/spec/examples/validations/css.spec.js @@ -47,9 +47,9 @@ describe('css', () => { assertFailsValidationWith(css, stylesheet, 'missing-semicolon') ); - it('fails at the line missing the semicolon', () => { - assertFailsValidationAtLine(css, stylesheet, 1); - }); + it('fails at the line missing the semicolon', () => + assertFailsValidationAtLine(css, stylesheet, 2) + ); }); context('extra tokens after value', () => { From a98b9fb7babf5764415da04ee422e208fdc6d473 Mon Sep 17 00:00:00 2001 From: Mat Brown Date: Mon, 15 Aug 2016 14:44:05 -0400 Subject: [PATCH 2/4] Update htmllint and add check-dependencies --- npm-shrinkwrap.json | 1988 +++++++++++++++++++++++++++++++++++++------ package.json | 3 +- 2 files changed, 1717 insertions(+), 274 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index dc25e406d2..aaf55b8482 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -192,16 +192,66 @@ } } }, - "babel-generator": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.8.0.tgz", + "babel-core": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.13.2.tgz", "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "babel-generator": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz" + }, + "babel-register": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + } + } + }, + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-template": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz" + }, + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + }, + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" } } }, + "babel-eslint": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz" + }, "babel-helper-builder-react-jsx": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.8.0.tgz", @@ -296,28 +346,10 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz" }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.8.0.tgz", - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.8.0.tgz" - }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz" }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.8.0.tgz" - }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz" @@ -326,10 +358,6 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.8.0.tgz" }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.8.0.tgz" - }, "babel-plugin-transform-es2015-literals": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz" @@ -342,10 +370,6 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz" }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.8.0.tgz" - }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.8.0.tgz" @@ -386,29 +410,311 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.8.0.tgz" }, - "babel-plugin-transform-regenerator": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.8.0.tgz" - }, "babel-plugin-transform-strict-mode": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.8.0.tgz" }, - "babel-regenerator-runtime": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/babel-regenerator-runtime/-/babel-regenerator-runtime-6.5.0.tgz" - }, - "babel-register": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.8.0.tgz", + "babel-polyfill": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.13.0.tgz", "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz" + }, "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-preset-es2015": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.13.2.tgz", + "dependencies": { + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.10.1.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-template": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz" + }, + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.9.0.tgz", + "dependencies": { + "babel-helper-define-map": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.9.0.tgz" + }, + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-template": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz" + }, + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.9.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + } + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.8.0.tgz" + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.12.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-template": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz", + "dependencies": { + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + } + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.12.0.tgz" + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.11.4.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-template": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.9.0.tgz" + }, + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.11.4.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "babel-traverse": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.13.0.tgz" + }, + "babel-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.13.0.tgz", + "dependencies": { + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + } + } + } + } + } + } + }, + "babel-preset-react": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.11.1.tgz", + "dependencies": { + "babel-plugin-transform-react-jsx-self": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.11.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + } + } } } }, @@ -456,6 +762,10 @@ } } }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz" + }, "babylon": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.8.0.tgz" @@ -530,6 +840,10 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" }, + "bower": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/bower/-/bower-1.7.9.tgz" + }, "bowser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.4.1.tgz" @@ -546,6 +860,10 @@ "version": "1.8.4", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.4.tgz" }, + "brfs-babel": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/brfs-babel/-/brfs-babel-1.0.0.tgz" + }, "brorand": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" @@ -558,14 +876,144 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.1.tgz" }, + "browser-sync": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.14.0.tgz", + "dependencies": { + "browser-sync-ui": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-0.6.0.tgz" + }, + "chokidar": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.5.1.tgz" + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz" + }, + "http-proxy": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.13.3.tgz" + }, + "micromatch": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.8.tgz" + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "dependencies": { + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + } + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz" + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "dependencies": { + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "dependencies": { + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + } + } + } + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz" + }, + "socket.io": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.6.tgz", + "dependencies": { + "engine.io": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.9.tgz", + "dependencies": { + "accepts": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", + "dependencies": { + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + }, + "negotiator": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" + } + } + } + } + }, + "socket.io-client": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", + "dependencies": { + "component-emitter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz" + }, + "engine.io-client": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" + } + } + } + } + } + } + }, + "yargs": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.7.1.tgz", + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + }, + "set-blocking": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-1.0.0.tgz" + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" + } + } + } + } + }, "browser-sync-client": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.4.2.tgz" }, - "browser-sync-ui": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-0.5.19.tgz" - }, "browserify": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.0.1.tgz" @@ -586,6 +1034,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz" }, + "browserify-incremental": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/browserify-incremental/-/browserify-incremental-3.1.1.tgz", + "dependencies": { + "JSONStream": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz" + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz" + } + } + }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" @@ -718,10 +1180,42 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz" + }, + "chai-as-promised": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" }, + "check-dependencies": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/check-dependencies/-/check-dependencies-0.12.0.tgz", + "dependencies": { + "bower-config": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-1.4.0.tgz", + "dependencies": { + "mout": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz" + }, + "osenv": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz" + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" + } + } + } + } + }, "chokidar": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.4.3.tgz" @@ -1034,16 +1528,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz" }, - "doctrine": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.1.tgz", - "dependencies": { - "esutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" - } - } - }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -1088,10 +1572,6 @@ } } }, - "eazy-logger": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-2.1.3.tgz" - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -1112,32 +1592,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz" }, - "engine.io": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.8.tgz", - "dependencies": { - "accepts": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz" - }, - "mime-db": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - }, - "mime-types": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz" - }, - "negotiator": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" - } - } - }, - "engine.io-client": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.8.tgz" - }, "engine.io-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", @@ -1232,13 +1686,97 @@ } } }, - "espree": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.4.tgz", + "eslint": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", "dependencies": { - "acorn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.1.0.tgz" + "doctrine": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", + "dependencies": { + "esutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" + } + } + }, + "espree": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + }, + "glob": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + } + } + }, + "globals": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.9.0.tgz" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + }, + "shelljs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz" + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz" + } + } + }, + "eslint-plugin-react": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-5.2.2.tgz", + "dependencies": { + "doctrine": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.2.tgz", + "dependencies": { + "esutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" + } + } + }, + "jsx-ast-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.3.1.tgz" + } + } + }, + "eslint_d": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint_d/-/eslint_d-3.1.2.tgz", + "dependencies": { + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" } } }, @@ -1984,6 +2522,20 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" }, + "git-rev-sync": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-1.6.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" + }, + "shelljs": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.0.tgz" + } + } + }, "github-api": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/github-api/-/github-api-1.1.0.tgz", @@ -2096,6 +2648,98 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + } + } + }, + "gulp-concat": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.0.tgz", + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" + } + } + }, + "gulp-cssnano": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.2.tgz" + }, + "gulp-postcss": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-6.1.1.tgz" + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "dependencies": { + "vinyl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.1.1.tgz" + } + } + }, + "gulp-uglify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.4.tgz", + "dependencies": { + "uglify-js": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dependencies": { + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + } + } + } + } + } + } + }, + "gulp-util": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" + } + } + }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz" @@ -2179,8 +2823,26 @@ "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz" }, "htmllint": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/htmllint/-/htmllint-0.3.0.tgz" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/htmllint/-/htmllint-0.4.0.tgz", + "dependencies": { + "bulk-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.0.tgz", + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" + } + } + } + } + } + } }, "htmlparser2": { "version": "3.9.0", @@ -2232,6 +2894,10 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.1.tgz" }, + "immutable-devtools": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/immutable-devtools/-/immutable-devtools-0.0.7.tgz" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" @@ -2334,10 +3000,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" }, - "is-integer": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz" - }, "is-my-json-valid": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz" @@ -2436,85 +3098,399 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" }, - "jshint": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.2.tgz", + "jshint": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.2.tgz", + "dependencies": { + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + } + } + }, + "json-diff": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-diff/-/json-diff-0.3.1.tgz" + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "json3": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz" + }, + "json5": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + }, + "jsonfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.0.tgz" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + }, + "jsonparse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" + }, + "jsonpointer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "jstransform": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "dependencies": { + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" + }, + "source-map": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz" + } + } + }, + "karma": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.2.0.tgz", + "dependencies": { + "body-parser": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + }, + "http-errors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "dependencies": { + "setprototypeof": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + }, + "statuses": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + } + } + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz" + }, + "type-is": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + } + } + } + } + }, + "combine-lists": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.0.tgz", + "dependencies": { + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz" + } + } + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz" + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "dependencies": { + "custom-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz" + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" + } + } + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "dependencies": { + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" + }, + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "dependencies": { + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "dependencies": { + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz" + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz" + } + } + } + } + } + } + }, + "glob": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + } + } + }, + "isbinaryfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.1.tgz" + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + } + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "qjobs": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.4.tgz" + }, + "socket.io": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.7.tgz", + "dependencies": { + "engine.io": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.10.tgz", + "dependencies": { + "accepts": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", + "dependencies": { + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + }, + "negotiator": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz" + } + } + } + } + }, + "socket.io-client": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", + "dependencies": { + "component-emitter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz" + }, + "engine.io-client": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" + } + } + } + } + } + } + }, + "tmp": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz" + }, + "useragent": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.9.tgz", + "dependencies": { + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz" + } + } + } + } + }, + "karma-browserify": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-5.1.0.tgz", "dependencies": { - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" - }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz" + "hat": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz" }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" }, "lodash": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" } } }, - "json-diff": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-diff/-/json-diff-0.3.1.tgz" - }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" + "karma-chai": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz" }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "karma-chai-as-promised": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/karma-chai-as-promised/-/karma-chai-as-promised-0.1.2.tgz" }, - "json3": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz" + "karma-chrome-launcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz", + "dependencies": { + "fs-access": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.0.tgz", + "dependencies": { + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz" + } + } + }, + "which": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", + "dependencies": { + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" + } + } + } + } }, - "json5": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + "karma-firefox-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.0.tgz" }, - "jsonfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.0.tgz" + "karma-mocha": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.1.1.tgz" }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + "karma-mocha-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.1.0.tgz" }, - "jsonparse": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" + "karma-phantomjs-launcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.1.tgz" }, - "jsonpointer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + "karma-safari-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz" }, - "jstransform": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz" - } - } + "karma-sinon-chai": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-1.2.3.tgz" }, "keymirror": { "version": "0.1.1", @@ -2590,10 +3566,6 @@ "version": "4.11.2", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.11.2.tgz" }, - "lodash._baseclone": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.6.tgz" - }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" @@ -2642,10 +3614,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.0.8.tgz" }, - "lodash.clonedeep": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.1.tgz" - }, "lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" @@ -2775,6 +3743,38 @@ } } }, + "mocha": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz", + "dependencies": { + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" + }, + "glob": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" + } + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz" + } + } + }, "module-deps": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.0.5.tgz" @@ -3883,6 +4883,16 @@ } } }, + "npm-shrinkwrap": { + "version": "200.5.1", + "resolved": "https://registry.npmjs.org/npm-shrinkwrap/-/npm-shrinkwrap-200.5.1.tgz", + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + } + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" @@ -3939,16 +4949,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz" }, - "opt-merger": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/opt-merger/-/opt-merger-1.1.1.tgz", - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - } - } - }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -4065,6 +5065,188 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.4.tgz" }, + "phantomjs-prebuilt": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.12.tgz", + "dependencies": { + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz" + }, + "extract-zip": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "dependencies": { + "concat-stream": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" + } + } + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "dependencies": { + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "dependencies": { + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + } + } + } + } + } + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz" + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz" + }, + "request": { + "version": "2.74.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "dependencies": { + "aws4": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" + }, + "bl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + }, + "jsprim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "dependencies": { + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + }, + "json-schema": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + } + } + }, + "sshpk": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dashdash": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + }, + "getpass": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + }, + "jsbn": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + }, + "tweetnacl": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + }, + "tough-cookie": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + } + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "dependencies": { + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" + } + } + }, + "which": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.10.tgz", + "dependencies": { + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" + } + } + } + } + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -4095,6 +5277,16 @@ } } }, + "postcss": { + "version": "5.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.21.tgz", + "dependencies": { + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" + } + } + }, "postcss-calc": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.2.1.tgz" @@ -4107,6 +5299,272 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.3.4.tgz" }, + "postcss-cssnext": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-2.7.0.tgz", + "dependencies": { + "caniuse-api": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.5.0.tgz", + "dependencies": { + "lodash.memoize": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.0.tgz" + }, + "lodash.uniq": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.3.0.tgz", + "dependencies": { + "lodash._baseuniq": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "dependencies": { + "lodash._createset": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz" + } + } + } + } + }, + "shelljs": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.0.tgz", + "dependencies": { + "glob": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "minimatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz" + } + } + } + } + } + } + }, + "pixrem": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-3.0.1.tgz" + }, + "pleeease-filters": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-3.0.0.tgz", + "dependencies": { + "onecolor": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.4.2.tgz" + } + } + }, + "postcss-apply": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.3.0.tgz" + }, + "postcss-color-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-2.0.1.tgz", + "dependencies": { + "css-color-function": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + }, + "rgb": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz" + } + } + } + } + }, + "postcss-color-gray": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-3.0.0.tgz", + "dependencies": { + "color": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/color/-/color-0.7.3.tgz", + "dependencies": { + "color-string": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.2.4.tgz", + "dependencies": { + "color-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.0.1.tgz" + } + } + } + } + } + } + }, + "postcss-color-hex-alpha": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-2.0.0.tgz", + "dependencies": { + "color": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/color/-/color-0.10.1.tgz" + } + } + }, + "postcss-color-hwb": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-2.0.0.tgz", + "dependencies": { + "color": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/color/-/color-0.10.1.tgz" + } + } + }, + "postcss-color-rebeccapurple": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-2.0.0.tgz", + "dependencies": { + "color": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/color/-/color-0.9.0.tgz" + } + } + }, + "postcss-color-rgba-fallback": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-2.2.0.tgz", + "dependencies": { + "rgb-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-1.0.0.tgz" + } + } + }, + "postcss-custom-media": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-5.0.1.tgz" + }, + "postcss-custom-properties": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-5.0.1.tgz", + "dependencies": { + "balanced-match": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" + } + } + }, + "postcss-custom-selectors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-3.0.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz" + } + } + }, + "postcss-font-variant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-2.0.0.tgz" + }, + "postcss-initial": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-1.5.1.tgz", + "dependencies": { + "lodash.template": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.2.5.tgz", + "dependencies": { + "lodash.assigninwith": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/lodash.assigninwith/-/lodash.assigninwith-4.0.7.tgz" + }, + "lodash.templatesettings": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.0.1.tgz", + "dependencies": { + "lodash.escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.0.tgz" + } + } + }, + "lodash.tostring": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.3.tgz" + } + } + } + } + }, + "postcss-media-minmax": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-2.1.2.tgz" + }, + "postcss-nesting": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-2.3.1.tgz" + }, + "postcss-pseudo-class-any-link": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-1.0.0.tgz", + "dependencies": { + "postcss-selector-parser": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz", + "dependencies": { + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz" + } + } + } + } + }, + "postcss-pseudoelements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-3.0.0.tgz" + }, + "postcss-replace-overflow-wrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-1.0.0.tgz" + }, + "postcss-selector-matches": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-2.0.1.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz" + } + } + }, + "postcss-selector-not": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-2.0.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz" + } + } + } + } + }, "postcss-discard-comments": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz" @@ -4260,8 +5718,8 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" }, "qs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.1.0.tgz" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" }, "query-string": { "version": "4.1.0", @@ -4501,16 +5959,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" }, - "resp-modifier": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.0.tgz", - "dependencies": { - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" - } - } - }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" @@ -4561,16 +6009,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz" }, - "send": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz", - "dependencies": { - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - } - } - }, "sequencify": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz" @@ -4579,10 +6017,6 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz" }, - "serve-static": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.2.tgz" - }, "sha.js": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" @@ -4615,6 +6049,28 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz" }, + "sinon": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.5.tgz", + "dependencies": { + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz" + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz" + } + } + }, + "sinon-chai": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.8.0.tgz" + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" @@ -4631,10 +6087,6 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" }, - "socket.io": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.5.tgz" - }, "socket.io-adapter": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz", @@ -4655,16 +6107,6 @@ } } }, - "socket.io-client": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.5.tgz", - "dependencies": { - "component-emitter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz" - } - } - }, "socket.io-parser": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz", @@ -4953,10 +6395,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - }, "try-call": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/try-call/-/try-call-0.0.2.tgz" @@ -4993,36 +6431,6 @@ "version": "0.7.10", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz" }, - "ucfirst": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ucfirst/-/ucfirst-1.0.0.tgz" - }, - "uglify-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" - } - } - }, "uglify-save-license": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz" @@ -5113,6 +6521,28 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" }, + "vinyl-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.0.tgz", + "dependencies": { + "bl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" + } + } + }, "vinyl-fs": { "version": "0.3.14", "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", @@ -5147,6 +6577,32 @@ } } }, + "vinyl-source-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz", + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" + } + } + }, "vinyl-sourcemaps-apply": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz" @@ -5225,20 +6681,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" }, - "yargs": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.4.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" - } - } - }, "yargs-parser": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.0.tgz", diff --git a/package.json b/package.json index 085caa6d67..9c8a2b5b69 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "esprima": "^2.7.2", "firebase": "^2.4.1", "github-api": "^1.1.0", - "htmllint": "^0.3.0", + "htmllint": "^0.4.0", "i18next-client": "^1.10.2", "immutable": "^3.7.5", "jshint": "^2.9.1", @@ -85,6 +85,7 @@ "browserify-incremental": "^3.0.1", "chai": "^3.5.0", "chai-as-promised": "^5.3.0", + "check-dependencies": "^0.12.0", "eslint": "^2.1.0", "eslint-plugin-react": "^5.0.1", "eslint_d": "^3.1.0", From deb21de634d2a9dd5b94a5edd7ee05af830275be Mon Sep 17 00:00:00 2001 From: Mat Brown Date: Mon, 15 Aug 2016 13:39:24 -0400 Subject: [PATCH 3/4] Improved handling of tag closing errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problems with closing HTML tags can look like a variety of things to our HTML linters and parsers. More confusingly, these things can overlap. This pull improves detection of unclosed tags by handling `htmllint`’s `tag-close` error, and uses suppression to avoid confusing, overlapping error messages. Problem 1: Close tag is missing ```html My Page
Page content ``` This error seems straightforward: there is an opening `
` tag that doesn’t have a corresponding closing tag. However, it can also be interpreted as a *mismatched* close tag: namely, you’re trying to close the `
` with a ``. Intuitively, we want to report the first error, and now we do. Problem 2: Mismatched opening and closing tags ```html My Page
Page content ``` In this case, you didn’t necessarily forget to close the `
`; you’re just closing it with the wrong closing tag. Unfortunately, from the parsers’ standpoint, this looks the same as Problem 1: you have an opening tag without a closing tag, and you also have a mismatched closing tag where the `
` should be closed. Absent a great way to tell the difference between this situation and the previous one, we still report this as a missing closing tag for the `
`. The error message, “Your `
` tag needs to be closed by a `
` tag”, is clear enough for this situation. Problem 3: Incomplete closing tag ```html My Page
Page content
``` The behavior we want here is also straightforward: point out that the `
` tag is missing the closing angle bracket. However, the error in the `
` means that the `` also isn’t parsed correctly, so the linters also catch a missing `` tag. The latter error isn’t directly actionable, so we suppress it. Problem 4: Closing tag with no corresponding opening tag ```html My Page
Page content
``` In this case, the `` is unambiguously a mismatched closing tag, and we can report it as such. --- spec/examples/validations/html.spec.js | 40 +++++++++++++++++++------- src/validations/html/htmllint.js | 13 +++++++++ src/validations/html/slowparse.js | 2 ++ 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/spec/examples/validations/html.spec.js b/spec/examples/validations/html.spec.js index 3b821767c5..7163e9934b 100644 --- a/spec/examples/validations/html.spec.js +++ b/spec/examples/validations/html.spec.js @@ -18,31 +18,49 @@ function htmlWithBody(body) { `; } -function assertPassesHtmlValidation(source) { - return assertPassesValidation(html, source); -} - -function assertFailsHtmlValidationWith(source, ...errors) { - return assertFailsValidationWith(html, source, ...errors); -} - describe('html', () => { it('allows valid HTML', () => - assertPassesHtmlValidation(htmlWithBody('')) + assertPassesValidation(html, htmlWithBody('')) ); it('fails with banned attribute', () => - assertFailsHtmlValidationWith( + assertFailsValidationWith( + html, htmlWithBody('

'), 'banned-attributes.align' ) ); it('gives error message for missing structure and unclosed p tag', () => - assertFailsHtmlValidationWith( + assertFailsValidationWith( + html, '

T', 'unclosed-tag', 'doctype' ) ); + + it('generates unclosed-tag error for missing closing tag', () => + assertFailsValidationWith( + html, + htmlWithBody('

'), + 'unclosed-tag' + ) + ); + + it('generates unterminated-close-tag error for unfinished closing tag', () => + assertFailsValidationWith( + html, + htmlWithBody('
+ assertFailsValidationWith( + html, + htmlWithBody('
'), + 'mismatched-close-tag' + ) + ); }); diff --git a/src/validations/html/htmllint.js b/src/validations/html/htmllint.js index 76a10b13eb..fc27b769d5 100644 --- a/src/validations/html/htmllint.js +++ b/src/validations/html/htmllint.js @@ -55,6 +55,18 @@ const errorMap = { E027: () => ({reason: 'missing-title'}), E028: () => ({reason: 'duplicated-title'}), + + E042: (error, source) => { + const lines = source.split('\n'); + const tagNameExpr = /[^\s>]+/; + const tag = tagNameExpr.exec(lines[error.line - 1].slice(error.column))[0]; + + return { + reason: 'unclosed-tag', + payload: {tag}, + suppresses: ['mismatched-close-tag'], + }; + }, }; const htmlLintOptions = { @@ -91,6 +103,7 @@ const htmlLintOptions = { 'tt', 'strike', ], + 'tag-close': true, 'tag-name-match': true, 'tag-name-lowercase': true, 'title-max-length': 0, diff --git a/src/validations/html/slowparse.js b/src/validations/html/slowparse.js index 1efc641d54..9029f5d088 100644 --- a/src/validations/html/slowparse.js +++ b/src/validations/html/slowparse.js @@ -50,6 +50,7 @@ const errorMap = { UNCLOSED_TAG: (error) => ({ reason: 'unclosed-tag', payload: {tag: error.openTag.name}, + suppresses: ['mismatched-close-tag'], }), UNEXPECTED_CLOSE_TAG: (error) => ({ @@ -71,6 +72,7 @@ const errorMap = { UNTERMINATED_CLOSE_TAG: (error) => ({ reason: 'unterminated-close-tag', payload: {tag: error.closeTag.name}, + suppresses: ['unclosed-tag'], }), UNTERMINATED_COMMENT: () => ({reason: 'unterminated-comment'}), From 0e10db1c84b248b0fc3d817a4a91788c27a18bb4 Mon Sep 17 00:00:00 2001 From: Mat Brown Date: Mon, 15 Aug 2016 14:13:05 -0400 Subject: [PATCH 4/4] Opt in to warning on dropped errors --- src/config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/config.js b/src/config.js index 01ad29d8c8..2239cf3c93 100644 --- a/src/config.js +++ b/src/config.js @@ -5,8 +5,7 @@ const nodeEnv = (process.env.NODE_ENV || 'development'); export default { nodeEnv, logReduxActions: () => process.env.LOG_REDUX_ACTIONS === 'true', - warnOnDroppedErrors: nodeEnv === 'development', - stubSVGs: nodeEnv === 'test', + warnOnDroppedErrors: process.env.WARN_ON_DROPPED_ERRORS === 'true', firebaseApp: process.env.FIREBASE_APP || 'blistering-inferno-9896',