From 1f5a964267d03f1a28669cb4883fa359cb801692 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Tue, 4 Jul 2017 12:02:05 +0200 Subject: [PATCH 1/9] build: Add webpack lint settings and style code with eslint --fix We now use the webpack eslint settings that make sense in the cli. Also use the new --fix of eslint to automatically beautify the code --- .eslintrc.js | 73 ++++++++++++++++++++++++++++++++++++++++ .eslintrc.json | 55 ------------------------------ .jsbeautifyrc | 25 -------------- package.json | 91 ++++++++++++++++++++++++-------------------------- 4 files changed, 116 insertions(+), 128 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json delete mode 100644 .jsbeautifyrc diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000000..1e370bf19ee --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,73 @@ +module.exports = { + "root": true, + "plugins": ["node"], + "extends": ["eslint:recommended", "plugin:node/recommended"], + "env": { + "node": true, + "es6": true, + "jest": true + }, + "parserOptions": { "ecmaVersion": 2017 }, + "rules": { + "quote-props": ["error", "consistent-as-needed"], + "no-dupe-keys": "error", + "quotes": ["error", "double"], + "no-undef": "error", + "no-extra-semi": "error", + "semi": "error", + "no-template-curly-in-string": "error", + "no-caller": "error", + "yoda": "error", + "eqeqeq": "error", + "global-require": "off", + "brace-style": "error", + "key-spacing": "error", + "space-in-parens": ["error", "never"], + "space-infix-ops": "error", + "indent": ["error", "tab", { "SwitchCase": 1 }], + "no-extra-bind": "warn", + "no-empty": "off", + "no-multiple-empty-lines": "error", + "no-multi-spaces": "error", + "no-process-exit": "off", + "no-trailing-spaces": "error", + "no-use-before-define": "off", + "no-unused-vars": ["error", { "args": "none" }], + "no-unsafe-negation": "error", + "no-loop-func": "warn", + "space-before-function-paren": ["error", "never"], + "space-before-blocks": "error", + "object-curly-spacing": ["error", "always"], + "object-curly-newline": ["error", { "consistent": true }], + "keyword-spacing": ["error", { + "after": true, + "overrides": { + "const": { "after": true }, + "try": { "after": true }, + "throw": { "after": true }, + "case": { "after": true }, + "return": { "after": true }, + "finally": { "after": true }, + "do": { "after": true } + } + }], + "no-console": "off", + "valid-jsdoc": "error", + "node/no-unsupported-features": ["error", { "version": 4 }], + "node/no-deprecated-api": "error", + "node/no-missing-import": "error", + "node/no-missing-require": [ + "error", + { + "allowModules": [ + "webpack" + ] + } + ], + "node/no-unpublished-bin": "error", + "node/no-unpublished-require": "error", + "eol-last": ["error", "always"], + "newline-per-chained-call": "off", + "node/process-exit-as-throw": "error" + } +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 0f9922f37e8..00000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module" - }, - "parser": "babel-eslint", - "env": { - "node": true, - "commonjs": true, - "es6": true, - "jest": true - }, - "extends": "eslint:recommended", - "plugins": [ - "node" - ], - "rules": { - "indent": [ - "error", - "tab" - ], - "linebreak-style": [ - "error", - "unix" - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ], - "no-unused-vars": 1, - "no-console": 0, - "node/exports-style": [ - "error", - "module.exports" - ], - "node/no-unsupported-features": "error", - "node/no-deprecated-api": "error", - "node/no-missing-import": "error", - "node/no-missing-require": [ - "error", - { - "allowModules": [ - "webpack" - ] - } - ], - "node/no-unpublished-bin": "error", - "node/no-unpublished-require": "error", - "node/process-exit-as-throw": "error" - } -} diff --git a/.jsbeautifyrc b/.jsbeautifyrc deleted file mode 100644 index 79b04984674..00000000000 --- a/.jsbeautifyrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "js": { - "allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"], - "brace_style": "collapse", - "break_chained_methods": false, - "e4x": true, - "eval_code": false, - "end_with_newline": true, - "indent_char": "\t", - "indent_level": 0, - "indent_size": 1, - "indent_with_tabs": true, - "jslint_happy": false, - "jslint_happy_align_switch_case": true, - "space_after_anon_function": false, - "keep_array_indentation": false, - "keep_function_indentation": false, - "max_preserve_newlines": 2, - "preserve_newlines": true, - "space_before_conditional": false, - "space_in_paren": false, - "unescape_strings": false, - "wrap_line_length": 0 - } -} \ No newline at end of file diff --git a/package.json b/package.json index 4fca0b3a08e..6c870ddd12c 100644 --- a/package.json +++ b/package.json @@ -16,65 +16,60 @@ "node": ">=4.0.0" }, "scripts": { - "lint:bin": "eslint ./bin", - "lint:lib": "eslint ./lib", - "lint:test": "eslint ./__mocks__", + "lint": "eslint \"**/*.js\"", + "lint:codeOnly": "eslint \"{lib,bin,__mocks__}/**/!(__testfixtures__)/*.js\" \"{lib,bin,__mocks__}/**.js\"", "lint:staged": "lint-staged", - "lint": "npm run lint:bin && npm run lint:lib && npm run lint:test", - "install-commit-validator": "fit-commit-js install", - "test": "jest --coverage --runInBand" + "pretest": "npm run lint", + "test": "jest --coverage" }, + "lint-staged": { + "{lib,bin,__mocks__}/**/!(__testfixtures__)/**.js": [ + "eslint --fix", + "git add" + ] + }, + "pre-commit": "lint:staged", "dependencies": { "babel-code-frame": "^6.22.0", - "babel-core": "^6.21.0", - "babel-preset-es2015": "^6.18.0", - "babel-preset-stage-3": "^6.17.0", - "chalk": "^1.1.3", - "cross-spawn": "^5.0.1", + "babel-core": "^6.25.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-stage-3": "^6.24.1", + "chalk": "^2.0.1", + "cross-spawn": "^5.1.0", "diff": "^3.2.0", - "enhanced-resolve": "^3.0.2", - "fit-commit-js": "^0.3.1", - "global-modules": "^0.2.3", - "got": "^6.6.3", - "inquirer": "^2.0.0", - "interpret": "^1.0.1", - "jscodeshift": "^0.3.30", - "listr": "^0.11.0", - "loader-utils": "^0.2.16", + "enhanced-resolve": "^3.3.0", + "got": "^7.1.0", + "inquirer": "^3.1.1", + "interpret": "^1.0.3", + "jscodeshift": "^0.3.32", + "listr": "^0.12.0", + "loader-utils": "^1.1.0", "lodash": "^4.17.4", "p-each-series": "^1.0.0", "p-lazy": "^1.0.0", - "prettier": "^1.2.2", "recast": "git://github.com/kalcifer/recast.git#bug/allowbreak", - "resolve-cwd": "^2.0.0", - "supports-color": "^3.1.2", - "webpack": "^2.5.1", - "webpack-addons": "^1.1.2", - "yargs": "^6.5.0", - "yeoman-environment": "^1.6.6", + "rx": "^4.1.0", + "supports-color": "^4.1.0", + "webpack": "^3.0.0", + "webpack-addons": "1.1.2", + "webpack-addons-ylvis": "0.0.34", + "yargs": "^8.0.2", + "yeoman-environment": "^2.0.0", "yeoman-generator": "git://github.com/ev1stensberg/generator.git#Feature-getArgument" }, "devDependencies": { - "ajv": "^4.11.3", - "ajv-keywords": "^1.5.1", - "babel-cli": "^6.18.0", - "babel-eslint": "^6.1.2", - "babel-jest": "^19.0.0", - "babel-polyfill": "^6.20.0", - "eslint": "^3.12.2", - "eslint-plugin-node": "^3.0.5", - "jest": "^19.0.2", - "lint-staged": "^3.2.8", - "pre-commit": "^1.2.2" - }, - "lint-staged": { - "*.js": [ - "eslint --fix", - "git add" - ] - }, - "pre-commit": "lint:staged", - "jest": { - "testEnvironment": "node" + "ajv": "^5.2.0", + "ajv-keywords": "^2.1.0", + "babel-cli": "^6.24.1", + "babel-eslint": "^7.2.3", + "babel-jest": "^20.0.3", + "babel-polyfill": "^6.23.0", + "eslint": "^4.1.1", + "eslint-plugin-node": "^5.1.0", + "eslint-plugin-prettier": "^2.1.2", + "jest": "^20.0.4", + "lint-staged": "^4.0.0", + "pre-commit": "^1.2.2", + "prettier": "^1.5.2" } } From 43603c4168a47bbc0634ceaefd0a98c44c9410c1 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Tue, 18 Jul 2017 14:26:47 +0200 Subject: [PATCH 2/9] build: update dependencies and add package-lock to repo --- package-lock.json | 5450 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 23 +- 2 files changed, 5464 insertions(+), 9 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000000..26cb7e615d4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5450 @@ +{ + "name": "webpack-cli", + "version": "1.3.3", + "lockfileVersion": 1, + "dependencies": { + "abab": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", + "dev": true + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=" + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true + }, + "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, + "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 + } + } + }, + "ajv": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", + "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", + "dev": true + }, + "ajv-keywords": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=" + }, + "alter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=" + }, + "app-root-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=" + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=" + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "ast-traverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", + "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=" + }, + "ast-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.2.tgz", + "integrity": "sha1-LMGZedFcZVEIv1ZTI7jn7jh1H2s=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-cli": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", + "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", + "dev": true, + "dependencies": { + "fs-readdir-recursive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", + "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=" + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=" + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=" + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=" + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=" + }, + "babel-helper-define-map": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=" + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=" + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=" + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=" + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=" + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=" + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=" + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=" + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=" + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=" + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", + "dev": true + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", + "dev": true + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=" + }, + "babel-plugin-constant-folding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", + "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4=" + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", + "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U=" + }, + "babel-plugin-eval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", + "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo=" + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", + "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4=" + }, + "babel-plugin-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", + "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", + "dev": true, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + } + } + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", + "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w=" + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", + "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM=" + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", + "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY=" + }, + "babel-plugin-proto-to-assign": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", + "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", + "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o=" + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", + "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw=" + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", + "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c=" + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", + "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc=" + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", + "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8=" + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=" + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=" + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=" + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=" + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=" + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=" + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=" + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=" + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=" + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=" + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=" + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=" + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=" + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=" + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=" + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=" + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=" + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=" + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=" + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=" + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=" + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=" + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=" + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=" + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=" + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=" + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=" + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=" + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=" + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=" + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=" + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=" + }, + "babel-plugin-transform-regenerator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=" + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=" + }, + "babel-plugin-undeclared-variables-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=" + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", + "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=" + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "dev": true + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=" + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=" + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=" + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=" + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=" + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=" + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=" + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=" + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=" + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" + }, + "binaryextensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.0.0.tgz", + "integrity": "sha1-5ZfRp6ajVYotHHJBoWyZll5qpA8=" + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" + }, + "bn.js": { + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" + }, + "breakable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", + "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=" + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=" + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=" + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=" + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=" + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=" + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=" + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=" + }, + "chalk": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "dependencies": { + "ansi-styles": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=" + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=" + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "dev": true + }, + "cipher-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=" + }, + "circular-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=" + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=" + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=" + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "cloneable-readable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=" + }, + "color-name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", + "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-type-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-1.1.0.tgz", + "integrity": "sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=" + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=" + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true + }, + "crypto-browserify": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=" + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=" + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-fns": { + "version": "1.28.5", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", + "integrity": "sha1-JXz8RdMi30XvVlhmWWfuhBzXP68=" + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=" + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "defs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", + "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "yargs": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", + "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=" + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=" + }, + "detect-conflict": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=" + }, + "detective": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=" + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=" + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "editions": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz", + "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=" + }, + "ejs": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", + "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=" + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "enhanced-resolve": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==" + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=" + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=" + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + }, + "es5-ext": { + "version": "0.10.23", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", + "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=" + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=" + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=" + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=" + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=" + }, + "eslint": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.1.1.tgz", + "integrity": "sha1-+svfz+Pg+s06i4DcmMTmwTrlgt8=", + "dev": true, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "string-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", + "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "dev": true, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.1.0.tgz", + "integrity": "sha512-MzAAnEfNOl6g871VgjKswHkyG+bqsXX2//SWXwNkyREvWAPUoU8X6ZvcrambHEGecUIbE0pAVPzzfKU/p9H5lg==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.1.2.tgz", + "integrity": "sha1-S5D07n+Sv74ukmAX4cpA62KJZeo=", + "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 + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "dev": true + } + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=" + }, + "exec-sh": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", + "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=" + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", + "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fast-deep-equal": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", + "integrity": "sha1-XG9FmaumszPuM0Li7ZeGcvEAH40=" + }, + "fast-diff": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", + "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=" + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + } + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=" + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true + }, + "flow-parser": { + "version": "0.49.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.49.1.tgz", + "integrity": "sha1-amqTLNagyPUXSnYSR1tLcWT18NA=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", + "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "optional": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=" + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "optional": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "optional": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true + }, + "sshpk": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "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=", + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=" + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "optional": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "gh-got": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", + "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" + } + } + }, + "github-username": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==" + }, + "global-prefix": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.1.tgz", + "integrity": "sha512-iPchqvFtW8olnZW+24RkCFpldmNC+dFTBlmsnIsWDGAL3U8K1k7p7EKHbKWWLGMk3vXJ+kz+ZAuD9sBkTGlOzg==" + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=" + } + } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "grouped-queue": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "has-symbol-support-x": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.3.0.tgz", + "integrity": "sha512-kLtS+N9qwz+Buc6TUfcW5iGb59hLLr5qfxTACi/0uGpH1u5NMNWsdU57KoYRBywvPykeRmu5qfB5x0chpDSWlg==" + }, + "has-to-string-tag-x": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.3.0.tgz", + "integrity": "sha512-Fu9Nwv8/VNJMvKjkldzXHO+yeX+TCelwUQ9dGW2LrAfHfHi6zVqQt+Qjilf0qGHvpl6Fap6o8aDhWhMt5hY/1g==" + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==" + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=" + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=" + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "html-encoding-sniffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + }, + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, + "inquirer": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz", + "integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==", + "dependencies": { + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=" + }, + "external-editor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=" + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "string-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", + "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=" + } + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" + }, + "is-integer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", + "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=" + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, + "is-scoped": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.10.tgz", + "integrity": "sha1-8n5ecSXI3hP2qAZhr3j1EuVDmys=", + "dev": true, + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true + } + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.3.tgz", + "integrity": "sha1-klsjkWPqvdaMxASPUsL6T4mez6c=", + "dev": true + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dev": true, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "dev": true, + "dependencies": { + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", + "dev": true + }, + "istextorbinary": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.1.0.tgz", + "integrity": "sha1-2+0qb1G+L3R1to+JRlgRFBt1iHQ=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==" + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "dev": true + }, + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "dev": true + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "dev": true + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", + "dev": true + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", + "dev": true + }, + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", + "dev": true + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", + "dev": true + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", + "dev": true + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", + "dev": true + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", + "dev": true + }, + "jest-haste-map": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", + "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=", + "dev": true + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", + "dev": true + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", + "dev": true + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", + "dev": true + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", + "dev": true + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", + "dev": true + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", + "dev": true + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", + "dev": true + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", + "dev": true + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", + "dev": true + }, + "jest-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", + "dev": true + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", + "dev": true + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dev": true + }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", + "dev": true, + "dependencies": { + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true + } + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jschardet": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.4.2.tgz", + "integrity": "sha1-KqEH8UKvQSHRRWWdRPUIMJYeaZo=" + }, + "jscodeshift": { + "version": "0.3.32", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.3.32.tgz", + "integrity": "sha1-3s5etgLxY0DY2VTH+WrJB8UC6rs=", + "dependencies": { + "ast-types": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.11.tgz", + "integrity": "sha1-NxF3u1kjL/XOqh0J7lytcFsaWqk=" + }, + "babel-core": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", + "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", + "dependencies": { + "babylon": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", + "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=" + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "detect-indent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=" + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "globals": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", + "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08=" + }, + "home-or-tmp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=" + }, + "js-tokens": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", + "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=" + }, + "json5": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "recast": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.6.tgz", + "integrity": "sha1-Sw+4L+sdELO9YtNJQ0Jtmz7TDUw=", + "dependencies": { + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + } + } + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=" + }, + "source-map-support": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", + "dependencies": { + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=" + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" + }, + "leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true + }, + "lint-staged": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-4.0.0.tgz", + "integrity": "sha1-wVZp9ZhhSm5oCQMD4XWnmdSODYU=", + "dev": true + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + }, + "indent-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", + "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz", + "integrity": "sha1-RNwBuww0oDxXIVTU0Izemx3FYg8=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "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==" + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=" + }, + "mem-fs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=" + }, + "mem-fs-editor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", + "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=" + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=" + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=" + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=" + }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=" + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "optional": 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 + }, + "node-dir": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=" + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==" + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + }, + "npm-path": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.3.tgz", + "integrity": "sha1-Fc/04ciaONp39W9gVbJPl137K74=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=" + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=" + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-lazy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + }, + "p-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", + "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=" + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-timeout": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.0.tgz", + "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=" + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=" + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-exists": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", + "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=" + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "pre-commit": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha1-287g7p3nI15X95xW186UZBpp7sY=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "prettier": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.5.2.tgz", + "integrity": "sha512-f55mvineQ5yc36cLX4n4RWP6JH6MLcfi5f9MVsjpfBs4MVSG2GYT4v6cukzmvkIOvmNOdCZfDSMY3hQcMcDQbQ==" + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==" + }, + "read-chunk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.0.0.tgz", + "integrity": "sha1-Mkbod4KRFs7AWWdMTV8wD3qSYfM=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==" + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=" + }, + "recast": { + "version": "git://github.com/kalcifer/recast.git#b66a17eee9e072338744b947a406d3f134bc0b0d" + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" + }, + "regenerator": { + "version": "0.8.40", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz", + "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", + "dependencies": { + "ast-types": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", + "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w=" + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "recast": { + "version": "0.10.33", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=" + } + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "regenerator-transform": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=" + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" + }, + "regexpu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", + "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", + "dependencies": { + "ast-types": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.15.tgz", + "integrity": "sha1-ju8IJ/BN/w7IhXupJavj/qYZTlI=" + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "recast": { + "version": "0.10.43", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz", + "integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=", + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + } + } + } + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=" + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" + }, + "resolve-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.0.tgz", + "integrity": "sha1-d6G4+Rl6YOdzO08Nl35pzNm1/YY=", + "dependencies": { + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=" + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=" + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + } + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=" + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=" + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=" + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" + }, + "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=" + }, + "rxjs": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.1.tgz", + "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scoped-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=" + }, + "shellwords": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-fmt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=" + }, + "simple-is": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=" + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=" + }, + "staged-git-files": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-0.0.4.tgz", + "integrity": "sha1-15fhtVHKemOd7AI33G60u5vhfTU=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=" + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==" + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=" + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==" + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "stringmap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=" + }, + "stringset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "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 + }, + "supports-color": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", + "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + } + } + }, + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "tapable": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=" + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=" + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "textextensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.1.0.tgz", + "integrity": "sha1-G+DcKg3CRNRL6KCa9qha+5PE28M=" + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=" + }, + "tmp": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", + "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "try-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=" + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tryor": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dependencies": { + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=" + } + } + }, + "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=", + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==" + } + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=" + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=" + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", + "dev": true + }, + "watchpack": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + } + } + }, + "webidl-conversions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz", + "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=", + "dev": true + }, + "webpack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.0.0.tgz", + "integrity": "sha1-7pvOvyEkf3FTy0EBaMq0XjpZ1Nc=", + "dependencies": { + "acorn": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=" + }, + "ajv": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", + "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=" + }, + "ajv-keywords": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=" + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==" + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=" + } + } + }, + "webpack-addons": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.2.tgz", + "integrity": "sha1-goWxgfl6coIMHWhAIliEYOT3xrc=" + }, + "webpack-addons-ylvis": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/webpack-addons-ylvis/-/webpack-addons-ylvis-0.0.34.tgz", + "integrity": "sha1-lxPUEIil8IZ29nCl7HBItDKDHFo=", + "dependencies": { + "webpack-addons": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-0.0.4.tgz", + "integrity": "sha1-s8TV1qGmcrhCDQB16fd9KM1wWhI=" + } + } + }, + "whatwg-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "dev": true, + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "worker-farm": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.4.1.tgz", + "integrity": "sha512-tgFAtgOYLPutkAyzgpS6VJFL5HY+0ui1Tvua+fITgz8ByaJTMFGtazR6xxQfwfiAcbwE+2fLG/K49wc2TfwCNw==", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=" + }, + "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 + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + } + } + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=" + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + }, + "os-locale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" + }, + "string-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", + "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=" + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + }, + "yeoman-environment": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.0.tgz", + "integrity": "sha1-2vovxRLBaMuDE0U+UxjmRzEmWRU=", + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "untildify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", + "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=" + } + } + }, + "yeoman-generator": { + "version": "git://github.com/ev1stensberg/generator.git#9e24fa31c85302ca1145ae34fc68b4f133251ca0", + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + }, + "inquirer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", + "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "yeoman-environment": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-1.6.6.tgz", + "integrity": "sha1-zYX6Z9FWBg5EDXgH1+988NLR1nE=" + } + } + } + } +} diff --git a/package.json b/package.json index 6c870ddd12c..9be61218288 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,11 @@ "babel-preset-stage-3": "^6.24.1", "chalk": "^2.0.1", "cross-spawn": "^5.1.0", - "diff": "^3.2.0", + "diff": "^3.3.0", "enhanced-resolve": "^3.3.0", + "global-modules": "^1.0.0", "got": "^7.1.0", - "inquirer": "^3.1.1", + "inquirer": "^3.2.0", "interpret": "^1.0.3", "jscodeshift": "^0.3.32", "listr": "^0.12.0", @@ -47,10 +48,11 @@ "lodash": "^4.17.4", "p-each-series": "^1.0.0", "p-lazy": "^1.0.0", + "prettier": "^1.5.3", "recast": "git://github.com/kalcifer/recast.git#bug/allowbreak", "rx": "^4.1.0", - "supports-color": "^4.1.0", - "webpack": "^3.0.0", + "supports-color": "^4.2.0", + "webpack": "^3.3.0", "webpack-addons": "1.1.2", "webpack-addons-ylvis": "0.0.34", "yargs": "^8.0.2", @@ -58,18 +60,21 @@ "yeoman-generator": "git://github.com/ev1stensberg/generator.git#Feature-getArgument" }, "devDependencies": { - "ajv": "^5.2.0", + "ajv": "^5.2.2", "ajv-keywords": "^2.1.0", "babel-cli": "^6.24.1", "babel-eslint": "^7.2.3", "babel-jest": "^20.0.3", "babel-polyfill": "^6.23.0", - "eslint": "^4.1.1", + "eslint": "^4.2.0", "eslint-plugin-node": "^5.1.0", "eslint-plugin-prettier": "^2.1.2", "jest": "^20.0.4", - "lint-staged": "^4.0.0", - "pre-commit": "^1.2.2", - "prettier": "^1.5.2" +<<<<<<< HEAD +======= + "jest-cli": "^20.0.4", +>>>>>>> 6badbfd... f + "lint-staged": "^4.0.2", + "pre-commit": "^1.2.2" } } From 2990b40ac09847735e07e4edd16d0e1bd7111e57 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Tue, 4 Jul 2017 12:32:30 +0200 Subject: [PATCH 3/9] build: Add jest-cli as dev dependency --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 9be61218288..36bad7531f5 100644 --- a/package.json +++ b/package.json @@ -70,10 +70,7 @@ "eslint-plugin-node": "^5.1.0", "eslint-plugin-prettier": "^2.1.2", "jest": "^20.0.4", -<<<<<<< HEAD -======= "jest-cli": "^20.0.4", ->>>>>>> 6badbfd... f "lint-staged": "^4.0.2", "pre-commit": "^1.2.2" } From 445125fb7e85657c998780026b4db708bae1f236 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Tue, 4 Jul 2017 16:22:05 +0200 Subject: [PATCH 4/9] style: fix lintin errors and coding style according to webpack settings --- __mocks__/creator/validate-options.mock.js | 10 +- __mocks__/inquirer/resolve.mock.js | 27 +- bin/config-yargs.js | 317 +++++----- bin/convert-argv.js | 539 ++++++++++-------- bin/process-options.js | 162 +++--- bin/webpack.js | 359 ++++++------ lib/creator/index.js | 35 +- lib/creator/index.test.js | 14 +- .../transformations/context/context.js | 18 +- .../transformations/context/context.test.js | 10 +- .../transformations/devtool/devtool.js | 19 +- .../transformations/devtool/devtool.test.js | 12 +- lib/creator/transformations/entry/entry.js | 31 +- .../transformations/entry/entry.test.js | 33 +- .../transformations/externals/externals.js | 42 +- .../externals/externals.test.js | 86 +-- lib/creator/transformations/index.js | 105 ++-- lib/creator/transformations/module/module.js | 21 +- .../transformations/module/module.test.js | 155 ++--- lib/creator/transformations/node/node.js | 14 +- lib/creator/transformations/node/node.test.js | 10 +- lib/creator/transformations/other/amd.js | 14 +- lib/creator/transformations/other/bail.js | 19 +- lib/creator/transformations/other/cache.js | 19 +- lib/creator/transformations/other/merge.js | 30 +- .../transformations/other/other.test.js | 20 +- lib/creator/transformations/other/profile.js | 18 +- lib/creator/transformations/output/output.js | 15 +- .../transformations/output/output.test.js | 18 +- .../performance/performance.js | 15 +- .../performance/performance.test.js | 13 +- .../transformations/plugins/plugins.js | 18 +- .../transformations/plugins/plugins.test.js | 15 +- .../transformations/resolve/resolve.js | 18 +- .../transformations/resolve/resolve.test.js | 36 +- lib/creator/transformations/stats/stats.js | 31 +- .../transformations/stats/stats.test.js | 18 +- lib/creator/transformations/target/target.js | 20 +- .../transformations/target/target.test.js | 8 +- .../transformations/top-scope/top-scope.js | 5 +- .../top-scope/top-scope.test.js | 8 +- lib/creator/transformations/watch/watch.js | 19 +- .../transformations/watch/watch.test.js | 12 +- .../transformations/watch/watchOptions.js | 15 +- .../watch/watchOptions.test.js | 16 +- lib/creator/utils/run-prettier.js | 25 +- lib/creator/utils/validate-options.js | 10 +- lib/creator/utils/validate-options.spec.js | 24 +- lib/creator/yeoman/utils/entry.js | 65 +-- lib/creator/yeoman/utils/module.js | 8 +- lib/creator/yeoman/utils/plugins.js | 4 +- lib/creator/yeoman/utils/tooltip.js | 18 +- lib/creator/yeoman/utils/validate.js | 8 +- lib/creator/yeoman/webpack-adapter.js | 6 +- lib/creator/yeoman/webpack-generator.js | 431 +++++++------- lib/initialize.js | 8 +- lib/migrate.js | 129 +++-- .../bannerPlugin/bannerPlugin.js | 20 +- .../bannerPlugin/bannerPlugin.test.js | 10 +- lib/transformations/defineTest.js | 82 ++- .../extractTextPlugin/extractTextPlugin.js | 38 +- .../extractTextPlugin.test.js | 6 +- lib/transformations/index.js | 39 +- lib/transformations/index.test.js | 20 +- .../loaderOptionsPlugin.js | 24 +- .../loaderOptionsPlugin.test.js | 12 +- lib/transformations/loaders/loaders.js | 341 ++++++----- lib/transformations/loaders/loaders.test.js | 22 +- lib/transformations/outputPath/outputPath.js | 58 +- .../outputPath/outputPath.test.js | 10 +- .../removeDeprecatedPlugins.js | 39 +- .../removeDeprecatedPlugins.test.js | 14 +- .../removeJsonLoader/removeJsonLoader.js | 70 ++- .../removeJsonLoader/removeJsonLoader.test.js | 12 +- lib/transformations/resolve/resolve.js | 33 +- lib/transformations/resolve/resolve.test.js | 6 +- .../uglifyJsPlugin/uglifyJsPlugin.js | 37 +- .../uglifyJsPlugin/uglifyJsPlugin.test.js | 10 +- lib/transformations/utils.js | 213 ++++--- lib/transformations/utils.test.js | 301 +++++----- lib/utils/WebpackOptionsValidationError.js | 288 ++++++---- lib/utils/npm-exists.js | 20 +- lib/utils/npm-exists.spec.js | 15 +- lib/utils/npm-packages-exists.js | 40 +- lib/utils/resolve-packages.js | 64 ++- lib/utils/resolve-packages.spec.js | 29 +- lib/utils/validateSchema.js | 18 +- 87 files changed, 2836 insertions(+), 2230 deletions(-) diff --git a/__mocks__/creator/validate-options.mock.js b/__mocks__/creator/validate-options.mock.js index 593f51f2f6f..e1db92d7382 100644 --- a/__mocks__/creator/validate-options.mock.js +++ b/__mocks__/creator/validate-options.mock.js @@ -1,17 +1,19 @@ -const fs = require('fs'); -const path = require('path'); +"use strict"; + +const fs = require("fs"); +const path = require("path"); function getPath(part) { return path.join(process.cwd(), part); } function validateOptions(opts) { - return Object.keys(opts).forEach( (location) => { + return Object.keys(opts).forEach(location => { let part = getPath(opts[location]); try { fs.readFileSync(part); } catch (err) { - throw new Error('Did not find the file'); + throw new Error("Did not find the file"); } }); } diff --git a/__mocks__/inquirer/resolve.mock.js b/__mocks__/inquirer/resolve.mock.js index ac47b722773..dfd5b164117 100644 --- a/__mocks__/inquirer/resolve.mock.js +++ b/__mocks__/inquirer/resolve.mock.js @@ -1,12 +1,16 @@ -'use strict'; -const path = require('path'); +"use strict"; + +const path = require("path"); function mockPromise(value) { - return (value || {}).then ? value : { - then: function (callback) { + const isValueAPromise = (value || {}).then; + const mockedPromise = { + then: function(callback) { return mockPromise(callback(value)); } }; + + return isValueAPromise ? value : mockedPromise; } function spawnChild(pkg) { return pkg; @@ -14,14 +18,17 @@ function spawnChild(pkg) { function getLoc(option) { let packageModule = []; - option.filter( (pkg) => { - mockPromise(spawnChild(pkg)).then( () => { + option.filter(pkg => { + mockPromise(spawnChild(pkg)).then(() => { try { - let loc = path.join('..', '..', 'node_modules', pkg); + let loc = path.join("..", "..", "node_modules", pkg); packageModule.push(loc); - } catch(err) { - throw new Error('Package wasn\'t validated correctly..' + - 'Submit an issue for', pkg, 'if this persists'); + } catch (err) { + throw new Error( + "Package wasn't validated correctly.." + "Submit an issue for", + pkg, + "if this persists" + ); } }); return packageModule; diff --git a/bin/config-yargs.js b/bin/config-yargs.js index e75d9b7b5f3..c7ca20a2b67 100644 --- a/bin/config-yargs.js +++ b/bin/config-yargs.js @@ -1,278 +1,291 @@ -var CONFIG_GROUP = 'Config options:'; -var BASIC_GROUP = 'Basic options:'; -var MODULE_GROUP = 'Module options:'; -var OUTPUT_GROUP = 'Output options:'; -var ADVANCED_GROUP = 'Advanced options:'; -var RESOLVE_GROUP = 'Resolving options:'; -var OPTIMIZE_GROUP = 'Optimizing options:'; -var INIT_GROUP = 'Initialization:'; +var CONFIG_GROUP = "Config options:"; +var BASIC_GROUP = "Basic options:"; +var MODULE_GROUP = "Module options:"; +var OUTPUT_GROUP = "Output options:"; +var ADVANCED_GROUP = "Advanced options:"; +var RESOLVE_GROUP = "Resolving options:"; +var OPTIMIZE_GROUP = "Optimizing options:"; +var INIT_GROUP = "Initialization:"; module.exports = function(yargs) { yargs - .help('help') - .alias('help', 'h', '?') + .help("help") + .alias("help", "h", "?") .version() - .alias('version', 'v') + .alias("version", "v") .options({ - 'init': { - type: 'boolean', - describe: 'Initializes a new webpack configuration or loads a' + '\n' + - 'plugin if specified', + init: { + type: "boolean", + describe: + "Initializes a new webpack configuration or loads a" + + "\n" + + "plugin if specified", group: INIT_GROUP }, - 'migrate': { - type: 'boolean', - describe: 'Migrate your webpack configuration from webpack 1 to webpack 2', + migrate: { + type: "boolean", + describe: + "Migrate your webpack configuration from webpack 1 to webpack 2", group: INIT_GROUP }, - 'config': { - type: 'string', - describe: 'Path to the config file', + config: { + type: "string", + describe: "Path to the config file", group: CONFIG_GROUP, - defaultDescription: 'webpack.config.js or webpackfile.js', + defaultDescription: "webpack.config.js or webpackfile.js", requiresArg: true }, - 'env': { - describe: 'Environment passed to the config, when it is a function', + env: { + describe: "Environment passed to the config, when it is a function", group: CONFIG_GROUP }, - 'context': { - type: 'string', - describe: 'The root directory for resolving entry point and stats', + context: { + type: "string", + describe: "The root directory for resolving entry point and stats", group: BASIC_GROUP, - defaultDescription: 'The current directory', + defaultDescription: "The current directory", requiresArg: true }, - 'entry': { - type: 'string', - describe: 'The entry point', + entry: { + type: "string", + describe: "The entry point", group: BASIC_GROUP, requiresArg: true }, - 'module-bind': { - type: 'string', - describe: 'Bind an extension to a loader', + "module-bind": { + type: "string", + describe: "Bind an extension to a loader", group: MODULE_GROUP, requiresArg: true }, - 'module-bind-post': { - type: 'string', - describe: '', + "module-bind-post": { + type: "string", + describe: "", group: MODULE_GROUP, requiresArg: true }, - 'module-bind-pre': { - type: 'string', - describe: '', + "module-bind-pre": { + type: "string", + describe: "", group: MODULE_GROUP, requiresArg: true }, - 'output-path': { - type: 'string', - describe: 'The output path for compilation assets', + "output-path": { + type: "string", + describe: "The output path for compilation assets", group: OUTPUT_GROUP, - defaultDescription: 'The current directory', + defaultDescription: "The current directory", requiresArg: true }, - 'output-filename': { - type: 'string', - describe: 'The output filename of the bundle', + "output-filename": { + type: "string", + describe: "The output filename of the bundle", group: OUTPUT_GROUP, - defaultDescription: '[name].js', + defaultDescription: "[name].js", requiresArg: true }, - 'output-chunk-filename': { - type: 'string', - describe: 'The output filename for additional chunks', + "output-chunk-filename": { + type: "string", + describe: "The output filename for additional chunks", group: OUTPUT_GROUP, - defaultDescription: 'filename with [id] instead of [name] or [id] prefixed', + defaultDescription: + "filename with [id] instead of [name] or [id] prefixed", requiresArg: true }, - 'output-source-map-filename': { - type: 'string', - describe: 'The output filename for the SourceMap', + "output-source-map-filename": { + type: "string", + describe: "The output filename for the SourceMap", group: OUTPUT_GROUP, requiresArg: true }, - 'output-public-path': { - type: 'string', - describe: 'The public path for the assets', + "output-public-path": { + type: "string", + describe: "The public path for the assets", group: OUTPUT_GROUP, requiresArg: true }, - 'output-jsonp-function': { - type: 'string', - describe: 'The name of the jsonp function used for chunk loading', + "output-jsonp-function": { + type: "string", + describe: "The name of the jsonp function used for chunk loading", group: OUTPUT_GROUP, requiresArg: true }, - 'output-pathinfo': { - type: 'boolean', - describe: 'Include a comment with the request for every dependency (require, import, etc.)', + "output-pathinfo": { + type: "boolean", + describe: + "Include a comment with the request for every dependency (require, import, etc.)", group: OUTPUT_GROUP }, - 'output-library': { - type: 'string', - describe: 'Expose the exports of the entry point as library', + "output-library": { + type: "string", + describe: "Expose the exports of the entry point as library", group: OUTPUT_GROUP, requiresArg: true }, - 'output-library-target': { - type: 'string', - describe: 'The type for exposing the exports of the entry point as library', + "output-library-target": { + type: "string", + describe: + "The type for exposing the exports of the entry point as library", group: OUTPUT_GROUP, requiresArg: true }, - 'records-input-path': { - type: 'string', - describe: 'Path to the records file (reading)', + "records-input-path": { + type: "string", + describe: "Path to the records file (reading)", group: ADVANCED_GROUP, requiresArg: true }, - 'records-output-path': { - type: 'string', - describe: 'Path to the records file (writing)', + "records-output-path": { + type: "string", + describe: "Path to the records file (writing)", group: ADVANCED_GROUP, requiresArg: true }, - 'records-path': { - type: 'string', - describe: 'Path to the records file', + "records-path": { + type: "string", + describe: "Path to the records file", group: ADVANCED_GROUP, requiresArg: true }, - 'define': { - type: 'string', - describe: 'Define any free var in the bundle', + define: { + type: "string", + describe: "Define any free var in the bundle", group: ADVANCED_GROUP, requiresArg: true }, - 'target': { - type: 'string', - describe: 'The targeted execution environment', + target: { + type: "string", + describe: "The targeted execution environment", group: ADVANCED_GROUP, requiresArg: true }, - 'cache': { - type: 'boolean', - describe: 'Enable in memory caching', + cache: { + type: "boolean", + describe: "Enable in memory caching", default: null, group: ADVANCED_GROUP, - defaultDescription: 'It\'s enabled by default when watching' + defaultDescription: "It's enabled by default when watching" }, - 'watch': { - type: 'boolean', - alias: 'w', - describe: 'Watch the filesystem for changes', + watch: { + type: "boolean", + alias: "w", + describe: "Watch the filesystem for changes", group: BASIC_GROUP }, - 'watch-stdin': { - type: 'boolean', - alias: 'stdin', - describe: 'Exit the process when stdin is closed', + "watch-stdin": { + type: "boolean", + alias: "stdin", + describe: "Exit the process when stdin is closed", group: ADVANCED_GROUP }, - 'watch-aggregate-timeout': { - describe: 'Timeout for gathering changes while watching', + "watch-aggregate-timeout": { + describe: "Timeout for gathering changes while watching", group: ADVANCED_GROUP, requiresArg: true }, - 'watch-poll': { - type: 'boolean', - describe: 'The polling interval for watching (also enable polling)', + "watch-poll": { + type: "boolean", + describe: "The polling interval for watching (also enable polling)", group: ADVANCED_GROUP }, - 'hot': { - type: 'boolean', - describe: 'Enables Hot Module Replacement', + hot: { + type: "boolean", + describe: "Enables Hot Module Replacement", group: ADVANCED_GROUP }, - 'debug': { - type: 'boolean', - describe: 'Switch loaders to debug mode', + debug: { + type: "boolean", + describe: "Switch loaders to debug mode", group: BASIC_GROUP }, - 'devtool': { - type: 'string', - describe: 'Enable devtool for better debugging experience (Example: --devtool eval-cheap-module-source-map)', + devtool: { + type: "string", + describe: + "Enable devtool for better debugging experience (Example: --devtool eval-cheap-module-source-map)", group: BASIC_GROUP, requiresArg: true }, - 'resolve-alias': { - type: 'string', - describe: 'Setup a module alias for resolving (Example: jquery-plugin=jquery.plugin)', + "resolve-alias": { + type: "string", + describe: + "Setup a module alias for resolving (Example: jquery-plugin=jquery.plugin)", group: RESOLVE_GROUP, requiresArg: true }, - 'resolve-extensions': { - 'type': 'array', - describe: 'Setup extensions that should be used to resolve modules (Example: --resolve-extensions .es6 .js)', + "resolve-extensions": { + type: "array", + describe: + "Setup extensions that should be used to resolve modules (Example: --resolve-extensions .es6 .js)", group: RESOLVE_GROUP, requiresArg: true }, - 'resolve-loader-alias': { - type: 'string', - describe: 'Setup a loader alias for resolving', + "resolve-loader-alias": { + type: "string", + describe: "Setup a loader alias for resolving", group: RESOLVE_GROUP, requiresArg: true }, - 'optimize-max-chunks': { - describe: 'Try to keep the chunk count below a limit', + "optimize-max-chunks": { + describe: "Try to keep the chunk count below a limit", group: OPTIMIZE_GROUP, requiresArg: true }, - 'optimize-min-chunk-size': { - describe: 'Try to keep the chunk size above a limit', + "optimize-min-chunk-size": { + describe: "Try to keep the chunk size above a limit", group: OPTIMIZE_GROUP, requiresArg: true }, - 'optimize-minimize': { - type: 'boolean', - describe: 'Minimize javascript and switches loaders to minimizing', + "optimize-minimize": { + type: "boolean", + describe: "Minimize javascript and switches loaders to minimizing", group: OPTIMIZE_GROUP }, - 'prefetch': { - type: 'string', - describe: 'Prefetch this request (Example: --prefetch ./file.js)', + prefetch: { + type: "string", + describe: "Prefetch this request (Example: --prefetch ./file.js)", group: ADVANCED_GROUP, requiresArg: true }, - 'provide': { - type: 'string', - describe: 'Provide these modules as free vars in all modules (Example: --provide jQuery=jquery)', + provide: { + type: "string", + describe: + "Provide these modules as free vars in all modules (Example: --provide jQuery=jquery)", group: ADVANCED_GROUP, requiresArg: true }, - 'labeled-modules': { - type: 'boolean', - describe: 'Enables labeled modules', + "labeled-modules": { + type: "boolean", + describe: "Enables labeled modules", group: ADVANCED_GROUP }, - 'plugin': { - type: 'string', - describe: 'Load this plugin', + plugin: { + type: "string", + describe: "Load this plugin", group: ADVANCED_GROUP, requiresArg: true }, - 'bail': { - type: 'boolean', - describe: 'Abort the compilation on first error', + bail: { + type: "boolean", + describe: "Abort the compilation on first error", group: ADVANCED_GROUP }, - 'profile': { - type: 'boolean', - describe: 'Profile the compilation and include information in stats', + profile: { + type: "boolean", + describe: "Profile the compilation and include information in stats", group: ADVANCED_GROUP }, - 'd': { - type: 'boolean', - describe: 'shortcut for --debug --devtool eval-cheap-module-source-map --output-pathinfo', + d: { + type: "boolean", + describe: + "shortcut for --debug --devtool eval-cheap-module-source-map --output-pathinfo", group: BASIC_GROUP }, - 'p': { - type: 'boolean', - describe: 'shortcut for --optimize-minimize --define process.env.NODE_ENV=\'production\'', + p: { + type: "boolean", + describe: + "shortcut for --optimize-minimize --define process.env.NODE_ENV='production'", group: BASIC_GROUP } - }).strict(); + }) + .strict(); }; diff --git a/bin/convert-argv.js b/bin/convert-argv.js index cd16639191f..29dc5062918 100644 --- a/bin/convert-argv.js +++ b/bin/convert-argv.js @@ -1,47 +1,54 @@ -var path = require('path'); -var fs = require('fs'); +"use strict"; + +var path = require("path"); +var fs = require("fs"); fs.existsSync = fs.existsSync || path.existsSync; -var interpret = require('interpret'); +var interpret = require("interpret"); module.exports = function(yargs, argv, convertOptions) { - var options = []; // Shortcuts - if(argv.d) { + if (argv.d) { argv.debug = true; - argv['output-pathinfo'] = true; - if(!argv.devtool) { - argv.devtool = 'eval-cheap-module-source-map'; + argv["output-pathinfo"] = true; + if (!argv.devtool) { + argv.devtool = "eval-cheap-module-source-map"; } } - if(argv.p) { - argv['optimize-minimize'] = true; - argv['define'] = [].concat(argv['define'] || []).concat('process.env.NODE_ENV=\'production\''); + if (argv.p) { + argv["optimize-minimize"] = true; + argv["define"] = [] + .concat(argv["define"] || []) + .concat("process.env.NODE_ENV='production'"); } var configFileLoaded = false; var configFiles = []; var extensions = Object.keys(interpret.extensions).sort(function(a, b) { - return a === '.js' ? -1 : b === '.js' ? 1 : a.length - b.length; + return a === ".js" ? -1 : b === ".js" ? 1 : a.length - b.length; }); - var defaultConfigFiles = ['webpack.config', 'webpackfile'].map(function(filename) { - return extensions.map(function(ext) { - return { - path: path.resolve(filename + ext), - ext: ext - }; - }); - }).reduce(function(a, i) { - return a.concat(i); - }, []); + var defaultConfigFiles = ["webpack.config", "webpackfile"] + .map(function(filename) { + return extensions.map(function(ext) { + return { + path: path.resolve(filename + ext), + ext: ext + }; + }); + }) + .reduce(function(a, i) { + return a.concat(i); + }, []); var i; - if(argv.config) { + if (argv.config) { var getConfigExtension = function getConfigExtension(configPath) { - for(i = extensions.length - 1; i >= 0; i--) { + for (i = extensions.length - 1; i >= 0; i--) { var tmpExt = extensions[i]; - if(configPath.indexOf(tmpExt, configPath.length - tmpExt.length) > -1) { + if ( + configPath.indexOf(tmpExt, configPath.length - tmpExt.length) > -1 + ) { return tmpExt; } } @@ -57,12 +64,14 @@ module.exports = function(yargs, argv, convertOptions) { }; }; - var configArgList = Array.isArray(argv.config) ? argv.config : [argv.config]; + var configArgList = Array.isArray(argv.config) + ? argv.config + : [argv.config]; configFiles = configArgList.map(mapConfigArg); } else { - for(i = 0; i < defaultConfigFiles.length; i++) { + for (i = 0; i < defaultConfigFiles.length; i++) { var webpackConfig = defaultConfigFiles[i].path; - if(fs.existsSync(webpackConfig)) { + if (fs.existsSync(webpackConfig)) { configFiles.push({ path: webpackConfig, ext: defaultConfigFiles[i].ext @@ -72,19 +81,19 @@ module.exports = function(yargs, argv, convertOptions) { } } - if(configFiles.length > 0) { + if (configFiles.length > 0) { var registerCompiler = function registerCompiler(moduleDescriptor) { - if(moduleDescriptor) { - if(typeof moduleDescriptor === 'string') { + if (moduleDescriptor) { + if (typeof moduleDescriptor === "string") { require(moduleDescriptor); - } else if(!Array.isArray(moduleDescriptor)) { + } else if (!Array.isArray(moduleDescriptor)) { moduleDescriptor.register(require(moduleDescriptor.module)); } else { - for(var i = 0; i < moduleDescriptor.length; i++) { + for (var i = 0; i < moduleDescriptor.length; i++) { try { registerCompiler(moduleDescriptor[i]); break; - } catch(e) { + } catch (e) { // do nothing } } @@ -94,10 +103,11 @@ module.exports = function(yargs, argv, convertOptions) { var requireConfig = function requireConfig(configPath) { var options = require(configPath); - var isES6DefaultExportedFunc = ( - typeof options === 'object' && options !== null && typeof options.default === 'function' - ); - if(typeof options === 'function' || isES6DefaultExportedFunc) { + var isES6DefaultExportedFunc = + typeof options === "object" && + options !== null && + typeof options.default === "function"; + if (typeof options === "function" || isES6DefaultExportedFunc) { options = isES6DefaultExportedFunc ? options.default : options; options = options(argv.env, argv); } @@ -111,61 +121,62 @@ module.exports = function(yargs, argv, convertOptions) { configFileLoaded = true; } - if(!configFileLoaded) { + if (!configFileLoaded) { return processConfiguredOptions({}); - } else if(options.length === 1) { + } else if (options.length === 1) { return processConfiguredOptions(options[0]); } else { return processConfiguredOptions(options); } function processConfiguredOptions(options) { - if(options === null || typeof options !== 'object') { - console.error('Config did not export an object or a function returning an object.'); - process.exitCode = -1; + if (options === null || typeof options !== "object") { + console.error( + "Config did not export an object or a function returning an object." + ); + process.exit(-1); } // process Promise - if(typeof options.then === 'function') { + if (typeof options.then === "function") { return options.then(processConfiguredOptions); } // process ES6 default - if(typeof options === 'object' && typeof options.default === 'object') { + if (typeof options === "object" && typeof options.default === "object") { return processConfiguredOptions(options.default); } - if(Array.isArray(options)) { + if (Array.isArray(options)) { options.forEach(processOptions); } else { processOptions(options); } - if(argv.context) { + if (argv.context) { options.context = path.resolve(argv.context); } - if(!options.context) { + if (!options.context) { options.context = process.cwd(); } - if(argv.watch) { + if (argv.watch) { options.watch = true; } - if(argv['watch-aggregate-timeout']) { + if (argv["watch-aggregate-timeout"]) { options.watchOptions = options.watchOptions || {}; - options.watchOptions.aggregateTimeout = +argv['watch-aggregate-timeout']; + options.watchOptions.aggregateTimeout = +argv["watch-aggregate-timeout"]; } - if(argv['watch-poll']) { + if (argv["watch-poll"]) { options.watchOptions = options.watchOptions || {}; - if(typeof argv['watch-poll'] !== 'boolean') - options.watchOptions.poll = +argv['watch-poll']; - else - options.watchOptions.poll = true; + if (typeof argv["watch-poll"] !== "boolean") + options.watchOptions.poll = +argv["watch-poll"]; + else options.watchOptions.poll = true; } - if(argv['watch-stdin']) { + if (argv["watch-stdin"]) { options.watchOptions = options.watchOptions || {}; options.watchOptions.stdin = true; options.watch = true; @@ -178,39 +189,44 @@ module.exports = function(yargs, argv, convertOptions) { var noOutputFilenameDefined = !options.output || !options.output.filename; function ifArg(name, fn, init, finalize) { - if(Array.isArray(argv[name])) { - if(init) { + if (Array.isArray(argv[name])) { + if (init) { init(); } argv[name].forEach(fn); - if(finalize) { + if (finalize) { finalize(); } - } else if(typeof argv[name] !== 'undefined' && argv[name] !== null) { - if(init) { + } else if (typeof argv[name] !== "undefined" && argv[name] !== null) { + if (init) { init(); } fn(argv[name], -1); - if(finalize) { + if (finalize) { finalize(); } } } function ifArgPair(name, fn, init, finalize) { - ifArg(name, function(content, idx) { - var i = content.indexOf('='); - if(i < 0) { - return fn(null, content, idx); - } else { - return fn(content.substr(0, i), content.substr(i + 1), idx); - } - }, init, finalize); + ifArg( + name, + function(content, idx) { + var i = content.indexOf("="); + if (i < 0) { + return fn(null, content, idx); + } else { + return fn(content.substr(0, i), content.substr(i + 1), idx); + } + }, + init, + finalize + ); } function ifBooleanArg(name, fn) { ifArg(name, function(bool) { - if(bool) { + if (bool) { fn(); } }); @@ -218,298 +234,343 @@ module.exports = function(yargs, argv, convertOptions) { function mapArgToBoolean(name, optionName) { ifArg(name, function(bool) { - if(bool === true) - options[optionName || name] = true; - else if(bool === false) - options[optionName || name] = false; + if (bool === true) options[optionName || name] = true; + else if (bool === false) options[optionName || name] = false; + }); + } + //eslint-disable-next-line + function mapArgToPath(name, optionName) { + ifArg(name, function(str) { + options[optionName || name] = path.resolve(str); }); } function loadPlugin(name) { - var loadUtils = require('loader-utils'); - var args; + var loadUtils = require("loader-utils"); + var args = null; try { - var p = name && name.indexOf('?'); - if(p > -1) { + var p = name && name.indexOf("?"); + if (p > -1) { args = loadUtils.parseQuery(name.substring(p)); name = name.substring(0, p); } - } catch(e) { - console.log('Invalid plugin arguments ' + name + ' (' + e + ').'); - process.exitCode = -1; + } catch (e) { + console.log("Invalid plugin arguments " + name + " (" + e + ")."); + process.exit(-1); } var path; try { - var resolve = require('enhanced-resolve'); + var resolve = require("enhanced-resolve"); path = resolve.sync(process.cwd(), name); - } catch(e) { - console.log('Cannot resolve plugin ' + name + '.'); - process.exitCode = -1; + } catch (e) { + console.log("Cannot resolve plugin " + name + "."); + process.exit(-1); } var Plugin; try { Plugin = require(path); - } catch(e) { - console.log('Cannot load plugin ' + name + '. (' + path + ')'); + } catch (e) { + console.log("Cannot load plugin " + name + ". (" + path + ")"); throw e; } try { return new Plugin(args); - } catch(e) { - console.log('Cannot instantiate plugin ' + name + '. (' + path + ')'); + } catch (e) { + console.log("Cannot instantiate plugin " + name + ". (" + path + ")"); throw e; } } function ensureObject(parent, name) { - if(typeof parent[name] !== 'object' || parent[name] === null) { + if (typeof parent[name] !== "object" || parent[name] === null) { parent[name] = {}; } } function ensureArray(parent, name) { - if(!Array.isArray(parent[name])) { + if (!Array.isArray(parent[name])) { parent[name] = []; } } - ifArgPair('entry', function(name, entry) { - if(typeof options.entry[name] !== 'undefined' && options.entry[name] !== null) { - options.entry[name] = [].concat(options.entry[name]).concat(entry); - } else { + ifArgPair( + "entry", + function(name, entry) { options.entry[name] = entry; + }, + function() { + ensureObject(options, "entry"); } - }, function() { - ensureObject(options, 'entry'); - }); + ); function bindLoaders(arg, collection) { - ifArgPair(arg, function(name, binding) { - if(name === null) { - name = binding; - binding += '-loader'; + ifArgPair( + arg, + function(name, binding) { + if (name === null) { + name = binding; + binding += "-loader"; + } + options.module[collection].push({ + test: new RegExp( + "\\." + + // eslint thinks that the escapes are useless, + // however, when testing them, the special regex chars + // mess up with the regex we want to use to check. + // eslint-disable-next-line + name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + + "$" + ), + loader: binding + }); + }, + function() { + ensureObject(options, "module"); + ensureArray(options.module, collection); } - options.module[collection].push({ - test: new RegExp('\\.' + name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&') + '$'), - loader: binding - }); - }, function() { - ensureObject(options, 'module'); - ensureArray(options.module, collection); - }); + ); } - bindLoaders('module-bind', 'loaders'); - bindLoaders('module-bind-pre', 'preLoaders'); - bindLoaders('module-bind-post', 'postLoaders'); + bindLoaders("module-bind", "loaders"); + bindLoaders("module-bind-pre", "preLoaders"); + bindLoaders("module-bind-post", "postLoaders"); var defineObject; - ifArgPair('define', function(name, value) { - if(name === null) { - name = value; - value = true; + ifArgPair( + "define", + function(name, value) { + if (name === null) { + name = value; + value = true; + } + defineObject[name] = value; + }, + function() { + defineObject = {}; + }, + function() { + ensureArray(options, "plugins"); + var DefinePlugin = require("webpack/lib/DefinePlugin"); + options.plugins.push(new DefinePlugin(defineObject)); } - defineObject[name] = value; - }, function() { - defineObject = {}; - }, function() { - ensureArray(options, 'plugins'); - var DefinePlugin = require('webpack/lib/DefinePlugin'); - options.plugins.push(new DefinePlugin(defineObject)); - }); + ); - ifArg('output-path', function(value) { - ensureObject(options, 'output'); - options.output.path = path.resolve(value); + ifArg("output-path", function(value) { + ensureObject(options, "output"); + options.output.path = value; }); - ifArg('output-filename', function(value) { - ensureObject(options, 'output'); + ifArg("output-filename", function(value) { + ensureObject(options, "output"); options.output.filename = value; noOutputFilenameDefined = false; }); - ifArg('output-chunk-filename', function(value) { - ensureObject(options, 'output'); + ifArg("output-chunk-filename", function(value) { + ensureObject(options, "output"); options.output.chunkFilename = value; }); - ifArg('output-source-map-filename', function(value) { - ensureObject(options, 'output'); + ifArg("output-source-map-filename", function(value) { + ensureObject(options, "output"); options.output.sourceMapFilename = value; }); - ifArg('output-public-path', function(value) { - ensureObject(options, 'output'); + ifArg("output-public-path", function(value) { + ensureObject(options, "output"); options.output.publicPath = value; }); - ifArg('output-jsonp-function', function(value) { - ensureObject(options, 'output'); + ifArg("output-jsonp-function", function(value) { + ensureObject(options, "output"); options.output.jsonpFunction = value; }); - ifBooleanArg('output-pathinfo', function() { - ensureObject(options, 'output'); + ifBooleanArg("output-pathinfo", function() { + ensureObject(options, "output"); options.output.pathinfo = true; }); - ifArg('output-library', function(value) { - ensureObject(options, 'output'); + ifArg("output-library", function(value) { + ensureObject(options, "output"); options.output.library = value; }); - ifArg('output-library-target', function(value) { - ensureObject(options, 'output'); + ifArg("output-library-target", function(value) { + ensureObject(options, "output"); options.output.libraryTarget = value; }); - ifArg('records-input-path', function(value) { + ifArg("records-input-path", function(value) { options.recordsInputPath = path.resolve(value); }); - ifArg('records-output-path', function(value) { + ifArg("records-output-path", function(value) { options.recordsOutputPath = path.resolve(value); }); - ifArg('records-path', function(value) { + ifArg("records-path", function(value) { options.recordsPath = path.resolve(value); }); - ifArg('target', function(value) { + ifArg("target", function(value) { options.target = value; }); - mapArgToBoolean('cache'); + mapArgToBoolean("cache"); - ifBooleanArg('hot', function() { - ensureArray(options, 'plugins'); - var HotModuleReplacementPlugin = require('webpack/lib/HotModuleReplacementPlugin'); + ifBooleanArg("hot", function() { + ensureArray(options, "plugins"); + var HotModuleReplacementPlugin = require("webpack/lib/HotModuleReplacementPlugin"); options.plugins.push(new HotModuleReplacementPlugin()); }); - ifBooleanArg('debug', function() { - ensureArray(options, 'plugins'); - var LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin'); - options.plugins.push(new LoaderOptionsPlugin({ - debug: true - })); + ifBooleanArg("debug", function() { + ensureArray(options, "plugins"); + var LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin"); + options.plugins.push( + new LoaderOptionsPlugin({ + debug: true + }) + ); }); - ifArg('devtool', function(value) { + ifArg("devtool", function(value) { options.devtool = value; }); function processResolveAlias(arg, key) { ifArgPair(arg, function(name, value) { - if(!name) { - throw new Error('--' + arg + ' ='); + if (!name) { + throw new Error("--" + arg + " ="); } ensureObject(options, key); - ensureObject(options[key], 'alias'); + ensureObject(options[key], "alias"); options[key].alias[name] = value; }); } - processResolveAlias('resolve-alias', 'resolve'); - processResolveAlias('resolve-loader-alias', 'resolveLoader'); + processResolveAlias("resolve-alias", "resolve"); + processResolveAlias("resolve-loader-alias", "resolveLoader"); - ifArg('resolve-extensions', function(value) { - ensureObject(options, 'resolve'); - if(Array.isArray(value)) { + ifArg("resolve-extensions", function(value) { + ensureObject(options, "resolve"); + if (Array.isArray(value)) { options.resolve.extensions = value; } else { options.resolve.extensions = value.split(/,\s*/); } }); - ifArg('optimize-max-chunks', function(value) { - ensureArray(options, 'plugins'); - var LimitChunkCountPlugin = require('webpack/lib/optimize/LimitChunkCountPlugin'); - options.plugins.push(new LimitChunkCountPlugin({ - maxChunks: parseInt(value, 10) - })); + ifArg("optimize-max-chunks", function(value) { + ensureArray(options, "plugins"); + var LimitChunkCountPlugin = require("webpack/lib/optimize/LimitChunkCountPlugin"); + options.plugins.push( + new LimitChunkCountPlugin({ + maxChunks: parseInt(value, 10) + }) + ); }); - ifArg('optimize-min-chunk-size', function(value) { - ensureArray(options, 'plugins'); - var MinChunkSizePlugin = require('webpack/lib/optimize/MinChunkSizePlugin'); - options.plugins.push(new MinChunkSizePlugin({ - minChunkSize: parseInt(value, 10) - })); + ifArg("optimize-min-chunk-size", function(value) { + ensureArray(options, "plugins"); + var MinChunkSizePlugin = require("webpack/lib/optimize/MinChunkSizePlugin"); + options.plugins.push( + new MinChunkSizePlugin({ + minChunkSize: parseInt(value, 10) + }) + ); }); - ifBooleanArg('optimize-minimize', function() { - ensureArray(options, 'plugins'); - var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin'); - var LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin'); - options.plugins.push(new UglifyJsPlugin({ - sourceMap: options.devtool && (options.devtool.indexOf('sourcemap') >= 0 || options.devtool.indexOf('source-map') >= 0) - })); - options.plugins.push(new LoaderOptionsPlugin({ - minimize: true - })); + ifBooleanArg("optimize-minimize", function() { + ensureArray(options, "plugins"); + var UglifyJsPlugin = require("webpack/lib/optimize/UglifyJsPlugin"); + var LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin"); + options.plugins.push( + new UglifyJsPlugin({ + sourceMap: + options.devtool && + (options.devtool.indexOf("sourcemap") >= 0 || + options.devtool.indexOf("source-map") >= 0) + }) + ); + options.plugins.push( + new LoaderOptionsPlugin({ + minimize: true + }) + ); }); - ifArg('prefetch', function(request) { - ensureArray(options, 'plugins'); - var PrefetchPlugin = require('webpack/lib/PrefetchPlugin'); + ifArg("prefetch", function(request) { + ensureArray(options, "plugins"); + var PrefetchPlugin = require("webpack/PrefetchPlugin"); options.plugins.push(new PrefetchPlugin(request)); }); - ifArg('provide', function(value) { - ensureArray(options, 'plugins'); - var idx = value.indexOf('='); + ifArg("provide", function(value) { + ensureArray(options, "plugins"); + var idx = value.indexOf("="); var name; - if(idx >= 0) { + if (idx >= 0) { name = value.substr(0, idx); value = value.substr(idx + 1); } else { name = value; } - var ProvidePlugin = require('webpack/lib/ProvidePlugin'); + var ProvidePlugin = require("webpack/ProvidePlugin"); options.plugins.push(new ProvidePlugin(name, value)); }); - ifArg('plugin', function(value) { - ensureArray(options, 'plugins'); + ifBooleanArg("labeled-modules", function() { + ensureArray(options, "plugins"); + var LabeledModulesPlugin = require("webpack/lib/dependencies/LabeledModulesPlugin"); + options.plugins.push(new LabeledModulesPlugin()); + }); + + ifArg("plugin", function(value) { + ensureArray(options, "plugins"); options.plugins.push(loadPlugin(value)); }); - mapArgToBoolean('bail'); + mapArgToBoolean("bail"); - mapArgToBoolean('profile'); + mapArgToBoolean("profile"); - if(noOutputFilenameDefined) { - ensureObject(options, 'output'); - if(convertOptions && convertOptions.outputFilename) { - options.output.path = path.resolve(path.dirname(convertOptions.outputFilename)); + if (noOutputFilenameDefined) { + ensureObject(options, "output"); + if (convertOptions && convertOptions.outputFilename) { + options.output.path = path.dirname(convertOptions.outputFilename); options.output.filename = path.basename(convertOptions.outputFilename); - } else if(argv._.length > 0) { + } else if (argv._.length > 0) { options.output.filename = argv._.pop(); - options.output.path = path.resolve(path.dirname(options.output.filename)); + options.output.path = path.dirname(options.output.filename); options.output.filename = path.basename(options.output.filename); - } else if(configFileLoaded) { - throw new Error('\'output.filename\' is required, either in config file or as --output-filename'); - } - else { - console.error('No configuration file found and no output filename configured via CLI option.'); - console.error('A configuration file could be named \'webpack.config.js\' in the current directory.'); - console.error('Use --help to display the CLI options.'); - process.exitCode = -1; + } else if (configFileLoaded) { + throw new Error( + "'output.filename' is required, either in config file or as --output-filename" + ); + } else { + console.error( + "No configuration file found and no output filename configured via CLI option." + ); + console.error( + "A configuration file could be named 'webpack.config.js' in the current directory." + ); + console.error("Use --help to display the CLI options."); + process.exit(-1); } } - if(argv._.length > 0) { - if(Array.isArray(options.entry) || typeof options.entry === 'string') { + if (argv._.length > 0) { + if (Array.isArray(options.entry) || typeof options.entry === "string") { options.entry = { main: options.entry }; } - ensureObject(options, 'entry'); + ensureObject(options, "entry"); var addTo = function addTo(name, entry) { - if(options.entry[name]) { - if(!Array.isArray(options.entry[name])) { + if (options.entry[name]) { + if (!Array.isArray(options.entry[name])) { options.entry[name] = [options.entry[name]]; } options.entry[name].push(entry); @@ -518,14 +579,14 @@ module.exports = function(yargs, argv, convertOptions) { } }; argv._.forEach(function(content) { - var i = content.indexOf('='); - var j = content.indexOf('?'); - if(i < 0 || (j >= 0 && j < i)) { + var i = content.indexOf("="); + var j = content.indexOf("?"); + if (i < 0 || (j >= 0 && j < i)) { var resolved = path.resolve(content); - if(fs.existsSync(resolved)) { - addTo('main', resolved); + if (fs.existsSync(resolved)) { + addTo("main", resolved); } else { - addTo('main', content); + addTo("main", content); } } else { addTo(content.substr(0, i), content.substr(i + 1)); @@ -533,16 +594,22 @@ module.exports = function(yargs, argv, convertOptions) { }); } - if(!options.entry) { - if(configFileLoaded) { - console.error('Configuration file found but no entry configured.'); + if (!options.entry) { + if (configFileLoaded) { + console.error("Configuration file found but no entry configured."); } else { - console.error('No configuration file found and no entry configured via CLI option.'); - console.error('When using the CLI you need to provide at least two arguments: entry and output.'); - console.error('A configuration file could be named \'webpack.config.js\' in the current directory.'); + console.error( + "No configuration file found and no entry configured via CLI option." + ); + console.error( + "When using the CLI you need to provide at least two arguments: entry and output." + ); + console.error( + "A configuration file could be named 'webpack.config.js' in the current directory." + ); } - console.error('Use --help to display the CLI options.'); - process.exitCode = -1; + console.error("Use --help to display the CLI options."); + process.exit(-1); } } }; diff --git a/bin/process-options.js b/bin/process-options.js index e97bb5af4c6..92e4355ba85 100644 --- a/bin/process-options.js +++ b/bin/process-options.js @@ -1,17 +1,17 @@ module.exports = function processOptions(yargs, argv) { // process Promise function ifArg(name, fn, init) { - if(Array.isArray(argv[name])) { - if(init) init(); + if (Array.isArray(argv[name])) { + if (init) init(); argv[name].forEach(fn); - } else if(typeof argv[name] !== 'undefined') { - if(init) init(); + } else if (typeof argv[name] !== "undefined") { + if (init) init(); fn(argv[name], -1); } } - var options = require('./convert-argv')(yargs, argv); + var options = require("./convert-argv")(yargs, argv); - if(typeof options.then === 'function') { + if (typeof options.then === "function") { options.then(processOptions).catch(function(err) { console.error(err.stack || err); process.exit(); @@ -19,175 +19,181 @@ module.exports = function processOptions(yargs, argv) { return; } - var firstOptions = Array.isArray(options) ? (options[0] || {}) : options; + var firstOptions = Array.isArray(options) ? options[0] || {} : options; - if(typeof options.stats === 'boolean' || typeof options.stats === 'string') { - var statsPresetToOptions = require('webpack/lib/Stats.js').presetToOptions; + if (typeof options.stats === "boolean" || typeof options.stats === "string") { + var statsPresetToOptions = require("webpack/lib/Stats.js").presetToOptions; options.stats = statsPresetToOptions(options.stats); } var outputOptions = Object.create(options.stats || firstOptions.stats || {}); - if(typeof outputOptions.context === 'undefined') + if (typeof outputOptions.context === "undefined") outputOptions.context = firstOptions.context; - ifArg('json', function(bool) { - if(bool) - outputOptions.json = bool; + ifArg("json", function(bool) { + if (bool) outputOptions.json = bool; }); - if(typeof outputOptions.colors === 'undefined') - outputOptions.colors = require('supports-color'); + if (typeof outputOptions.colors === "undefined") + outputOptions.colors = require("supports-color"); - ifArg('sort-modules-by', function(value) { + ifArg("sort-modules-by", function(value) { outputOptions.modulesSort = value; }); - ifArg('sort-chunks-by', function(value) { + ifArg("sort-chunks-by", function(value) { outputOptions.chunksSort = value; }); - ifArg('sort-assets-by', function(value) { + ifArg("sort-assets-by", function(value) { outputOptions.assetsSort = value; }); - ifArg('display-exclude', function(value) { + ifArg("display-exclude", function(value) { outputOptions.exclude = value; }); - if(!outputOptions.json) { - if(typeof outputOptions.cached === 'undefined') + if (!outputOptions.json) { + if (typeof outputOptions.cached === "undefined") outputOptions.cached = false; - if(typeof outputOptions.cachedAssets === 'undefined') + if (typeof outputOptions.cachedAssets === "undefined") outputOptions.cachedAssets = false; - ifArg('display-chunks', function(bool) { + ifArg("display-chunks", function(bool) { outputOptions.modules = !bool; outputOptions.chunks = bool; }); - ifArg('display-entrypoints', function(bool) { + ifArg("display-entrypoints", function(bool) { outputOptions.entrypoints = bool; }); - ifArg('display-reasons', function(bool) { + ifArg("display-reasons", function(bool) { outputOptions.reasons = bool; }); - ifArg('display-used-exports', function(bool) { + ifArg("display-used-exports", function(bool) { outputOptions.usedExports = bool; }); - ifArg('display-provided-exports', function(bool) { + ifArg("display-provided-exports", function(bool) { outputOptions.providedExports = bool; }); - ifArg('display-error-details', function(bool) { + ifArg("display-error-details", function(bool) { outputOptions.errorDetails = bool; }); - ifArg('display-origins', function(bool) { + ifArg("display-origins", function(bool) { outputOptions.chunkOrigins = bool; }); - ifArg('display-cached', function(bool) { - if(bool) - outputOptions.cached = true; + ifArg("display-cached", function(bool) { + if (bool) outputOptions.cached = true; }); - ifArg('display-cached-assets', function(bool) { - if(bool) - outputOptions.cachedAssets = true; + ifArg("display-cached-assets", function(bool) { + if (bool) outputOptions.cachedAssets = true; }); - if(!outputOptions.exclude && !argv['display-modules']) - outputOptions.exclude = ['node_modules', 'bower_components', 'jam', 'components']; + if (!outputOptions.exclude && !argv["display-modules"]) + outputOptions.exclude = [ + "node_modules", + "bower_components", + "jam", + "components" + ]; } else { - if(typeof outputOptions.chunks === 'undefined') + if (typeof outputOptions.chunks === "undefined") outputOptions.chunks = true; - if(typeof outputOptions.entrypoints === 'undefined') + if (typeof outputOptions.entrypoints === "undefined") outputOptions.entrypoints = true; - if(typeof outputOptions.modules === 'undefined') + if (typeof outputOptions.modules === "undefined") outputOptions.modules = true; - if(typeof outputOptions.chunkModules === 'undefined') + if (typeof outputOptions.chunkModules === "undefined") outputOptions.chunkModules = true; - if(typeof outputOptions.reasons === 'undefined') + if (typeof outputOptions.reasons === "undefined") outputOptions.reasons = true; - if(typeof outputOptions.cached === 'undefined') + if (typeof outputOptions.cached === "undefined") outputOptions.cached = true; - if(typeof outputOptions.cachedAssets === 'undefined') + if (typeof outputOptions.cachedAssets === "undefined") outputOptions.cachedAssets = true; } - ifArg('hide-modules', function(bool) { - if(bool) { + ifArg("hide-modules", function(bool) { + if (bool) { outputOptions.modules = false; outputOptions.chunkModules = false; } }); - var webpack = require('webpack/lib/webpack.js'); + var webpack = require("webpack/lib/webpack.js"); Error.stackTraceLimit = 30; var lastHash = null; var compiler; try { compiler = webpack(options); - } catch(e) { - var WebpackOptionsValidationError = require('webpack/lib/WebpackOptionsValidationError'); - if(e instanceof WebpackOptionsValidationError) { - if(argv.color) - console.error('\u001b[1m\u001b[31m' + e.message + '\u001b[39m\u001b[22m'); - else - console.error(e.message); + } catch (e) { + var WebpackOptionsValidationError = require("webpack/lib/WebpackOptionsValidationError"); + if (e instanceof WebpackOptionsValidationError) { + if (argv.color) + console.error( + "\u001b[1m\u001b[31m" + e.message + "\u001b[39m\u001b[22m" + ); + else console.error(e.message); process.exitCode = 1; } throw e; } - if(argv.progress) { - var ProgressPlugin = require('webpack/lib/ProgressPlugin'); - compiler.apply(new ProgressPlugin({ - profile: argv.profile - })); + if (argv.progress) { + var ProgressPlugin = require("webpack/lib/ProgressPlugin"); + compiler.apply( + new ProgressPlugin({ + profile: argv.profile + }) + ); } function compilerCallback(err, stats) { - if(!options.watch || err) { + if (!options.watch || err) { // Do not keep cache anymore compiler.purgeInputFileSystem(); } - if(err) { + if (err) { lastHash = null; console.error(err.stack || err); - if(err.details) console.error(err.details); + if (err.details) console.error(err.details); process.exitCode = 1; } - if(outputOptions.json) { - process.stdout.write(JSON.stringify(stats.toJson(outputOptions), null, 2) + '\n'); - } else if(stats.hash !== lastHash) { + if (outputOptions.json) { + process.stdout.write( + JSON.stringify(stats.toJson(outputOptions), null, 2) + "\n" + ); + } else if (stats.hash !== lastHash) { lastHash = stats.hash; - process.stdout.write( '\n' + new Date() + '\n' + '\n'); - process.stdout.write(stats.toString(outputOptions) + '\n'); - if(argv.s) lastHash = null; + process.stdout.write("\n" + new Date() + "\n" + "\n"); + process.stdout.write(stats.toString(outputOptions) + "\n"); + if (argv.s) lastHash = null; } - if(!options.watch && stats.hasErrors()) { - process.on('exit', function() { + if (!options.watch && stats.hasErrors()) { + process.on("exit", function() { process.exitCode = 2; }); } } - if(options.watch) { + if (options.watch) { var primaryOptions = !Array.isArray(options) ? options : options[0]; - var watchOptions = primaryOptions.watchOptions || primaryOptions.watch || {}; - if(watchOptions.stdin) { - process.stdin.on('end', function() { + var watchOptions = + primaryOptions.watchOptions || primaryOptions.watch || {}; + if (watchOptions.stdin) { + process.stdin.on("end", function() { process.exitCode = 0; }); process.stdin.resume(); } compiler.watch(watchOptions, compilerCallback); - console.log('\nWebpack is watching the files…\n'); - } else - compiler.run(compilerCallback); - + console.log("\nWebpack is watching the files…\n"); + } else compiler.run(compilerCallback); }; diff --git a/bin/webpack.js b/bin/webpack.js index 280744cb2cf..19e31709f9a 100755 --- a/bin/webpack.js +++ b/bin/webpack.js @@ -3,189 +3,193 @@ MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ -var path = require('path'); -var resolveCwd = require('resolve-cwd'); +"use strict"; -var localCLI = resolveCwd.silent('webpack-cli/bin/webpack'); +var path = require("path"); +var resolveCwd = require("resolve-cwd"); -if (localCLI && path.relative(localCLI, __filename) !== '') { +var localCLI = resolveCwd.silent("webpack-cli/bin/webpack"); + +if (localCLI && path.relative(localCLI, __filename) !== "") { require(localCLI); } else { try { - require('./webpack'); + require("./webpack"); } catch (err) { console.error(`\n ${err.message}`); process.exitCode = 1; } } -var yargs = require('yargs') - .usage('webpack ' + require('../package.json').version + '\n' + - 'Usage: https://webpack.js.org/api/cli/\n' + - 'Usage without config file: webpack [] \n' + - 'Usage with config file: webpack'); -require('./config-yargs')(yargs); - +var yargs = require("yargs").usage( + "webpack " + + require("../package.json").version + + "\n" + + "Usage: https://webpack.js.org/api/cli/\n" + + "Usage without config file: webpack [] \n" + + "Usage with config file: webpack" +); +require("./config-yargs")(yargs); -var DISPLAY_GROUP = 'Stats options:'; -var BASIC_GROUP = 'Basic options:'; +var DISPLAY_GROUP = "Stats options:"; +var BASIC_GROUP = "Basic options:"; yargs.options({ - 'json': { - type: 'boolean', - alias: 'j', - describe: 'Prints the result as JSON.' + json: { + type: "boolean", + alias: "j", + describe: "Prints the result as JSON." }, - 'progress': { - type: 'boolean', - describe: 'Print compilation progress in percentage', + progress: { + type: "boolean", + describe: "Print compilation progress in percentage", group: BASIC_GROUP }, - 'color': { - type: 'boolean', - alias: 'colors', + color: { + type: "boolean", + alias: "colors", default: function supportsColor() { - return require('supports-color'); + return require("supports-color"); }, group: DISPLAY_GROUP, - describe: 'Enables/Disables colors on the console' + describe: "Enables/Disables colors on the console" }, - 'sort-modules-by': { - type: 'string', + "sort-modules-by": { + type: "string", group: DISPLAY_GROUP, - describe: 'Sorts the modules list by property in module' + describe: "Sorts the modules list by property in module" }, - 'sort-chunks-by': { - type: 'string', + "sort-chunks-by": { + type: "string", group: DISPLAY_GROUP, - describe: 'Sorts the chunks list by property in chunk' + describe: "Sorts the chunks list by property in chunk" }, - 'sort-assets-by': { - type: 'string', + "sort-assets-by": { + type: "string", group: DISPLAY_GROUP, - describe: 'Sorts the assets list by property in asset' + describe: "Sorts the assets list by property in asset" }, - 'hide-modules': { - type: 'boolean', + "hide-modules": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Hides info about modules' + describe: "Hides info about modules" }, - 'display-exclude': { - type: 'string', + "display-exclude": { + type: "string", group: DISPLAY_GROUP, - describe: 'Exclude modules in the output' + describe: "Exclude modules in the output" }, - 'display-modules': { - type: 'boolean', + "display-modules": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display even excluded modules in the output' + describe: "Display even excluded modules in the output" }, - 'display-max-modules': { - type: 'number', + "display-max-modules": { + type: "number", group: DISPLAY_GROUP, - describe: 'Sets the maximum number of visible modules in output' + describe: "Sets the maximum number of visible modules in output" }, - 'display-chunks': { - type: 'boolean', + "display-chunks": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display chunks in the output' + describe: "Display chunks in the output" }, - 'display-entrypoints': { - type: 'boolean', + "display-entrypoints": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display entry points in the output' + describe: "Display entry points in the output" }, - 'display-origins': { - type: 'boolean', + "display-origins": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display origins of chunks in the output' + describe: "Display origins of chunks in the output" }, - 'display-cached': { - type: 'boolean', + "display-cached": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display also cached modules in the output' + describe: "Display also cached modules in the output" }, - 'display-cached-assets': { - type: 'boolean', + "display-cached-assets": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display also cached assets in the output' + describe: "Display also cached assets in the output" }, - 'display-reasons': { - type: 'boolean', + "display-reasons": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display reasons about module inclusion in the output' + describe: "Display reasons about module inclusion in the output" }, - 'display-depth': { - type: 'boolean', + "display-depth": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display distance from entry point for each module' + describe: "Display distance from entry point for each module" }, - 'display-used-exports': { - type: 'boolean', + "display-used-exports": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display information about used exports in modules (Tree Shaking)' + describe: "Display information about used exports in modules (Tree Shaking)" }, - 'display-provided-exports': { - type: 'boolean', + "display-provided-exports": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display information about exports provided from modules' + describe: "Display information about exports provided from modules" }, - 'display-error-details': { - type: 'boolean', + "display-error-details": { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Display details about errors' + describe: "Display details about errors" }, - 'verbose': { - type: 'boolean', + verbose: { + type: "boolean", group: DISPLAY_GROUP, - describe: 'Show more details' + describe: "Show more details" } }); var argv = yargs.argv; -if(argv.verbose) { - argv['display-reasons'] = true; - argv['display-depth'] = true; - argv['display-entrypoints'] = true; - argv['display-used-exports'] = true; - argv['display-provided-exports'] = true; - argv['display-error-details'] = true; - argv['display-modules'] = true; - argv['display-cached'] = true; - argv['display-cached-assets'] = true; +if (argv.verbose) { + argv["display-reasons"] = true; + argv["display-depth"] = true; + argv["display-entrypoints"] = true; + argv["display-used-exports"] = true; + argv["display-provided-exports"] = true; + argv["display-error-details"] = true; + argv["display-modules"] = true; + argv["display-cached"] = true; + argv["display-cached-assets"] = true; } -if(argv._.includes('init')) { +if (argv._.includes("init")) { const initPkgs = argv._.length === 1 ? [] : [argv._.pop()]; - return require('../lib/initialize')(initPkgs); -} else if(argv._.includes('migrate')) { + return require("../lib/initialize")(initPkgs); +} else if (argv._.includes("migrate")) { const filePaths = argv._.length === 1 ? [] : [argv._.pop()]; if (!filePaths.length) { - throw new Error('Please specify a path to your webpack config'); + throw new Error("Please specify a path to your webpack config"); } const inputConfigPath = path.resolve(process.cwd(), filePaths[0]); - return require('../lib/migrate.js')(inputConfigPath, inputConfigPath); + return require("../lib/migrate.js")(inputConfigPath, inputConfigPath); } else { - var options = require('./convert-argv')(yargs, argv); + var options = require("./convert-argv")(yargs, argv); return processOptions(options); } function ifArg(name, fn, init) { - if(Array.isArray(argv[name])) { - if(init) init(); + if (Array.isArray(argv[name])) { + if (init) init(); argv[name].forEach(fn); - } else if(typeof argv[name] !== 'undefined') { - if(init) init(); + } else if (typeof argv[name] !== "undefined") { + if (init) init(); fn(argv[name], -1); } } //eslint-disable-next-line function processOptions(options) { // process Promise - if(typeof options.then === 'function') { + if (typeof options.then === "function") { options.then(processOptions).catch(function(err) { console.error(err.stack || err); process.exitCode = -1; @@ -194,189 +198,194 @@ function processOptions(options) { } var firstOptions = [].concat(options)[0]; - var statsPresetToOptions = require('webpack/lib/Stats.js').presetToOptions; + var statsPresetToOptions = require("webpack/lib/Stats.js").presetToOptions; var outputOptions = options.stats; - if(typeof outputOptions === 'boolean' || typeof outputOptions === 'string') { + if (typeof outputOptions === "boolean" || typeof outputOptions === "string") { outputOptions = statsPresetToOptions(outputOptions); - } else if(!outputOptions) { + } else if (!outputOptions) { outputOptions = {}; } outputOptions = Object.create(outputOptions); - if(Array.isArray(options) && !outputOptions.children) { + if (Array.isArray(options) && !outputOptions.children) { outputOptions.children = options.map(o => o.stats); } - if(typeof outputOptions.context === 'undefined') + if (typeof outputOptions.context === "undefined") outputOptions.context = firstOptions.context; - ifArg('json', function(bool) { - if(bool) - outputOptions.json = bool; + ifArg("json", function(bool) { + if (bool) outputOptions.json = bool; }); - if(typeof outputOptions.colors === 'undefined') - outputOptions.colors = require('supports-color'); + if (typeof outputOptions.colors === "undefined") + outputOptions.colors = require("supports-color"); - ifArg('sort-modules-by', function(value) { + ifArg("sort-modules-by", function(value) { outputOptions.modulesSort = value; }); - ifArg('sort-chunks-by', function(value) { + ifArg("sort-chunks-by", function(value) { outputOptions.chunksSort = value; }); - ifArg('sort-assets-by', function(value) { + ifArg("sort-assets-by", function(value) { outputOptions.assetsSort = value; }); - ifArg('display-exclude', function(value) { + ifArg("display-exclude", function(value) { outputOptions.exclude = value; }); - if(!outputOptions.json) { - if(typeof outputOptions.cached === 'undefined') + if (!outputOptions.json) { + if (typeof outputOptions.cached === "undefined") outputOptions.cached = false; - if(typeof outputOptions.cachedAssets === 'undefined') + if (typeof outputOptions.cachedAssets === "undefined") outputOptions.cachedAssets = false; - ifArg('display-chunks', function(bool) { + ifArg("display-chunks", function(bool) { outputOptions.modules = !bool; outputOptions.chunks = bool; }); - ifArg('display-entrypoints', function(bool) { + ifArg("display-entrypoints", function(bool) { outputOptions.entrypoints = bool; }); - ifArg('display-reasons', function(bool) { + ifArg("display-reasons", function(bool) { outputOptions.reasons = bool; }); - ifArg('display-depth', function(bool) { + ifArg("display-depth", function(bool) { outputOptions.depth = bool; }); - ifArg('display-used-exports', function(bool) { + ifArg("display-used-exports", function(bool) { outputOptions.usedExports = bool; }); - ifArg('display-provided-exports', function(bool) { + ifArg("display-provided-exports", function(bool) { outputOptions.providedExports = bool; }); - ifArg('display-error-details', function(bool) { + ifArg("display-error-details", function(bool) { outputOptions.errorDetails = bool; }); - ifArg('display-origins', function(bool) { + ifArg("display-origins", function(bool) { outputOptions.chunkOrigins = bool; }); - ifArg('display-max-modules', function(value) { + ifArg("display-max-modules", function(value) { outputOptions.maxModules = value; }); - ifArg('display-cached', function(bool) { - if(bool) - outputOptions.cached = true; + ifArg("display-cached", function(bool) { + if (bool) outputOptions.cached = true; }); - ifArg('display-cached-assets', function(bool) { - if(bool) - outputOptions.cachedAssets = true; + ifArg("display-cached-assets", function(bool) { + if (bool) outputOptions.cachedAssets = true; }); - if(!outputOptions.exclude) - outputOptions.exclude = ['node_modules', 'bower_components', 'components']; + if (!outputOptions.exclude) + outputOptions.exclude = [ + "node_modules", + "bower_components", + "components" + ]; - if(argv['display-modules']) { + if (argv["display-modules"]) { outputOptions.maxModules = Infinity; outputOptions.exclude = undefined; } } else { - if(typeof outputOptions.chunks === 'undefined') + if (typeof outputOptions.chunks === "undefined") outputOptions.chunks = true; - if(typeof outputOptions.entrypoints === 'undefined') + if (typeof outputOptions.entrypoints === "undefined") outputOptions.entrypoints = true; - if(typeof outputOptions.modules === 'undefined') + if (typeof outputOptions.modules === "undefined") outputOptions.modules = true; - if(typeof outputOptions.chunkModules === 'undefined') + if (typeof outputOptions.chunkModules === "undefined") outputOptions.chunkModules = true; - if(typeof outputOptions.reasons === 'undefined') + if (typeof outputOptions.reasons === "undefined") outputOptions.reasons = true; - if(typeof outputOptions.cached === 'undefined') + if (typeof outputOptions.cached === "undefined") outputOptions.cached = true; - if(typeof outputOptions.cachedAssets === 'undefined') + if (typeof outputOptions.cachedAssets === "undefined") outputOptions.cachedAssets = true; } - ifArg('hide-modules', function(bool) { - if(bool) { + ifArg("hide-modules", function(bool) { + if (bool) { outputOptions.modules = false; outputOptions.chunkModules = false; } }); - var webpack = require('webpack/lib/webpack.js'); + var webpack = require("webpack/lib/webpack.js"); Error.stackTraceLimit = 30; var lastHash = null; var compiler; try { compiler = webpack(options); - } catch(e) { - var WebpackOptionsValidationError = require('webpack/lib/WebpackOptionsValidationError'); - if(e instanceof WebpackOptionsValidationError) { - if(argv.color) - console.error('\u001b[1m\u001b[31m' + e.message + '\u001b[39m\u001b[22m'); - else - console.error(e.message); + } catch (e) { + var WebpackOptionsValidationError = require("webpack/lib/WebpackOptionsValidationError"); + if (e instanceof WebpackOptionsValidationError) { + if (argv.color) + console.error( + "\u001b[1m\u001b[31m" + e.message + "\u001b[39m\u001b[22m" + ); + else console.error(e.message); process.exitCode = 1; } throw e; } - if(argv.progress) { - var ProgressPlugin = require('webpack/lib/ProgressPlugin'); - compiler.apply(new ProgressPlugin({ - profile: argv.profile - })); + if (argv.progress) { + var ProgressPlugin = require("webpack/lib/ProgressPlugin"); + compiler.apply( + new ProgressPlugin({ + profile: argv.profile + }) + ); } function compilerCallback(err, stats) { - if(!options.watch || err) { + if (!options.watch || err) { // Do not keep cache anymore compiler.purgeInputFileSystem(); } - if(err) { + if (err) { lastHash = null; console.error(err.stack || err); - if(err.details) console.error(err.details); + if (err.details) console.error(err.details); process.exitCode = 1; } - if(outputOptions.json) { - process.stdout.write(JSON.stringify(stats.toJson(outputOptions), null, 2) + '\n'); - } else if(stats.hash !== lastHash) { + if (outputOptions.json) { + process.stdout.write( + JSON.stringify(stats.toJson(outputOptions), null, 2) + "\n" + ); + } else if (stats.hash !== lastHash) { lastHash = stats.hash; - process.stdout.write(stats.toString(outputOptions) + '\n'); + process.stdout.write(stats.toString(outputOptions) + "\n"); } - if(!options.watch && stats.hasErrors()) { - process.on('exit', function() { + if (!options.watch && stats.hasErrors()) { + process.on("exit", function() { process.exitCode = 2; }); } } - if(firstOptions.watch || options.watch) { - var watchOptions = firstOptions.watchOptions || firstOptions.watch || options.watch || {}; - if(watchOptions.stdin) { - process.stdin.on('end', function() { + if (firstOptions.watch || options.watch) { + var watchOptions = + firstOptions.watchOptions || firstOptions.watch || options.watch || {}; + if (watchOptions.stdin) { + process.stdin.on("end", function() { process.exitCode = 0; }); process.stdin.resume(); } compiler.watch(watchOptions, compilerCallback); - console.log('\nWebpack is watching the files…\n'); - } else - compiler.run(compilerCallback); - + console.log("\nWebpack is watching the files…\n"); + } else compiler.run(compilerCallback); } diff --git a/lib/creator/index.js b/lib/creator/index.js index 12ec46c8fc8..e68049c963a 100644 --- a/lib/creator/index.js +++ b/lib/creator/index.js @@ -1,9 +1,11 @@ -const yeoman = require('yeoman-environment'); -const Generator = require('yeoman-generator'); -const path = require('path'); -const defaultGenerator = require('./yeoman/webpack-generator'); -const WebpackAdapter = require('./yeoman/webpack-adapter'); -const runTransform = require('./transformations/index'); +"use strict"; + +const yeoman = require("yeoman-environment"); +const Generator = require("yeoman-generator"); +const path = require("path"); +const defaultGenerator = require("./yeoman/webpack-generator"); +const WebpackAdapter = require("./yeoman/webpack-adapter"); +const runTransform = require("./transformations/index"); /* * @function creator @@ -16,28 +18,30 @@ const runTransform = require('./transformations/index'); */ function creator(options) { - let env = yeoman.createEnv('webpack', null, new WebpackAdapter()); - const generatorName = options ? replaceGeneratorName(path.basename(options[0])) : 'webpack-default-generator'; - if(options) { + let env = yeoman.createEnv("webpack", null, new WebpackAdapter()); + const generatorName = options + ? replaceGeneratorName(path.basename(options[0])) + : "webpack-default-generator"; + if (options) { const WebpackGenerator = class extends Generator { initializing() { - options.forEach( (path) => { + options.forEach(path => { return this.composeWith(require.resolve(path)); }); } }; env.registerStub(WebpackGenerator, generatorName); } else { - env.registerStub(defaultGenerator, 'webpack-default-generator'); + env.registerStub(defaultGenerator, "webpack-default-generator"); } - env.run(generatorName).on('end', () => { - if(generatorName !== 'webpack-default-generator') { + env.run(generatorName).on("end", () => { + if (generatorName !== "webpack-default-generator") { //HACK / FIXME env = env.options.env; return runTransform(env.configuration); } else { - return runTransform(env.getArgument('configuration')); + return runTransform(env.getArgument("configuration")); } }); } @@ -53,8 +57,7 @@ function creator(options) { */ function replaceGeneratorName(name) { - return name.replace( - /(webpack-addons)?([^:]+)(:.*)?/g, 'generator$2'); + return name.replace(/(webpack-addons)?([^:]+)(:.*)?/g, "generator$2"); } module.exports = { diff --git a/lib/creator/index.test.js b/lib/creator/index.test.js index cbe6ad75cf4..a02620e312a 100644 --- a/lib/creator/index.test.js +++ b/lib/creator/index.test.js @@ -1,12 +1,10 @@ -'use strict'; +"use strict"; -const replaceGeneratorName = require('./index').replaceGeneratorName; +const replaceGeneratorName = require("./index").replaceGeneratorName; -describe('replaceGeneratorName', () => { - - it('should replace a pattern of an addon', () => { - const generatorName = replaceGeneratorName('webpack-addons-thefox'); - expect(generatorName).toEqual('generator-thefox'); +describe("replaceGeneratorName", () => { + it("should replace a pattern of an addon", () => { + const generatorName = replaceGeneratorName("webpack-addons-thefox"); + expect(generatorName).toEqual("generator-thefox"); }); - }); diff --git a/lib/creator/transformations/context/context.js b/lib/creator/transformations/context/context.js index 98fb0710b99..15926ce0aef 100644 --- a/lib/creator/transformations/context/context.js +++ b/lib/creator/transformations/context/context.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,9 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'context', webpackProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "context", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/context/context.test.js b/lib/creator/transformations/context/context.test.js index 0258c5528de..d21b1d8dec5 100644 --- a/lib/creator/transformations/context/context.test.js +++ b/lib/creator/transformations/context/context.test.js @@ -1,5 +1,7 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'context', 'context-0', 'path.resolve(__dirname, "app")'); -defineTest(__dirname, 'context', 'context-1', '\'./some/fake/path\''); -defineTest(__dirname, 'context', 'context-2', 'contextVariable'); +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "context", "context-0", "path.resolve(__dirname, 'app')"); +defineTest(__dirname, "context", "context-1", "'./some/fake/path'"); +defineTest(__dirname, "context", "context-2", "contextVariable"); diff --git a/lib/creator/transformations/devtool/devtool.js b/lib/creator/transformations/devtool/devtool.js index ac3930ad366..87cf628dc41 100644 --- a/lib/creator/transformations/devtool/devtool.js +++ b/lib/creator/transformations/devtool/devtool.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,10 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'devtool', webpackProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "devtool", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/devtool/devtool.test.js b/lib/creator/transformations/devtool/devtool.test.js index 01f574301a5..8702e338922 100644 --- a/lib/creator/transformations/devtool/devtool.test.js +++ b/lib/creator/transformations/devtool/devtool.test.js @@ -1,6 +1,8 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'devtool', 'devtool-0', '\'source-map\''); -defineTest(__dirname, 'devtool', 'devtool-0', 'myVariable'); -defineTest(__dirname, 'devtool', 'devtool-1', '\'cheap-module-source-map\''); -defineTest(__dirname, 'devtool', 'devtool-1', 'false'); +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "devtool", "devtool-0", "'source-map'"); +defineTest(__dirname, "devtool", "devtool-0", "myVariable"); +defineTest(__dirname, "devtool", "devtool-1", "'cheap-module-source-map'"); +defineTest(__dirname, "devtool", "devtool-1", "false"); diff --git a/lib/creator/transformations/entry/entry.js b/lib/creator/transformations/entry/entry.js index 5f142907561..8b0970f0eef 100644 --- a/lib/creator/transformations/entry/entry.js +++ b/lib/creator/transformations/entry/entry.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -12,28 +13,28 @@ const utils = require('../../../transformations/utils'); * @returns ast - jscodeshift API */ - module.exports = function(j, ast, webpackProperties) { - function createEntryProperty(p) { - - if(typeof(webpackProperties) === 'string') { - return utils.pushCreateProperty(j, p, 'entry', webpackProperties); + if (typeof webpackProperties === "string") { + return utils.pushCreateProperty(j, p, "entry", webpackProperties); } - if(Array.isArray(webpackProperties)) { + if (Array.isArray(webpackProperties)) { const externalArray = utils.createArrayWithChildren( - j, 'entry', webpackProperties, true + j, + "entry", + webpackProperties, + true ); return p.value.properties.push(externalArray); - } - else { - utils.pushCreateProperty(j, p, 'entry', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'entry'); + } else { + utils.pushCreateProperty(j, p, "entry", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "entry"); } } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createEntryProperty)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createEntryProperty)); } else { return ast; } diff --git a/lib/creator/transformations/entry/entry.test.js b/lib/creator/transformations/entry/entry.test.js index 27047eb84ee..1124378369a 100644 --- a/lib/creator/transformations/entry/entry.test.js +++ b/lib/creator/transformations/entry/entry.test.js @@ -1,17 +1,24 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'entry', 'entry-0', '\'index.js\''); -defineTest(__dirname, 'entry', 'entry-0', ['\'index.js\'', '\'app.js\'']); -defineTest(__dirname, 'entry', 'entry-0', { - index: '\'index.js\'', - app: '\'app.js\'' +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "entry", "entry-0", "'index.js'"); +defineTest(__dirname, "entry", "entry-0", ["'index.js'", "'app.js'"]); +defineTest(__dirname, "entry", "entry-0", { + index: "'index.js'", + app: "'app.js'" }); -defineTest(__dirname, 'entry', 'entry-0', { - inject: 'something', - app: '\'app.js\'', - inject_1: 'else' +defineTest(__dirname, "entry", "entry-0", { + inject: "something", + app: "'app.js'", + inject_1: "else" }); -defineTest(__dirname, 'entry', 'entry-0', '() => \'index.js\''); -defineTest(__dirname, 'entry', 'entry-0', '() => new Promise((resolve) => resolve([\'./app\', \'./router\']))'); -defineTest(__dirname, 'entry', 'entry-0', 'entryStringVariable'); +defineTest(__dirname, "entry", "entry-0", "() => 'index.js'"); +defineTest( + __dirname, + "entry", + "entry-0", + "() => new Promise((resolve) => resolve(['./app', './router']))" +); +defineTest(__dirname, "entry", "entry-0", "entryStringVariable"); diff --git a/lib/creator/transformations/externals/externals.js b/lib/creator/transformations/externals/externals.js index 9f20dc2d801..29b394a1e37 100644 --- a/lib/creator/transformations/externals/externals.js +++ b/lib/creator/transformations/externals/externals.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -14,24 +15,39 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createExternalProperty(p) { - if(webpackProperties instanceof RegExp || typeof(webpackProperties) === 'string') { - return utils.pushCreateProperty(j, p, 'externals', webpackProperties); + if ( + webpackProperties instanceof RegExp || + typeof webpackProperties === "string" + ) { + return utils.pushCreateProperty(j, p, "externals", webpackProperties); } - if(Array.isArray(webpackProperties)) { + if (Array.isArray(webpackProperties)) { const externalArray = utils.createArrayWithChildren( - j, 'externals', webpackProperties, true + j, + "externals", + webpackProperties, + true ); return p.value.properties.push(externalArray); - } - else { - utils.pushCreateProperty(j, p, 'externals', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'externals'); + } else { + utils.pushCreateProperty(j, p, "externals", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "externals"); } } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.safeTraverse(p , ['parent', 'value', 'left', 'property', 'name']) === 'exports') - .forEach(createExternalProperty); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter( + p => + utils.safeTraverse(p, [ + "parent", + "value", + "left", + "property", + "name" + ]) === "exports" + ) + .forEach(createExternalProperty); } else { return ast; } diff --git a/lib/creator/transformations/externals/externals.test.js b/lib/creator/transformations/externals/externals.test.js index 07331dda65a..a64bceaef78 100644 --- a/lib/creator/transformations/externals/externals.test.js +++ b/lib/creator/transformations/externals/externals.test.js @@ -1,61 +1,61 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'externals', 'externals-0', /react/); -defineTest(__dirname, 'externals', 'externals-1', { - jquery: '\'jQuery\'', - react: '\'react\'' +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "externals", "externals-0", /react/); +defineTest(__dirname, "externals", "externals-1", { + jquery: "'jQuery'", + react: "'react'" }); -defineTest(__dirname, 'externals', 'externals-1', 'myObj'); +defineTest(__dirname, "externals", "externals-1", "myObj"); -defineTest(__dirname, 'externals', 'externals-1', { - jquery: '\'jQuery\'', - react: 'reactObj' +defineTest(__dirname, "externals", "externals-1", { + jquery: "'jQuery'", + react: "reactObj" }); -defineTest(__dirname, 'externals', 'externals-1', { - jquery: '\'jQuery\'', - react: ['reactObj', 'path.join(__dirname, \'app\')', '\'jquery\''] +defineTest(__dirname, "externals", "externals-1", { + jquery: "'jQuery'", + react: ["reactObj", "path.join(__dirname, 'app')", "'jquery'"] }); -defineTest(__dirname, 'externals', 'externals-1', { +defineTest(__dirname, "externals", "externals-1", { lodash: { - commonjs: '\'lodash\'', - amd: '\'lodash\'', - root: '\'_\'' + commonjs: "'lodash'", + amd: "'lodash'", + root: "'_'" } }); -defineTest(__dirname, 'externals', 'externals-1', { +defineTest(__dirname, "externals", "externals-1", { lodash: { - commonjs: 'lodash', - amd: 'hidash', - root: '_' + commonjs: "lodash", + amd: "hidash", + root: "_" } }); -defineTest(__dirname, 'externals', 'externals-1', [ +defineTest(__dirname, "externals", "externals-1", [ { - a: 'false', - b: 'true', - '\'./ext\'': './hey' + a: "false", + b: "true", + "'./ext'": "./hey" }, - 'function(context, request, callback) {' + - 'if (/^yourregex$/.test(request)){' + - 'return callback(null, \'commonjs \' + request);' + - '}' + - 'callback();' + - '}' -] -); - -defineTest(__dirname, 'externals', 'externals-1', [ - 'myObj', - 'function(context, request, callback) {' + - 'if (/^yourregex$/.test(request)){' + - 'return callback(null, \'commonjs \' + request);' + - '}' + - 'callback();' + - '}' -] -); + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" +]); + +defineTest(__dirname, "externals", "externals-1", [ + "myObj", + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" +]); diff --git a/lib/creator/transformations/index.js b/lib/creator/transformations/index.js index 779bede11c6..73610e7f74f 100644 --- a/lib/creator/transformations/index.js +++ b/lib/creator/transformations/index.js @@ -1,30 +1,32 @@ -const path = require('path'); -const j = require('jscodeshift'); -const chalk = require('chalk'); -const pEachSeries = require('p-each-series'); +"use strict"; -const runPrettier = require('../utils/run-prettier'); +const path = require("path"); +const j = require("jscodeshift"); +const chalk = require("chalk"); +const pEachSeries = require("p-each-series"); -const entryTransform = require('./entry/entry'); -const outputTransform = require('./output/output'); -const contextTransform = require('./context/context'); -const resolveTransform = require('./resolve/resolve'); -const devtoolTransform = require('./devtool/devtool'); -const targetTransform = require('./target/target'); -const watchTransform = require('./watch/watch'); -const watchOptionsTransform = require('./watch/watchOptions'); -const externalsTransform = require('./externals/externals'); -const nodeTransform = require('./node/node'); -const performanceTransform = require('./performance/performance'); -const statsTransform = require('./stats/stats'); -const amdTransform = require('./other/amd'); -const bailTransform = require('./other/bail'); -const cacheTransform = require('./other/cache'); -const profileTransform = require('./other/profile'); -const mergeTransform = require('./other/merge'); -const moduleTransform = require('./module/module'); -const pluginsTransform = require('./plugins/plugins'); -const topScopeTransform = require('./top-scope/top-scope'); +const runPrettier = require("../utils/run-prettier"); + +const entryTransform = require("./entry/entry"); +const outputTransform = require("./output/output"); +const contextTransform = require("./context/context"); +const resolveTransform = require("./resolve/resolve"); +const devtoolTransform = require("./devtool/devtool"); +const targetTransform = require("./target/target"); +const watchTransform = require("./watch/watch"); +const watchOptionsTransform = require("./watch/watchOptions"); +const externalsTransform = require("./externals/externals"); +const nodeTransform = require("./node/node"); +const performanceTransform = require("./performance/performance"); +const statsTransform = require("./stats/stats"); +const amdTransform = require("./other/amd"); +const bailTransform = require("./other/bail"); +const cacheTransform = require("./other/cache"); +const profileTransform = require("./other/profile"); +const mergeTransform = require("./other/merge"); +const moduleTransform = require("./module/module"); +const pluginsTransform = require("./plugins/plugins"); +const topScopeTransform = require("./top-scope/top-scope"); /* * @function runTransform @@ -60,15 +62,14 @@ const transformsObject = { }; module.exports = function runTransform(webpackProperties) { - // webpackOptions.name sent to nameTransform if match - Object.keys(webpackProperties).forEach( (scaffoldPiece) => { + Object.keys(webpackProperties).forEach(scaffoldPiece => { const config = webpackProperties[scaffoldPiece]; const transformations = Object.keys(transformsObject).map(k => { - const stringVal = k.substr(0, k.indexOf('Transform')); - if(config.webpackOptions) { - if(config.webpackOptions[stringVal]) { + const stringVal = k.substr(0, k.indexOf("Transform")); + if (config.webpackOptions) { + if (config.webpackOptions[stringVal]) { return [transformsObject[k], config.webpackOptions[stringVal]]; } else { return [transformsObject[k], config[stringVal]]; @@ -78,34 +79,38 @@ module.exports = function runTransform(webpackProperties) { } }); - const ast = j('module.exports = {}'); + const ast = j("module.exports = {}"); return pEachSeries(transformations, f => { - if(!f[1]) { + if (!f[1]) { return f[0](j, ast); } else { return f[0](j, ast, f[1]); } }) - .then(() => { - let configurationName; - if(!config.configName) { - configurationName = 'webpack.config.js'; - } else { - configurationName = 'webpack.' + config.configName + '.js'; - } + .then(() => { + let configurationName; + if (!config.configName) { + configurationName = "webpack.config.js"; + } else { + configurationName = "webpack." + config.configName + ".js"; + } - const outputPath = path.join(process.cwd(), configurationName); - const source = ast.toSource({ - quote: 'single' - }); + const outputPath = path.join(process.cwd(), configurationName); + const source = ast.toSource({ + quote: "single" + }); - runPrettier(outputPath, source); - }).catch(err => { - console.error(err.message ? err.message : err); - }); + runPrettier(outputPath, source); + }) + .catch(err => { + console.error(err.message ? err.message : err); + }); }); - process.stdout.write('\n' + chalk.green( - 'Congratulations! Your new webpack configuration file has been created!\n' - )); + process.stdout.write( + "\n" + + chalk.green( + "Congratulations! Your new webpack configuration file has been created!\n" + ) + ); }; diff --git a/lib/creator/transformations/module/module.js b/lib/creator/transformations/module/module.js index 66c1371dccb..991a7497e8a 100644 --- a/lib/creator/transformations/module/module.js +++ b/lib/creator/transformations/module/module.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,21 +14,19 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - function createModuleProperties(p) { - utils.pushCreateProperty(j, p, 'module', j.objectExpression([])); - return utils.safeTraverse(p, ['key', 'name'] === 'module'); + utils.pushCreateProperty(j, p, "module", j.objectExpression([])); + return utils.safeTraverse(p, ["key", "name"] === "module"); } function createRules(p) { - return utils.pushObjectKeys( - j, p, webpackProperties, 'module' - ); + return utils.pushObjectKeys(j, p, webpackProperties, "module"); } - if(!webpackProperties) { + if (!webpackProperties) { return ast; } else { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createModuleProperties)) - .forEach(p => createRules(p)); + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createModuleProperties)) + .forEach(p => createRules(p)); } }; diff --git a/lib/creator/transformations/module/module.test.js b/lib/creator/transformations/module/module.test.js index 710060d9c5e..278f246c28f 100644 --- a/lib/creator/transformations/module/module.test.js +++ b/lib/creator/transformations/module/module.test.js @@ -1,93 +1,108 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'module', 'module-0', { - rules: [{ - test: new RegExp(/\.(js|vue)$/), - loader: '\'eslint-loader\'', - enforce: '\'pre\'', - include: ['customObj', '\'Stringy\''], - options: { - formatter: '\'someOption\'' - } - }, { - test: new RegExp(/\.vue$/), - loader: '\'vue-loader\'', - options: 'vueObject' - }, { - test: new RegExp(/\.js$/), - loader: '\'babel-loader\'', - include: ['resolve(\'src\')', 'resolve(\'test\')'] - }, { - test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: '\'url-loader\'', - options: { - limit: 10000, - name: 'utils.assetsPath(\'img/[name].[hash:7].[ext]\')' - } - }, { - test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: '\'url-loader\'', - options: { - limit: '10000', - name: 'utils.assetsPath(\'fonts/[name].[hash:7].[ext]\')', - someArr: ['Hey'] +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "module", "module-0", { + rules: [ + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + test: new RegExp(/\.vue$/), + loader: "'vue-loader'", + options: "vueObject" + }, + { + test: new RegExp(/\.js$/), + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')" + } + }, + { + test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')", + someArr: ["Hey"] + } } - }] + ] }); -defineTest(__dirname, 'module', 'module-1', { +defineTest(__dirname, "module", "module-1", { noParse: /jquery|lodash/, - rules: [{ - test: new RegExp(/\.js$/), - parser: { - amd: false - }, - use: [ - '\'htmllint-loader\'', - { - loader: '\'html-loader\'', - options: { - hello: '\'world\'' + rules: [ + { + test: new RegExp(/\.js$/), + parser: { + amd: false + }, + use: [ + "'htmllint-loader'", + { + loader: "'html-loader'", + options: { + hello: "'world'" + } } - } - ] - }] + ] + } + ] }); -defineTest(__dirname, 'module', 'module-0', { +defineTest(__dirname, "module", "module-0", { rules: [ - '{{#if_eq build \'standalone\'}}', + "{{#if_eq build 'standalone'}}", { test: new RegExp(/\.(js|vue)$/), - loader: '\'eslint-loader\'', - enforce: '\'pre\'', - include: ['customObj', '\'Stringy\''], + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], options: { - formatter: '\'someOption\'' + formatter: "'someOption'" } - }, { + }, + { test: new RegExp(/\.vue$/), - loader: '\'vue-loader\'', - options: 'vueObject' - }, { + loader: "'vue-loader'", + options: "vueObject" + }, + { test: new RegExp(/\.js$/), - loader: '\'babel-loader\'', - include: ['resolve(\'src\')', 'resolve(\'test\')'] - }, { + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: '\'url-loader\'', + loader: "'url-loader'", options: { limit: 10000, - name: 'utils.assetsPath(\'img/[name].[hash:7].[ext]\')', - inject: '{{#if_eq build \'standalone\'}}' + name: "utils.assetsPath('img/[name].[hash:7].[ext]')", + inject: "{{#if_eq build 'standalone'}}" } - }, { + }, + { test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: '\'url-loader\'', - inject: '{{#if_eq build \'standalone\'}}', + loader: "'url-loader'", + inject: "{{#if_eq build 'standalone'}}", options: { - limit: '10000', - name: 'utils.assetsPath(\'fonts/[name].[hash:7].[ext]\')' + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" } - }] + } + ] }); diff --git a/lib/creator/transformations/node/node.js b/lib/creator/transformations/node/node.js index 26a9a13ffe4..92a3d31a271 100644 --- a/lib/creator/transformations/node/node.js +++ b/lib/creator/transformations/node/node.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -14,12 +15,13 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createNodeProperty(p) { - utils.pushCreateProperty(j, p, 'node', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'node'); + utils.pushCreateProperty(j, p, "node", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "node"); } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createNodeProperty)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createNodeProperty)); } else { return ast; } diff --git a/lib/creator/transformations/node/node.test.js b/lib/creator/transformations/node/node.test.js index 53cf24e541a..bfa478d9e19 100644 --- a/lib/creator/transformations/node/node.test.js +++ b/lib/creator/transformations/node/node.test.js @@ -1,11 +1,13 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'node', 'node-0', { +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "node", "node-0", { console: false, global: true, process: true, Buffer: true, - __filename: 'mock', - __dirname: 'mock', + __filename: "mock", + __dirname: "mock", setImmediate: true }); diff --git a/lib/creator/transformations/other/amd.js b/lib/creator/transformations/other/amd.js index 8453e6105c1..24d0aa9a24e 100644 --- a/lib/creator/transformations/other/amd.js +++ b/lib/creator/transformations/other/amd.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -14,12 +15,13 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createAMDProperty(p) { - utils.pushCreateProperty(j, p, 'amd', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'amd'); + utils.pushCreateProperty(j, p, "amd", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "amd"); } - if(webpackProperties && typeof(webpackProperties) === 'object') { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createAMDProperty)); + if (webpackProperties && typeof webpackProperties === "object") { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createAMDProperty)); } else { return ast; } diff --git a/lib/creator/transformations/other/bail.js b/lib/creator/transformations/other/bail.js index b61d793f30a..1fe4f3bed37 100644 --- a/lib/creator/transformations/other/bail.js +++ b/lib/creator/transformations/other/bail.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,10 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'bail', webpackProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "bail", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/other/cache.js b/lib/creator/transformations/other/cache.js index ad0ee5d5e0c..ecb9eae8d72 100644 --- a/lib/creator/transformations/other/cache.js +++ b/lib/creator/transformations/other/cache.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,10 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'cache', webpackProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "cache", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/other/merge.js b/lib/creator/transformations/other/merge.js index b93d2f4bde8..5a80331de5d 100644 --- a/lib/creator/transformations/other/merge.js +++ b/lib/creator/transformations/other/merge.js @@ -1,3 +1,5 @@ +"use strict"; + /* * * Transform for merge. Finds the merge property from yeoman and creates a way @@ -12,32 +14,32 @@ module.exports = function(j, ast, webpackProperties) { function createMergeProperty(p) { // FIXME Use j.callExp() - let exportsDecl = p.value.body.map( (n) => { - if(n.expression) { + let exportsDecl = p.value.body.map(n => { + if (n.expression) { return n.expression.right; } }); const bodyLength = exportsDecl.length; let newVal = {}; - newVal.type = 'ExpressionStatement'; + newVal.type = "ExpressionStatement"; newVal.expression = { - type: 'AssignmentExpression', - operator: '=', + type: "AssignmentExpression", + operator: "=", left: { - type: 'MemberExpression', + type: "MemberExpression", computed: false, - object: j.identifier('module'), - property: j.identifier('exports') + object: j.identifier("module"), + property: j.identifier("exports") }, - right: j.callExpression( - j.identifier('merge'), - [j.identifier(webpackProperties), exportsDecl.pop()]) + right: j.callExpression(j.identifier("merge"), [ + j.identifier(webpackProperties), + exportsDecl.pop() + ]) }; p.value.body[bodyLength - 1] = newVal; } - if(webpackProperties) { - return ast.find(j.Program) - .filter(p => createMergeProperty(p)); + if (webpackProperties) { + return ast.find(j.Program).filter(p => createMergeProperty(p)); } else { return ast; } diff --git a/lib/creator/transformations/other/other.test.js b/lib/creator/transformations/other/other.test.js index ba9d0c66ac9..a976a9ba25f 100644 --- a/lib/creator/transformations/other/other.test.js +++ b/lib/creator/transformations/other/other.test.js @@ -1,11 +1,13 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'amd', 'other-0', { +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "amd", "other-0", { jQuery: true, - kQuery: false} -); -defineTest(__dirname, 'bail', 'other-0', true); -defineTest(__dirname, 'cache', 'other-0', true); -defineTest(__dirname, 'cache', 'other-0', 'cacheVal'); -defineTest(__dirname, 'profile', 'other-0', true); -defineTest(__dirname, 'merge', 'other-0', 'myConfig'); + kQuery: false +}); +defineTest(__dirname, "bail", "other-0", true); +defineTest(__dirname, "cache", "other-0", true); +defineTest(__dirname, "cache", "other-0", "cacheVal"); +defineTest(__dirname, "profile", "other-0", true); +defineTest(__dirname, "merge", "other-0", "myConfig"); diff --git a/lib/creator/transformations/other/profile.js b/lib/creator/transformations/other/profile.js index bdb146dc9d4..07f08bea4f7 100644 --- a/lib/creator/transformations/other/profile.js +++ b/lib/creator/transformations/other/profile.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,9 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'profile', webpackProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "profile", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/output/output.js b/lib/creator/transformations/output/output.js index ea69aaab02a..1c19f70d095 100644 --- a/lib/creator/transformations/output/output.js +++ b/lib/creator/transformations/output/output.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -11,15 +12,15 @@ const utils = require('../../../transformations/utils'); * @param { Object } webpackProperties - Object containing transformation rules * @returns ast - jscodeshift API */ - module.exports = function(j, ast, webpackProperties) { function createOutputProperties(p) { - utils.pushCreateProperty(j, p, 'output', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'output'); + utils.pushCreateProperty(j, p, "output", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "output"); } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createOutputProperties)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createOutputProperties)); } else { return ast; } diff --git a/lib/creator/transformations/output/output.test.js b/lib/creator/transformations/output/output.test.js index 413ead9c291..9b7544604b8 100644 --- a/lib/creator/transformations/output/output.test.js +++ b/lib/creator/transformations/output/output.test.js @@ -1,13 +1,15 @@ -const defineTest = require('../../../transformations/defineTest'); -const jscodeshift = require('jscodeshift'); +"use strict"; -defineTest(__dirname, 'output', 'output-0', { - filename: '\'bundle\'', - path: '\'dist/assets\'', +const defineTest = require("../../../transformations/defineTest"); +const jscodeshift = require("jscodeshift"); + +defineTest(__dirname, "output", "output-0", { + filename: "'bundle'", + path: "'dist/assets'", pathinfo: true, - publicPath: '\'https://google.com\'', - sourceMapFilename: '\'[name].map\'', - sourcePrefix: jscodeshift('\'\t\''), + publicPath: "'https://google.com'", + sourceMapFilename: "'[name].map'", + sourcePrefix: jscodeshift("'\t'"), umdNamedDefine: true, strictModuleExceptionHandling: true }); diff --git a/lib/creator/transformations/performance/performance.js b/lib/creator/transformations/performance/performance.js index 7450f12df62..f00c1e21572 100644 --- a/lib/creator/transformations/performance/performance.js +++ b/lib/creator/transformations/performance/performance.js @@ -1,5 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; +const utils = require("../../../transformations/utils"); /* * @@ -13,14 +14,14 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - function createPerformanceProperty(p) { - utils.pushCreateProperty(j, p, 'performance', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'performance'); + utils.pushCreateProperty(j, p, "performance", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "performance"); } - if(webpackProperties && typeof(webpackProperties) === 'object') { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createPerformanceProperty)); + if (webpackProperties && typeof webpackProperties === "object") { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createPerformanceProperty)); } else { return ast; } diff --git a/lib/creator/transformations/performance/performance.test.js b/lib/creator/transformations/performance/performance.test.js index 0e078cb5d24..61840ca16ff 100644 --- a/lib/creator/transformations/performance/performance.test.js +++ b/lib/creator/transformations/performance/performance.test.js @@ -1,10 +1,11 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'performance', 'performance-0', { - hints: '\'warning\'', +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "performance", "performance-0", { + hints: "'warning'", maxEntrypointSize: 400000, maxAssetSize: 100000, - assetFilter: 'function(assetFilename) {' + - 'return assetFilename.endsWith(\'.js\');' + - '}' + assetFilter: + "function(assetFilename) {" + "return assetFilename.endsWith('.js');" + "}" }); diff --git a/lib/creator/transformations/plugins/plugins.js b/lib/creator/transformations/plugins/plugins.js index 33167582f29..45c382501f1 100644 --- a/lib/creator/transformations/plugins/plugins.js +++ b/lib/creator/transformations/plugins/plugins.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -13,12 +15,18 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createPluginsProperty(p) { - const pluginArray = utils.createArrayWithChildren(j, 'plugins', webpackProperties, true); + const pluginArray = utils.createArrayWithChildren( + j, + "plugins", + webpackProperties, + true + ); return p.value.properties.push(pluginArray); } - if(webpackProperties && Array.isArray(webpackProperties)) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createPluginsProperty)); + if (webpackProperties && Array.isArray(webpackProperties)) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createPluginsProperty)); } else { return ast; } diff --git a/lib/creator/transformations/plugins/plugins.test.js b/lib/creator/transformations/plugins/plugins.test.js index dde8d0ae2d5..7412024992f 100644 --- a/lib/creator/transformations/plugins/plugins.test.js +++ b/lib/creator/transformations/plugins/plugins.test.js @@ -1,5 +1,14 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'plugins', 'plugins-0', [ - 'new webpack.optimize.CommonsChunkPlugin({name:' + '\'' + 'vendor' + '\'' + ',filename:' + '\'' + 'vendor' + '-[hash].min.js\'})' +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "plugins", "plugins-0", [ + "new webpack.optimize.CommonsChunkPlugin({name:" + + "'" + + "vendor" + + "'" + + ",filename:" + + "'" + + "vendor" + + "-[hash].min.js'})" ]); diff --git a/lib/creator/transformations/resolve/resolve.js b/lib/creator/transformations/resolve/resolve.js index 66d572edb84..01bba7000e3 100644 --- a/lib/creator/transformations/resolve/resolve.js +++ b/lib/creator/transformations/resolve/resolve.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -13,14 +15,14 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createResolveProperties(p) { - utils.pushCreateProperty(j, p, 'resolve', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'resolve'); - } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createResolveProperties)); + utils.pushCreateProperty(j, p, "resolve", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "resolve"); } - else { + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createResolveProperties)); + } else { return ast; } }; diff --git a/lib/creator/transformations/resolve/resolve.test.js b/lib/creator/transformations/resolve/resolve.test.js index 53218c2a4f3..89ecd087957 100644 --- a/lib/creator/transformations/resolve/resolve.test.js +++ b/lib/creator/transformations/resolve/resolve.test.js @@ -1,27 +1,29 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'resolve', 'resolve-0', { +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "resolve", "resolve-0", { alias: { - inject: '{{#if_eq build \'standalone\'}}', - hello: '\'world\'', - inject_1: '{{/if_eq}}', - world: 'hello', + inject: "{{#if_eq build 'standalone'}}", + hello: "'world'", + inject_1: "{{/if_eq}}", + world: "hello" }, - aliasFields: ['\'browser\'', 'wars'], - descriptionFiles: ['\'a\'', 'b'], + aliasFields: ["'browser'", "wars"], + descriptionFiles: ["'a'", "b"], enforceExtension: false, enforceModuleExtension: false, - extensions: ['hey', '\'ho\''], - mainFields: ['main', '\'story\''], - mainFiles: ['\'noMainFileHere\'', 'iGuess'], - modules: ['one', '\'two\''], + extensions: ["hey", "'ho'"], + mainFields: ["main", "'story'"], + mainFiles: ["'noMainFileHere'", "iGuess"], + modules: ["one", "'two'"], unsafeCache: false, resolveLoader: { - modules: ['\'node_modules\'', 'mode_nodules'], - extensions: ['jsVal', '\'.json\''], - mainFields: ['loader', '\'main\''], - moduleExtensions: ['\'-loader\'', 'value'] + modules: ["'node_modules'", "mode_nodules"], + extensions: ["jsVal", "'.json'"], + mainFields: ["loader", "'main'"], + moduleExtensions: ["'-loader'", "value"] }, - plugins: ['somePlugin', '\'stringVal\''], + plugins: ["somePlugin", "'stringVal'"], symlinks: true }); diff --git a/lib/creator/transformations/stats/stats.js b/lib/creator/transformations/stats/stats.js index 46a0e0ad5e3..d843caf04ee 100644 --- a/lib/creator/transformations/stats/stats.js +++ b/lib/creator/transformations/stats/stats.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -13,16 +15,25 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createStatsProperty(p) { - utils.pushCreateProperty(j, p, 'stats', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'stats'); - } - if(webpackProperties && typeof(webpackProperties) === 'object') { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createStatsProperty)); + utils.pushCreateProperty(j, p, "stats", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "stats"); } - else if(webpackProperties && webpackProperties.length) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'stats', webpackProperties)); + if (webpackProperties && typeof webpackProperties === "object") { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createStatsProperty)); + } else if (webpackProperties && webpackProperties.length) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "stats", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/stats/stats.test.js b/lib/creator/transformations/stats/stats.test.js index 432eac37522..c830ddb38e2 100644 --- a/lib/creator/transformations/stats/stats.test.js +++ b/lib/creator/transformations/stats/stats.test.js @@ -1,26 +1,28 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'stats', 'stats-0', { +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "stats", "stats-0", { assets: true, - assetsSort: '\'field\'', + assetsSort: "'field'", cached: true, cachedAssets: true, children: true, chunks: true, chunkModules: true, chunkOrigins: true, - chunksSort: '\'field\'', - context: '\'../src/\'', + chunksSort: "'field'", + context: "'../src/'", colors: true, depth: false, - entrypoints: 'customVal', + entrypoints: "customVal", errors: true, errorDetails: true, exclude: [], hash: true, maxModules: 15, modules: true, - modulesSort: '\'field\'', + modulesSort: "'field'", performance: true, providedExports: false, publicPath: true, @@ -31,4 +33,4 @@ defineTest(__dirname, 'stats', 'stats-0', { version: true, warnings: true }); -defineTest(__dirname, 'stats', 'stats-0', '\'errors-only\''); +defineTest(__dirname, "stats", "stats-0", "'errors-only'"); diff --git a/lib/creator/transformations/target/target.js b/lib/creator/transformations/target/target.js index 01501315d1d..7b5dca6bed1 100644 --- a/lib/creator/transformations/target/target.js +++ b/lib/creator/transformations/target/target.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -12,10 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - - if(webpackProperties && webpackProperties.length) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'target', webpackProperties)); + if (webpackProperties && webpackProperties.length) { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "target", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/target/target.test.js b/lib/creator/transformations/target/target.test.js index e42a7347a91..e29d6ab1853 100644 --- a/lib/creator/transformations/target/target.test.js +++ b/lib/creator/transformations/target/target.test.js @@ -1,4 +1,6 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'target', 'target-0', '\'async-node\''); -defineTest(__dirname, 'target', 'target-1', 'node'); +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "target", "target-0", "'async-node'"); +defineTest(__dirname, "target", "target-1", "node"); diff --git a/lib/creator/transformations/top-scope/top-scope.js b/lib/creator/transformations/top-scope/top-scope.js index 06e681d4577..daa92a75642 100644 --- a/lib/creator/transformations/top-scope/top-scope.js +++ b/lib/creator/transformations/top-scope/top-scope.js @@ -1,4 +1,3 @@ - /* * * Get an property named topScope from yeoman and inject it to the top scope of @@ -12,11 +11,11 @@ module.exports = function(j, ast, webpackProperties) { function createTopScopeProperty(p) { - webpackProperties.forEach( (n) => { + webpackProperties.forEach(n => { p.value.body.splice(-1, 0, n); }); } - if(webpackProperties) { + if (webpackProperties) { return ast.find(j.Program).filter(p => createTopScopeProperty(p)); } }; diff --git a/lib/creator/transformations/top-scope/top-scope.test.js b/lib/creator/transformations/top-scope/top-scope.test.js index da1398e55f9..728b777c5d3 100644 --- a/lib/creator/transformations/top-scope/top-scope.test.js +++ b/lib/creator/transformations/top-scope/top-scope.test.js @@ -1,5 +1,5 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'top-scope', 'top-scope-0', [ - 'var test = \'me\';' -]); +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "top-scope", "top-scope-0", ["var test = 'me';"]); diff --git a/lib/creator/transformations/watch/watch.js b/lib/creator/transformations/watch/watch.js index 650ddd22805..ed92c572672 100644 --- a/lib/creator/transformations/watch/watch.js +++ b/lib/creator/transformations/watch/watch.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -12,9 +14,18 @@ const utils = require('../../../transformations/utils'); */ module.exports = function(j, ast, webpackProperties) { - if(typeof(webpackProperties) === 'boolean') { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(j, p, utils.pushCreateProperty, 'watch', webpackProperties)); + if (typeof webpackProperties === "boolean") { + return ast + .find(j.ObjectExpression) + .filter(p => + utils.isAssignment( + j, + p, + utils.pushCreateProperty, + "watch", + webpackProperties + ) + ); } else { return ast; } diff --git a/lib/creator/transformations/watch/watch.test.js b/lib/creator/transformations/watch/watch.test.js index c564fcba4ec..ddaec086374 100644 --- a/lib/creator/transformations/watch/watch.test.js +++ b/lib/creator/transformations/watch/watch.test.js @@ -1,6 +1,8 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'watch', 'watch-0', true); -defineTest(__dirname, 'watch', 'watch-0', false); -defineTest(__dirname, 'watch', 'watch-1', true); -defineTest(__dirname, 'watch', 'watch-1', false); +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "watch", "watch-0", true); +defineTest(__dirname, "watch", "watch-0", false); +defineTest(__dirname, "watch", "watch-1", true); +defineTest(__dirname, "watch", "watch-1", false); diff --git a/lib/creator/transformations/watch/watchOptions.js b/lib/creator/transformations/watch/watchOptions.js index b08c8218a5c..c7f88cb48ab 100644 --- a/lib/creator/transformations/watch/watchOptions.js +++ b/lib/creator/transformations/watch/watchOptions.js @@ -1,4 +1,6 @@ -const utils = require('../../../transformations/utils'); +"use strict"; + +const utils = require("../../../transformations/utils"); /* * @@ -13,12 +15,13 @@ const utils = require('../../../transformations/utils'); module.exports = function(j, ast, webpackProperties) { function createWatchOptionsProperty(p) { - utils.pushCreateProperty(j, p, 'watchOptions', j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, 'watchOptions'); + utils.pushCreateProperty(j, p, "watchOptions", j.objectExpression([])); + return utils.pushObjectKeys(j, p, webpackProperties, "watchOptions"); } - if(webpackProperties) { - return ast.find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createWatchOptionsProperty)); + if (webpackProperties) { + return ast + .find(j.ObjectExpression) + .filter(p => utils.isAssignment(null, p, createWatchOptionsProperty)); } else { return ast; } diff --git a/lib/creator/transformations/watch/watchOptions.test.js b/lib/creator/transformations/watch/watchOptions.test.js index 33eb8811e08..33a7d369fc3 100644 --- a/lib/creator/transformations/watch/watchOptions.test.js +++ b/lib/creator/transformations/watch/watchOptions.test.js @@ -1,19 +1,21 @@ -const defineTest = require('../../../transformations/defineTest'); +"use strict"; -defineTest(__dirname, 'watchOptions', 'watch-0', { +const defineTest = require("../../../transformations/defineTest"); + +defineTest(__dirname, "watchOptions", "watch-0", { aggregateTimeout: 300, poll: 1000, - ignored: '/node_modules/' + ignored: "/node_modules/" }); -defineTest(__dirname, 'watchOptions', 'watch-1', { +defineTest(__dirname, "watchOptions", "watch-1", { aggregateTimeout: 300, poll: 1000, - ignored: '/node_modules/' + ignored: "/node_modules/" }); -defineTest(__dirname, 'watchOptions', 'watch-2', { +defineTest(__dirname, "watchOptions", "watch-2", { aggregateTimeout: 300, poll: 1000, - ignored: '/node_modules/' + ignored: "/node_modules/" }); diff --git a/lib/creator/utils/run-prettier.js b/lib/creator/utils/run-prettier.js index 59f60b0e161..5d503eedde0 100644 --- a/lib/creator/utils/run-prettier.js +++ b/lib/creator/utils/run-prettier.js @@ -1,6 +1,8 @@ -const prettier = require('prettier'); -const fs = require('fs'); -const chalk = require('chalk'); +"use strict"; + +const prettier = require("prettier"); +const fs = require("fs"); +const chalk = require("chalk"); /* * @@ -18,16 +20,19 @@ module.exports = function runPrettier(outputPath, source) { prettySource = prettier.format(source, { singleQuote: true, useTabs: true, - tabWidth: 1, + tabWidth: 1 }); - } catch(err) { - process.stdout.write('\n' + - chalk.yellow(`WARNING: Could not apply prettier to ${outputPath}` + - ' due validation error, but the file has been created\n') + } catch (err) { + process.stdout.write( + "\n" + + chalk.yellow( + `WARNING: Could not apply prettier to ${outputPath}` + + " due validation error, but the file has been created\n" + ) ); prettySource = source; } - return fs.writeFileSync(outputPath, prettySource, 'utf8'); + return fs.writeFileSync(outputPath, prettySource, "utf8"); } - return fs.writeFile(outputPath, source, 'utf8', validateConfig); + return fs.writeFile(outputPath, source, "utf8", validateConfig); }; diff --git a/lib/creator/utils/validate-options.js b/lib/creator/utils/validate-options.js index 111bebd428b..143e623f63e 100644 --- a/lib/creator/utils/validate-options.js +++ b/lib/creator/utils/validate-options.js @@ -1,5 +1,7 @@ -const fs = require('fs'); -const path = require('path'); +"use strict"; + +const fs = require("fs"); +const path = require("path"); /* * @function getPath @@ -25,12 +27,12 @@ function getPath(part) { */ module.exports = function validateOptions(opts) { - return Object.keys(opts).forEach( (location) => { + return Object.keys(opts).forEach(location => { let part = getPath(opts[location]); try { fs.readFileSync(part); } catch (err) { - console.error('Found no file at:', part); + console.error("Found no file at:", part); process.exitCode = 1; } }); diff --git a/lib/creator/utils/validate-options.spec.js b/lib/creator/utils/validate-options.spec.js index aae91533562..fe342e78fa1 100644 --- a/lib/creator/utils/validate-options.spec.js +++ b/lib/creator/utils/validate-options.spec.js @@ -1,19 +1,25 @@ -'use strict'; +"use strict"; -const validateOptions = require('../../../__mocks__/creator/validate-options.mock').validateOptions; +"use strict"; -describe('validate-options', () => { +const validateOptions = require("../../../__mocks__/creator/validate-options.mock") + .validateOptions; - it('should throw on fake paths', () => { +describe("validate-options", () => { + it("should throw on fake paths", () => { expect(() => { - validateOptions({entry: 'noop', output: 'noopsi'}); - }).toThrowError('Did not find the file'); + validateOptions({ + entry: "noop", + output: "noopsi" + }); + }).toThrowError("Did not find the file"); }); - it('should find the real files', () => { + it("should find the real files", () => { expect(() => { - validateOptions({entry: 'package.json'}); + validateOptions({ + entry: "package.json" + }); }).not.toThrowError(/'Did not find the file'/); }); - }); diff --git a/lib/creator/yeoman/utils/entry.js b/lib/creator/yeoman/utils/entry.js index ebd587b050e..a21ae95eabc 100644 --- a/lib/creator/yeoman/utils/entry.js +++ b/lib/creator/yeoman/utils/entry.js @@ -1,33 +1,35 @@ -const InputValidate = require('webpack-addons').InputValidate; -const validate = require('./validate'); +"use strict"; + +const InputValidate = require("webpack-addons").InputValidate; +const validate = require("./validate"); module.exports = (self, answer) => { let entryIdentifiers; let result; - if(answer['entryType'] === true) { + if (answer["entryType"] === true) { result = self.prompt([ InputValidate( - 'multipleEntries', - 'Type the names you want for your modules (entry files), separated by comma [example: \'app,vendor\']', + "multipleEntries", + "Type the names you want for your modules (entry files), separated by comma [example: 'app,vendor']", validate ) - ]).then( (multipleEntriesAnswer) => { + ]).then(multipleEntriesAnswer => { let webpackEntryPoint = {}; - entryIdentifiers = multipleEntriesAnswer['multipleEntries'].split(','); + entryIdentifiers = multipleEntriesAnswer["multipleEntries"].split(","); function forEachPromise(obj, fn) { - return obj.reduce(function (promise, prop) { + return obj.reduce(function(promise, prop) { const trimmedProp = prop.trim(); - return promise.then(function (n) { - if(n) { - Object.keys(n).forEach( (val) => { - if( - n[val].charAt(0) !== '(' - && n[val].charAt(0) !== '[' - && n[val].indexOf('function') < 0 - && n[val].indexOf('path') < 0 - && n[val].indexOf('process') < 0 + return promise.then(n => { + if (n) { + Object.keys(n).forEach((val) => { + if ( + n[val].charAt(0) !== "(" + && n[val].charAt(0) !== "[" + && n[val].indexOf("function") < 0 + && n[val].indexOf("path") < 0 + && n[val].indexOf("process") < 0 ) { - n[val] = `'${n[val]}.js'`; + n[val] = `"${n[val]}.js"`; } webpackEntryPoint[val] = n[val]; }); @@ -41,34 +43,33 @@ module.exports = (self, answer) => { return forEachPromise(entryIdentifiers, (entryProp) => self.prompt([ InputValidate( `${entryProp}`, - `What is the location of '${entryProp}'? [example: './src/${entryProp}']`, + `What is the location of "${entryProp}"? [example: "./src/${entryProp}"]`, validate ) ])).then(propAns => { - Object.keys(propAns).forEach( (val) => { - if( - propAns[val].charAt(0) !== '(' - && propAns[val].charAt(0) !== '[' - && propAns[val].indexOf('function') < 0 - && propAns[val].indexOf('path') < 0 - && propAns[val].indexOf('process') < 0 + Object.keys(propAns).forEach((val) => { + if ( + propAns[val].charAt(0) !== "(" + && propAns[val].charAt(0) !== "[" + && propAns[val].indexOf("function") < 0 + && propAns[val].indexOf("path") < 0 + && propAns[val].indexOf("process") < 0 ) { - propAns[val] = `'${propAns[val]}.js'`; + propAns[val] = `"${propAns[val]}.js"`; } webpackEntryPoint[val] = propAns[val]; }); return webpackEntryPoint; }); }); - } - else { + } else { result = self.prompt([ InputValidate( - 'singularEntry', - 'Which module will be the first to enter the application? [example: \'./src/index\']', + "singularEntry", + "Which module will be the first to enter the application? [example: './src/index']", validate ) - ]).then( (singularAnswer) => `'${singularAnswer['singularEntry']}'`); + ]).then((singularAnswer) => `"${singularAnswer["singularEntry"]}"`); } return result; }; diff --git a/lib/creator/yeoman/utils/module.js b/lib/creator/yeoman/utils/module.js index 161ec111962..b9b8660f606 100644 --- a/lib/creator/yeoman/utils/module.js +++ b/lib/creator/yeoman/utils/module.js @@ -1,12 +1,10 @@ module.exports = () => { return { test: new RegExp(/\.js$/), - exclude: '/node_modules/', - loader: '\'babel-loader\'', + exclude: "/node_modules/", + loader: "'babel-loader'", options: { - presets: [ - '\'es2015\'' - ] + presets: ["'es2015'"] } }; }; diff --git a/lib/creator/yeoman/utils/plugins.js b/lib/creator/yeoman/utils/plugins.js index 90b39179d41..bcd523ad462 100644 --- a/lib/creator/yeoman/utils/plugins.js +++ b/lib/creator/yeoman/utils/plugins.js @@ -1,5 +1,3 @@ module.exports = () => { - return [ - 'new UglifyJSPlugin()' - ]; + return ["new UglifyJSPlugin()"]; }; diff --git a/lib/creator/yeoman/utils/tooltip.js b/lib/creator/yeoman/utils/tooltip.js index 16a5e840276..97bf748a009 100644 --- a/lib/creator/yeoman/utils/tooltip.js +++ b/lib/creator/yeoman/utils/tooltip.js @@ -1,37 +1,35 @@ module.exports = { uglify: () => { - return (`/* + return `/* * We've enabled UglifyJSPlugin for you! This minifies your app * in order to load faster and run less javascript. * * https://github.com/webpack-contrib/uglifyjs-webpack-plugin * - */`); + */`; }, commonsChunk: () => { - return (`/* + return `/* * We've enabled commonsChunkPlugin for you. This allows your app to * load faster and it splits the modules you provided as entries across * different bundles! * * https://webpack.js.org/plugins/commons-chunk-plugin/ * - */`); + */`; }, cssPlugin: () => { - return( - `/* + return `/* * We've enabled ExtractTextPlugin for you. This allows your app to * use css modules that will be moved into a separate CSS file instead of inside * one of your module entries! * * https://github.com/webpack-contrib/extract-text-webpack-plugin * - */`); + */`; }, postcss: () => { - return( - `/* + return `/* * We've enabled Postcss, autoprefixer and precss for you. This allows your app * to lint CSS, support variables and mixins, transpile future CSS syntax, * inline images, and more! @@ -44,6 +42,6 @@ module.exports = { * * https://github.com/jonathantneal/precss * - */`); + */`; } }; diff --git a/lib/creator/yeoman/utils/validate.js b/lib/creator/yeoman/utils/validate.js index bf981fd454f..9f8f932f7e8 100644 --- a/lib/creator/yeoman/utils/validate.js +++ b/lib/creator/yeoman/utils/validate.js @@ -1,7 +1,9 @@ -module.exports = (value) => { +"use strict"; + +module.exports = value => { const pass = value.length; - if(pass) { + if (pass) { return true; } - return 'Please specify an answer!'; + return "Please specify an answer!"; }; diff --git a/lib/creator/yeoman/webpack-adapter.js b/lib/creator/yeoman/webpack-adapter.js index 00cf84195c1..4a9262ea848 100644 --- a/lib/creator/yeoman/webpack-adapter.js +++ b/lib/creator/yeoman/webpack-adapter.js @@ -1,4 +1,6 @@ -const inquirer = require('inquirer'); +"use strict"; + +const inquirer = require("inquirer"); /* * @class - WebpackAdapter @@ -10,7 +12,7 @@ const inquirer = require('inquirer'); module.exports = class WebpackAdapter { prompt(questions, callback) { const promise = inquirer.prompt(questions); - promise.then(callback || function(){}); + promise.then(callback || function() {}); return promise; } }; diff --git a/lib/creator/yeoman/webpack-generator.js b/lib/creator/yeoman/webpack-generator.js index 1381d30033a..983ed8c86bd 100644 --- a/lib/creator/yeoman/webpack-generator.js +++ b/lib/creator/yeoman/webpack-generator.js @@ -1,22 +1,24 @@ -const Generator = require('yeoman-generator'); -const chalk = require('chalk'); +"use strict"; -const createCommonsChunkPlugin = require('webpack-addons').createCommonsChunkPlugin; +const Generator = require("yeoman-generator"); +const chalk = require("chalk"); -const Input = require('webpack-addons').Input; -const Confirm = require('webpack-addons').Confirm; -const RawList = require('webpack-addons').RawList; +const createCommonsChunkPlugin = require("webpack-addons").createCommonsChunkPlugin; -const entryQuestions = require('./utils/entry'); -const getBabelPlugin = require('./utils/module'); -const getDefaultPlugins = require('./utils/plugins'); -const tooltip = require('./utils/tooltip'); +const Input = require("webpack-addons").Input; +const Confirm = require("webpack-addons").Confirm; +const RawList = require("webpack-addons").RawList; + +const entryQuestions = require("./utils/entry"); +const getBabelPlugin = require("./utils/module"); +const getDefaultPlugins = require("./utils/plugins"); +const tooltip = require("./utils/tooltip"); module.exports = class WebpackGenerator extends Generator { constructor(args, opts) { super(args, opts); this.isProd = false; - this.npmInstalls = ['webpack', 'uglifyjs-webpack-plugin']; + this.npmInstalls = ["webpack", "uglifyjs-webpack-plugin"]; this.configuration = { config: { webpackOptions: {}, @@ -25,256 +27,255 @@ module.exports = class WebpackGenerator extends Generator { }; } prompting() { - let done = this.async(); let self = this; let oneOrMoreEntries; let regExpForStyles; let ExtractUseProps; process.stdout.write( - '\n' + chalk.bold('Insecure about some of the questions?') + '\n' + `\n${chalk.bold("Insecure about some of the questions?")}\n` ); process.stdout.write( - `\n${chalk.bold.green('https://github.com/webpack/webpack-cli/blob/master/INIT.md')}\n\n` + `\n${chalk.bold.green("https://github.com/webpack/webpack-cli/blob/master/INIT.md")}\n\n` ); this.configuration.config.webpackOptions.module = { rules: [] }; this.configuration.config.webpackOptions.plugins = getDefaultPlugins(); this.configuration.config.topScope.push( - 'const webpack = require(\'webpack\')', - 'const path = require(\'path\')', + "const webpack = require('webpack')", + "const path = require('path')", tooltip.uglify(), - 'const UglifyJSPlugin = require(\'uglifyjs-webpack-plugin\');', - '\n' + "const UglifyJSPlugin = require('uglifyjs-webpack-plugin');", + "\n" ); this.prompt([ - Confirm('entryType', 'Will your application have multiple bundles?') - ]).then( (entryTypeAnswer) => { + Confirm("entryType", "Will your application have multiple bundles?") + ]).then(entryTypeAnswer => { // Ask different questions for entry points entryQuestions(self, entryTypeAnswer).then(entryOptions => { this.configuration.config.webpackOptions.entry = entryOptions; oneOrMoreEntries = Object.keys(entryOptions); - }).then( () => { - + }).then(() => { this.prompt([ Input( - 'outputType', - 'Which folder will your generated bundles be in? [default: dist]:' + "outputType", + "Which folder will your generated bundles be in? [default: dist]:" ) - ]).then( (outputTypeAnswer) => { - if(!this.configuration.config.webpackOptions.entry.length) { + ]).then(outputTypeAnswer => { + if (!this.configuration.config.webpackOptions.entry.length) { this.configuration.config.topScope.push(tooltip.commonsChunk()); this.configuration.config.webpackOptions.output = { - filename: '\'[name].[chunkhash].js\'', - chunkFilename: '\'[name].[chunkhash].js\'' + filename: "'[name].[chunkhash].js'", + chunkFilename: "'[name].[chunkhash].js'" }; } else { this.configuration.config.webpackOptions.output = { - filename: '\'[name].bundle.js\'', + filename: "'[name].bundle.js'", }; } - if(outputTypeAnswer['outputType'].length) { - this.configuration.config.webpackOptions.output.path = `'${outputTypeAnswer['outputType']}'`; + if (outputTypeAnswer["outputType"].length) { + this.configuration.config.webpackOptions.output.path = `"${outputTypeAnswer["outputType"]}"`; } else { - this.configuration.config.webpackOptions.output.path = '\path.resolve(__dirname, \'dist\')'; + this.configuration.config.webpackOptions.output.path = "path.resolve(__dirname, 'dist')"; } - }).then( () => { + }).then(() => { this.prompt([ - Confirm('prodConfirm', 'Are you going to use this in production?') - ]).then( (prodAnswer) => { - if(prodAnswer['prodConfirm'] === true) { + Confirm("prodConfirm", "Are you going to use this in production?") + ]).then(prodAnswer => { + if (prodAnswer["prodConfirm"] === true) { this.isProd = true; } else { this.isProd = false; } - }).then( () => { + }).then(() => { this.prompt([ - Confirm('babelConfirm', 'Will you be using ES2015?') - ]).then( (ans) => { - if(ans['babelConfirm'] === true) { + Confirm("babelConfirm", "Will you be using ES2015?") + ]).then(ans => { + if (ans["babelConfirm"] === true) { this.configuration.config.webpackOptions.module.rules.push(getBabelPlugin()); - this.npmInstalls.push('babel-loader', 'babel-core', 'babel-preset-es2015'); + this.npmInstalls.push("babel-loader", "babel-core", "babel-preset-es2015"); } - }).then( () => { + }).then(() => { this.prompt([ RawList( - 'stylingType', - 'Will you use one of the below CSS solutions?', - ['SASS', 'LESS', 'CSS', 'PostCSS', 'No'] + "stylingType", + "Will you use one of the below CSS solutions?", + ["SASS", "LESS", "CSS", "PostCSS", "No"] ) - ]).then( (stylingAnswer) => { - if(!this.isProd) { + ]).then(stylingAnswer => { + if (!this.isProd) { ExtractUseProps = []; } - if(stylingAnswer['stylingType'] === 'SASS') { - this.npmInstalls.push( - 'sass-loader', 'node-sass', - 'style-loader', 'css-loader' - ); - regExpForStyles = new RegExp(/\.(scss|css)$/); - if(this.isProd) { - ExtractUseProps = `use: [{ - loader: 'css-loader', - options: { - sourceMap: true - } - }, { - loader: 'sass-loader', - options: { - sourceMap: true - } - }], - fallback: 'style-loader'`; - } else { - ExtractUseProps.push({ - loader: '\'style-loader\'' - }, { - loader: '\'css-loader\'' - }, { - loader: '\'sass-loader\'' - }); - } - } - else if(stylingAnswer['stylingType'] === 'LESS') { - regExpForStyles = new RegExp(/\.(less|css)$/); - this.npmInstalls.push( - 'less-loader', 'less', - 'style-loader', 'css-loader' - ); - if(this.isProd) { - ExtractUseProps = ` - use: [{ - loader: 'css-loader', - options: { - sourceMap: true - } - }, { - loader: 'less-loader', - options: { - sourceMap: true - } - }], - fallback: 'style-loader'`; - } else { - ExtractUseProps.push({ - loader: '\'css-loader\'', - options: { - sourceMap: true - } - }, { - loader: '\'less-loader\'', - options: { - sourceMap: true - } - }); - } - } - else if(stylingAnswer['stylingType'] === 'PostCSS') { - this.configuration.config.topScope.push( - tooltip.postcss(), - 'const autoprefixer = require(\'autoprefixer\');', - 'const precss = require(\'precss\');', - '\n' - ); - this.npmInstalls.push( - 'style-loader', 'css-loader', - 'postcss-loader', 'precss', - 'autoprefixer' - ); - regExpForStyles = new RegExp(/\.css$/); - if(this.isProd) { - ExtractUseProps = ` - use: [{ - loader: 'style-loader' - },{ - loader: 'css-loader', - options: { - sourceMap: true, - importLoaders: 1 - } - }, { - loader: 'postcss-loader', - options: { - plugins: function () { - return [ - precss, - autoprefixer - ]; + switch (stylingAnswer["stylingType"]) { + case "SASS": + this.npmInstalls.push( + "sass-loader", "node-sass", + "style-loader", "css-loader" + ); + regExpForStyles = new RegExp(/\.(scss|css)$/); + if (this.isProd) { + ExtractUseProps = `use: [{ + loader: "css-loader", + options: { + sourceMap: true } - } - }], - fallback: 'style-loader'`; - } else { - ExtractUseProps.push({ - loader: '\'style-loader\'' - },{ - loader: '\'css-loader\'', - options: { - sourceMap: true, - importLoaders: 1 - } - }, { - loader: '\'postcss-loader\'', - options: { - plugins: `function () { - return [ - precss, - autoprefixer - ]; - }` - } - }); - } - } - else if(stylingAnswer['stylingType'] === 'CSS') { - this.npmInstalls.push('style-loader', 'css-loader'); - regExpForStyles = new RegExp(/\.css$/); - if(this.isProd) { - ExtractUseProps = `use: [{ - loader: 'css-loader', - options: { - sourceMap: true - } - }], - fallback: 'style-loader'`; - } else { - ExtractUseProps.push({ - loader: '\'style-loader\'', - options: { - sourceMap: true - } - }, { - loader: '\'css-loader\'', - }); - } - } - else { - regExpForStyles = null; + }, { + loader: "sass-loader", + options: { + sourceMap: true + } + }], + fallback: "style-loader"`; + } else { + ExtractUseProps.push({ + loader: "'style-loader'" + }, { + loader: "'css-loader'" + }, { + loader: "'sass-loader'" + }); + } + break; + case "LESS": + regExpForStyles = new RegExp(/\.(less|css)$/); + this.npmInstalls.push( + "less-loader", "less", + "style-loader", "css-loader" + ); + if (this.isProd) { + ExtractUseProps = ` + use: [{ + loader: "css-loader", + options: { + sourceMap: true + } + }, { + loader: "less-loader", + options: { + sourceMap: true + } + }], + fallback: "style-loader"`; + } else { + ExtractUseProps.push({ + loader: "'css-loader'", + options: { + sourceMap: true + } + }, { + loader: "'less-loader'", + options: { + sourceMap: true + } + }); + } + break; + case "PostCSS": + this.configuration.config.topScope.push( + tooltip.postcss(), + "const autoprefixer = require('autoprefixer');", + "const precss = require('precss');", + "\n" + ); + this.npmInstalls.push( + "style-loader", "css-loader", + "postcss-loader", "precss", + "autoprefixer" + ); + regExpForStyles = new RegExp(/\.css$/); + if (this.isProd) { + ExtractUseProps = ` + use: [{ + loader: "style-loader" + },{ + loader: "css-loader", + options: { + sourceMap: true, + importLoaders: 1 + } + }, { + loader: "postcss-loader", + options: { + plugins: function () { + return [ + precss, + autoprefixer + ]; + } + } + }], + fallback: "style-loader"`; + } else { + ExtractUseProps.push({ + loader: "'style-loader'" + },{ + loader: "'css-loader'", + options: { + sourceMap: true, + importLoaders: 1 + } + }, { + loader: "'postcss-loader'", + options: { + plugins: `function () { + return [ + precss, + autoprefixer + ]; + }` + } + }); + } + break; + case "CSS": + this.npmInstalls.push("style-loader", "css-loader"); + regExpForStyles = new RegExp(/\.css$/); + if (this.isProd) { + ExtractUseProps = `use: [{ + loader: "css-loader", + options: { + sourceMap: true + } + }], + fallback: "style-loader"`; + } else { + ExtractUseProps.push({ + loader: "'style-loader'", + options: { + sourceMap: true + } + }, { + loader: "'css-loader'", + }); + } + break; + default: + regExpForStyles = null; } - }).then( () => { + }).then(() => { // Ask if the user wants to use extractPlugin this.prompt([ Input( - 'extractPlugin', - 'If you want to bundle your CSS files, what will you name the bundle? (press enter to skip)' + "extractPlugin", + "If you want to bundle your CSS files, what will you name the bundle? (press enter to skip)" ) - ]).then( (extractAnswer) => { - if(regExpForStyles) { - if(this.isProd) { + ]).then(extractAnswer => { + if (regExpForStyles) { + if (this.isProd) { this.configuration.config.topScope.push(tooltip.cssPlugin()); - this.npmInstalls.push('extract-text-webpack-plugin'); - if(extractAnswer['extractPlugin'].length !== 0) { + this.npmInstalls.push("extract-text-webpack-plugin"); + if (extractAnswer["extractPlugin"].length !== 0) { this.configuration.config.webpackOptions.plugins.push( - 'new ExtractTextPlugin(\'' + - extractAnswer['extractPlugin'] + - '.[contentHash].css\')' + "new ExtractTextPlugin('" + + extractAnswer["extractPlugin"] + + ".[contentHash].css')" ); } else { this.configuration.config.webpackOptions.plugins.push( - 'new ExtractTextPlugin(\'' + - 'style.css\')' + "new ExtractTextPlugin('" + + "style.css')" ); } const moduleRulesObj = { @@ -287,8 +288,8 @@ module.exports = class WebpackGenerator extends Generator { moduleRulesObj ); this.configuration.config.topScope.push( - 'const ExtractTextPlugin = require(\'extract-text-webpack-plugin\');', - '\n' + "const ExtractTextPlugin = require('extract-text-webpack-plugin');", + "\n" ); } else { const moduleRulesObj = { @@ -300,9 +301,9 @@ module.exports = class WebpackGenerator extends Generator { ); } } - }).then( () => { - if(!this.configuration.config.webpackOptions.entry.length) { - oneOrMoreEntries.forEach( (prop) => { + }).then(() => { + if (!this.configuration.config.webpackOptions.entry.length) { + oneOrMoreEntries.forEach(prop => { this.configuration.config.webpackOptions.plugins.push( createCommonsChunkPlugin(prop) ); @@ -319,18 +320,18 @@ module.exports = class WebpackGenerator extends Generator { } installPlugins() { let asyncNamePrompt = this.async(); - let defaultName = this.isProd ? 'prod' : 'config'; + let defaultName = this.isProd ? "prod" : "config"; this.prompt([ - Input('nameType', `Name your \'webpack.[name].js?\' [default: \'${defaultName}\']:`) - ]).then( (nameAnswer) => { - if(nameAnswer['nameType'].length) { - this.configuration.config.configName = nameAnswer['nameType']; + Input("nameType", `Name your 'webpack.[name].js?' [default: '${defaultName}']:`) + ]).then(nameAnswer => { + if (nameAnswer["nameType"].length) { + this.configuration.config.configName = nameAnswer["nameType"]; } else { this.configuration.config.configName = defaultName; } - }).then( () => { + }).then(() => { asyncNamePrompt(); - this.npmInstall(this.npmInstalls, { 'save-dev': true }); + this.npmInstall(this.npmInstalls, { "save-dev": true }); }); } diff --git a/lib/initialize.js b/lib/initialize.js index 0988943e89d..732d36ac525 100644 --- a/lib/initialize.js +++ b/lib/initialize.js @@ -1,5 +1,7 @@ -const npmPackagesExists = require('./utils/npm-packages-exists'); -const creator = require('./creator/index').creator; +"use strict"; + +const npmPackagesExists = require("./utils/npm-packages-exists"); +const creator = require("./creator/index").creator; /* * @function initializeInquirer @@ -13,7 +15,7 @@ const creator = require('./creator/index').creator; */ module.exports = function initializeInquirer(pkg) { - if(pkg.length == 0) { + if (pkg.length === 0) { return creator(); } return npmPackagesExists(pkg); diff --git a/lib/migrate.js b/lib/migrate.js index cff1904a329..218ce0f2c62 100644 --- a/lib/migrate.js +++ b/lib/migrate.js @@ -1,53 +1,66 @@ -const fs = require('fs'); -const chalk = require('chalk'); -const diff = require('diff'); -const inquirer = require('inquirer'); -const PLazy = require('p-lazy'); -const Listr = require('listr'); -const validateSchema = require('./utils/validateSchema.js'); -const webpackOptionsSchema = require('./utils/webpackOptionsSchema.json'); -const WebpackOptionsValidationError = require('./utils/WebpackOptionsValidationError'); +"use strict"; -module.exports = function transformFile(currentConfigPath, outputConfigPath, options) { - const recastOptions = Object.assign({ - quote: 'single' - }, options); +const fs = require("fs"); +const chalk = require("chalk"); +const diff = require("diff"); +const inquirer = require("inquirer"); +const PLazy = require("p-lazy"); +const Listr = require("listr"); +const validateSchema = require("./utils/validateSchema.js"); +const webpackOptionsSchema = require("./utils/webpackOptionsSchema.json"); +const WebpackOptionsValidationError = require("./utils/WebpackOptionsValidationError"); + +module.exports = function transformFile( + currentConfigPath, + outputConfigPath, + options +) { + const recastOptions = Object.assign( + { + quote: "single" + }, + options + ); const tasks = new Listr([ { - title: 'Reading webpack config', - task: (ctx) => new PLazy((resolve, reject) => { - fs.readFile(currentConfigPath, 'utf8', (err, content) => { - if (err) { - reject(err); - } - try { - const jscodeshift = require('jscodeshift'); - ctx.source = content; - ctx.ast = jscodeshift(content); - resolve(); - } catch (err) { - reject('Error generating AST', err); - } - }); - }) + title: "Reading webpack config", + task: ctx => + new PLazy((resolve, reject) => { + fs.readFile(currentConfigPath, "utf8", (err, content) => { + if (err) { + reject(err); + } + try { + const jscodeshift = require("jscodeshift"); + ctx.source = content; + ctx.ast = jscodeshift(content); + resolve(); + } catch (err) { + reject("Error generating AST", err); + } + }); + }) }, { - title: 'Migrating config from v1 to v2', - task: (ctx) => { - const transformations = require('./transformations').transformations; - return new Listr(Object.keys(transformations).map(key => { - const transform = transformations[key]; - return { - title: key, - task: () => transform(ctx.ast, ctx.source) - }; - })); + title: "Migrating config from v1 to v2", + task: ctx => { + const transformations = require("./transformations").transformations; + return new Listr( + Object.keys(transformations).map(key => { + const transform = transformations[key]; + return { + title: key, + task: () => transform(ctx.ast, ctx.source) + }; + }) + ); } } ]); - tasks.run() - .then((ctx) => { + tasks + .run() + .then(ctx => { const result = ctx.ast.toSource(recastOptions); const diffOutput = diff.diffLines(ctx.source, result); diffOutput.forEach(diffLine => { @@ -60,33 +73,41 @@ module.exports = function transformFile(currentConfigPath, outputConfigPath, opt inquirer .prompt([ { - type: 'confirm', - name: 'confirmMigration', - message: 'Are you sure these changes are fine?', - default: 'Y' + type: "confirm", + name: "confirmMigration", + message: "Are you sure these changes are fine?", + default: "Y" } ]) .then(answers => { - if (answers['confirmMigration']) { - fs.writeFile(outputConfigPath, result, 'utf8', (err) => { - const webpackOptionsValidationErrors = validateSchema(webpackOptionsSchema, require(outputConfigPath)); + if (answers["confirmMigration"]) { + fs.writeFile(outputConfigPath, result, "utf8", err => { + const webpackOptionsValidationErrors = validateSchema( + webpackOptionsSchema, + require(outputConfigPath) + ); if (err) { throw err; - } - else if (webpackOptionsValidationErrors.length) { - const validationMsg = new WebpackOptionsValidationError(webpackOptionsValidationErrors); + } else if (webpackOptionsValidationErrors.length) { + const validationMsg = new WebpackOptionsValidationError( + webpackOptionsValidationErrors + ); throw validationMsg.message; } else { - console.log(chalk.green(`\n ✔︎ New webpack v2 config file is at ${outputConfigPath}`)); + console.log( + chalk.green( + `\n ✔︎ New webpack v2 config file is at ${outputConfigPath}` + ) + ); } }); } else { - console.log(chalk.red('✖ Migration aborted')); + console.log(chalk.red("✖ Migration aborted")); } }); }) .catch(err => { - console.log(chalk.red('✖ ︎Migration aborted due to some errors')); + console.log(chalk.red("✖ ︎Migration aborted due to some errors")); console.error(err); process.exitCode = 1; }); diff --git a/lib/transformations/bannerPlugin/bannerPlugin.js b/lib/transformations/bannerPlugin/bannerPlugin.js index 9f40d172f7d..0d78942fa34 100644 --- a/lib/transformations/bannerPlugin/bannerPlugin.js +++ b/lib/transformations/bannerPlugin/bannerPlugin.js @@ -1,7 +1,10 @@ -const utils = require('../utils'); +"use strict"; + +const utils = require("../utils"); module.exports = function(j, ast) { - return utils.findPluginsByName(j, ast, ['webpack.BannerPlugin']) + return utils + .findPluginsByName(j, ast, ["webpack.BannerPlugin"]) .forEach(path => { const args = path.value.arguments; // If the first argument is a literal replace it with object notation @@ -9,11 +12,14 @@ module.exports = function(j, ast) { if (args && args.length > 1 && args[0].type === j.Literal.name) { // and remove the first argument path.value.arguments = [path.value.arguments[1]]; - utils.createOrUpdatePluginByName(j, path.parent, 'webpack.BannerPlugin', { - banner: args[0].value - }); + utils.createOrUpdatePluginByName( + j, + path.parent, + "webpack.BannerPlugin", + { + banner: args[0].value + } + ); } }); - - }; diff --git a/lib/transformations/bannerPlugin/bannerPlugin.test.js b/lib/transformations/bannerPlugin/bannerPlugin.test.js index fee919e427e..004d08b6635 100644 --- a/lib/transformations/bannerPlugin/bannerPlugin.test.js +++ b/lib/transformations/bannerPlugin/bannerPlugin.test.js @@ -1,5 +1,7 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'bannerPlugin', 'bannerPlugin-0'); -defineTest(__dirname, 'bannerPlugin', 'bannerPlugin-1'); -defineTest(__dirname, 'bannerPlugin', 'bannerPlugin-2'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "bannerPlugin", "bannerPlugin-0"); +defineTest(__dirname, "bannerPlugin", "bannerPlugin-1"); +defineTest(__dirname, "bannerPlugin", "bannerPlugin-2"); diff --git a/lib/transformations/defineTest.js b/lib/transformations/defineTest.js index 2824337e41e..b2417c2213e 100644 --- a/lib/transformations/defineTest.js +++ b/lib/transformations/defineTest.js @@ -1,63 +1,93 @@ -'use strict'; +"use strict"; -const fs = require('fs'); -const path = require('path'); +const fs = require("fs"); +const path = require("path"); /** - * Utility function to run a jscodeshift script within a unit test. This makes - * several assumptions about the environment: + * Utility function to run a jscodeshift script within a unit test. + * This makes several assumptions about the environment. * - * - `dirName` contains the name of the directory the test is located in. This - * should normally be passed via __dirname. + * Notes: * - The test should be located in a subdirectory next to the transform itself. * Commonly tests are located in a directory called __tests__. - * - `transformName` contains the filename of the transform being tested, - * excluding the .js extension. - * - `testFilePrefix` optionally contains the name of the file with the test - * data. If not specified, it defaults to the same value as `transformName`. - * This will be suffixed with ".input.js" for the input file and ".output.js" - * for the expected output. For example, if set to "foo", we will read the - * "foo.input.js" file, pass this to the transform, and expect its output to - * be equal to the contents of "foo.output.js". + * * - Test data should be located in a directory called __testfixtures__ * alongside the transform and __tests__ directory. + * @param {String} dirName contains the name of the directory the test is located in. This + * should normally be passed via __dirname. + * @param {String} transformName contains the filename of the transform being tested, + * excluding the .js extension. + * @param {String} [testFilePrefix] Optionally contains the name of the file with the test + * data. If not specified, it defaults to the same value as `transformName`. + * This will be suffixed with ".input.js" for the input file and ".output.js" + * for the expected output. For example, if set to "foo", we will read the + * "foo.input.js" file, pass this to the transform, and expect its output to + * be equal to the contents of "foo.output.js". + * @param {Object|Boolean|String} initOptions TBD + * @return {TBD} TBD */ -function runSingleTansform(dirName, transformName, testFilePrefix, initOptions) { +function runSingleTansform( + dirName, + transformName, + testFilePrefix, + initOptions +) { if (!testFilePrefix) { testFilePrefix = transformName; } - const fixtureDir = path.join(dirName, '__testfixtures__'); - const inputPath = path.join(fixtureDir, testFilePrefix + '.input.js'); - const source = fs.readFileSync(inputPath, 'utf8'); + const fixtureDir = path.join(dirName, "__testfixtures__"); + const inputPath = path.join(fixtureDir, testFilePrefix + ".input.js"); + const source = fs.readFileSync(inputPath, "utf8"); // Assumes transform and test are on the same level - const module = require(path.join(dirName, transformName + '.js')); + const module = require(path.join(dirName, transformName + ".js")); // Handle ES6 modules using default export for the transform const transform = module.default ? module.default : module; // Jest resets the module registry after each test, so we need to always get // a fresh copy of jscodeshift on every test run. - let jscodeshift = require('jscodeshift/dist/core'); + let jscodeshift = require("jscodeshift/dist/core"); if (module.parser) { jscodeshift = jscodeshift.withParser(module.parser); } const ast = jscodeshift(source); - if (initOptions || typeof(initOptions) === 'boolean') { - return transform(jscodeshift, ast, initOptions).toSource({ quote: 'single' }); + if (initOptions || typeof initOptions === "boolean") { + return transform(jscodeshift, ast, initOptions).toSource({ + quote: "single" + }); } - return transform(jscodeshift, ast, source).toSource({ quote: 'single' }); + return transform(jscodeshift, ast, source).toSource({ + quote: "single" + }); } /** * Handles some boilerplate around defining a simple jest/Jasmine test for a * jscodeshift transform. + * @param {String} dirName contains the name of the directory the test is located in. This + * should normally be passed via __dirname. + * @param {String} transformName contains the filename of the transform being tested, + * excluding the .js extension. + * @param {String} [testFilePrefix] Optionally contains the name of the file with the test + * data. If not specified, it defaults to the same value as `transformName`. + * This will be suffixed with ".input.js" for the input file and ".output.js" + * for the expected output. For example, if set to "foo", we will read the + * "foo.input.js" file, pass this to the transform, and expect its output to + * be equal to the contents of "foo.output.js". + * @param {TBD} type TBD + * @return {TBD} TBD */ function defineTest(dirName, transformName, testFilePrefix, type) { const testName = testFilePrefix ? `transforms correctly using "${testFilePrefix}" data` - : 'transforms correctly'; + : "transforms correctly"; describe(transformName, () => { it(testName, () => { - const output = runSingleTansform(dirName, transformName, testFilePrefix, type); + const output = runSingleTansform( + dirName, + transformName, + testFilePrefix, + type + ); expect(output).toMatchSnapshot(); }); }); diff --git a/lib/transformations/extractTextPlugin/extractTextPlugin.js b/lib/transformations/extractTextPlugin/extractTextPlugin.js index 3d60fedffdb..67df2f5e65b 100644 --- a/lib/transformations/extractTextPlugin/extractTextPlugin.js +++ b/lib/transformations/extractTextPlugin/extractTextPlugin.js @@ -1,9 +1,14 @@ -const utils = require('../utils'); +"use strict"; + +const utils = require("../utils"); function findInvocation(j, node, pluginName) { - return j(node) - .find(j.MemberExpression) - .filter(p => p.get('object').value.name === pluginName).size() > 0; + const invocation = + j(node) + .find(j.MemberExpression) + .filter(p => p.get("object").value.name === pluginName) + .size() > 0; + return invocation; } module.exports = function(j, ast) { @@ -12,21 +17,26 @@ module.exports = function(j, ast) { // if(args.length === 1) { // return p; // } else - const literalArgs = args.filter(p => utils.isType(p, 'Literal')); + const literalArgs = args.filter(p => utils.isType(p, "Literal")); if (literalArgs && literalArgs.length > 1) { - const newArgs = j.objectExpression(literalArgs.map((p, index) => - utils.createProperty(j, index === 0 ? 'fallback': 'use', p.value) - )); + const newArgs = j.objectExpression( + literalArgs.map((p, index) => + utils.createProperty(j, index === 0 ? "fallback" : "use", p.value) + ) + ); p.value.arguments = [newArgs]; } return p; }; - const name = utils.findVariableToPlugin(j, ast, 'extract-text-webpack-plugin'); - if(!name) return ast; + const name = utils.findVariableToPlugin( + j, + ast, + "extract-text-webpack-plugin" + ); + if (!name) return ast; - return ast.find(j.CallExpression) + return ast + .find(j.CallExpression) .filter(p => findInvocation(j, p, name)) - .forEach(changeArguments); + .forEach(changeArguments); }; - - diff --git a/lib/transformations/extractTextPlugin/extractTextPlugin.test.js b/lib/transformations/extractTextPlugin/extractTextPlugin.test.js index 66d74802356..199067becf3 100644 --- a/lib/transformations/extractTextPlugin/extractTextPlugin.test.js +++ b/lib/transformations/extractTextPlugin/extractTextPlugin.test.js @@ -1,3 +1,5 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'extractTextPlugin'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "extractTextPlugin"); diff --git a/lib/transformations/index.js b/lib/transformations/index.js index 721b66612f5..53d1d38c301 100644 --- a/lib/transformations/index.js +++ b/lib/transformations/index.js @@ -1,15 +1,17 @@ -const jscodeshift = require('jscodeshift'); -const pEachSeries = require('p-each-series'); -const PLazy = require('p-lazy'); +"use strict"; -const loadersTransform = require('./loaders/loaders'); -const resolveTransform = require('./resolve/resolve'); -const removeJsonLoaderTransform = require('./removeJsonLoader/removeJsonLoader'); -const uglifyJsPluginTransform = require('./uglifyJsPlugin/uglifyJsPlugin'); -const loaderOptionsPluginTransform = require('./loaderOptionsPlugin/loaderOptionsPlugin'); -const bannerPluginTransform = require('./bannerPlugin/bannerPlugin'); -const extractTextPluginTransform = require('./extractTextPlugin/extractTextPlugin'); -const removeDeprecatedPluginsTransform = require('./removeDeprecatedPlugins/removeDeprecatedPlugins'); +const jscodeshift = require("jscodeshift"); +const pEachSeries = require("p-each-series"); +const PLazy = require("p-lazy"); + +const loadersTransform = require("./loaders/loaders"); +const resolveTransform = require("./resolve/resolve"); +const removeJsonLoaderTransform = require("./removeJsonLoader/removeJsonLoader"); +const uglifyJsPluginTransform = require("./uglifyJsPlugin/uglifyJsPlugin"); +const loaderOptionsPluginTransform = require("./loaderOptionsPlugin/loaderOptionsPlugin"); +const bannerPluginTransform = require("./bannerPlugin/bannerPlugin"); +const extractTextPluginTransform = require("./extractTextPlugin/extractTextPlugin"); +const removeDeprecatedPluginsTransform = require("./removeDeprecatedPlugins/removeDeprecatedPlugins"); const transformsObject = { loadersTransform, @@ -23,7 +25,8 @@ const transformsObject = { }; const transformations = Object.keys(transformsObject).reduce((res, key) => { - res[key] = (ast, source) => transformSingleAST(ast, source, transformsObject[key]); + res[key] = (ast, source) => + transformSingleAST(ast, source, transformsObject[key]); return res; }, {}); @@ -52,10 +55,14 @@ function transformSingleAST(ast, source, transformFunction) { * */ function transform(source, transforms, options) { const ast = jscodeshift(source); - const recastOptions = Object.assign({ - quote: 'single' - }, options); - transforms = transforms || Object.keys(transformations).map(k => transformations[k]); + const recastOptions = Object.assign( + { + quote: "single" + }, + options + ); + transforms = + transforms || Object.keys(transformations).map(k => transformations[k]); return pEachSeries(transforms, f => f(ast, source)) .then(() => { return ast.toSource(recastOptions); diff --git a/lib/transformations/index.test.js b/lib/transformations/index.test.js index 4953beb8640..d1a47393a81 100644 --- a/lib/transformations/index.test.js +++ b/lib/transformations/index.test.js @@ -1,5 +1,7 @@ -const transform = require('./index').transform; -const transformations = require('./index').transformations; +"use strict"; + +const transform = require("./index").transform; +const transformations = require("./index").transformations; const input = ` module.exports = { @@ -13,7 +15,7 @@ module.exports = { }, module: { loaders: [{ - test: /\.js$/, + test: /.js$/, loaders: ['babel'], include: path.join(__dirname, 'src') }] @@ -30,31 +32,31 @@ module.exports = { }; `; -describe('transform', () => { - it('should not transform if no transformations defined', (done) => { +describe("transform", () => { + it("should not transform if no transformations defined", done => { transform(input, []).then(output => { expect(output).toEqual(input); done(); }); }); - it('should transform using all transformations', (done) => { + it("should transform using all transformations", done => { transform(input).then(output => { expect(output).toMatchSnapshot(); done(); }); }); - it('should transform only using specified transformations', (done) => { + it("should transform only using specified transformations", done => { transform(input, [transformations.loadersTransform]).then(output => { expect(output).toMatchSnapshot(); done(); }); }); - it('should respect recast options', (done) => { + it("should respect recast options", done => { transform(input, undefined, { - quote: 'double', + quote: "double", trailingComma: true }).then(output => { expect(output).toMatchSnapshot(); diff --git a/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.js b/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.js index df514e0fe07..fdefc80cedd 100644 --- a/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.js +++ b/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.js @@ -1,28 +1,34 @@ -const isEmpty = require('lodash/isEmpty'); -const findPluginsByName = require('../utils').findPluginsByName; -const createOrUpdatePluginByName = require('../utils').createOrUpdatePluginByName; -const safeTraverse = require('../utils').safeTraverse; +"use strict"; + +const isEmpty = require("lodash/isEmpty"); +const findPluginsByName = require("../utils").findPluginsByName; +const createOrUpdatePluginByName = require("../utils") + .createOrUpdatePluginByName; +const safeTraverse = require("../utils").safeTraverse; module.exports = function(j, ast) { const loaderOptions = {}; // If there is debug: true, set debug: true in the plugin // TODO: remove global debug setting - // TODO: I can't figure out how to find the topmost `debug: true`. help! - if (ast.find(j.Identifier, { name: 'debug' }).size()) { + // TODO: I can"t figure out how to find the topmost `debug: true`. help! + if (ast.find(j.Identifier, { name: "debug" }).size()) { loaderOptions.debug = true; } // If there is UglifyJsPlugin, set minimize: true - if (findPluginsByName(j, ast, ['webpack.optimize.UglifyJsPlugin']).size()) { + if (findPluginsByName(j, ast, ["webpack.optimize.UglifyJsPlugin"]).size()) { loaderOptions.minimize = true; } return ast .find(j.ArrayExpression) - .filter(path => safeTraverse(path, ['parent', 'value', 'key', 'name']) === 'plugins') + .filter( + path => + safeTraverse(path, ["parent", "value", "key", "name"]) === "plugins" + ) .forEach(path => { !isEmpty(loaderOptions) && - createOrUpdatePluginByName(j, path, 'webpack.LoaderOptionsPlugin', loaderOptions); + createOrUpdatePluginByName(j, path, "webpack.LoaderOptionsPlugin", loaderOptions); }); }; diff --git a/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.test.js b/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.test.js index 1339fc4bf35..bb3c78de07c 100644 --- a/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.test.js +++ b/lib/transformations/loaderOptionsPlugin/loaderOptionsPlugin.test.js @@ -1,6 +1,8 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'loaderOptionsPlugin', 'loaderOptionsPlugin-0'); -defineTest(__dirname, 'loaderOptionsPlugin', 'loaderOptionsPlugin-1'); -defineTest(__dirname, 'loaderOptionsPlugin', 'loaderOptionsPlugin-2'); -defineTest(__dirname, 'loaderOptionsPlugin', 'loaderOptionsPlugin-3'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-0"); +defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-1"); +defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-2"); +defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-3"); diff --git a/lib/transformations/loaders/loaders.js b/lib/transformations/loaders/loaders.js index 9178b4b3d06..17254c5643f 100644 --- a/lib/transformations/loaders/loaders.js +++ b/lib/transformations/loaders/loaders.js @@ -1,51 +1,52 @@ -const utils = require('../utils'); +"use strict"; + +const utils = require("../utils"); module.exports = function(j, ast) { /** - * Creates an Array expression out of loaders string - * - * For syntaxes like - * - * { - * loader: 'style!css` - * } - * - * or - * - * { - * loaders: ['style', 'css'] - * } - * - * or - * - * loaders: [{ - * loader: 'style' - * }, - * { - * loader: 'css', - * }] - * - * it should generate - * - * { - * use: [{ - * loader: 'style' - * }, - * { - * loader: 'css' - * }] - * } - * - * @param path {Node} - Must be an ObjectExpression - * @returns {*} - */ + * Creates an Array expression out of loaders string for syntaxes like + * + * { + * loader: 'style!css` + * } + * + * or + * + * { + * loaders: ['style', 'css'] + * } + * + * or + * + * loaders: [{ + * loader: 'style' + * }, + * { + * loader: 'css', + * }] + * + * it should generate + * + * { + * use: [{ + * loader: 'style' + * }, + * { + * loader: 'css' + * }] + * } + * @param {NodeObject} path Must be an ObjectExpression + * @returns {NodeObject} The created array expression + */ const createArrayExpressionFromArray = function(path) { // Find paths with `loaders` keys in the given Object - const paths = path.value.properties.filter(prop => prop.key.name.startsWith('loader')); + const paths = path.value.properties.filter(prop => + prop.key.name.startsWith("loader") + ); // For each pair of key and value paths.forEach(pair => { // Replace 'loaders' Identifier with 'use' - pair.key.name = 'use'; + pair.key.name = "use"; // If the value is an Array if (pair.value.type === j.ArrayExpression.name) { // replace its elements @@ -55,24 +56,22 @@ module.exports = function(j, ast) { if (arrElement.type === j.Literal.name) { // Replace with `{ loader: LOADER }` Object return j.objectExpression([ - utils.createProperty(j, 'loader', arrElement.value) + utils.createProperty(j, "loader", arrElement.value) ]); } // otherwise keep the existing element return arrElement; }) ); - // If the value is String of loaders like 'style!css' + // If the value is String of loaders like 'style!css' } else if (pair.value.type === j.Literal.name) { // Replace it with Array expression of loaders pair.value = j.arrayExpression( - pair.value.value - .split('!') - .map(loader => { - return j.objectExpression([ - utils.createProperty(j, 'loader', loader) - ]); - }) + pair.value.value.split("!").map(loader => { + return j.objectExpression([ + utils.createProperty(j, "loader", loader) + ]); + }) ); } }); @@ -81,155 +80,193 @@ module.exports = function(j, ast) { const createLoaderWithQuery = p => { let properties = p.value.properties; - let loaderValue = properties - .reduce((val, prop) => prop.key.name === 'loader' ? prop.value.value : val, ''); - let loader = loaderValue.split('?')[0]; - let query = loaderValue.split('?')[1]; - let options = query.split('&').map(option => { - const param = option.split('='); + let loaderValue = properties.reduce( + (val, prop) => (prop.key.name === "loader" ? prop.value.value : val), + "" + ); + let loader = loaderValue.split("?")[0]; + let query = loaderValue.split("?")[1]; + let options = query.split("&").map(option => { + const param = option.split("="); const key = param[0]; const val = param[1] || true; // No value in query string means it is truthy value return j.objectProperty(j.identifier(key), utils.createLiteral(j, val)); }); - let loaderProp = utils.createProperty(j, 'loader', loader); - let queryProp = j.property('init', j.identifier('options'), j.objectExpression(options)); + let loaderProp = utils.createProperty(j, "loader", loader); + let queryProp = j.property( + "init", + j.identifier("options"), + j.objectExpression(options) + ); return j.objectExpression([loaderProp, queryProp]); }; const findLoaderWithQueryString = p => { - return p.value.properties - .reduce((predicate, prop) => { - return utils.safeTraverse(prop, ['value', 'value', 'indexOf']) - && prop.value.value.indexOf('?') > -1 - || predicate; - }, false); + return p.value.properties.reduce((predicate, prop) => { + return ( + (utils.safeTraverse(prop, ["value", "value", "indexOf"]) && + prop.value.value.indexOf("?") > -1) || + predicate + ); + }, false); }; /** - * If the path value is `loaders` and it's located in `module` object - * we assume it's the loader's section - * - * @param path - */ - const checkForLoader = path => path.value.name === 'loaders' && - utils.safeTraverse(path, ['parent', 'parent', 'parent', 'node', 'key', 'name']) === 'module'; + * If the path value is `loaders` and it's located in `module` object + * we assume it's the loader's section + * + * @param {NodeObject} path Must be an ObjectExpression + * @return {tbd} tbd + */ + const checkForLoader = path => + path.value.name === "loaders" && + utils.safeTraverse(path, [ + "parent", + "parent", + "parent", + "node", + "key", + "name" + ]) === "module"; /** - * Puts node path that is pre- or postLoader into `enforce` key - * @param p {Node} - * @returns {*} - */ + * Puts node path that is pre- or postLoader into `enforce` key + * @param {object} p tbd + * @returns {object} A new object that contains the pre/post loaders in the enforce key of the loader + */ const fitIntoLoaders = p => { let loaders; p.value.properties.map(prop => { const keyName = prop.key.name; - if (keyName === 'loaders') { + if (keyName === "loaders") { loaders = prop.value; } }); p.value.properties.map(prop => { const keyName = prop.key.name; - if (keyName !== 'loaders') { - const enforceVal = keyName === 'preLoaders' ? 'pre' : 'post'; + if (keyName !== "loaders") { + const enforceVal = keyName === "preLoaders" ? "pre" : "post"; prop.value.elements.map(elem => { - elem.properties.push(utils.createProperty(j, 'enforce', enforceVal)); - if (loaders && loaders.type === 'ArrayExpression') { + elem.properties.push(utils.createProperty(j, "enforce", enforceVal)); + if (loaders && loaders.type === "ArrayExpression") { loaders.elements.push(elem); } else { - prop.key.name = 'loaders'; + prop.key.name = "loaders"; } }); } }); if (loaders) { - p.value.properties = p.value.properties.filter(prop => prop.key.name === 'loaders'); + p.value.properties = p.value.properties.filter( + prop => prop.key.name === "loaders" + ); } return p; }; /** - * Find pre and postLoaders - */ - const prepostLoaders = () => ast - .find(j.ObjectExpression) - .filter(p => utils.findObjWithOneOfKeys(p, ['preLoaders', 'postLoaders'])) - .forEach(fitIntoLoaders); + * Find pre and postLoaders + * @returns {*} All the pre and post loaders + */ + const prepostLoaders = () => + ast + .find(j.ObjectExpression) + .filter(p => utils.findObjWithOneOfKeys(p, ["preLoaders", "postLoaders"])) + .forEach(fitIntoLoaders); /** - * Convert top level `loaders` to `rules` - * See https://webpack.js.org/configuration/module/#module-rules - */ - const loadersToRules = () => ast - .find(j.Identifier) - .filter(checkForLoader) - .forEach(p => p.value.name = 'rules'); + * Convert top level `loaders` to `rules` + * See https://webpack.js.org/configuration/module/#module-rules + * @returns {Array} An array of object of all the rules + */ + const loadersToRules = () => + ast + .find(j.Identifier) + .filter(checkForLoader) + .forEach(p => (p.value.name = "rules")); /** - * Converts 'loader' and 'loaders' to Array of {Rule.Use} - */ - const loadersToArrayExpression = () => ast - .find(j.ObjectExpression) - .filter(path => utils.findObjWithOneOfKeys(path, ['loader', 'loaders'])) - .filter(path => utils.safeTraverse( - path, ['parent', 'parent', 'node', 'key', 'name']) === 'rules') - .forEach(createArrayExpressionFromArray); + * Converts 'loader' and 'loaders' to Array of {Rule.Use} + * @returns {Array} An array of objects of all the rules + */ + const loadersToArrayExpression = () => + ast + .find(j.ObjectExpression) + .filter(path => utils.findObjWithOneOfKeys(path, ["loader", "loaders"])) + .filter( + path => + utils.safeTraverse(path, [ + "parent", + "parent", + "node", + "key", + "name" + ]) === "rules" + ) + .forEach(createArrayExpressionFromArray); /** - * Finds loaders with options encoded as query string and replaces it with options obejct - * - * i.e. for loader like - * - * { - * loader: 'css?modules&importLoaders=1&string=test123' - * } - * - * it should generate - * { - * loader: 'css-loader', - * options: { - * modules: true, - * importLoaders: 1, - * string: 'test123' - * } - * } - */ - const loaderWithQueryParam = () => ast - .find(j.ObjectExpression) - .filter(p => utils.findObjWithOneOfKeys(p, 'loader')) - .filter(findLoaderWithQueryString) - .replaceWith(createLoaderWithQuery); + * Finds loaders with options encoded as query string and replaces it with options obejct + * + * i.e. for loader like + * + * { + * loader: 'css?modules&importLoaders=1&string=test123' + * } + * + * it should generate + * { + * loader: 'css-loader', + * options: { + * modules: true, + * importLoaders: 1, + * string: 'test123' + * } + * } + * @returns {Object} An object of the generated loader settings + */ + const loaderWithQueryParam = () => + ast + .find(j.ObjectExpression) + .filter(p => utils.findObjWithOneOfKeys(p, "loader")) + .filter(findLoaderWithQueryString) + .replaceWith(createLoaderWithQuery); /** - * Finds nodes with `query` key and replaces it with `options` - * - * i.e. for - * { - * query: { ... } - * } - * - * it should generate - * - * { - * options: { ... } - * } - */ - const loaderWithQueryProp = () => ast - .find(j.Identifier) - .filter(p => p.value.name === 'query') - .replaceWith(j.identifier('options')); + * Finds nodes with `query` key and replaces it with `options` + * + * i.e. for + * { + * query: { ... } + * } + * + * it should generate + * + * { + * options: { ... } + * } + * @returns {Object} An object with the replaced query into options + */ + const loaderWithQueryProp = () => + ast + .find(j.Identifier) + .filter(p => p.value.name === "query") + .replaceWith(j.identifier("options")); /** - * Adds required `-loader` suffix to loader with missing suffix - * i.e. for `babel` it should generate `babel-loader` - */ - const addLoaderSuffix = () => ast - .find(j.ObjectExpression) - .forEach(path => { + * Adds required `-loader` suffix to loader with missing suffix + * i.e. for `babel` it should generate `babel-loader` + * @returns {object} The new object that has all the `-loader` sufixes + */ + const addLoaderSuffix = () => + ast.find(j.ObjectExpression).forEach(path => { path.value.properties.forEach(prop => { - if (prop.key.name === 'loader' - && utils.safeTraverse(prop, ['value', 'value']) - && !prop.value.value.endsWith('-loader')) { - prop.value = j.literal(prop.value.value + '-loader'); + if ( + prop.key.name === "loader" && + utils.safeTraverse(prop, ["value", "value"]) && + !prop.value.value.endsWith("-loader") + ) { + prop.value = j.literal(prop.value.value + "-loader"); } }); }); diff --git a/lib/transformations/loaders/loaders.test.js b/lib/transformations/loaders/loaders.test.js index 4d23d086585..90d36acda2a 100644 --- a/lib/transformations/loaders/loaders.test.js +++ b/lib/transformations/loaders/loaders.test.js @@ -1,11 +1,13 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'loaders', 'loaders-0'); -defineTest(__dirname, 'loaders', 'loaders-1'); -defineTest(__dirname, 'loaders', 'loaders-2'); -defineTest(__dirname, 'loaders', 'loaders-3'); -defineTest(__dirname, 'loaders', 'loaders-4'); -defineTest(__dirname, 'loaders', 'loaders-5'); -defineTest(__dirname, 'loaders', 'loaders-6'); -defineTest(__dirname, 'loaders', 'loaders-7'); -defineTest(__dirname, 'loaders', 'loaders-8'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "loaders", "loaders-0"); +defineTest(__dirname, "loaders", "loaders-1"); +defineTest(__dirname, "loaders", "loaders-2"); +defineTest(__dirname, "loaders", "loaders-3"); +defineTest(__dirname, "loaders", "loaders-4"); +defineTest(__dirname, "loaders", "loaders-5"); +defineTest(__dirname, "loaders", "loaders-6"); +defineTest(__dirname, "loaders", "loaders-7"); +defineTest(__dirname, "loaders", "loaders-8"); diff --git a/lib/transformations/outputPath/outputPath.js b/lib/transformations/outputPath/outputPath.js index 78226dc345f..39e28ef4ea9 100644 --- a/lib/transformations/outputPath/outputPath.js +++ b/lib/transformations/outputPath/outputPath.js @@ -1,28 +1,44 @@ -const utils = require('../utils'); +"use strict"; + +const utils = require("../utils"); module.exports = function(j, ast) { const literalOutputPath = ast .find(j.ObjectExpression) - .filter(p => utils.safeTraverse(p, ['parentPath', 'value', 'key', 'name']) === 'output') + .filter( + p => + utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === + "output" + ) .find(j.Property) - .filter(p => utils.safeTraverse(p, ['value', 'key', 'name']) === 'path' - && utils.safeTraverse(p, ['value', 'value', 'type']) === 'Literal'); + .filter( + p => + utils.safeTraverse(p, ["value", "key", "name"]) === "path" && + utils.safeTraverse(p, ["value", "value", "type"]) === "Literal" + ); if (literalOutputPath) { - let pathVarName = 'path'; + let pathVarName = "path"; let isPathPresent = false; const pathDecalaration = ast .find(j.VariableDeclarator) - .filter(p => utils.safeTraverse(p, ['value', 'init', 'callee', 'name']) === 'require') - .filter(p => utils.safeTraverse(p, ['value', 'init', 'arguments']) - && p.value.init.arguments.reduce((isPresent, a) => { - return a.type === 'Literal' && a.value === 'path' || isPresent; - }, false)); + .filter( + p => + utils.safeTraverse(p, ["value", "init", "callee", "name"]) === + "require" + ) + .filter( + p => + utils.safeTraverse(p, ["value", "init", "arguments"]) && + p.value.init.arguments.reduce((isPresent, a) => { + return (a.type === "Literal" && a.value === "path") || isPresent; + }, false) + ); if (pathDecalaration) { isPathPresent = true; pathDecalaration.forEach(p => { - pathVarName = utils.safeTraverse(p, ['value', 'id', 'name']); + pathVarName = utils.safeTraverse(p, ["value", "id", "name"]); }); } @@ -30,10 +46,13 @@ module.exports = function(j, ast) { .find(j.Literal) .replaceWith(p => replaceWithPath(j, p, pathVarName)); - if(!isPathPresent){ - const pathRequire = utils.getRequire(j, 'path', 'path'); - return ast.find(j.Program) - .replaceWith(p => j.program([].concat(pathRequire).concat(p.value.body))); + if (!isPathPresent) { + const pathRequire = utils.getRequire(j, "path", "path"); + return ast + .find(j.Program) + .replaceWith(p => + j.program([].concat(pathRequire).concat(p.value.body)) + ); } } return ast; @@ -41,11 +60,8 @@ module.exports = function(j, ast) { function replaceWithPath(j, p, pathVarName) { const convertedPath = j.callExpression( - j.memberExpression( - j.identifier(pathVarName), - j.identifier('join'), - false), - [j.identifier('__dirname'), p.value]); + j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false), + [j.identifier("__dirname"), p.value] + ); return convertedPath; } - diff --git a/lib/transformations/outputPath/outputPath.test.js b/lib/transformations/outputPath/outputPath.test.js index d1041b30274..1312905c074 100644 --- a/lib/transformations/outputPath/outputPath.test.js +++ b/lib/transformations/outputPath/outputPath.test.js @@ -1,5 +1,7 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'outputPath', 'outputPath-0'); -defineTest(__dirname, 'outputPath', 'outputPath-1'); -defineTest(__dirname, 'outputPath', 'outputPath-2'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "outputPath", "outputPath-0"); +defineTest(__dirname, "outputPath", "outputPath-1"); +defineTest(__dirname, "outputPath", "outputPath-2"); diff --git a/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.js b/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.js index a3d193800f3..89944b0e012 100644 --- a/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.js +++ b/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.js @@ -1,6 +1,8 @@ -const codeFrame = require('babel-code-frame'); -const chalk = require('chalk'); -const utils = require('../utils'); +"use strict"; + +const codeFrame = require("babel-code-frame"); +const chalk = require("chalk"); +const utils = require("../utils"); const example = `plugins: [ new webpack.optimize.OccurrenceOrderPlugin(), @@ -12,18 +14,19 @@ module.exports = function(j, ast, source) { // List of deprecated plugins to remove // each item refers to webpack.optimize.[NAME] construct const deprecatedPlugingsList = [ - 'webpack.optimize.OccurrenceOrderPlugin', - 'webpack.optimize.DedupePlugin' + "webpack.optimize.OccurrenceOrderPlugin", + "webpack.optimize.DedupePlugin" ]; - return utils.findPluginsByName(j, ast, deprecatedPlugingsList) + return utils + .findPluginsByName(j, ast, deprecatedPlugingsList) .forEach(path => { // For now we only support the case there plugins are defined in an Array - const arrayPath = utils.safeTraverse(path, ['parent','value']); - if (arrayPath && utils.isType(arrayPath, 'ArrayExpression')) { + const arrayPath = utils.safeTraverse(path, ["parent", "value"]); + if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) { // Check how many plugins are defined and // if there is only last plugin left remove `plugins: []` node - const arrayElementsPath = utils.safeTraverse(arrayPath, ['elements']); + const arrayElementsPath = utils.safeTraverse(arrayPath, ["elements"]); if (arrayElementsPath && arrayElementsPath.length === 1) { j(path.parent.parent).remove(); } else { @@ -31,17 +34,13 @@ module.exports = function(j, ast, source) { } } else { const startLoc = path.value.loc.start; - console.log(` -${ chalk.red('Only plugins instantiated in the array can be automatically removed i.e.:') } - -${ codeFrame(example, null, null, { highlightCode: true }) } - -${ chalk.red('but you use it like this:') } - -${ codeFrame(source, startLoc.line, startLoc.column, { highlightCode: true }) } - -${ chalk.red('Please remove deprecated plugins manually. ') } -See ${ chalk.underline('https://webpack.js.org/guides/migrating/')} for more information.`); + const messageOutput = `${chalk.red("Only plugins instantiated in the array can be automatically removed i.e.:")} + ${codeFrame(example, null, null, { highlightCode: true })} +${chalk.red("but you use it like this:")} + ${codeFrame(source, startLoc.line, startLoc.column, { highlightCode: true })} +${chalk.red("Please remove deprecated plugins manually. ")} +See ${chalk.underline("https://webpack.js.org/guides/migrating/")} for more information.`; + console.log(messageOutput); } }); }; diff --git a/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js b/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js index 748a0c35ea1..e029dff487d 100644 --- a/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js +++ b/lib/transformations/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js @@ -1,7 +1,9 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'removeDeprecatedPlugins', 'removeDeprecatedPlugins-0'); -defineTest(__dirname, 'removeDeprecatedPlugins', 'removeDeprecatedPlugins-1'); -defineTest(__dirname, 'removeDeprecatedPlugins', 'removeDeprecatedPlugins-2'); -defineTest(__dirname, 'removeDeprecatedPlugins', 'removeDeprecatedPlugins-3'); -defineTest(__dirname, 'removeDeprecatedPlugins', 'removeDeprecatedPlugins-4'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-0"); +defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-1"); +defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-2"); +defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-3"); +defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-4"); diff --git a/lib/transformations/removeJsonLoader/removeJsonLoader.js b/lib/transformations/removeJsonLoader/removeJsonLoader.js index df654e303be..a222b35bb1a 100644 --- a/lib/transformations/removeJsonLoader/removeJsonLoader.js +++ b/lib/transformations/removeJsonLoader/removeJsonLoader.js @@ -1,51 +1,59 @@ -const utils = require('../utils'); +"use strict"; + +const utils = require("../utils"); module.exports = function(j, ast) { function removeLoaderByName(path, name) { const loadersNode = path.value.value; switch (loadersNode.type) { - case j.ArrayExpression.name: { - let loaders = loadersNode.elements.map(p => { - return utils.safeTraverse(p, ['properties', '0', 'value', 'value']); - }); - const loaderIndex = loaders.indexOf(name); - if (loaders.length && loaderIndex > -1) { - // Remove loader from the array - loaders.splice(loaderIndex, 1); - // and from AST - loadersNode.elements.splice(loaderIndex, 1); - } + case j.ArrayExpression.name: { + let loaders = loadersNode.elements.map(p => { + return utils.safeTraverse(p, ["properties", "0", "value", "value"]); + }); + const loaderIndex = loaders.indexOf(name); + if (loaders.length && loaderIndex > -1) { + // Remove loader from the array + loaders.splice(loaderIndex, 1); + // and from AST + loadersNode.elements.splice(loaderIndex, 1); + } - // If there are no loaders left, remove the whole Rule object - if (loaders.length === 0) { - j(path.parent).remove(); + // If there are no loaders left, remove the whole Rule object + if (loaders.length === 0) { + j(path.parent).remove(); + } + break; } - break; - } - case j.Literal.name: { - // If only the loader with the matching name was used - // we can remove the whole Property node completely - if (loadersNode.value === name) { - j(path.parent).remove(); + case j.Literal.name: { + // If only the loader with the matching name was used + // we can remove the whole Property node completely + if (loadersNode.value === name) { + j(path.parent).remove(); + } + break; } - break; - } } } function removeLoaders(ast) { ast - .find(j.Property, { key: { name: 'use' } }) - .forEach(path => removeLoaderByName(path, 'json-loader')); + .find(j.Property, { + key: { + name: "use" + } + }) + .forEach(path => removeLoaderByName(path, "json-loader")); ast - .find(j.Property, { key: { name: 'loader' } }) - .forEach(path => removeLoaderByName(path, 'json-loader')); + .find(j.Property, { + key: { + name: "loader" + } + }) + .forEach(path => removeLoaderByName(path, "json-loader")); } - const transforms = [ - removeLoaders - ]; + const transforms = [removeLoaders]; transforms.forEach(t => t(ast)); diff --git a/lib/transformations/removeJsonLoader/removeJsonLoader.test.js b/lib/transformations/removeJsonLoader/removeJsonLoader.test.js index 164f0045ee1..a448e68bf02 100644 --- a/lib/transformations/removeJsonLoader/removeJsonLoader.test.js +++ b/lib/transformations/removeJsonLoader/removeJsonLoader.test.js @@ -1,6 +1,8 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'removeJsonLoader', 'removeJsonLoader-0'); -defineTest(__dirname, 'removeJsonLoader', 'removeJsonLoader-1'); -defineTest(__dirname, 'removeJsonLoader', 'removeJsonLoader-2'); -defineTest(__dirname, 'removeJsonLoader', 'removeJsonLoader-3'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-0"); +defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-1"); +defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-2"); +defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-3"); diff --git a/lib/transformations/resolve/resolve.js b/lib/transformations/resolve/resolve.js index 3912703e9e0..6c91c54280a 100644 --- a/lib/transformations/resolve/resolve.js +++ b/lib/transformations/resolve/resolve.js @@ -1,25 +1,27 @@ -module.exports = function transformer(j, ast) { +"use strict"; +module.exports = function transformer(j, ast) { const getRootVal = p => { - return p.node.value.properties.filter(prop => prop.key.name === 'root')[0]; + return p.node.value.properties.filter(prop => prop.key.name === "root")[0]; }; const getRootIndex = p => { - return p.node.value.properties - .reduce((rootIndex, prop, index) => { - return prop.key.name === 'root' ? index : rootIndex; - }, -1); + return p.node.value.properties.reduce((rootIndex, prop, index) => { + return prop.key.name === "root" ? index : rootIndex; + }, -1); }; const isModulePresent = p => { - const modules = p.node.value.properties.filter(prop => prop.key.name === 'modules'); + const modules = p.node.value.properties.filter( + prop => prop.key.name === "modules" + ); return modules.length > 0 && modules[0]; }; const createModuleArray = p => { const rootVal = getRootVal(p); let modulesVal = null; - if (rootVal.value.type === 'ArrayExpression') { + if (rootVal.value.type === "ArrayExpression") { modulesVal = rootVal.value.elements; } else { modulesVal = [rootVal.value]; @@ -27,7 +29,11 @@ module.exports = function transformer(j, ast) { let module = isModulePresent(p); if (!module) { - module = j.property('init', j.identifier('modules'), j.arrayExpression(modulesVal)); + module = j.property( + "init", + j.identifier("modules"), + j.arrayExpression(modulesVal) + ); p.node.value.properties = p.node.value.properties.concat([module]); } else { module.value.elements = module.value.elements.concat(modulesVal); @@ -40,10 +46,11 @@ module.exports = function transformer(j, ast) { return ast .find(j.Property) .filter(p => { - return p.node.key.name === 'resolve' - && p.node.value.properties - .filter(prop => prop.key.name === 'root') - .length === 1; + return ( + p.node.key.name === "resolve" && + p.node.value.properties.filter(prop => prop.key.name === "root") + .length === 1 + ); }) .forEach(createModuleArray); }; diff --git a/lib/transformations/resolve/resolve.test.js b/lib/transformations/resolve/resolve.test.js index 30a26b5348b..9cbd9d22957 100644 --- a/lib/transformations/resolve/resolve.test.js +++ b/lib/transformations/resolve/resolve.test.js @@ -1,3 +1,5 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'resolve'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "resolve"); diff --git a/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.js b/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.js index f5c4a12af3b..a4e71398126 100644 --- a/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.js +++ b/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.js @@ -1,25 +1,26 @@ -const findPluginsByName = require('../utils').findPluginsByName; +"use strict"; -module.exports = function(j, ast) { +const findPluginsByName = require("../utils").findPluginsByName; +module.exports = function(j, ast) { function createSourceMapsProperty() { - return j.property('init', j.identifier('sourceMap'), j.identifier('true')); + return j.property("init", j.identifier("sourceMap"), j.identifier("true")); } - return findPluginsByName(j, ast, ['webpack.optimize.UglifyJsPlugin']) - .forEach(path => { - const args = path.value.arguments; + return findPluginsByName(j, ast, [ + "webpack.optimize.UglifyJsPlugin" + ]).forEach(path => { + const args = path.value.arguments; - if (args.length) { - // Plugin is called with object as arguments - j(path) - .find(j.ObjectExpression) - .get('properties') - .value - .push(createSourceMapsProperty()); - } else { - // Plugin is called without arguments - args.push(j.objectExpression([createSourceMapsProperty()])); - } - }); + if (args.length) { + // Plugin is called with object as arguments + j(path) + .find(j.ObjectExpression) + .get("properties") + .value.push(createSourceMapsProperty()); + } else { + // Plugin is called without arguments + args.push(j.objectExpression([createSourceMapsProperty()])); + } + }); }; diff --git a/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.test.js b/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.test.js index a0c309ccb1e..4b43262cbdc 100644 --- a/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.test.js +++ b/lib/transformations/uglifyJsPlugin/uglifyJsPlugin.test.js @@ -1,5 +1,7 @@ -const defineTest = require('../defineTest'); +"use strict"; -defineTest(__dirname, 'uglifyJsPlugin', 'uglifyJsPlugin-0'); -defineTest(__dirname, 'uglifyJsPlugin', 'uglifyJsPlugin-1'); -defineTest(__dirname, 'uglifyJsPlugin', 'uglifyJsPlugin-2'); +const defineTest = require("../defineTest"); + +defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-0"); +defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-1"); +defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-2"); diff --git a/lib/transformations/utils.js b/lib/transformations/utils.js index dcbb3bb0428..c0ce8b35c86 100644 --- a/lib/transformations/utils.js +++ b/lib/transformations/utils.js @@ -1,3 +1,5 @@ +"use strict"; + function safeTraverse(obj, paths) { let val = obj; let idx = 0; @@ -15,7 +17,9 @@ function safeTraverse(obj, paths) { // Convert nested MemberExpressions to strings like webpack.optimize.DedupePlugin function memberExpressionToPathString(path) { if (path && path.object) { - return [memberExpressionToPathString(path.object), path.property.name].join('.'); + return [memberExpressionToPathString(path.object), path.property.name].join( + "." + ); } return path.name; } @@ -47,13 +51,12 @@ function pathsToMemberExpression(j, paths) { * @returns Path * */ function findPluginsByName(j, node, pluginNamesArray) { - return node - .find(j.NewExpression) - .filter(path => { - return pluginNamesArray.some( - plugin => memberExpressionToPathString(path.get('callee').value) === plugin - ); - }); + return node.find(j.NewExpression).filter(path => { + return pluginNamesArray.some( + plugin => + memberExpressionToPathString(path.get("callee").value) === plugin + ); + }); } /* @@ -66,7 +69,11 @@ function findPluginsByName(j, node, pluginNamesArray) { * @returns Path * */ function findPluginsRootNodes(j, node) { - return node.find(j.Property, { key: { name: 'plugins' } }); + return node.find(j.Property, { + key: { + name: "plugins" + } + }); } /* @@ -81,7 +88,7 @@ function findPluginsRootNodes(j, node) { * */ function createProperty(j, key, value) { return j.property( - 'init', + "init", createIdentifierOrLiteral(j, key), createLiteral(j, value) ); @@ -100,11 +107,11 @@ function createProperty(j, key, value) { function createLiteral(j, val) { let literalVal = val; // We'll need String to native type conversions - if (typeof val === 'string') { + if (typeof val === "string") { // 'true' => true - if (val === 'true') literalVal = true; + if (val === "true") literalVal = true; // 'false' => false - if (val === 'false') literalVal = false; + if (val === "false") literalVal = false; // '1' => 1 if (!isNaN(Number(val))) literalVal = Number(val); } @@ -124,14 +131,14 @@ function createLiteral(j, val) { function createIdentifierOrLiteral(j, val) { let literalVal = val; // We'll need String to native type conversions - if (typeof val === 'string' || val.__paths) { + if (typeof val === "string" || val.__paths) { // 'true' => true - if (val === 'true') { + if (val === "true") { literalVal = true; return j.literal(literalVal); } // 'false' => false - if (val === 'false') { + if (val === "false") { literalVal = false; return j.literal(literalVal); } @@ -141,11 +148,10 @@ function createIdentifierOrLiteral(j, val) { return j.literal(literalVal); } - if(val.__paths) { + if (val.__paths) { return createExternalRegExp(j, val); - } - // Use identifier instead - else { + } else { + // Use identifier instead // TODO: Check if literalVal is a valid Identifier! return j.identifier(literalVal); } @@ -165,7 +171,9 @@ function createIdentifierOrLiteral(j, val) { * @returns void * */ function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) { - const pluginInstancePath = findPluginsByName(j, j(rootNodePath), [pluginName]); + const pluginInstancePath = findPluginsByName(j, j(rootNodePath), [ + pluginName + ]); let optionsProps; if (options) { optionsProps = Object.keys(options).map(key => { @@ -182,9 +190,7 @@ function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) { if (args.length) { // Plugin is called with object as arguments // we will merge those objects - let currentProps = j(path) - .find(j.ObjectExpression) - .get('properties'); + let currentProps = j(path).find(j.ObjectExpression).get("properties"); optionsProps.forEach(opt => { // Search for same keys in the existing object @@ -202,12 +208,9 @@ function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) { currentProps.value.push(opt); } }); - } else { // Plugin is called without arguments - args.push( - j.objectExpression(optionsProps) - ); + args.push(j.objectExpression(optionsProps)); } } }); @@ -217,7 +220,7 @@ function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) { argumentsArray = [j.objectExpression(optionsProps)]; } const loaderPluginInstance = j.newExpression( - pathsToMemberExpression(j, pluginName.split('.').reverse()), + pathsToMemberExpression(j, pluginName.split(".").reverse()), argumentsArray ); rootNodePath.value.elements.push(loaderPluginInstance); @@ -235,8 +238,9 @@ function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) { * @returns { string } variable name - ex. 'var s = require(s) gives "s"` * */ -function findVariableToPlugin(j, rootNode, pluginPackageName){ - const moduleVarNames = rootNode.find(j.VariableDeclarator) +function findVariableToPlugin(j, rootNode, pluginPackageName) { + const moduleVarNames = rootNode + .find(j.VariableDeclarator) .filter(j.filters.VariableDeclarator.requiresModule(pluginPackageName)) .nodes(); if (moduleVarNames.length === 0) return null; @@ -256,13 +260,11 @@ function isType(path, type) { return path.type === type; } -function findObjWithOneOfKeys (p, keyNames) { - return p.value.properties - .reduce((predicate, prop) => { - const name = prop.key.name; - return keyNames.indexOf(name) > -1 - || predicate; - }, false); +function findObjWithOneOfKeys(p, keyNames) { + return p.value.properties.reduce((predicate, prop) => { + const name = prop.key.name; + return keyNames.indexOf(name) > -1 || predicate; + }, false); } /* @@ -276,14 +278,11 @@ function findObjWithOneOfKeys (p, keyNames) { */ function getRequire(j, constName, packagePath) { - return j.variableDeclaration('const', [ + return j.variableDeclaration("const", [ j.variableDeclarator( - j.identifier(constName), - j.callExpression( - j.identifier('require'), - [j.literal(packagePath)] - ) - ) + j.identifier(constName), + j.callExpression(j.identifier("require"), [j.literal(packagePath)]) + ) ]); } @@ -299,13 +298,15 @@ function getRequire(j, constName, packagePath) { */ function checkIfExistsAndAddValue(j, node, key, value) { - const existingProp = node.value.properties.filter(prop => prop.key.name === key); + const existingProp = node.value.properties.filter( + prop => prop.key.name === key + ); let prop; - if (existingProp.length > 0){ + if (existingProp.length > 0) { prop = existingProp[0]; prop.value = value; } else { - prop = j.property('init', j.identifier(key), value); + prop = j.property("init", j.identifier(key), value); node.value.properties.push(prop); } } @@ -319,7 +320,7 @@ function checkIfExistsAndAddValue(j, node, key, value) { * @returns - { Array } arr - An empty array */ function createEmptyArrayProperty(j, key) { - return j.property('init', j.identifier(key), j.arrayExpression([])); + return j.property("init", j.identifier(key), j.arrayExpression([])); } /* @@ -334,19 +335,23 @@ function createEmptyArrayProperty(j, key) { function createArrayWithChildren(j, key, subProps, shouldDropKeys) { let arr = createEmptyArrayProperty(j, key); - if(shouldDropKeys) { - subProps.forEach( (subProperty) => { + if (shouldDropKeys) { + subProps.forEach(subProperty => { let objectOfArray = j.objectExpression([]); - if(typeof(subProperty) !== 'string') { + if (typeof subProperty !== "string") { loopThroughObjects(j, objectOfArray, subProperty); arr.value.elements.push(objectOfArray); } else { - return arr.value.elements.push(createIdentifierOrLiteral(j, subProperty)); + return arr.value.elements.push( + createIdentifierOrLiteral(j, subProperty) + ); } }); } else { - Object.keys(subProps[key]).forEach( (subProperty) => { - arr.value.elements.push(createIdentifierOrLiteral(j, subProps[key][subProperty])); + Object.keys(subProps[key]).forEach(subProperty => { + arr.value.elements.push( + createIdentifierOrLiteral(j, subProps[key][subProperty]) + ); }); } return arr; @@ -364,21 +369,29 @@ function createArrayWithChildren(j, key, subProps, shouldDropKeys) { */ function loopThroughObjects(j, p, obj) { - Object.keys(obj).forEach( (prop) => { - if(prop.indexOf('inject') >= 0) { + Object.keys(obj).forEach(prop => { + if (prop.indexOf("inject") >= 0) { return p.properties.push(createIdentifierOrLiteral(j, obj[prop])); } // eslint-disable-next-line no-irregular-whitespace - if(typeof(obj[prop]) !== 'object' || obj[prop] instanceof RegExp) { - p.properties.push(createObjectWithSuppliedProperty( - j, prop, createIdentifierOrLiteral(j, obj[prop]) - )); - } else if(Array.isArray(obj[prop])) { + if (typeof obj[prop] !== "object" || obj[prop] instanceof RegExp) { + p.properties.push( + createObjectWithSuppliedProperty( + j, + prop, + createIdentifierOrLiteral(j, obj[prop]) + ) + ); + } else if (Array.isArray(obj[prop])) { let arrayProp = createArrayWithChildren(j, prop, obj[prop], true); p.properties.push(arrayProp); } else { let objectBlock = j.objectExpression([]); - let propertyOfBlock = createObjectWithSuppliedProperty(j, prop, objectBlock); + let propertyOfBlock = createObjectWithSuppliedProperty( + j, + prop, + objectBlock + ); loopThroughObjects(j, objectBlock, obj[prop]); p.properties.push(propertyOfBlock); } @@ -396,7 +409,7 @@ function loopThroughObjects(j, p, obj) { */ function createObjectWithSuppliedProperty(j, key, prop) { - return j.property('init', j.identifier(key), prop); + return j.property("init", j.identifier(key), prop); } /* @@ -426,7 +439,7 @@ function createExternalRegExp(j, prop) { function pushCreateProperty(j, p, key, val) { let property; - if(val.hasOwnProperty('type')) { + if (val.hasOwnProperty("type")) { property = val; } else { property = createIdentifierOrLiteral(j, val); @@ -448,33 +461,44 @@ function pushCreateProperty(j, p, key, val) { */ function pushObjectKeys(j, p, webpackProperties, name) { - p.value.properties.filter(n => - (safeTraverse(n, ['key', 'name']) === name) - ).forEach( (prop) => { - Object.keys(webpackProperties).forEach( (webpackProp) => { - if(webpackProp.indexOf('inject') >= 0) { - return prop.value.properties.push(createIdentifierOrLiteral(j, webpackProperties[webpackProp])); - } - else if(Array.isArray(webpackProperties[webpackProp])) { - const propArray = createArrayWithChildren( - j, webpackProp, webpackProperties[webpackProp], true - ); - return prop.value.properties.push(propArray); - } - else if(typeof(webpackProperties[webpackProp]) !== 'object' || webpackProperties[webpackProp].__paths || webpackProperties[webpackProp] instanceof RegExp) { - return pushCreateProperty( - j, prop, webpackProp, webpackProperties[webpackProp] - ); - } else { - pushCreateProperty( - j, prop, webpackProp, j.objectExpression([]) - ); - return pushObjectKeys( - j, prop, webpackProperties[webpackProp], webpackProp - ); - } + p.value.properties + .filter(n => safeTraverse(n, ["key", "name"]) === name) + .forEach(prop => { + Object.keys(webpackProperties).forEach(webpackProp => { + if (webpackProp.indexOf("inject") >= 0) { + return prop.value.properties.push( + createIdentifierOrLiteral(j, webpackProperties[webpackProp]) + ); + } else if (Array.isArray(webpackProperties[webpackProp])) { + const propArray = createArrayWithChildren( + j, + webpackProp, + webpackProperties[webpackProp], + true + ); + return prop.value.properties.push(propArray); + } else if ( + typeof webpackProperties[webpackProp] !== "object" || + webpackProperties[webpackProp].__paths || + webpackProperties[webpackProp] instanceof RegExp + ) { + return pushCreateProperty( + j, + prop, + webpackProp, + webpackProperties[webpackProp] + ); + } else { + pushCreateProperty(j, prop, webpackProp, j.objectExpression([])); + return pushObjectKeys( + j, + prop, + webpackProperties[webpackProp], + webpackProp + ); + } + }); }); - }); } /* @@ -493,11 +517,10 @@ function pushObjectKeys(j, p, webpackProperties, name) { */ function isAssignment(j, p, cb, identifier, property) { - if(p.parent.value.type === 'AssignmentExpression') { - if(j) { + if (p.parent.value.type === "AssignmentExpression") { + if (j) { return cb(j, p, identifier, property); - } - else { + } else { return cb(p); } } diff --git a/lib/transformations/utils.test.js b/lib/transformations/utils.test.js index 7a7c9c0c454..a70091a40e2 100644 --- a/lib/transformations/utils.test.js +++ b/lib/transformations/utils.test.js @@ -1,68 +1,74 @@ -const j = require('jscodeshift/dist/core'); -const utils = require('./utils'); +"use strict"; -describe('utils', () => { - describe('createProperty', () => { - it('should create properties for Boolean', () => { - const res = utils.createProperty(j, 'foo', true); +const j = require("jscodeshift/dist/core"); +const utils = require("./utils"); + +describe("utils", () => { + describe("createProperty", () => { + it("should create properties for Boolean", () => { + const res = utils.createProperty(j, "foo", true); expect(j(j.objectExpression([res])).toSource()).toMatchSnapshot(); }); - it('should create properties for Number', () => { - const res = utils.createProperty(j, 'foo', -1); + it("should create properties for Number", () => { + const res = utils.createProperty(j, "foo", -1); expect(j(j.objectExpression([res])).toSource()).toMatchSnapshot(); }); - it('should create properties for String', () => { - const res = utils.createProperty(j, 'foo', 'bar'); + it("should create properties for String", () => { + const res = utils.createProperty(j, "foo", "bar"); expect(j(j.objectExpression([res])).toSource()).toMatchSnapshot(); }); - xit('should create properties for complex keys', () => { - const res = utils.createProperty(j, 'foo-bar', 'bar'); + xit("should create properties for complex keys", () => { + const res = utils.createProperty(j, "foo-bar", "bar"); expect(j(j.objectExpression([res])).toSource()).toMatchSnapshot(); }); - it('should create properties for non-literal keys', () => { - const res = utils.createProperty(j, 1, 'bar'); + it("should create properties for non-literal keys", () => { + const res = utils.createProperty(j, 1, "bar"); expect(j(j.objectExpression([res])).toSource()).toMatchSnapshot(); }); }); - describe('findPluginsByName', () => { - it('should find plugins in AST', () => { + describe("findPluginsByName", () => { + it("should find plugins in AST", () => { const ast = j(` { foo: new webpack.optimize.UglifyJsPlugin() } `); - const res = utils.findPluginsByName(j, ast, - ['webpack.optimize.UglifyJsPlugin']); + const res = utils.findPluginsByName(j, ast, [ + "webpack.optimize.UglifyJsPlugin" + ]); expect(res.size()).toEqual(1); }); - it('should find all plugins in AST', () => { + it("should find all plugins in AST", () => { const ast = j(` [ new UglifyJsPlugin(), new TestPlugin() ] `); - const res = utils.findPluginsByName(j, ast, - ['UglifyJsPlugin', 'TestPlugin']); + const res = utils.findPluginsByName(j, ast, [ + "UglifyJsPlugin", + "TestPlugin" + ]); expect(res.size()).toEqual(2); }); - it('should not find false positives', () => { + it("should not find false positives", () => { const ast = j(` { foo: new UglifyJsPlugin() } `); - const res = utils.findPluginsByName(j, ast, - ['webpack.optimize.UglifyJsPlugin']); + const res = utils.findPluginsByName(j, ast, [ + "webpack.optimize.UglifyJsPlugin" + ]); expect(res.size()).toEqual(0); }); }); - describe('findPluginsRootNodes', () => { - it('should find plugins: [] nodes', () => { + describe("findPluginsRootNodes", () => { + it("should find plugins: [] nodes", () => { const ast = j(` var a = { plugins: [], foo: { plugins: [] } } `); @@ -70,7 +76,7 @@ var a = { plugins: [], foo: { plugins: [] } } expect(res.size()).toEqual(2); }); - it('should not find plugins: [] nodes', () => { + it("should not find plugins: [] nodes", () => { const ast = j(` var a = { plugs: [] } `); @@ -79,206 +85,235 @@ var a = { plugs: [] } }); }); - describe('createOrUpdatePluginByName', () => { - it('should create a new plugin without arguments', () => { - const ast = j('{ plugins: [] }'); - ast - .find(j.ArrayExpression) - .forEach(node => { - utils.createOrUpdatePluginByName(j, node, 'Plugin'); - }); + describe("createOrUpdatePluginByName", () => { + it("should create a new plugin without arguments", () => { + const ast = j("{ plugins: [] }"); + ast.find(j.ArrayExpression).forEach(node => { + utils.createOrUpdatePluginByName(j, node, "Plugin"); + }); expect(ast.toSource()).toMatchSnapshot(); }); - it('should create a new plugin with arguments', () => { - const ast = j('{ plugins: [] }'); - ast - .find(j.ArrayExpression) - .forEach(node => { - utils.createOrUpdatePluginByName(j, node, 'Plugin', { foo: 'bar' }); + it("should create a new plugin with arguments", () => { + const ast = j("{ plugins: [] }"); + ast.find(j.ArrayExpression).forEach(node => { + utils.createOrUpdatePluginByName(j, node, "Plugin", { + foo: "bar" }); + }); expect(ast.toSource()).toMatchSnapshot(); }); - it('should add an object as an argument', () => { - const ast = j('[new Plugin()]'); - ast - .find(j.ArrayExpression) - .forEach(node => { - utils.createOrUpdatePluginByName(j, node, 'Plugin', { foo: true }); + it("should add an object as an argument", () => { + const ast = j("[new Plugin()]"); + ast.find(j.ArrayExpression).forEach(node => { + utils.createOrUpdatePluginByName(j, node, "Plugin", { + foo: true }); + }); expect(ast.toSource()).toMatchSnapshot(); }); - it('should merge options objects', () => { - const ast = j('[new Plugin({ foo: true })]'); - ast - .find(j.ArrayExpression) - .forEach(node => { - utils.createOrUpdatePluginByName(j, node, 'Plugin', { bar: 'baz', foo: false }); - utils.createOrUpdatePluginByName(j, node, 'Plugin', { 'baz-long': true }); + it("should merge options objects", () => { + const ast = j("[new Plugin({ foo: true })]"); + ast.find(j.ArrayExpression).forEach(node => { + utils.createOrUpdatePluginByName(j, node, "Plugin", { + bar: "baz", + foo: false + }); + utils.createOrUpdatePluginByName(j, node, "Plugin", { + "baz-long": true }); + }); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('findVariableToPlugin', () => { - it('should find the variable name of a plugin', () => { + describe("findVariableToPlugin", () => { + it("should find the variable name of a plugin", () => { const ast = j(` var packageName = require('package-name'); var someOtherVar = somethingElse; var otherPackage = require('other-package'); `); - const foundVar = utils.findVariableToPlugin(j, ast, 'other-package'); - expect(foundVar).toEqual('otherPackage'); + const foundVar = utils.findVariableToPlugin(j, ast, "other-package"); + expect(foundVar).toEqual("otherPackage"); }); }); - describe('createLiteral', () => { - it('should create basic literal', () => { - const literal = utils.createLiteral(j, 'stringLiteral'); + describe("createLiteral", () => { + it("should create basic literal", () => { + const literal = utils.createLiteral(j, "stringLiteral"); expect(j(literal).toSource()).toMatchSnapshot(); }); - it('should create boolean', () => { - const literal = utils.createLiteral(j, 'true'); + it("should create boolean", () => { + const literal = utils.createLiteral(j, "true"); expect(j(literal).toSource()).toMatchSnapshot(); }); - }); - describe('createIdentifierOrLiteral', () => { - it('should create basic literal', () => { - const literal = utils.createIdentifierOrLiteral(j, '\'stringLiteral\''); + describe("createIdentifierOrLiteral", () => { + it("should create basic literal", () => { + const literal = utils.createIdentifierOrLiteral(j, "'stringLiteral'"); expect(j(literal).toSource()).toMatchSnapshot(); }); - it('should create boolean', () => { - const literal = utils.createIdentifierOrLiteral(j, 'true'); + it("should create boolean", () => { + const literal = utils.createIdentifierOrLiteral(j, "true"); expect(j(literal).toSource()).toMatchSnapshot(); }); }); - describe('findObjWithOneOfKeys', () => { - it('should find keys', () => { + describe("findObjWithOneOfKeys", () => { + it("should find keys", () => { const ast = j(` var ab = { a: 1, b: 2 } `); - expect(ast.find(j.ObjectExpression) - .filter(p => utils.findObjWithOneOfKeys(p, ['a'])).size()).toEqual(1); + expect( + ast + .find(j.ObjectExpression) + .filter(p => utils.findObjWithOneOfKeys(p, ["a"])) + .size() + ).toEqual(1); }); }); - describe('getRequire', () => { - it('should create a require statement', () => { - const require = utils.getRequire(j, 'filesys', 'fs'); + describe("getRequire", () => { + it("should create a require statement", () => { + const require = utils.getRequire(j, "filesys", "fs"); expect(j(require).toSource()).toMatchSnapshot(); }); }); - describe('checkIfExistsAndAddValue', () => { - it('should create new prop if none exist', () => { + describe("checkIfExistsAndAddValue", () => { + it("should create new prop if none exist", () => { const ast = j(` module.exports = { entry: 'index.js' } `); - ast.find(j.ObjectExpression).forEach(node => utils.checkIfExistsAndAddValue(j, node, 'externals', j.literal('React'))); + ast + .find(j.ObjectExpression) + .forEach(node => + utils.checkIfExistsAndAddValue( + j, + node, + "externals", + j.literal("React") + ) + ); expect(ast.toSource()).toMatchSnapshot(); }); - it('should override prop if it exists', () => { + it("should override prop if it exists", () => { const ast = j(` module.exports = { entry: 'index.js' } `); - ast.find(j.ObjectExpression).forEach(node => utils.checkIfExistsAndAddValue(j, node, 'entry', j.literal('app.js'))); + ast + .find(j.ObjectExpression) + .forEach(node => + utils.checkIfExistsAndAddValue(j, node, "entry", j.literal("app.js")) + ); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('createArrayWithChildren', () => { - it('should find an prop that matches key and create an array with it', () => { - const ast = j('{}'); - let key = 'react'; + describe("createArrayWithChildren", () => { + it("should find an prop that matches key and create an array with it", () => { + const ast = j("{}"); + let key = "react"; let reactArr = { - react: [ '\'bo\''] + react: ["'bo'"] }; const arr = utils.createArrayWithChildren(j, key, reactArr, false); ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); expect(ast.toSource()).toMatchSnapshot(); }); - it('should add all children of an array to a new one with a supplied key', () => { - const ast = j('{}'); - let key = 'myVeryOwnKey'; - let helloWorldArray = [ '\'hello\'', 'world']; + it("should add all children of an array to a new one with a supplied key", () => { + const ast = j("{}"); + let key = "myVeryOwnKey"; + let helloWorldArray = ["'hello'", "world"]; const arr = utils.createArrayWithChildren(j, key, helloWorldArray, true); ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('createEmptyArrayProperty', () => { - it('should create an array with no properties', () => { - const ast = j('{}'); - const arr = utils.createEmptyArrayProperty(j, 'its-lit'); + describe("createEmptyArrayProperty", () => { + it("should create an array with no properties", () => { + const ast = j("{}"); + const arr = utils.createEmptyArrayProperty(j, "its-lit"); ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('createObjectWithSuppliedProperty', () => { - it('should create an object with a property supplied by us', () => { - const ast = j('{}'); - const prop = utils.createObjectWithSuppliedProperty(j, 'its-lit', j.objectExpression([])); + describe("createObjectWithSuppliedProperty", () => { + it("should create an object with a property supplied by us", () => { + const ast = j("{}"); + const prop = utils.createObjectWithSuppliedProperty( + j, + "its-lit", + j.objectExpression([]) + ); ast.find(j.Program).forEach(node => j(node).replaceWith(prop)); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('createExternalRegExp', () => { - it('should create an regExp property that has been parsed by jscodeshift', () => { - const ast = j('{}'); - const reg = j('\'\t\''); + describe("createExternalRegExp", () => { + it("should create an regExp property that has been parsed by jscodeshift", () => { + const ast = j("{}"); + const reg = j("'\t'"); const prop = utils.createExternalRegExp(j, reg); ast.find(j.Program).forEach(node => j(node).replaceWith(prop)); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('pushCreateProperty', () => { - it('should create an object or property and push the value to a node', () => { + describe("pushCreateProperty", () => { + it("should create an object or property and push the value to a node", () => { const ast = j(`module.exports = { pushMe: {} }`); - ast.find(j.Identifier).filter(n => n.value.name === 'pushMe').forEach(node => { - const heavyNodeNoSafeTraverse = node.parentPath.value; - utils.pushCreateProperty(j, heavyNodeNoSafeTraverse, 'just', 'pushed'); - }); + ast + .find(j.Identifier) + .filter(n => n.value.name === "pushMe") + .forEach(node => { + const heavyNodeNoSafeTraverse = node.parentPath.value; + utils.pushCreateProperty( + j, + heavyNodeNoSafeTraverse, + "just", + "pushed" + ); + }); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('pushObjectKeys', () => { - it('should push object to an node using Object.keys', () => { + describe("pushObjectKeys", () => { + it("should push object to an node using Object.keys", () => { const ast = j(`module.exports = { pushMe: {} }`); const webpackProperties = { hello: { world: { - its: '\'great\'' + its: "'great'" } } }; ast.find(j.ObjectExpression).forEach(node => { - utils.pushObjectKeys(j, node, webpackProperties, 'pushMe'); + utils.pushObjectKeys(j, node, webpackProperties, "pushMe"); }); expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('loopThroughObjects', () => { - it('Use recursion and add elements to an node', () => { - const ast = j('module.exports = {}'); + describe("loopThroughObjects", () => { + it("Use recursion and add elements to an node", () => { + const ast = j("module.exports = {}"); const webpackProperties = { hello: { - webpack: 'cli' + webpack: "cli" } }; ast.find(j.ObjectExpression).forEach(node => { @@ -287,28 +322,36 @@ var a = { plugs: [] } expect(ast.toSource()).toMatchSnapshot(); }); }); - describe('isAssignment', () => { - it('should invoke a callback if parent type is AssignmentExpression', () => { - const ast = j('module.exports = {}'); - const myObj = 'Heyho'; - const myKey = 'context'; + describe("isAssignment", () => { + it("should invoke a callback if parent type is AssignmentExpression", () => { + const ast = j("module.exports = {}"); + const myObj = "Heyho"; + const myKey = "context"; - ast.find(j.ObjectExpression) - .filter(n => utils.isAssignment(j, n, utils.pushCreateProperty, myKey, myObj)); + ast + .find(j.ObjectExpression) + .filter(n => + utils.isAssignment(j, n, utils.pushCreateProperty, myKey, myObj) + ); expect(ast.toSource()).toMatchSnapshot(); }); - it('should allow custom transform functions instead of singularProperty', () => { - const ast = j('module.exports = {}'); + it("should allow custom transform functions instead of singularProperty", () => { + const ast = j("module.exports = {}"); function createPluginsProperty(p) { const webpackProperties = { - plugins: ['one', 'two', 'three'] + plugins: ["one", "two", "three"] }; - const pluginArray = utils.createArrayWithChildren(j, 'plugins', webpackProperties); + const pluginArray = utils.createArrayWithChildren( + j, + "plugins", + webpackProperties + ); return p.value.properties.push(pluginArray); } - ast.find(j.ObjectExpression) - .filter(n => utils.isAssignment(null, n, createPluginsProperty)); + ast + .find(j.ObjectExpression) + .filter(n => utils.isAssignment(null, n, createPluginsProperty)); expect(ast.toSource()).toMatchSnapshot(); }); }); diff --git a/lib/utils/WebpackOptionsValidationError.js b/lib/utils/WebpackOptionsValidationError.js index 4fb7693faf3..5af67962802 100644 --- a/lib/utils/WebpackOptionsValidationError.js +++ b/lib/utils/WebpackOptionsValidationError.js @@ -2,45 +2,42 @@ MIT License http://www.opensource.org/licenses/mit-license.php Author Gajus Kuizinas @gajus */ -'use strict'; +"use strict"; -const webpackOptionsSchema = require('./webpackOptionsSchema.json'); +const webpackOptionsSchema = require("./webpackOptionsSchema.json"); const getSchemaPart = (path, parents, additionalPath) => { parents = parents || 0; - path = path.split('/'); + path = path.split("/"); path = path.slice(0, path.length - parents); - if(additionalPath) { - additionalPath = additionalPath.split('/'); + if (additionalPath) { + additionalPath = additionalPath.split("/"); path = path.concat(additionalPath); } let schemaPart = webpackOptionsSchema; - for(let i = 1; i < path.length; i++) { + for (let i = 1; i < path.length; i++) { const inner = schemaPart[path[i]]; - if(inner) - schemaPart = inner; + if (inner) schemaPart = inner; } return schemaPart; }; const getSchemaPartText = (schemaPart, additionalPath) => { - if(additionalPath) { - for(let i = 0; i < additionalPath.length; i++) { + if (additionalPath) { + for (let i = 0; i < additionalPath.length; i++) { const inner = schemaPart[additionalPath[i]]; - if(inner) - schemaPart = inner; + if (inner) schemaPart = inner; } } - while(schemaPart.$ref) schemaPart = getSchemaPart(schemaPart.$ref); + while (schemaPart.$ref) schemaPart = getSchemaPart(schemaPart.$ref); let schemaText = WebpackOptionsValidationError.formatSchema(schemaPart); - if(schemaPart.description) - schemaText += `\n${schemaPart.description}`; + if (schemaPart.description) schemaText += `\n${schemaPart.description}`; return schemaText; }; const indent = (str, prefix, firstLine) => { - if(firstLine) { - return prefix + str.replace(/\n(?!$)/g, '\n' + prefix); + if (firstLine) { + return prefix + str.replace(/\n(?!$)/g, "\n" + prefix); } else { return str.replace(/\n(?!$)/g, `\n${prefix}`); } @@ -49,14 +46,25 @@ const indent = (str, prefix, firstLine) => { class WebpackOptionsValidationError extends Error { constructor(validationErrors) { super(); - if(Error.hasOwnProperty('captureStackTrace')) { + if (Error.hasOwnProperty("captureStackTrace")) { Error.captureStackTrace(this, this.constructor); } - this.name = 'WebpackOptionsValidationError'; + this.name = "WebpackOptionsValidationError"; - this.message = 'Invalid configuration object. ' + - 'Webpack has been initialised using a configuration object that does not match the API schema.\n' + - validationErrors.map(err => ' - ' + indent(WebpackOptionsValidationError.formatValidationError(err), ' ', false)).join('\n'); + this.message = + "Invalid configuration object. " + + "Webpack has been initialised using a configuration object that does not match the API schema.\n" + + validationErrors + .map( + err => + " - " + + indent( + WebpackOptionsValidationError.formatValidationError(err), + " ", + false + ) + ) + .join("\n"); this.validationErrors = validationErrors; } @@ -64,124 +72,176 @@ class WebpackOptionsValidationError extends Error { prevSchemas = prevSchemas || []; const formatInnerSchema = (innerSchema, addSelf) => { - if(!addSelf) return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas); - if(prevSchemas.indexOf(innerSchema) >= 0) return '(recursive)'; - return WebpackOptionsValidationError.formatSchema(innerSchema, prevSchemas.concat(schema)); + if (!addSelf) + return WebpackOptionsValidationError.formatSchema( + innerSchema, + prevSchemas + ); + if (prevSchemas.indexOf(innerSchema) >= 0) return "(recursive)"; + return WebpackOptionsValidationError.formatSchema( + innerSchema, + prevSchemas.concat(schema) + ); }; - if(schema.type === 'string') { - if(schema.minLength === 1) - return 'non-empty string'; - else if(schema.minLength > 1) + if (schema.type === "string") { + if (schema.minLength === 1) return "non-empty string"; + else if (schema.minLength > 1) return `string (min length ${schema.minLength})`; - return 'string'; - } else if(schema.type === 'boolean') { - return 'boolean'; - } else if(schema.type === 'number') { - return 'number'; - } else if(schema.type === 'object') { - if(schema.properties) { + return "string"; + } else if (schema.type === "boolean") { + return "boolean"; + } else if (schema.type === "number") { + return "number"; + } else if (schema.type === "object") { + if (schema.properties) { const required = schema.required || []; - return `object { ${Object.keys(schema.properties).map(property => { - if(required.indexOf(property) < 0) return property + '?'; - return property; - }).concat(schema.additionalProperties ? ['...'] : []).join(', ')} }`; + return `object { ${Object.keys(schema.properties) + .map(property => { + if (required.indexOf(property) < 0) return property + "?"; + return property; + }) + .concat(schema.additionalProperties ? ["..."] : []) + .join(", ")} }`; } - if(schema.additionalProperties) { - return `object { : ${formatInnerSchema(schema.additionalProperties)} }`; + if (schema.additionalProperties) { + return `object { : ${formatInnerSchema( + schema.additionalProperties + )} }`; } - return 'object'; - } else if(schema.type === 'array') { + return "object"; + } else if (schema.type === "array") { return `[${formatInnerSchema(schema.items)}]`; } - switch(schema.instanceof) { - case 'Function': - return 'function'; - case 'RegExp': - return 'RegExp'; + switch (schema.instanceof) { + case "Function": + return "function"; + case "RegExp": + return "RegExp"; } - if(schema.$ref) return formatInnerSchema(getSchemaPart(schema.$ref), true); - if(schema.allOf) return schema.allOf.map(formatInnerSchema).join(' & '); - if(schema.oneOf) return schema.oneOf.map(formatInnerSchema).join(' | '); - if(schema.anyOf) return schema.anyOf.map(formatInnerSchema).join(' | '); - if(schema.enum) return schema.enum.map(item => JSON.stringify(item)).join(' | '); + if (schema.$ref) return formatInnerSchema(getSchemaPart(schema.$ref), true); + if (schema.allOf) return schema.allOf.map(formatInnerSchema).join(" & "); + if (schema.oneOf) return schema.oneOf.map(formatInnerSchema).join(" | "); + if (schema.anyOf) return schema.anyOf.map(formatInnerSchema).join(" | "); + if (schema.enum) + return schema.enum.map(item => JSON.stringify(item)).join(" | "); return JSON.stringify(schema, 0, 2); } static formatValidationError(err) { const dataPath = `configuration${err.dataPath}`; - if(err.keyword === 'additionalProperties') { - const baseMessage = `${dataPath} has an unknown property '${err.params.additionalProperty}'. These properties are valid:\n${getSchemaPartText(err.parentSchema)}`; - if(!err.dataPath) { - switch(err.params.additionalProperty) { - case 'debug': - return `${baseMessage}\n` + - 'The \'debug\' property was removed in webpack 2.\n' + - 'Loaders should be updated to allow passing this option via loader options in module.rules.\n' + - 'Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode:\n' + - 'plugins: [\n' + - ' new webpack.LoaderOptionsPlugin({\n' + - ' debug: true\n' + - ' })\n' + - ']'; + if (err.keyword === "additionalProperties") { + const baseMessage = `${dataPath} has an unknown property '${err.params + .additionalProperty}'. These properties are valid:\n${getSchemaPartText( + err.parentSchema + )}`; + if (!err.dataPath) { + switch (err.params.additionalProperty) { + case "debug": + return ( + `${baseMessage}\n` + + "The 'debug' property was removed in webpack 2.\n" + + "Loaders should be updated to allow passing this option via loader options in module.rules.\n" + + "Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode:\n" + + "plugins: [\n" + + " new webpack.LoaderOptionsPlugin({\n" + + " debug: true\n" + + " })\n" + + "]" + ); } - return baseMessage + '\n' + - 'For typos: please correct them.\n' + - 'For loader options: webpack 2 no longer allows custom properties in configuration.\n' + - ' Loaders should be updated to allow passing options via loader options in module.rules.\n' + - ' Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:\n' + - ' plugins: [\n' + - ' new webpack.LoaderOptionsPlugin({\n' + - ' // test: /\\.xxx$/, // may apply this only for some modules\n' + - ' options: {\n' + + return ( + baseMessage + + "\n" + + "For typos: please correct them.\n" + + "For loader options: webpack 2 no longer allows custom properties in configuration.\n" + + " Loaders should be updated to allow passing options via loader options in module.rules.\n" + + " Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:\n" + + " plugins: [\n" + + " new webpack.LoaderOptionsPlugin({\n" + + " // test: /\\.xxx$/, // may apply this only for some modules\n" + + " options: {\n" + ` ${err.params.additionalProperty}: ...\n` + - ' }\n' + - ' })\n' + - ' ]'; + " }\n" + + " })\n" + + " ]" + ); } return baseMessage; - } else if(err.keyword === 'oneOf' || err.keyword === 'anyOf') { - if(err.children && err.children.length > 0) { - return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}\n` + - `Details:\n${err.children.map(err => ' * ' + indent(WebpackOptionsValidationError.formatValidationError(err), ' ', false)).join('\n')}`; + } else if (err.keyword === "oneOf" || err.keyword === "anyOf") { + if (err.children && err.children.length > 0) { + return ( + `${dataPath} should be one of these:\n${getSchemaPartText( + err.parentSchema + )}\n` + + `Details:\n${err.children + .map( + err => + " * " + + indent( + WebpackOptionsValidationError.formatValidationError(err), + " ", + false + ) + ) + .join("\n")}` + ); } - return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`; - - } else if(err.keyword === 'enum') { - if(err.parentSchema && err.parentSchema.enum && err.parentSchema.enum.length === 1) { + return `${dataPath} should be one of these:\n${getSchemaPartText( + err.parentSchema + )}`; + } else if (err.keyword === "enum") { + if ( + err.parentSchema && + err.parentSchema.enum && + err.parentSchema.enum.length === 1 + ) { return `${dataPath} should be ${getSchemaPartText(err.parentSchema)}`; } - return `${dataPath} should be one of these:\n${getSchemaPartText(err.parentSchema)}`; - } else if(err.keyword === 'allOf') { + return `${dataPath} should be one of these:\n${getSchemaPartText( + err.parentSchema + )}`; + } else if (err.keyword === "allOf") { return `${dataPath} should be:\n${getSchemaPartText(err.parentSchema)}`; - } else if(err.keyword === 'type') { - switch(err.params.type) { - case 'object': - return `${dataPath} should be an object.`; - case 'string': - return `${dataPath} should be a string.`; - case 'boolean': - return `${dataPath} should be a boolean.`; - case 'number': - return `${dataPath} should be a number.`; - case 'array': - return `${dataPath} should be an array:\n${getSchemaPartText(err.parentSchema)}`; + } else if (err.keyword === "type") { + switch (err.params.type) { + case "object": + return `${dataPath} should be an object.`; + case "string": + return `${dataPath} should be a string.`; + case "boolean": + return `${dataPath} should be a boolean.`; + case "number": + return `${dataPath} should be a number.`; + case "array": + return `${dataPath} should be an array:\n${getSchemaPartText( + err.parentSchema + )}`; } - return `${dataPath} should be ${err.params.type}:\n${getSchemaPartText(err.parentSchema)}`; - } else if(err.keyword === 'instanceof') { - return `${dataPath} should be an instance of ${getSchemaPartText(err.parentSchema)}.`; - } else if(err.keyword === 'required') { - const missingProperty = err.params.missingProperty.replace(/^\./, ''); - return `${dataPath} misses the property '${missingProperty}'.\n${getSchemaPartText(err.parentSchema, ['properties', missingProperty])}`; - } else if(err.keyword === 'minLength' || err.keyword === 'minItems') { - if(err.params.limit === 1) - return `${dataPath} should not be empty.`; - else - return `${dataPath} ${err.message}`; + return `${dataPath} should be ${err.params.type}:\n${getSchemaPartText( + err.parentSchema + )}`; + } else if (err.keyword === "instanceof") { + return `${dataPath} should be an instance of ${getSchemaPartText( + err.parentSchema + )}.`; + } else if (err.keyword === "required") { + const missingProperty = err.params.missingProperty.replace(/^\./, ""); + return `${dataPath} misses the property '${missingProperty}'.\n${getSchemaPartText( + err.parentSchema, + ["properties", missingProperty] + )}`; + } else if (err.keyword === "minLength" || err.keyword === "minItems") { + if (err.params.limit === 1) return `${dataPath} should not be empty.`; + else return `${dataPath} ${err.message}`; } else { // eslint-disable-line no-fallthrough - return `${dataPath} ${err.message} (${JSON.stringify(err, 0, 2)}).\n${getSchemaPartText(err.parentSchema)}`; + return `${dataPath} ${err.message} (${JSON.stringify( + err, + 0, + 2 + )}).\n${getSchemaPartText(err.parentSchema)}`; } } } diff --git a/lib/utils/npm-exists.js b/lib/utils/npm-exists.js index 85dbb1345dd..22c60bc3ae9 100644 --- a/lib/utils/npm-exists.js +++ b/lib/utils/npm-exists.js @@ -1,5 +1,7 @@ -const got = require('got'); -const chalk = require('chalk'); +"use strict"; + +const got = require("got"); +const chalk = require("chalk"); const constant = value => () => value; /* @@ -15,12 +17,18 @@ const constant = value => () => value; module.exports = function npmExists(moduleName) { //eslint-disable-next-line if (moduleName.length <= 14 || moduleName.slice(0,14) !== 'webpack-addons') { - throw new TypeError(chalk.bold(`${moduleName} isn\'t a valid name.\n`) + - chalk.red('\nIt should be prefixed with \'webpack-addons\', but have different suffix.\n')); + throw new TypeError( + chalk.bold(`${moduleName} isn't a valid name.\n`) + + chalk.red( + "\nIt should be prefixed with 'webpack-addons', but have different suffix.\n" + ) + ); } - const hostname = 'https://www.npmjs.org'; + const hostname = "https://www.npmjs.org"; const pkgUrl = `${hostname}/package/${moduleName}`; - return got(pkgUrl, {method: 'HEAD'}) + return got(pkgUrl, { + method: "HEAD" + }) .then(constant(true)) .catch(constant(false)); }; diff --git a/lib/utils/npm-exists.spec.js b/lib/utils/npm-exists.spec.js index be5ba3d7c96..1ee26346139 100644 --- a/lib/utils/npm-exists.spec.js +++ b/lib/utils/npm-exists.spec.js @@ -1,16 +1,15 @@ -'use strict'; -const exists = require('./npm-exists'); +"use strict"; +const exists = require("./npm-exists"); -describe('npm-exists', () => { - - it('should sucessfully existence of a published module', () => { - exists('webpack-addons-ylvis').then( (status) => { +describe("npm-exists", () => { + it("should sucessfully existence of a published module", () => { + exists("webpack-addons-ylvis").then(status => { expect(status).toBe(true); }); }); - it('should return false for the existence of a fake module', () => { - exists('webpack-addons-noop').then( (status) => { + it("should return false for the existence of a fake module", () => { + exists("webpack-addons-noop").then(status => { expect(status).toBe(false); }); }); diff --git a/lib/utils/npm-packages-exists.js b/lib/utils/npm-packages-exists.js index 020cf0bbd09..d8999771023 100644 --- a/lib/utils/npm-packages-exists.js +++ b/lib/utils/npm-packages-exists.js @@ -1,6 +1,7 @@ -const npmExists = require('./npm-exists'); -const resolvePackages = require('./resolve-packages'); +"use strict"; +const npmExists = require("./npm-exists"); +const resolvePackages = require("./resolve-packages"); /* * @function npmPackagesExists @@ -12,23 +13,26 @@ const resolvePackages = require('./resolve-packages'); * @returns { Array } resolvePackages - Returns an process to install the packages */ - module.exports = function npmPackagesExists(pkg) { let acceptedPackages = []; - pkg.forEach( addon => { - npmExists(addon).then( (moduleExists) => { - if(!moduleExists) { - Error.stackTraceLimit = 0; - throw new TypeError('Package isn\'t registered on npm.'); - } - if (moduleExists) { - acceptedPackages.push(addon); - } - }).catch(err => { - console.error(err.stack || err); - process.exit(0); - }).then( () => { - if(acceptedPackages.length === pkg.length) return resolvePackages(acceptedPackages); - }); + pkg.forEach(addon => { + npmExists(addon) + .then(moduleExists => { + if (!moduleExists) { + Error.stackTraceLimit = 0; + throw new TypeError("Package isn't registered on npm."); + } + if (moduleExists) { + acceptedPackages.push(addon); + } + }) + .catch(err => { + console.error(err.stack || err); + process.exit(0); + }) + .then(() => { + if (acceptedPackages.length === pkg.length) + return resolvePackages(acceptedPackages); + }); }); }; diff --git a/lib/utils/resolve-packages.js b/lib/utils/resolve-packages.js index eb960e2a4cc..016d6f107b8 100644 --- a/lib/utils/resolve-packages.js +++ b/lib/utils/resolve-packages.js @@ -1,9 +1,11 @@ -const path = require('path'); -const fs = require('fs'); -const chalk = require('chalk'); -const spawn = require('cross-spawn'); -const creator = require('../creator/index').creator; -const globalPath = require('global-modules'); +"use strict"; + +const path = require("path"); +const fs = require("fs"); +const chalk = require("chalk"); +const spawn = require("cross-spawn"); +const creator = require("../creator/index").creator; +const globalPath = require("global-modules"); /* * @function processPromise * @@ -15,7 +17,7 @@ const globalPath = require('global-modules'); function processPromise(child) { return new Promise(function(resolve, reject) { //eslint-disable-line - if(child.status !== 0) { + if (child.status !== 0) { reject(); } else { resolve(); @@ -35,12 +37,14 @@ function processPromise(child) { function spawnChild(pkg) { const pkgPath = path.resolve(globalPath, pkg); let installType; - if(fs.existsSync(pkgPath)) { - installType = 'update'; + if (fs.existsSync(pkgPath)) { + installType = "update"; } else { - installType = 'install'; + installType = "install"; } - return spawn.sync('npm', [installType, '-g', pkg], { stdio: 'inherit'}); + return spawn.sync("npm", [installType, "-g", pkg], { + stdio: "inherit" + }); } /* @@ -58,24 +62,28 @@ module.exports = function resolvePackages(pkg) { let packageLocations = []; - pkg.forEach( (addon) => { - processPromise(spawnChild(addon)).then( () => { - try { - packageLocations.push(path.resolve(globalPath, addon)); - } catch(err) { - console.log('Package wasn\'t validated correctly..'); - console.log('Submit an issue for', pkg, 'if this persists'); - console.log('\nReason: \n'); + pkg.forEach(addon => { + processPromise(spawnChild(addon)) + .then(() => { + try { + packageLocations.push(path.resolve(globalPath, addon)); + } catch (err) { + console.log("Package wasn't validated correctly.."); + console.log("Submit an issue for", pkg, "if this persists"); + console.log("\nReason: \n"); + console.error(chalk.bold.red(err)); + process.exitCode = 1; + } + }) + .catch(err => { + console.log("Package Coudln't be installed, aborting.."); + console.log("\nReason: \n"); console.error(chalk.bold.red(err)); process.exitCode = 1; - } - }).catch(err => { - console.log('Package Coudln\'t be installed, aborting..'); - console.log('\nReason: \n'); - console.error(chalk.bold.red(err)); - process.exitCode = 1; - }).then( () => { - if(packageLocations.length === pkg.length) return creator(packageLocations); - }); + }) + .then(() => { + if (packageLocations.length === pkg.length) + return creator(packageLocations); + }); }); }; diff --git a/lib/utils/resolve-packages.spec.js b/lib/utils/resolve-packages.spec.js index 8ee4d39bd50..6b5b1392770 100644 --- a/lib/utils/resolve-packages.spec.js +++ b/lib/utils/resolve-packages.spec.js @@ -1,33 +1,34 @@ -'use strict'; +"use strict"; -const getLoc = require('../../__mocks__/inquirer/resolve.mock'); +const getLoc = require("../../__mocks__/inquirer/resolve.mock"); -describe('resolve-packages', () => { +describe("resolve-packages", () => { let moduleLoc; afterEach(() => { moduleLoc = null; }); - it('should resolve a location of a published module', () => { - moduleLoc = getLoc(['webpack-addons-ylvis']); - expect(moduleLoc).toEqual(['../../node_modules/webpack-addons-ylvis']); + it("should resolve a location of a published module", () => { + moduleLoc = getLoc(["webpack-addons-ylvis"]); + expect(moduleLoc).toEqual(["../../node_modules/webpack-addons-ylvis"]); }); - it('should be empty if argument is blank', () => { + it("should be empty if argument is blank", () => { // normally caught before getting resolved - moduleLoc = getLoc([' ']); - expect(moduleLoc).toEqual(['../../node_modules/ ']); + moduleLoc = getLoc([" "]); + expect(moduleLoc).toEqual(["../../node_modules/ "]); }); - it('should resolve multiple locations of published modules', () => { + it("should resolve multiple locations of published modules", () => { /* we're testing multiple paths here. At Github this up for discussion, because if * we validate each package on each run, we can catch and build the questions in init gradually * while we get one filepath at the time. If not, this is a workaround. */ - moduleLoc = getLoc(['webpack-addons-ylvis', 'webpack-addons-noop']); - expect(moduleLoc).toEqual( - ['../../node_modules/webpack-addons-ylvis', '../../node_modules/webpack-addons-noop'] - ); + moduleLoc = getLoc(["webpack-addons-ylvis", "webpack-addons-noop"]); + expect(moduleLoc).toEqual([ + "../../node_modules/webpack-addons-ylvis", + "../../node_modules/webpack-addons-noop" + ]); }); }); diff --git a/lib/utils/validateSchema.js b/lib/utils/validateSchema.js index c6360de2367..2975d93cf19 100644 --- a/lib/utils/validateSchema.js +++ b/lib/utils/validateSchema.js @@ -2,7 +2,7 @@ MIT License http://www.opensource.org/licenses/mit-license.php Author Gajus Kuizinas @gajus */ -'use strict'; +"use strict"; /* eslint-disable */ const Ajv = require('ajv'); @@ -15,12 +15,12 @@ require('ajv-keywords')(ajv, ['instanceof']); /* eslint-enable */ function validateSchema(schema, options) { - if(Array.isArray(options)) { - const errors = options.map((options) => validateObject(schema, options)); + if (Array.isArray(options)) { + const errors = options.map(options => validateObject(schema, options)); errors.forEach((list, idx) => { list.forEach(function applyPrefix(err) { err.dataPath = `[${idx}]${err.dataPath}`; - if(err.children) { + if (err.children) { err.children.forEach(applyPrefix); } }); @@ -41,12 +41,12 @@ function validateObject(schema, options) { function filterErrors(errors) { let newErrors = []; - errors.forEach((err) => { + errors.forEach(err => { const dataPath = err.dataPath; let children = []; - newErrors = newErrors.filter((oldError) => { - if(oldError.dataPath.includes(dataPath)) { - if(oldError.children) { + newErrors = newErrors.filter(oldError => { + if (oldError.dataPath.includes(dataPath)) { + if (oldError.children) { children = children.concat(oldError.children.slice(0)); } oldError.children = undefined; @@ -55,7 +55,7 @@ function filterErrors(errors) { } return true; }); - if(children.length) { + if (children.length) { err.children = children; } newErrors.push(err); From 283a0b021240a1ab79ce8f523889469fe3435441 Mon Sep 17 00:00:00 2001 From: Andrey Okonetchnikov Date: Thu, 6 Apr 2017 14:06:11 +0200 Subject: [PATCH 5/9] Add additional .eslintrc to /bin to remove unrelated eslint errors --- bin/.eslintrc.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 bin/.eslintrc.json diff --git a/bin/.eslintrc.json b/bin/.eslintrc.json new file mode 100644 index 00000000000..8a7d65b183a --- /dev/null +++ b/bin/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "node/no-missing-require": 0 + } +} From 8aca6a2bb50280740e918a50f34226e44dc4ab24 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Tue, 18 Jul 2017 14:30:48 +0200 Subject: [PATCH 6/9] feat: Require quotes only in property names that require it --- .eslintrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 1e370bf19ee..4c2f4e927bd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,7 +9,7 @@ module.exports = { }, "parserOptions": { "ecmaVersion": 2017 }, "rules": { - "quote-props": ["error", "consistent-as-needed"], + "quote-props": ["error", "as-needed"], "no-dupe-keys": "error", "quotes": ["error", "double"], "no-undef": "error", From e7c1109c853ac0267d1355d824fb158624556691 Mon Sep 17 00:00:00 2001 From: Daniela Valero Date: Thu, 20 Jul 2017 16:39:20 +0200 Subject: [PATCH 7/9] chore: Add again removed settings by merge conflict solving --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 36bad7531f5..1c92ae99d6d 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,9 @@ ] }, "pre-commit": "lint:staged", + "jest": { + "testEnvironment": "node" + }, "dependencies": { "babel-code-frame": "^6.22.0", "babel-core": "^6.25.0", @@ -68,7 +71,6 @@ "babel-polyfill": "^6.23.0", "eslint": "^4.2.0", "eslint-plugin-node": "^5.1.0", - "eslint-plugin-prettier": "^2.1.2", "jest": "^20.0.4", "jest-cli": "^20.0.4", "lint-staged": "^4.0.2", From d23f4a9e0345b1e1ca59ed7a68821b5746b86dde Mon Sep 17 00:00:00 2001 From: Andrey Okonetchnikov Date: Tue, 12 Sep 2017 22:29:30 +0200 Subject: [PATCH 8/9] tests: Fix failing test --- .../transformations/context/__snapshots__/context.test.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/creator/transformations/context/__snapshots__/context.test.js.snap b/lib/creator/transformations/context/__snapshots__/context.test.js.snap index 5cef7f9b165..a6f0276751a 100644 --- a/lib/creator/transformations/context/__snapshots__/context.test.js.snap +++ b/lib/creator/transformations/context/__snapshots__/context.test.js.snap @@ -8,7 +8,7 @@ exports[`context transforms correctly using "context-0" data 1`] = ` filename: 'bundle.js' }, - context: path.resolve(__dirname, \\"app\\") + context: path.resolve(__dirname, 'app') } " `; From d306fd5287f68b021136945aba9cd60a89347ef9 Mon Sep 17 00:00:00 2001 From: Andrey Okonetchnikov Date: Tue, 12 Sep 2017 22:37:55 +0200 Subject: [PATCH 9/9] chore: Use husky instead of pre-commit pre-commit package stopped working. See https://github.com/observing/pre-commit/issues/113 husky also requires less boilerplate in the package.json --- package-lock.json | 4448 +++++++++++++++++++++++++++++++++++++-------- package.json | 7 +- 2 files changed, 3699 insertions(+), 756 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26cb7e615d4..4716022286a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,6 +2,7 @@ "name": "webpack-cli", "version": "1.3.3", "lockfileVersion": 1, + "requires": true, "dependencies": { "abab": { "version": "1.0.3", @@ -17,19 +18,28 @@ "acorn-dynamic-import": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=" + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "4.0.13" + } }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true + "dev": true, + "requires": { + "acorn": "4.0.13" + } }, "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", @@ -40,26 +50,38 @@ } }, "ajv": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", - "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", - "dev": true + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } }, "ajv-keywords": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", - "dev": true + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=" }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=" + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "alter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", - "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=" + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", + "requires": { + "stable": "0.1.6" + } }, "amdefine": { "version": "1.0.1", @@ -84,7 +106,11 @@ "anymatch": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=" + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } }, "app-root-path": { "version": "2.0.1", @@ -96,18 +122,27 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.0.3" + } }, "arr-flatten": { "version": "1.0.3", @@ -128,7 +163,10 @@ "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -154,12 +192,20 @@ "asn1.js": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=" + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=" + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } }, "assert-plus": { "version": "0.2.0", @@ -210,6 +256,23 @@ "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-polyfill": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.23.0", + "chokidar": "1.7.0", + "commander": "2.10.0", + "convert-source-map": "1.5.0", + "fs-readdir-recursive": "1.0.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.6", + "v8flags": "2.1.1" + }, "dependencies": { "fs-readdir-recursive": { "version": "1.0.0", @@ -223,11 +286,23 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "supports-color": { "version": "2.0.0", @@ -239,94 +314,212 @@ "babel-core": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=" + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } }, "babel-eslint": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4" + } }, "babel-generator": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=" + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } }, "babel-helper-bindify-decorators": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=" + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=" + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=" + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-define-map": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=" + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-helper-explode-assignable-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=" + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-explode-class": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=" + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=" + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=" + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=" + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=" + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=" + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=" + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=" + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=" + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-jest": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-plugin-istanbul": "4.1.4", + "babel-preset-jest": "20.0.3" + }, "dependencies": { "babel-plugin-jest-hoist": { "version": "20.0.3", @@ -338,19 +531,28 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } } } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=" + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-constant-folding": { "version": "1.0.1", @@ -377,12 +579,20 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.7.3", + "test-exclude": "4.1.1" + }, "dependencies": { "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true + "dev": true, + "requires": { + "locate-path": "2.0.0" + } } } }, @@ -405,6 +615,9 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", + "requires": { + "lodash": "3.10.1" + }, "dependencies": { "lodash": { "version": "3.10.1", @@ -496,172 +709,329 @@ "babel-plugin-transform-async-generator-functions": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=" + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=" + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-class-constructor-call": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=" + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "requires": { + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-class-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=" + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-decorators": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=" + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=" + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=" + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=" + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=" + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "6.24.1", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=" + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=" + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=" + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=" + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=" + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=" + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=" + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=" + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=" + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=" + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=" + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=" + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=" + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=" + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=" + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=" + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=" + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=" + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "regexpu-core": "2.0.0" + } }, "babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=" + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-export-extensions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=" + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "requires": { + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-flow-strip-types": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=" + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-object-rest-spread": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=" + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-regenerator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=" + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "requires": { + "regenerator-transform": "0.9.11" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=" + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-undeclared-variables-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", - "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=" + "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=", + "requires": { + "leven": "1.0.2" + } }, "babel-plugin-undefined-to-void": { "version": "1.1.6", @@ -672,52 +1042,138 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=" + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.24.1", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.24.1" + } }, "babel-preset-stage-1": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=" + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "requires": { + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" + } }, "babel-preset-stage-2": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=" + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } }, "babel-preset-stage-3": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=" + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.23.0" + } }, "babel-register": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=" + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } }, "babel-runtime": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=" + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-template": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=" + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=" + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=" + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.17.4", @@ -739,7 +1195,10 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "big.js": { "version": "3.1.3", @@ -762,25 +1221,37 @@ "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" }, "bn.js": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", - "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==" + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "breakable": { "version": "1.0.0", @@ -797,6 +1268,9 @@ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", "dev": true, + "requires": { + "resolve": "1.1.7" + }, "dependencies": { "resolve": { "version": "1.1.7", @@ -807,45 +1281,87 @@ } }, "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", + "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=" + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.0.8", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=" + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=" + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=" + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=" + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "0.2.9" + } }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true + "dev": true, + "requires": { + "node-int64": "0.4.0" + } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=" + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } }, "buffer-xor": { "version": "1.0.3", @@ -866,7 +1382,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "0.2.0" + } }, "callsites": { "version": "0.2.0", @@ -888,24 +1407,47 @@ "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=" + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=" + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "requires": { + "color-convert": "1.9.0" + } } } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=" + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "ci-info": { "version": "1.0.0", @@ -914,20 +1456,27 @@ "dev": true }, "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "circular-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=" + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "1.0.1" + } }, "cli-spinners": { "version": "0.1.2", @@ -938,6 +1487,9 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "requires": { + "colors": "1.0.3" + }, "dependencies": { "colors": { "version": "1.0.3", @@ -949,17 +1501,26 @@ "cli-truncate": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=" + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + } }, "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=" + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } }, "clone": { "version": "1.0.2", @@ -979,7 +1540,12 @@ "cloneable-readable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", - "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=" + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "through2": "2.0.3" + } }, "co": { "version": "4.6.0", @@ -994,7 +1560,10 @@ "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=" + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "requires": { + "color-name": "1.1.2" + } }, "color-name": { "version": "1.1.2", @@ -1010,12 +1579,18 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", - "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==" + "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==", + "requires": { + "graceful-readlink": "1.0.1" + } }, "commondir": { "version": "1.0.1", @@ -1026,11 +1601,29 @@ "version": "0.10.8", "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "2.10.0", + "detective": "4.5.0", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.18", + "mkdirp": "0.5.1", + "private": "0.1.7", + "q": "1.5.0", + "recast": "git://github.com/kalcifer/recast.git#b66a17eee9e072338744b947a406d3f134bc0b0d" + }, "dependencies": { "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=" + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } } } }, @@ -1042,12 +1635,20 @@ "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=" + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=" + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } }, "constants-browserify": { "version": "1.0.0", @@ -1080,6 +1681,16 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-1.1.0.tgz", "integrity": "sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=", "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "js-yaml": "3.8.4", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "require-from-string": "1.2.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1092,33 +1703,71 @@ "create-ecdh": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=" + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=" + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=" + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=" + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1" + } }, "crypto-browserify": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=" + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } }, "cssom": { "version": "0.3.2", @@ -1130,12 +1779,18 @@ "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true + "dev": true, + "requires": { + "cssom": "0.3.2" + } }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=" + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.30" + } }, "dargs": { "version": "5.1.0", @@ -1147,6 +1802,9 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1174,7 +1832,10 @@ "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -1184,7 +1845,10 @@ "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "1.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -1201,7 +1865,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } }, "defined": { "version": "1.0.0", @@ -1212,6 +1879,18 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", + "requires": { + "alter": "0.2.0", + "ast-traverse": "0.1.1", + "breakable": "1.0.0", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "simple-fmt": "0.1.0", + "simple-is": "0.2.0", + "stringmap": "0.2.2", + "stringset": "0.2.1", + "tryor": "0.1.2", + "yargs": "3.27.0" + }, "dependencies": { "esprima-fb": { "version": "15001.1001.0-dev-harmony-fb", @@ -1221,7 +1900,15 @@ "yargs": { "version": "3.27.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", - "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=" + "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "window-size": "0.1.4", + "y18n": "3.2.1" + } } } }, @@ -1230,12 +1917,29 @@ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.2.8" + }, "dependencies": { "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } } } }, @@ -1248,7 +1952,11 @@ "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=" + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "detect-conflict": { "version": "1.0.1", @@ -1258,28 +1966,44 @@ "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=" + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } }, "detective": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", - "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=" + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "requires": { + "acorn": "4.0.13", + "defined": "1.0.0" + } }, "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=" + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } }, "domain-browser": { "version": "1.1.7", @@ -1296,7 +2020,10 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "editions": { "version": "1.3.3", @@ -1304,9 +2031,9 @@ "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=" }, "ejs": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", - "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=" + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" }, "elegant-spinner": { "version": "1.0.1", @@ -1316,7 +2043,16 @@ "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=" + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "emojis-list": { "version": "2.1.0", @@ -1326,52 +2062,102 @@ "enhanced-resolve": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==" + "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.6" + } }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=" + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "requires": { + "prr": "0.0.0" + } }, "error": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=" + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } }, "es5-ext": { - "version": "0.10.23", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", - "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=" + "version": "0.10.30", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", + "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=" + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=" + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=" + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=" + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=" + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -1383,6 +2169,13 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + }, "dependencies": { "esprima": { "version": "2.7.3", @@ -1401,88 +2194,119 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, - "optional": true + "optional": true, + "requires": { + "amdefine": "1.0.1" + } } } }, "escope": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=" + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "eslint": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.1.1.tgz", - "integrity": "sha1-+svfz+Pg+s06i4DcmMTmwTrlgt8=", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.6.1.tgz", + "integrity": "sha1-3cf8f9cL+TIFsLNEm7FqHp59SVA=", "dev": true, + "requires": { + "ajv": "5.2.2", + "babel-code-frame": "6.22.0", + "chalk": "2.1.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.0", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "3.2.3", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "4.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.3.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.1", + "text-table": "0.2.0" + }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + } }, - "pluralize": { + "esprima": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", - "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", - "dev": true - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "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, - "dependencies": { - "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": { + "argparse": "1.0.9", + "esprima": "4.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "table": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", - "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", - "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" + } } } }, @@ -1490,30 +2314,38 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.1.0.tgz", "integrity": "sha512-MzAAnEfNOl6g871VgjKswHkyG+bqsXX2//SWXwNkyREvWAPUoU8X6ZvcrambHEGecUIbE0pAVPzzfKU/p9H5lg==", - "dev": true - }, - "eslint-plugin-prettier": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.1.2.tgz", - "integrity": "sha1-S5D07n+Sv74ukmAX4cpA62KJZeo=", - "dev": true + "dev": true, + "requires": { + "ignore": "3.3.3", + "minimatch": "3.0.4", + "resolve": "1.3.3", + "semver": "5.3.0" + } }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", + "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", "dev": true, + "requires": { + "acorn": "5.1.2", + "acorn-jsx": "3.0.1" + }, "dependencies": { "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", + "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", "dev": true } } @@ -1527,12 +2359,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "dev": true, + "requires": { + "estraverse": "4.2.0" + } }, "esrecurse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=" + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } }, "estraverse": { "version": "4.2.0", @@ -1547,7 +2386,11 @@ "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=" + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } }, "events": { "version": "1.1.1", @@ -1555,21 +2398,37 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } }, "exec-sh": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", - "dev": true + "dev": true, + "requires": { + "merge": "1.2.0" + } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "exit-hook": { "version": "1.1.1", @@ -1579,17 +2438,26 @@ "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=" + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "1.0.1" + } }, "extend": { "version": "3.0.1", @@ -1597,14 +2465,22 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "external-editor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", - "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.5.1", + "tmp": "0.0.31" + } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } }, "extsprintf": { "version": "1.0.2", @@ -1613,15 +2489,9 @@ "dev": true }, "fast-deep-equal": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", - "integrity": "sha1-XG9FmaumszPuM0Li7ZeGcvEAH40=" - }, - "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" }, "fast-levenshtein": { "version": "2.0.6", @@ -1633,18 +2503,28 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true + "dev": true, + "requires": { + "bser": "2.0.0" + } }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=" + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } }, "filename-regex": { "version": "2.0.1", @@ -1655,35 +2535,64 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + }, "dependencies": { "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } } } }, "first-chunk-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=" + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "requires": { + "readable-stream": "2.3.3" + } }, "flat-cache": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } }, "flow-parser": { "version": "0.49.1", @@ -1698,7 +2607,10 @@ "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } }, "forever-agent": { "version": "0.6.1", @@ -1710,7 +2622,12 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs-readdir-recursive": { "version": "0.1.2", @@ -1727,6 +2644,10 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -1738,7 +2659,11 @@ "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "optional": true + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -1755,7 +2680,11 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } }, "asn1": { "version": "0.2.3", @@ -1796,22 +2725,35 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -1838,7 +2780,10 @@ "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -1859,13 +2804,19 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1879,7 +2830,10 @@ "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "optional": true + "optional": true, + "requires": { + "ms": "2.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -1902,7 +2856,10 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "extend": { "version": "3.0.1", @@ -1925,7 +2882,12 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs.realpath": { "version": "1.0.0", @@ -1935,25 +2897,49 @@ "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=" + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-ignore": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1966,7 +2952,15 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -1983,7 +2977,11 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "optional": true + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "has-unicode": { "version": "2.0.1", @@ -1995,7 +2993,13 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -2006,12 +3010,21 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2027,7 +3040,10 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -2050,7 +3066,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -2068,7 +3087,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "optional": true + "optional": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -2087,6 +3109,12 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2104,12 +3132,18 @@ "mime-types": { "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "1.27.0" + } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -2119,7 +3153,10 @@ "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -2131,19 +3168,40 @@ "version": "0.6.36", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } }, "nopt": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "npmlog": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -2165,7 +3223,10 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } }, "os-homedir": { "version": "1.0.2", @@ -2183,7 +3244,11 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "optional": true + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2218,6 +3283,12 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -2230,18 +3301,54 @@ "readable-stream": { "version": "2.2.9", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "optional": true + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.0.1", @@ -2270,13 +3377,27 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2286,15 +3407,23 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "requires": { + "safe-buffer": "5.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -2305,7 +3434,10 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -2316,25 +3448,46 @@ "tar": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=" + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "optional": true + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "optional": true + "optional": 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=", - "optional": true + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -2363,13 +3516,19 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -2378,16 +3537,10 @@ } } }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "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 }, "get-caller-file": { @@ -2395,6 +3548,12 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, + "get-own-enumerable-property-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-1.0.1.tgz", + "integrity": "sha1-8dTjrRQC4DmJjlbR6bmqkkwm5IQ=", + "dev": true + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -2410,6 +3569,9 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -2423,43 +3585,70 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", - "dependencies": { - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" - } + "requires": { + "got": "7.1.0", + "is-plain-obj": "1.1.0" } }, "github-username": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", - "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=" + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", + "requires": { + "gh-got": "6.0.0" + } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==" + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "1.0.1", + "is-windows": "1.0.1", + "resolve-dir": "1.0.0" + } }, "global-prefix": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.1.tgz", - "integrity": "sha512-iPchqvFtW8olnZW+24RkCFpldmNC+dFTBlmsnIsWDGAL3U8K1k7p7EKHbKWWLGMk3vXJ+kz+ZAuD9sBkTGlOzg==" + "integrity": "sha512-iPchqvFtW8olnZW+24RkCFpldmNC+dFTBlmsnIsWDGAL3U8K1k7p7EKHbKWWLGMk3vXJ+kz+ZAuD9sBkTGlOzg==", + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "1.0.1", + "resolve-dir": "1.0.0", + "which": "1.2.14" + } }, "globals": { "version": "9.18.0", @@ -2467,21 +3656,37 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "globby": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", - "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=" - } + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "got": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -2496,7 +3701,10 @@ "grouped-queue": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", - "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=" + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", + "requires": { + "lodash": "4.17.4" + } }, "growly": { "version": "1.3.0", @@ -2509,12 +3717,21 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -2529,19 +3746,30 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } } } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } }, "has-color": { "version": "0.1.7", @@ -2551,7 +3779,8 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, "has-symbol-support-x": { "version": "1.3.0", @@ -2561,28 +3790,49 @@ "has-to-string-tag-x": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.3.0.tgz", - "integrity": "sha512-Fu9Nwv8/VNJMvKjkldzXHO+yeX+TCelwUQ9dGW2LrAfHfHi6zVqQt+Qjilf0qGHvpl6Fap6o8aDhWhMt5hY/1g==" + "integrity": "sha512-Fu9Nwv8/VNJMvKjkldzXHO+yeX+TCelwUQ9dGW2LrAfHfHi6zVqQt+Qjilf0qGHvpl6Fap6o8aDhWhMt5hY/1g==", + "requires": { + "has-symbol-support-x": "1.3.0" + } }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=" + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } }, "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==" + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoek": { "version": "2.16.3", @@ -2593,12 +3843,19 @@ "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=" + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=" + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "1.0.0" + } }, "hosted-git-info": { "version": "2.5.0", @@ -2609,19 +3866,46 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", - "dev": true + "dev": true, + "requires": { + "whatwg-encoding": "1.0.1" + } }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + } }, "https-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "dev": true, + "requires": { + "is-ci": "1.0.10", + "normalize-path": "1.0.0", + "strip-indent": "2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + } + } + }, "iconv-lite": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", @@ -2646,7 +3930,10 @@ "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=" + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } }, "indexof": { "version": "0.0.1", @@ -2656,7 +3943,11 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2669,9 +3960,25 @@ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" }, "inquirer": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz", - "integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.3.tgz", + "integrity": "sha512-Bc3KbimpDTOeQdDj18Ir/rlsGuhBSSNqdOnxaAuKhpkdnMMuKsEGbZD2v5KFF9oso2OU+BPh7+/u5obmFDRmWw==", + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.0.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "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-escapes": { "version": "2.0.0", @@ -2683,67 +3990,52 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=" - }, - "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=" + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=" + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=" - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } }, "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=" + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -2755,7 +4047,10 @@ "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -2770,7 +4065,10 @@ "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.8.0" + } }, "is-buffer": { "version": "1.1.5", @@ -2780,13 +4078,19 @@ "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true + "dev": true, + "requires": { + "ci-info": "1.0.0" + } }, "is-dotfile": { "version": "1.0.3", @@ -2796,7 +4100,10 @@ "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -2811,33 +4118,48 @@ "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } }, "is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", - "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=" - }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true + "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=", + "requires": { + "is-finite": "1.0.2" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, "is-object": { "version": "1.0.1", @@ -2854,13 +4176,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-plain-obj": { "version": "1.1.0", @@ -2882,17 +4210,20 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "1.0.3" + } }, "is-retry-allowed": { "version": "1.1.0", @@ -2902,7 +4233,10 @@ "is-scoped": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", - "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=" + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "requires": { + "scoped-regex": "1.0.0" + } }, "is-stream": { "version": "1.1.0", @@ -2938,7 +4272,10 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } }, "isstream": { "version": "0.1.2", @@ -2951,12 +4288,28 @@ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.10.tgz", "integrity": "sha1-8n5ecSXI3hP2qAZhr3j1EuVDmys=", "dev": true, + "requires": { + "async": "2.5.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.7.3", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.1", + "js-yaml": "3.8.4", + "mkdirp": "0.5.1", + "once": "1.4.0" + }, "dependencies": { "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } } } }, @@ -2970,25 +4323,46 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", - "dev": true + "dev": true, + "requires": { + "append-transform": "0.4.0" + } }, "istanbul-lib-instrument": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.3.tgz", "integrity": "sha1-klsjkWPqvdaMxASPUsL6T4mez6c=", - "dev": true + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.3.0" + } }, "istanbul-lib-report": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, "dependencies": { "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -2997,12 +4371,22 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", "dev": true, + "requires": { + "debug": "2.6.8", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + }, "dependencies": { "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } } } }, @@ -3010,41 +4394,96 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", - "dev": true + "dev": true, + "requires": { + "handlebars": "4.0.10" + } }, "istextorbinary": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.1.0.tgz", - "integrity": "sha1-2+0qb1G+L3R1to+JRlgRFBt1iHQ=" + "integrity": "sha1-2+0qb1G+L3R1to+JRlgRFBt1iHQ=", + "requires": { + "binaryextensions": "2.0.0", + "editions": "1.3.3", + "textextensions": "2.1.0" + } }, "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==" + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "1.3.0", + "is-object": "1.0.1" + } }, "jest": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", - "dev": true + "dev": true, + "requires": { + "jest-cli": "20.0.4" + } }, "jest-cli": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "callsites": "2.0.0", + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.1.10", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.7.3", + "istanbul-lib-source-maps": "1.2.1", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.4", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", + "throat": "3.2.0", + "which": "1.2.14", + "worker-farm": "1.4.1", + "yargs": "7.1.0" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "babel-jest": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-plugin-istanbul": "4.1.4", + "babel-preset-jest": "20.0.3" + } }, "babel-plugin-jest-hoist": { "version": "20.0.3", @@ -3056,13 +4495,19 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } }, "bser": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", - "dev": true + "dev": true, + "requires": { + "node-int64": "0.4.0" + } }, "callsites": { "version": "2.0.0", @@ -3081,6 +4526,13 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, "dependencies": { "ansi-styles": { "version": "2.2.1", @@ -3094,7 +4546,12 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } }, "jest-changed-files": { "version": "20.0.3", @@ -3106,55 +4563,116 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" + } }, "jest-diff": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "diff": "3.3.1", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" + } }, "jest-environment-jsdom": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", - "dev": true + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3", + "jsdom": "9.12.0" + } }, "jest-environment-node": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", - "dev": true + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3" + } }, "jest-haste-map": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=", - "dev": true + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.4.1" + } }, "jest-jasmine2": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.1.1" + } }, "jest-matcher-utils": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + } }, "jest-matchers": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", - "dev": true + "dev": true, + "requires": { + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } }, "jest-message-util": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" + } }, "jest-mock": { "version": "20.0.3", @@ -3172,37 +4690,85 @@ "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", - "dev": true + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "is-builtin-module": "1.0.0", + "resolve": "1.3.3" + } }, "jest-resolve-dependencies": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", - "dev": true + "dev": true, + "requires": { + "jest-regex-util": "20.0.3" + } }, "jest-runtime": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.4", + "chalk": "1.1.3", + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.4", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.0" + } }, "jest-snapshot": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } }, "jest-util": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", + "mkdirp": "0.5.1" + } }, "jest-validate": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } }, "leven": { "version": "2.1.0", @@ -3220,19 +4786,35 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.1.0" + } }, "sane": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", "dev": true, + "requires": { + "anymatch": "1.3.0", + "exec-sh": "0.2.0", + "fb-watchman": "1.9.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.10.0" + }, "dependencies": { "fb-watchman": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", - "dev": true + "dev": true, + "requires": { + "bser": "1.0.2" + } } } }, @@ -3252,13 +4834,31 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } }, "yargs-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0" + } } } }, @@ -3268,6 +4868,76 @@ "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", "dev": true }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -3277,7 +4947,11 @@ "version": "3.8.4", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "3.1.3" + } }, "jsbn": { "version": "0.1.1", @@ -3287,14 +4961,32 @@ "optional": true }, "jschardet": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.4.2.tgz", - "integrity": "sha1-KqEH8UKvQSHRRWWdRPUIMJYeaZo=" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", + "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==" }, "jscodeshift": { "version": "0.3.32", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.3.32.tgz", "integrity": "sha1-3s5etgLxY0DY2VTH+WrJB8UC6rs=", + "requires": { + "async": "1.5.2", + "babel-core": "5.8.38", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.24.1", + "babylon": "6.17.4", + "colors": "1.1.2", + "flow-parser": "0.49.1", + "lodash": "4.17.4", + "micromatch": "2.3.11", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.12.6", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + }, "dependencies": { "ast-types": { "version": "0.9.11", @@ -3305,6 +4997,54 @@ "version": "5.8.38", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", + "requires": { + "babel-plugin-constant-folding": "1.0.1", + "babel-plugin-dead-code-elimination": "1.0.2", + "babel-plugin-eval": "1.0.1", + "babel-plugin-inline-environment-variables": "1.0.1", + "babel-plugin-jscript": "1.0.4", + "babel-plugin-member-expression-literals": "1.0.1", + "babel-plugin-property-literals": "1.0.1", + "babel-plugin-proto-to-assign": "1.0.4", + "babel-plugin-react-constant-elements": "1.0.3", + "babel-plugin-react-display-name": "1.0.3", + "babel-plugin-remove-console": "1.0.1", + "babel-plugin-remove-debugger": "1.0.1", + "babel-plugin-runtime": "1.0.7", + "babel-plugin-undeclared-variables-check": "1.0.2", + "babel-plugin-undefined-to-void": "1.1.6", + "babylon": "5.8.38", + "bluebird": "2.11.0", + "chalk": "1.1.3", + "convert-source-map": "1.5.0", + "core-js": "1.2.7", + "debug": "2.6.8", + "detect-indent": "3.0.1", + "esutils": "2.0.2", + "fs-readdir-recursive": "0.1.2", + "globals": "6.4.1", + "home-or-tmp": "1.0.0", + "is-integer": "1.0.7", + "js-tokens": "1.0.1", + "json5": "0.4.0", + "lodash": "3.10.1", + "minimatch": "2.0.10", + "output-file-sync": "1.1.2", + "path-exists": "1.0.0", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "regenerator": "0.8.40", + "regexpu": "1.3.0", + "repeating": "1.1.3", + "resolve": "1.3.3", + "shebang-regex": "1.0.0", + "slash": "1.0.0", + "source-map": "0.5.6", + "source-map-support": "0.2.10", + "to-fast-properties": "1.0.3", + "trim-right": "1.0.1", + "try-resolve": "1.0.1" + }, "dependencies": { "babylon": { "version": "5.8.38", @@ -3321,7 +5061,14 @@ "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "core-js": { "version": "1.2.7", @@ -3331,7 +5078,12 @@ "detect-indent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=" + "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", + "requires": { + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" + } }, "esprima": { "version": "4.0.0", @@ -3346,7 +5098,11 @@ "home-or-tmp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", - "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=" + "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", + "requires": { + "os-tmpdir": "1.0.2", + "user-home": "1.1.1" + } }, "js-tokens": { "version": "1.0.1", @@ -3361,7 +5117,10 @@ "minimatch": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=" + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "1.2.0", @@ -3372,6 +5131,13 @@ "version": "0.12.6", "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.6.tgz", "integrity": "sha1-Sw+4L+sdELO9YtNJQ0Jtmz7TDUw=", + "requires": { + "ast-types": "0.9.11", + "core-js": "2.4.1", + "esprima": "4.0.0", + "private": "0.1.7", + "source-map": "0.5.6" + }, "dependencies": { "core-js": { "version": "2.4.1", @@ -3383,17 +5149,26 @@ "repeating": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=" + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "requires": { + "is-finite": "1.0.2" + } }, "source-map-support": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", + "requires": { + "source-map": "0.1.32" + }, "dependencies": { "source-map": { "version": "0.1.32", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=" + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -3408,7 +5183,28 @@ "version": "9.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "dev": true + "dev": true, + "requires": { + "abab": "1.0.3", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.1", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.8.1", + "html-encoding-sniffer": "1.0.1", + "nwmatcher": "1.4.1", + "parse5": "1.5.1", + "request": "2.81.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.2", + "webidl-conversions": "4.0.1", + "whatwg-encoding": "1.0.1", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + } }, "jsesc": { "version": "1.3.0", @@ -3416,9 +5212,9 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" }, "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" }, "json-schema": { "version": "0.2.3", @@ -3434,7 +5230,10 @@ "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -3452,17 +5251,17 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -3475,7 +5274,10 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } }, "lazy-cache": { "version": "1.0.4", @@ -3485,7 +5287,10 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } }, "leven": { "version": "1.0.2", @@ -3496,28 +5301,123 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "lint-staged": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-4.0.0.tgz", - "integrity": "sha1-wVZp9ZhhSm5oCQMD4XWnmdSODYU=", - "dev": true + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-4.1.3.tgz", + "integrity": "sha512-nOV/CUs10lQz7STNkNs+X3lQahaMfWj31OoTPQxVVg17pqDbBi8chV564nk/GdTgHNAF7RyRFt0ZiA2cTjgppw==", + "dev": true, + "requires": { + "app-root-path": "2.0.1", + "chalk": "2.1.0", + "cosmiconfig": "1.1.0", + "execa": "0.8.0", + "is-glob": "4.0.0", + "jest-validate": "20.0.3", + "listr": "0.12.0", + "lodash": "4.17.4", + "log-symbols": "2.0.0", + "minimatch": "3.0.4", + "npm-which": "3.0.1", + "p-map": "1.1.1", + "staged-git-files": "0.0.4", + "stringify-object": "3.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "log-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.0.0.tgz", + "integrity": "sha512-ValCSal2pRxRbet7O69a/1g5fZ2MLxf1YXIslNrdJF42ofY9zVf6MTqTwfhG+2x168xrbZATCgFQfXAwdNHv+w==", + "dev": true, + "requires": { + "chalk": "2.1.0" + } + } + } }, "listr": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.2.0", + "listr-verbose-renderer": "0.4.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.1.1", + "rxjs": "5.4.1", + "stream-to-observable": "0.1.0", + "strip-ansi": "3.0.1" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "supports-color": { "version": "2.0.0", @@ -3535,16 +5435,37 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.1.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "indent-string": { "version": "3.1.0", @@ -3562,16 +5483,33 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz", "integrity": "sha1-RNwBuww0oDxXIVTU0Izemx3FYg8=", + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.28.5", + "figures": "1.7.0" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "supports-color": { "version": "2.0.0", @@ -3583,7 +5521,15 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } }, "loader-runner": { "version": "2.3.0", @@ -3593,12 +5539,21 @@ "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=" + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, "dependencies": { "path-exists": { "version": "3.0.0", @@ -3612,21 +5567,25 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, - "lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=", - "dev": true - }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "1.1.3" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "supports-color": { "version": "2.0.0", @@ -3638,7 +5597,11 @@ "log-update": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", - "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=" + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + } }, "longest": { "version": "1.0.1", @@ -3648,7 +5611,10 @@ "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } }, "lowercase-keys": { "version": "1.0.0", @@ -3658,28 +5624,75 @@ "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==" + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=" + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } }, "mem-fs": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", - "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=" + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", + "requires": { + "through2": "2.0.3", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" + } }, "mem-fs-editor": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", + "requires": { + "commondir": "1.0.1", + "deep-extend": "0.4.2", + "ejs": "2.5.7", + "glob": "7.1.2", + "globby": "6.1.0", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "rimraf": "2.2.8", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, "dependencies": { "clone": { "version": "2.1.1", @@ -3691,11 +5704,6 @@ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=" - }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", @@ -3704,14 +5712,26 @@ "vinyl": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=" + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.0.2", + "replace-ext": "1.0.0" + } } } }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=" + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } }, "merge": { "version": "1.2.0", @@ -3722,12 +5742,31 @@ "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "miller-rabin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=" + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } }, "mime-db": { "version": "1.27.0", @@ -3739,7 +5778,10 @@ "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "mimic-fn": { "version": "1.1.0", @@ -3764,7 +5806,10 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -3774,7 +5819,10 @@ "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -3784,12 +5832,18 @@ "multimatch": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=" + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } }, "mute-stream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { "version": "2.6.2", @@ -3818,6 +5872,31 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, "dependencies": { "string_decoder": { "version": "0.10.31", @@ -3830,12 +5909,22 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", - "dev": true + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.3.0", + "shellwords": "0.1.0", + "which": "1.2.14" + } }, "nomnom": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + }, "dependencies": { "ansi-styles": { "version": "1.0.0", @@ -3845,7 +5934,12 @@ "chalk": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=" + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } }, "strip-ansi": { "version": "0.1.1", @@ -3857,29 +5951,49 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==" + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.0.2" + } }, "npm-path": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.3.tgz", "integrity": "sha1-Fc/04ciaONp39W9gVbJPl137K74=", - "dev": true + "dev": true, + "requires": { + "which": "1.2.14" + } }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } }, "npm-which": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true + "dev": true, + "requires": { + "commander": "2.10.0", + "npm-path": "2.0.3", + "which": "1.2.14" + } }, "number-is-nan": { "version": "1.0.1", @@ -3906,12 +6020,19 @@ "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "1.1.0", @@ -3922,13 +6043,25 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.2" + } }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, "dependencies": { "wordwrap": { "version": "1.0.0", @@ -3942,11 +6075,24 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "supports-color": { "version": "2.0.0", @@ -3968,7 +6114,10 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=" + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } }, "os-shim": { "version": "0.1.3", @@ -3983,7 +6132,12 @@ "output-file-sync": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=" + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } }, "p-cancelable": { "version": "0.3.0", @@ -3993,7 +6147,10 @@ "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=" + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "1.0.0" + } }, "p-finally": { "version": "1.0.0", @@ -4013,7 +6170,10 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } }, "p-map": { "version": "1.1.1", @@ -4028,7 +6188,10 @@ "p-timeout": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.0.tgz", - "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=" + "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=", + "requires": { + "p-finally": "1.0.0" + } }, "pako": { "version": "0.2.9", @@ -4038,17 +6201,33 @@ "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=" + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.8", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } }, "parse-passwd": { "version": "1.0.0", @@ -4095,12 +6274,25 @@ "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=" + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } }, "performance-now": { "version": "0.2.0", @@ -4121,12 +6313,15 @@ "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } }, - "pre-commit": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", - "integrity": "sha1-287g7p3nI15X95xW186UZBpp7sY=", + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", "dev": true }, "prelude-ls": { @@ -4146,15 +6341,36 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.5.2.tgz", - "integrity": "sha512-f55mvineQ5yc36cLX4n4RWP6JH6MLcfi5f9MVsjpfBs4MVSG2GYT4v6cukzmvkIOvmNOdCZfDSMY3hQcMcDQbQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.6.1.tgz", + "integrity": "sha512-f85qBoQiqiFM/sCmJaN4Lagj9bqMcv38vCftqp4GfVessAqq3Ns6g+3gd8UXReStLLE/DGEdwiZXoFKxphKqwg==" }, "pretty-bytes": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + } + } + }, "private": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", @@ -4170,6 +6386,12 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", @@ -4183,7 +6405,14 @@ "public-encrypt": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=" + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "punycode": { "version": "1.4.1", @@ -4215,63 +6444,125 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } } } }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.5" + } } } }, "randombytes": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==" + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "requires": { + "safe-buffer": "5.1.1" + } }, "read-chunk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.0.0.tgz", - "integrity": "sha1-Mkbod4KRFs7AWWdMTV8wD3qSYfM=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", + "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", + "requires": { + "pify": "3.0.0", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==" + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=" + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "recast": { - "version": "git://github.com/kalcifer/recast.git#b66a17eee9e072338744b947a406d3f134bc0b0d" + "version": "git://github.com/kalcifer/recast.git#b66a17eee9e072338744b947a406d3f134bc0b0d", + "requires": { + "ast-types": "0.9.2", + "esprima": "3.1.3", + "private": "0.1.7", + "source-map": "0.5.6" + } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "1.3.3" + } }, "regenerate": { "version": "1.3.2", @@ -4282,6 +6573,14 @@ "version": "0.8.40", "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz", "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", + "requires": { + "commoner": "0.10.8", + "defs": "1.1.1", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.7", + "recast": "0.10.33", + "through": "2.3.8" + }, "dependencies": { "ast-types": { "version": "0.8.12", @@ -4296,7 +6595,13 @@ "recast": { "version": "0.10.33", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", - "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=" + "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", + "requires": { + "ast-types": "0.8.12", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.7", + "source-map": "0.5.6" + } } } }, @@ -4308,17 +6613,33 @@ "regenerator-transform": { "version": "0.9.11", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=" + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "private": "0.1.7" + } }, "regex-cache": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "regexpu": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", + "requires": { + "esprima": "2.7.3", + "recast": "0.10.43", + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + }, "dependencies": { "ast-types": { "version": "0.8.15", @@ -4334,6 +6655,12 @@ "version": "0.10.43", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz", "integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=", + "requires": { + "ast-types": "0.8.15", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.7", + "source-map": "0.5.6" + }, "dependencies": { "esprima-fb": { "version": "15001.1001.0-dev-harmony-fb", @@ -4347,7 +6674,12 @@ "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=" + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -4358,6 +6690,9 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -4384,7 +6719,10 @@ "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } }, "replace-ext": { "version": "0.0.1", @@ -4395,7 +6733,31 @@ "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } }, "require-directory": { "version": "2.1.1", @@ -4418,34 +6780,47 @@ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" } }, "resolve": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "requires": { + "path-parse": "1.0.5" + } }, "resolve-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.0.tgz", "integrity": "sha1-d6G4+Rl6YOdzO08Nl35pzNm1/YY=", + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "0.2.3" + }, "dependencies": { "global-modules": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=" + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } }, "global-prefix": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=" + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.2.14" + } }, "is-windows": { "version": "0.2.0", @@ -4454,15 +6829,28 @@ } } }, + "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 + }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=" + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=" + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } }, "rimraf": { "version": "2.2.8", @@ -4472,12 +6860,19 @@ "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=" + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "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=" + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } }, "rx": { "version": "4.1.0", @@ -4485,19 +6880,25 @@ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" }, "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" }, "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=" + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "4.0.8" + } }, "rxjs": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.1.tgz", - "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=" + "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=", + "requires": { + "symbol-observable": "1.0.4" + } }, "safe-buffer": { "version": "5.1.1", @@ -4538,12 +6939,18 @@ "sha.js": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=" + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "requires": { + "inherits": "2.0.3" + } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -4551,9 +6958,14 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=" + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } }, "shellwords": { "version": "0.1.0", @@ -4595,7 +7007,15 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" }, "source-map": { "version": "0.5.6", @@ -4605,17 +7025,27 @@ "source-map-support": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=" + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "requires": { + "source-map": "0.5.6" + } }, "spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=" + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "requires": { + "concat-stream": "1.6.0", + "os-shim": "0.1.3" + } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -4638,6 +7068,16 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -4661,28 +7101,37 @@ "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=" + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==" + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } }, "stream-to-observable": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=" }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==" - }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } }, "string-template": { "version": "0.2.1", @@ -4692,7 +7141,31 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringify-object": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.0.tgz", + "integrity": "sha1-lDcKE15BvASDWIE7+ZSB8TFcaqY=", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "1.0.1", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" + } }, "stringmap": { "version": "0.2.2", @@ -4713,23 +7186,39 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } }, "strip-bom-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=" + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + } }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4737,9 +7226,12 @@ "dev": true }, "supports-color": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", - "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "requires": { + "has-flag": "2.0.0" + }, "dependencies": { "has-flag": { "version": "2.0.0", @@ -4759,6 +7251,90 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "tapable": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", @@ -4767,13 +7343,24 @@ "temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=" + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + } }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } }, "text-table": { "version": "0.2.0", @@ -4799,7 +7386,11 @@ "through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=" + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } }, "timed-out": { "version": "4.0.1", @@ -4807,14 +7398,20 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "requires": { + "setimmediate": "1.0.5" + } }, "tmp": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", - "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=" + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "1.0.2" + } }, "tmpl": { "version": "1.0.4", @@ -4836,7 +7433,10 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true + "dev": true, + "requires": { + "punycode": "1.4.1" + } }, "tr46": { "version": "0.0.3", @@ -4874,7 +7474,10 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -4887,7 +7490,10 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } }, "typedarray": { "version": "0.0.6", @@ -4898,6 +7504,11 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "window-size": { "version": "0.1.0", @@ -4907,7 +7518,13 @@ "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=" + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -4921,17 +7538,10 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dependencies": { - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" - }, - "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==" - } + "requires": { + "source-map": "0.5.6", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" } }, "underscore": { @@ -4942,12 +7552,19 @@ "untildify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=" + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "requires": { + "os-homedir": "1.0.2" + } }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -4959,7 +7576,10 @@ "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "1.0.4" + } }, "url-to-options": { "version": "1.0.1", @@ -4975,6 +7595,9 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -4998,39 +7621,68 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true + "dev": true, + "requires": { + "user-home": "1.1.1" + } }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "verror": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } }, "vinyl": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=" + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } }, "vinyl-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", - "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=" + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" + } }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=" + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true + "dev": true, + "requires": { + "makeerror": "1.0.11" + } }, "watch": { "version": "0.10.0", @@ -5039,14 +7691,22 @@ "dev": true }, "watchpack": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", - "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, "dependencies": { "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "requires": { + "lodash": "4.17.4" + } } } }, @@ -5057,71 +7717,84 @@ "dev": true }, "webpack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.0.0.tgz", - "integrity": "sha1-7pvOvyEkf3FTy0EBaMq0XjpZ1Nc=", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.5.6.tgz", + "integrity": "sha512-sXnxfx6KoZVrFAGLjdhCCwDtDwkYMfwm8mJjkQv3thr5pjTlbxopVlr/kJwc9Bz317gL+gNjvz++ir9TgG1MDg==", + "requires": { + "acorn": "5.1.2", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.2.2", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.3", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.6", + "supports-color": "4.4.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" + }, "dependencies": { "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=" - }, - "ajv": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", - "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=" - }, - "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", + "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==" }, "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "requires": { + "lodash": "4.17.4" + } }, - "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==" + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=" + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" } } }, "webpack-addons": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.2.tgz", - "integrity": "sha1-goWxgfl6coIMHWhAIliEYOT3xrc=" + "integrity": "sha1-goWxgfl6coIMHWhAIliEYOT3xrc=", + "requires": { + "babel-code-frame": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-3": "6.24.1", + "jscodeshift": "0.3.32" + } }, "webpack-addons-ylvis": { "version": "0.0.34", "resolved": "https://registry.npmjs.org/webpack-addons-ylvis/-/webpack-addons-ylvis-0.0.34.tgz", "integrity": "sha1-lxPUEIil8IZ29nCl7HBItDKDHFo=", + "requires": { + "webpack-addons": "0.0.4", + "yeoman-generator": "git://github.com/ev1stensberg/generator.git#9e24fa31c85302ca1145ae34fc68b4f133251ca0" + }, "dependencies": { "webpack-addons": { "version": "0.0.4", @@ -5130,11 +7803,23 @@ } } }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + } + }, "whatwg-encoding": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", "dev": true, + "requires": { + "iconv-lite": "0.4.13" + }, "dependencies": { "iconv-lite": { "version": "0.4.13", @@ -5149,6 +7834,10 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, "dependencies": { "webidl-conversions": { "version": "3.0.1", @@ -5161,12 +7850,16 @@ "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true }, "window-size": { "version": "0.1.4", @@ -5182,12 +7875,20 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.4.1.tgz", "integrity": "sha512-tgFAtgOYLPutkAyzgpS6VJFL5HY+0ui1Tvua+fITgz8ByaJTMFGtazR6xxQfwfiAcbwE+2fLG/K49wc2TfwCNw==", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } }, "wrappy": { "version": "1.0.2", @@ -5198,12 +7899,20 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } }, "write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=" + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "xml-name-validator": { "version": "2.0.1", @@ -5230,6 +7939,21 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.0.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.0", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -5245,63 +7969,120 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, "dependencies": { "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, "cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=" + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "4.1.1", + "which": "1.2.14" + } }, "execa": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=" + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "requires": { + "cross-spawn": "4.0.2", + "get-stream": "2.3.1", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } }, "get-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=" + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } }, "os-locale": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", - "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=" + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=", + "requires": { + "execa": "0.5.1", + "lcid": "1.0.0", + "mem": "1.1.0" + } }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "string-width": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", @@ -5311,7 +8092,10 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -5328,19 +8112,10 @@ "yargs-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=" - } - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -5348,16 +8123,45 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.0.tgz", "integrity": "sha1-2vovxRLBaMuDE0U+UxjmRzEmWRU=", + "requires": { + "chalk": "1.1.3", + "debug": "2.6.8", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "globby": "6.1.0", + "grouped-queue": "0.3.3", + "inquirer": "3.2.3", + "is-scoped": "1.0.0", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "mem-fs": "1.1.3", + "text-table": "0.2.0", + "untildify": "3.0.2" + }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=" + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "supports-color": { "version": "2.0.0", @@ -5373,61 +8177,179 @@ }, "yeoman-generator": { "version": "git://github.com/ev1stensberg/generator.git#9e24fa31c85302ca1145ae34fc68b4f133251ca0", + "requires": { + "async": "2.5.0", + "chalk": "1.1.3", + "cli-table": "0.3.1", + "cross-spawn": "5.1.0", + "dargs": "5.1.0", + "dateformat": "2.0.0", + "debug": "2.6.8", + "detect-conflict": "1.0.1", + "error": "7.0.2", + "find-up": "2.1.0", + "github-username": "4.1.0", + "istextorbinary": "2.1.0", + "lodash": "4.17.4", + "mem-fs-editor": "3.0.2", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "read-chunk": "2.1.0", + "read-pkg-up": "2.0.0", + "rimraf": "2.2.8", + "run-async": "2.3.0", + "shelljs": "0.7.8", + "text-table": "0.2.0", + "through2": "2.0.3", + "yeoman-environment": "1.6.6" + }, "dependencies": { "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "requires": { + "lodash": "4.17.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "diff": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=" }, + "external-editor": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", + "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", + "requires": { + "extend": "3.0.1", + "spawn-sync": "1.0.15", + "tmp": "0.0.29" + } + }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "6.0.4", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "inquirer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", - "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=" + "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", + "requires": { + "ansi-escapes": "1.4.0", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "external-editor": "1.1.1", + "figures": "1.7.0", + "lodash": "4.17.4", + "mute-stream": "0.0.6", + "pinkie-promise": "2.0.1", + "run-async": "2.3.0", + "rx": "4.1.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=" + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=" + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=" + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=" + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=" + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "strip-bom": { "version": "3.0.0", @@ -5439,10 +8361,32 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, + "tmp": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", + "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "requires": { + "os-tmpdir": "1.0.2" + } + }, "yeoman-environment": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-1.6.6.tgz", - "integrity": "sha1-zYX6Z9FWBg5EDXgH1+988NLR1nE=" + "integrity": "sha1-zYX6Z9FWBg5EDXgH1+988NLR1nE=", + "requires": { + "chalk": "1.1.3", + "debug": "2.6.8", + "diff": "2.2.3", + "escape-string-regexp": "1.0.5", + "globby": "4.1.0", + "grouped-queue": "0.3.3", + "inquirer": "1.2.3", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "mem-fs": "1.1.3", + "text-table": "0.2.0", + "untildify": "2.1.0" + } } } } diff --git a/package.json b/package.json index 1c92ae99d6d..46840e10053 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "scripts": { "lint": "eslint \"**/*.js\"", "lint:codeOnly": "eslint \"{lib,bin,__mocks__}/**/!(__testfixtures__)/*.js\" \"{lib,bin,__mocks__}/**.js\"", - "lint:staged": "lint-staged", + "precommit": "lint-staged", "pretest": "npm run lint", "test": "jest --coverage" }, @@ -28,7 +28,6 @@ "git add" ] }, - "pre-commit": "lint:staged", "jest": { "testEnvironment": "node" }, @@ -71,9 +70,9 @@ "babel-polyfill": "^6.23.0", "eslint": "^4.2.0", "eslint-plugin-node": "^5.1.0", + "husky": "^0.14.3", "jest": "^20.0.4", "jest-cli": "^20.0.4", - "lint-staged": "^4.0.2", - "pre-commit": "^1.2.2" + "lint-staged": "^4.1.3" } }