From 75b22ecd88a14b5f288a093da749fc88a1920696 Mon Sep 17 00:00:00 2001 From: "james.cryer" Date: Wed, 28 Mar 2018 12:16:47 +0100 Subject: [PATCH 1/2] Added linting --- .editorconfig | 14 + .eslintignore | 3 + .eslintrc | 27 + chai-tests/main_spec.js | 191 +- compareImages.js | 20 +- demoassets/main.js | 602 +-- memory-leak-test.js | 43 +- nodejs-tests/compareImages.test.js | 80 +- nodejs-tests/resemble.test.js | 245 +- package-lock.json | 8003 ++++++++++++++++++++-------- package.json | 82 +- resemble.js | 1888 ++++--- 12 files changed, 7355 insertions(+), 3843 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b842047 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false + +[{.travis.yml}] +indent_style = space +indent_size = 2 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..f166136 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +/node_modules +/libs +/demoassets diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..d238482 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,27 @@ +{ + "extends": [ + "eslint-config-es5", + "plugin:prettier/recommended" + ], + "parserOptions": { + "ecmaVersion": 2017, + "sourceType": "module" + }, + "rules": { + "prettier/prettier": [ + "error", + { + "singleQuote": true, + "tabWidth": "4" + } + ], + "no-console": "off", + "no-use-before-define": ["warn", { "functions": false, "classes": false, "variables": true }], + "func-names": ["warn", "as-needed"] + + }, + "env": { + "amd": true, + "es6": true + } +} diff --git a/chai-tests/main_spec.js b/chai-tests/main_spec.js index d5eeb64..8241e89 100644 --- a/chai-tests/main_spec.js +++ b/chai-tests/main_spec.js @@ -1,103 +1,108 @@ -var expect = chai.expect; +/* eslint-env es6, chai*/ +/* global chai, resemble */ -var people_src = - 'data:image/jpeg;base64,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'; -var people2_src = - 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4TIraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTNSAxMS4wLjAuNDg0IFdpbmRvd3M8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTItMDktMjVUMDk6MTY6MDdaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDMtMjVUMTY6NDE6MTBaPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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'; +const expect = chai.expect; -function request_success() { - return new Promise(function(resolve, reject) { - resemble('../demoassets/People.jpg') - .compareTo('../demoassets/People2.jpg') - .onComplete(function(data) { - console.info('Reached oncomplete for request_success'); - expect(data.diffBounds).to.have.all.keys( - 'bottom', - 'left', - 'top', - 'right' - ); - expect(data.diffBounds.bottom).to.equal(431); - expect(data.diffBounds.left).to.equal(22); - expect(data.diffBounds.right).to.equal(450); - expect(data.diffBounds.top).to.equal(58); - expect(data.dimensionDifference.height).to.equal(0); - expect(data.dimensionDifference.width).to.equal(0); - expect(data.isSameDimensions).to.be.true; - expect(data.misMatchPercentage).to.include('8.6'); - resolve(); - }); - }); -} +const peopleSrc = + "data:image/jpeg;base64,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"; +const people2Src = + "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4TIraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTNSAxMS4wLjAuNDg0IFdpbmRvd3M8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTItMDktMjVUMDk6MTY6MDdaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDMtMjVUMTY6NDE6MTBaPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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"; -function base64_string() { - return new Promise(function(resolve, reject) { - resemble(people_src).compareTo(people2_src).onComplete(function(data) { - console.info('Reached oncomplete for base64_string'); - expect(data.diffBounds.bottom).to.equal(431); - expect(data.diffBounds.left).to.equal(22); - expect(data.diffBounds.right).to.equal(450); - expect(data.diffBounds.top).to.equal(58); - expect(data.dimensionDifference.height).to.equal(0); - expect(data.dimensionDifference.width).to.equal(0); - expect(data.isSameDimensions).to.be.true; - expect(data.misMatchPercentage).to.include('8.6'); - resolve(); +function requestSuccess() { + return new Promise(resolve => { + resemble("../demoassets/People.jpg") + .compareTo("../demoassets/People2.jpg") + .onComplete(data => { + console.info("Reached oncomplete for requestSuccess"); + expect(data.diffBounds).to.have.all.keys( + "bottom", + "left", + "top", + "right" + ); + expect(data.diffBounds.bottom).to.equal(431); + expect(data.diffBounds.left).to.equal(22); + expect(data.diffBounds.right).to.equal(450); + expect(data.diffBounds.top).to.equal(58); + expect(data.dimensionDifference.height).to.equal(0); + expect(data.dimensionDifference.width).to.equal(0); + expect(data.isSameDimensions).to.be.true; + expect(data.misMatchPercentage).to.include("8.6"); + resolve(); + }); }); - }); } -function request_404() { - return new Promise(function(resolve, reject) { - resemble('../demoassets/People.jpg') - .compareTo('../demoassets/404-image.jpg') - .onComplete(function(data) { - console.info('Reached oncomplete for request_404'); - expect(data).to.deep.equal({ error: '[object Event]' }); - resolve(); - }); - }); +function base64String() { + return new Promise(resolve => { + resemble(peopleSrc) + .compareTo(people2Src) + .onComplete(data => { + console.info("Reached oncomplete for base64String"); + expect(data.diffBounds.bottom).to.equal(431); + expect(data.diffBounds.left).to.equal(22); + expect(data.diffBounds.right).to.equal(450); + expect(data.diffBounds.top).to.equal(58); + expect(data.dimensionDifference.height).to.equal(0); + expect(data.dimensionDifference.width).to.equal(0); + expect(data.isSameDimensions).to.be.true; + expect(data.misMatchPercentage).to.include("8.6"); + resolve(); + }); + }); } -function request_cors() { - return new Promise(function(resolve, reject) { - resemble('../demoassets/People.jpg') - .compareTo( - 'https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png' - ) - .onComplete(function(data) { - console.info('Reached oncomplete for request_cors'); - expect(data).to.deep.equal({ error: 'Image load error.' }); - resolve(); - }); - }); +function request404() { + return new Promise(resolve => { + resemble("../demoassets/People.jpg") + .compareTo("../demoassets/404-image.jpg") + .onComplete(data => { + console.info("Reached oncomplete for request404"); + expect(data).to.deep.equal({ error: "[object Event]" }); + resolve(); + }); + }); } -request_success() - .then(function() { - console.info('Test 1 complete.'); - }) - .then(request_404) - .then(function() { - console.info('Test 2 complete.'); - }) - .then(request_success) - .then(function() { - console.info('Test 3 complete.'); - }) - .then(request_404) - .then(function() { - console.info('Test 4 complete.'); - }) - .then(base64_string) - .then(function() { - console.info('Test 5 complete.'); - }) - // Not going to bother fixing this test - // .then(request_cors) - // .then(function() { - // console.info('Test 6 complete.'); - // }) - .then(function() { - console.info('All tests completed.'); - }); +// function requestCors() { +// return new Promise(resolve => { +// resemble('../demoassets/People.jpg') +// .compareTo( +// 'https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png' +// ) +// .onComplete(data => { +// console.info('Reached oncomplete for requestCors'); +// expect(data).to.deep.equal({ error: 'Image load error.' }); +// resolve(); +// }); +// }); +// } + +requestSuccess() + .then(() => { + console.info("Test 1 complete."); + }) + .then(request404) + .then(() => { + console.info("Test 2 complete."); + }) + .then(requestSuccess) + .then(() => { + console.info("Test 3 complete."); + }) + .then(request404) + .then(() => { + console.info("Test 4 complete."); + }) + .then(base64String) + .then(() => { + console.info("Test 5 complete."); + }) + // Not going to bother fixing this test + // .then(requestCors) + // .then(function() { + // console.info('Test 6 complete.'); + // }) + .then(() => { + console.info("All tests completed."); + }); diff --git a/compareImages.js b/compareImages.js index 508fc36..28408b9 100644 --- a/compareImages.js +++ b/compareImages.js @@ -1,13 +1,13 @@ -var resemble = require('./resemble'); +const resemble = require("./resemble"); -module.exports = function(image1, image2, options) { - return new Promise(function(resolve, reject) { - resemble.compare(image1, image2, options, function(err, data) { - if (err) { - reject(err); - } else { - resolve(data); - } +module.exports = function compareImages(image1, image2, options) { + return new Promise((resolve, reject) => { + resemble.compare(image1, image2, options, (err, data) => { + if (err) { + reject(err); + } else { + resolve(data); + } + }); }); - }); }; diff --git a/demoassets/main.js b/demoassets/main.js index 0458c94..c95ed81 100644 --- a/demoassets/main.js +++ b/demoassets/main.js @@ -1,301 +1,303 @@ -$(function(){ - var $target = $('#drop-zone'); - - function dropZone($target, onDrop){ - $target. - bind('dragover', function(){ - $target.addClass( 'drag-over' ); - return false; - }). - bind("dragend", function () { - $target.removeClass( 'drag-over' ); - return false; - }). - bind("dragleave", function () { - $target.removeClass( 'drag-over' ); - return false; - }). - bind("drop", function(event) { - var file = event.originalEvent.dataTransfer.files[0]; - - event.stopPropagation(); - event.preventDefault(); - - $target.removeClass( 'drag-over' ); - - var droppedImage = new Image(); - var fileReader = new FileReader(); - - fileReader.onload = function (event) { - droppedImage.src = event.target.result; - $target.html(droppedImage); - }; - - fileReader.readAsDataURL(file); - - onDrop(file); - }); - } - - dropZone($target, function(file){ - - resemble(file).onComplete(function(data){ - $('#image-data').show(); - $('#red').css('width',data.red+'%'); - $('#green').css('width',data.green+'%'); - $('#blue').css('width',data.blue+'%'); - $('#alpha').css('width',data.alpha+'%'); - $('#brightness').css('width',data.brightness+'%'); - $('#white').css('width',data.white+'%'); - $('#black').css('width',data.black+'%'); - }); - - }); - - function onComplete(data){ - var time = Date.now(); - var diffImage = new Image(); - diffImage.src = data.getImageDataUrl(); - - $('#image-diff').html(diffImage); - - $(diffImage).click(function(){ - var w = window.open("about:blank", "_blank"); - var html = w.document.documentElement; - var body = w.document.body; - - html.style.margin = 0; - html.style.padding = 0; - body.style.margin = 0; - body.style.padding = 0; - - var img = w.document.createElement("img"); - img.src = diffImage.src; - img.alt = "image diff"; - img.style.maxWidth = "100%"; - img.addEventListener("click", function() { - this.style.maxWidth = this.style.maxWidth === "100%" ? "" : "100%"; - }); - body.appendChild(img); - }); - - $('.buttons').show(); - - if(data.misMatchPercentage == 0){ - $('#thesame').show(); - $('#diff-results').hide(); - } else { - $('#mismatch').text(data.misMatchPercentage); - if(!data.isSameDimensions){ - $('#differentdimensions').show(); - } else { - $('#differentdimensions').hide(); - } - $('#diff-results').show(); - $('#thesame').hide(); - } - } - - var file1; - var file2; - var resembleControl; - - dropZone($('#dropzone1'), function(file){ - file1 = file; - if(file2){ - resembleControl = resemble(file).compareTo(file2).onComplete(onComplete); - } - }); - - dropZone($('#dropzone2'), function(file){ - file2 = file; - if(file1){ - resembleControl = resemble(file).compareTo(file1).onComplete(onComplete); - } - }); - - var buttons = $('.buttons button'); - - buttons.click(function(){ - var $this = $(this); - - $this.parent('.buttons').find('button').removeClass('active'); - $this.addClass('active'); - - if($this.is('#raw')){ - resembleControl.ignoreNothing(); - } - else - if($this.is('#less')){ - resembleControl.ignoreLess(); - } - if($this.is('#colors')){ - resembleControl.ignoreColors(); - } - else - if($this.is('#antialising')){ - resembleControl.ignoreAntialiasing(); - } - else - if($this.is('#alpha')){ - resembleControl.ignoreAlpha(); - } - else - if($this.is('#same-size')){ - resembleControl.scaleToSameSize(); - } - else - if($this.is('#original-size')){ - resembleControl.useOriginalSize(); - } - else - if($this.is('#pink')){ - resembleControl.outputSettings({ - errorColor: { - red: 255, - green: 0, - blue: 255 - } - }).repaint(); - } - else - if($this.is('#yellow')){ - resembleControl.outputSettings({ - errorColor: { - red: 255, - green: 255, - blue: 0 - } - }).repaint(); - } - else - if($this.is('#flat')){ - resembleControl.outputSettings({ - errorType: 'flat' - }).repaint(); - } - else - if($this.is('#movement')){ - resembleControl.outputSettings({ - errorType: 'movement' - }).repaint(); - } - else - if($this.is('#flatDifferenceIntensity')){ - resembleControl.outputSettings({ - errorType: 'flatDifferenceIntensity' - }).repaint(); - } - else - if($this.is('#movementDifferenceIntensity')){ - resembleControl.outputSettings({ - errorType: 'movementDifferenceIntensity' - }).repaint(); - } - else - if($this.is('#diffOnly')){ - resembleControl.outputSettings({ - errorType: 'diffOnly' - }).repaint(); - } - else - if($this.is('#opaque')){ - resembleControl.outputSettings({ - transparency: 1 - }).repaint(); - } - else - if($this.is('#transparent')){ - resembleControl.outputSettings({ - transparency: 0.3 - }).repaint(); - } - else - if($this.is('#boundingBox')){ - resembleControl.outputSettings({ - boundingBox: { - left: $("#bounding-box-x1").val(), - top: $("#bounding-box-y1").val(), - right: $("#bounding-box-x2").val(), - bottom: $("#bounding-box-y2").val() - } - }).repaint(); - $this.removeClass('active'); - } - if($this.is('#ignoredBox')){ - resembleControl.outputSettings({ - ignoredBox: { - left: $("#ignored-box-x1").val(), - top: $("#ignored-box-y1").val(), - right: $("#ignored-box-x2").val(), - bottom: $("#ignored-box-y2").val() - } - }).repaint(); - $this.removeClass('active'); - } - }); - - (function(){ - var xhr = new XMLHttpRequest(); - var xhr2 = new XMLHttpRequest(); - var xhr3 = new XMLHttpRequest(); - var done = $.Deferred(); - var dtwo = $.Deferred(); - var dthree = $.Deferred(); - - xhr.open('GET', 'demoassets/People.jpg', true); - xhr.responseType = 'blob'; - xhr.onload = function(e) { - done.resolve(this.response); - }; - xhr.send(); - - xhr2.open('GET', 'demoassets/People2.jpg', true); - xhr2.responseType = 'blob'; - xhr2.onload = function(e) { - dtwo.resolve(this.response); - }; - xhr2.send(); - - xhr3.open('GET', 'demoassets/PeopleAlpha.png', true); - xhr3.responseType = 'blob'; - xhr3.onload = function(e) { - dthree.resolve(this.response); - }; - xhr3.send(); - - $('#example-images').click(function(){ - - $('#dropzone1').html(''); - $('#dropzone2').html(''); - - $.when(done, dtwo).done(function(file, file1){ - if (typeof FileReader === 'undefined') { - resembleControl = resemble('demoassets/People.jpg').compareTo('demoassets/People2.jpg').onComplete(onComplete); - } else { - resembleControl = resemble(file).compareTo(file1).onComplete(onComplete); - } - }); - - return false; - }); - - $('#example-images-alpha').click(function(){ - - $('#dropzone1').html(''); - $('#dropzone2').html(''); - - $.when(done, dthree).done(function(file, file1){ - if (typeof FileReader === 'undefined') { - resembleControl = resemble('demoassets/People.jpg').compareTo('demoassets/PeopleAlpha.png').onComplete(onComplete); - } else { - resembleControl = resemble(file).compareTo(file1).onComplete(onComplete); - } - }); - - return false; - }); - - }()); - +$(function() { + var $target = $("#drop-zone"); + + function dropZone($target, onDrop) { + $target + .bind("dragover", function() { + $target.addClass("drag-over"); + return false; + }) + .bind("dragend", function() { + $target.removeClass("drag-over"); + return false; + }) + .bind("dragleave", function() { + $target.removeClass("drag-over"); + return false; + }) + .bind("drop", function(event) { + var file = event.originalEvent.dataTransfer.files[0]; + + event.stopPropagation(); + event.preventDefault(); + + $target.removeClass("drag-over"); + + var droppedImage = new Image(); + var fileReader = new FileReader(); + + fileReader.onload = function(event) { + droppedImage.src = event.target.result; + $target.html(droppedImage); + }; + + fileReader.readAsDataURL(file); + + onDrop(file); + }); + } + + dropZone($target, function(file) { + resemble(file).onComplete(function(data) { + $("#image-data").show(); + $("#red").css("width", data.red + "%"); + $("#green").css("width", data.green + "%"); + $("#blue").css("width", data.blue + "%"); + $("#alpha").css("width", data.alpha + "%"); + $("#brightness").css("width", data.brightness + "%"); + $("#white").css("width", data.white + "%"); + $("#black").css("width", data.black + "%"); + }); + }); + + function onComplete(data) { + var time = Date.now(); + var diffImage = new Image(); + diffImage.src = data.getImageDataUrl(); + + $("#image-diff").html(diffImage); + + $(diffImage).click(function() { + var w = window.open("about:blank", "_blank"); + var html = w.document.documentElement; + var body = w.document.body; + + html.style.margin = 0; + html.style.padding = 0; + body.style.margin = 0; + body.style.padding = 0; + + var img = w.document.createElement("img"); + img.src = diffImage.src; + img.alt = "image diff"; + img.style.maxWidth = "100%"; + img.addEventListener("click", function() { + this.style.maxWidth = + this.style.maxWidth === "100%" ? "" : "100%"; + }); + body.appendChild(img); + }); + + $(".buttons").show(); + + if (data.misMatchPercentage == 0) { + $("#thesame").show(); + $("#diff-results").hide(); + } else { + $("#mismatch").text(data.misMatchPercentage); + if (!data.isSameDimensions) { + $("#differentdimensions").show(); + } else { + $("#differentdimensions").hide(); + } + $("#diff-results").show(); + $("#thesame").hide(); + } + } + + var file1; + var file2; + var resembleControl; + + dropZone($("#dropzone1"), function(file) { + file1 = file; + if (file2) { + resembleControl = resemble(file) + .compareTo(file2) + .onComplete(onComplete); + } + }); + + dropZone($("#dropzone2"), function(file) { + file2 = file; + if (file1) { + resembleControl = resemble(file) + .compareTo(file1) + .onComplete(onComplete); + } + }); + + var buttons = $(".buttons button"); + + buttons.click(function() { + var $this = $(this); + + $this + .parent(".buttons") + .find("button") + .removeClass("active"); + $this.addClass("active"); + + if ($this.is("#raw")) { + resembleControl.ignoreNothing(); + } else if ($this.is("#less")) { + resembleControl.ignoreLess(); + } + if ($this.is("#colors")) { + resembleControl.ignoreColors(); + } else if ($this.is("#antialising")) { + resembleControl.ignoreAntialiasing(); + } else if ($this.is("#alpha")) { + resembleControl.ignoreAlpha(); + } else if ($this.is("#same-size")) { + resembleControl.scaleToSameSize(); + } else if ($this.is("#original-size")) { + resembleControl.useOriginalSize(); + } else if ($this.is("#pink")) { + resembleControl + .outputSettings({ + errorColor: { + red: 255, + green: 0, + blue: 255 + } + }) + .repaint(); + } else if ($this.is("#yellow")) { + resembleControl + .outputSettings({ + errorColor: { + red: 255, + green: 255, + blue: 0 + } + }) + .repaint(); + } else if ($this.is("#flat")) { + resembleControl + .outputSettings({ + errorType: "flat" + }) + .repaint(); + } else if ($this.is("#movement")) { + resembleControl + .outputSettings({ + errorType: "movement" + }) + .repaint(); + } else if ($this.is("#flatDifferenceIntensity")) { + resembleControl + .outputSettings({ + errorType: "flatDifferenceIntensity" + }) + .repaint(); + } else if ($this.is("#movementDifferenceIntensity")) { + resembleControl + .outputSettings({ + errorType: "movementDifferenceIntensity" + }) + .repaint(); + } else if ($this.is("#diffOnly")) { + resembleControl + .outputSettings({ + errorType: "diffOnly" + }) + .repaint(); + } else if ($this.is("#opaque")) { + resembleControl + .outputSettings({ + transparency: 1 + }) + .repaint(); + } else if ($this.is("#transparent")) { + resembleControl + .outputSettings({ + transparency: 0.3 + }) + .repaint(); + } else if ($this.is("#boundingBox")) { + resembleControl + .outputSettings({ + boundingBox: { + left: $("#bounding-box-x1").val(), + top: $("#bounding-box-y1").val(), + right: $("#bounding-box-x2").val(), + bottom: $("#bounding-box-y2").val() + } + }) + .repaint(); + $this.removeClass("active"); + } + if ($this.is("#ignoredBox")) { + resembleControl + .outputSettings({ + ignoredBox: { + left: $("#ignored-box-x1").val(), + top: $("#ignored-box-y1").val(), + right: $("#ignored-box-x2").val(), + bottom: $("#ignored-box-y2").val() + } + }) + .repaint(); + $this.removeClass("active"); + } + }); + + (function() { + var xhr = new XMLHttpRequest(); + var xhr2 = new XMLHttpRequest(); + var xhr3 = new XMLHttpRequest(); + var done = $.Deferred(); + var dtwo = $.Deferred(); + var dthree = $.Deferred(); + + xhr.open("GET", "demoassets/People.jpg", true); + xhr.responseType = "blob"; + xhr.onload = function(e) { + done.resolve(this.response); + }; + xhr.send(); + + xhr2.open("GET", "demoassets/People2.jpg", true); + xhr2.responseType = "blob"; + xhr2.onload = function(e) { + dtwo.resolve(this.response); + }; + xhr2.send(); + + xhr3.open("GET", "demoassets/PeopleAlpha.png", true); + xhr3.responseType = "blob"; + xhr3.onload = function(e) { + dthree.resolve(this.response); + }; + xhr3.send(); + + $("#example-images").click(function() { + $("#dropzone1").html(''); + $("#dropzone2").html(''); + + $.when(done, dtwo).done(function(file, file1) { + if (typeof FileReader === "undefined") { + resembleControl = resemble("demoassets/People.jpg") + .compareTo("demoassets/People2.jpg") + .onComplete(onComplete); + } else { + resembleControl = resemble(file) + .compareTo(file1) + .onComplete(onComplete); + } + }); + + return false; + }); + + $("#example-images-alpha").click(function() { + $("#dropzone1").html(''); + $("#dropzone2").html(''); + + $.when(done, dthree).done(function(file, file1) { + if (typeof FileReader === "undefined") { + resembleControl = resemble("demoassets/People.jpg") + .compareTo("demoassets/PeopleAlpha.png") + .onComplete(onComplete); + } else { + resembleControl = resemble(file) + .compareTo(file1) + .onComplete(onComplete); + } + }); + + return false; + }); + })(); }); diff --git a/memory-leak-test.js b/memory-leak-test.js index 207a3a8..21b60e1 100644 --- a/memory-leak-test.js +++ b/memory-leak-test.js @@ -1,32 +1,37 @@ +/* eslint no-process-exit: "warn"*/ + // node --expose-gc memory-leak-test.js -const fs = require('fs'); -const resemble = require('./resemble'); +const fs = require("fs"); +const resemble = require("./resemble"); + let max = 2000; const timerLabel = "2000 compare"; console.time(timerLabel); compare(); -function compare(){ - const people = fs.readFileSync('./demoassets/ghost1.png'); - const people2 = fs.readFileSync('./demoassets/ghost2.png'); +function compare() { + const people = fs.readFileSync("./demoassets/ghost1.png"); + const people2 = fs.readFileSync("./demoassets/ghost2.png"); - resemble(people).compareTo(people2).onComplete(function() { - if (--max >= 0) { - process.nextTick(compare); - } else { - process.nextTick(log); - } - global.gc(); - if (max % 100 === 0) { - var mem = process.memoryUsage(); - console.log(max, mem.rss, mem.heapUsed, mem.external); - } - }); + resemble(people) + .compareTo(people2) + .onComplete(() => { + if (--max >= 0) { + process.nextTick(compare); + } else { + process.nextTick(log); + } + global.gc(); + if (max % 100 === 0) { + const mem = process.memoryUsage(); + console.log(max, mem.rss, mem.heapUsed, mem.external); + } + }); } -function log(){ +function log() { console.timeEnd(timerLabel); process.exit(0); -} \ No newline at end of file +} diff --git a/nodejs-tests/compareImages.test.js b/nodejs-tests/compareImages.test.js index 263330d..e42b80e 100644 --- a/nodejs-tests/compareImages.test.js +++ b/nodejs-tests/compareImages.test.js @@ -1,39 +1,43 @@ -const compareImages = require('../compareImages'); -const fs = require('fs'); - -describe('compareImages', () => { - test('works with buffers', async () => { - const data = await compareImages( - fs.readFileSync('./demoassets/People.jpg'), - fs.readFileSync('./demoassets/People2.jpg') - ); - - expect(data.isSameDimensions).toBe(true); - expect(data.misMatchPercentage).toEqual('8.66'); - - const buffer = data.getBuffer(); - - expect(buffer).toBeInstanceOf(Buffer); - expect(buffer.length).toBe(91876); - - const comparison = fs.readFileSync( - './nodejs-tests/PeopleComparedToPeople2.png' - ); - - expect(buffer.equals(comparison)).toBe(true); - - const buffer2 = data.getBuffer(true); - const comparison2 = fs.readFileSync( - './nodejs-tests/PeopleComparedToPeople2WithOriginal.png' - ); - expect(buffer2.equals(comparison2)).toBe(true); - }); - - test('throws when failed', async () => { - const promise = compareImages( - fs.readFileSync('./demoassets/People.jpg'), - 'bogus data' - ); - await expect(promise).rejects.toMatch('Error: error while reading from input stream'); - }); +/* eslint-env jest*/ + +const compareImages = require("../compareImages"); +const fs = require("fs"); + +describe("compareImages", () => { + test("works with buffers", async () => { + const data = await compareImages( + fs.readFileSync("./demoassets/People.jpg"), + fs.readFileSync("./demoassets/People2.jpg") + ); + + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual("8.66"); + + const buffer = data.getBuffer(); + + expect(buffer).toBeInstanceOf(Buffer); + expect(buffer.length).toBe(91876); + + const comparison = fs.readFileSync( + "./nodejs-tests/PeopleComparedToPeople2.png" + ); + + expect(buffer.equals(comparison)).toBe(true); + + const buffer2 = data.getBuffer(true); + const comparison2 = fs.readFileSync( + "./nodejs-tests/PeopleComparedToPeople2WithOriginal.png" + ); + expect(buffer2.equals(comparison2)).toBe(true); + }); + + test("throws when failed", async () => { + const promise = compareImages( + fs.readFileSync("./demoassets/People.jpg"), + "bogus data" + ); + await expect(promise).rejects.toMatch( + "Error: error while reading from input stream" + ); + }); }); diff --git a/nodejs-tests/resemble.test.js b/nodejs-tests/resemble.test.js index 3ea4b17..fd802ac 100644 --- a/nodejs-tests/resemble.test.js +++ b/nodejs-tests/resemble.test.js @@ -1,123 +1,131 @@ -const resemble = require('../resemble'); -const fs = require('fs'); - -describe('resemble', () => { - test('base64', () => { - const people_src = - 'data:image/jpeg;base64,' + - fs.readFileSync('./demoassets/People.jpg', 'base64'); - const people2_src = - 'data:image/jpeg;base64,' + - fs.readFileSync('./demoassets/People2.jpg', 'base64'); - - return new Promise(function(resolve, reject) { - resemble(people_src).compareTo(people2_src).onComplete(function(data) { - // console.info('Reached oncomplete for base64_string'); - expect(data.diffBounds.bottom).toEqual(431); - expect(data.diffBounds.left).toEqual(22); - expect(data.diffBounds.right).toEqual(450); - expect(data.diffBounds.top).toEqual(58); - expect(data.dimensionDifference.height).toEqual(0); - expect(data.dimensionDifference.width).toEqual(0); - expect(data.isSameDimensions).toBe(true); - expect(data.misMatchPercentage).toEqual('8.66'); - resolve(); - }); - }); - }); - - // this doesn't work on windows - - // test('files', () => { - // return new Promise(function(resolve, reject) { - // console.log('hello there how are you'); - // resemble('demoassets/People.jpg') - // .compareTo('demoassets/People2.jpg') - // .onComplete(function(data) { - // // console.info('Reached oncomplete for request_success'); - // expect(data.diffBounds).toEqual( - // expect.objectContaining({ - // bottom: expect.any(Number), - // left: expect.any(Number), - // top: expect.any(Number), - // right: expect.any(Number) - // }) - // ); - // - // expect(data.diffBounds.bottom).toEqual(431); - // expect(data.diffBounds.left).toEqual(22); - // expect(data.diffBounds.right).toEqual(450); - // expect(data.diffBounds.top).toEqual(58); - // expect(data.dimensionDifference.height).toEqual(0); - // expect(data.dimensionDifference.width).toEqual(0); - // expect(data.isSameDimensions).toBe(true); - // expect(data.misMatchPercentage).toEqual('8.66'); - // resolve(); - // }); - // }); - // }); - - test('file not found', () => { - return new Promise(function(resolve, reject) { - resemble('../demoassets/People.jpg') - .compareTo('../demoassets/404-image.jpg') - .onComplete(function(data) { - // console.info('Reached oncomplete for request_404'); - // console.log(data); - expect(data.error).toEqual('Error: error while reading from input stream'); - resolve(); +/* eslint-env jest*/ + +const resemble = require("../resemble"); +const fs = require("fs"); + +describe("resemble", () => { + test("base64", () => { + const peopleSrc = `data:image/jpeg;base64,${fs.readFileSync( + "./demoassets/People.jpg", + "base64" + )}`; + const people2Src = `data:image/jpeg;base64,${fs.readFileSync( + "./demoassets/People2.jpg", + "base64" + )}`; + + return new Promise(resolve => { + resemble(peopleSrc) + .compareTo(people2Src) + .onComplete(data => { + // console.info('Reached oncomplete for base64String'); + expect(data.diffBounds.bottom).toEqual(431); + expect(data.diffBounds.left).toEqual(22); + expect(data.diffBounds.right).toEqual(450); + expect(data.diffBounds.top).toEqual(58); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual("8.66"); + resolve(); + }); }); }); - }); - - test('node buffers jpg', () => { - const people = fs.readFileSync('./demoassets/People.jpg'); - const people2 = fs.readFileSync('./demoassets/People2.jpg'); - return new Promise(function(resolve, reject) { - resemble(people).compareTo(people2).onComplete(function(data) { - // console.info('Reached oncomplete for base64_string'); - expect(data.diffBounds.bottom).toEqual(431); - expect(data.diffBounds.left).toEqual(22); - expect(data.diffBounds.right).toEqual(450); - expect(data.diffBounds.top).toEqual(58); - expect(data.dimensionDifference.height).toEqual(0); - expect(data.dimensionDifference.width).toEqual(0); - expect(data.isSameDimensions).toBe(true); - expect(data.misMatchPercentage).toEqual('8.66'); - resolve(); - }); + // this doesn't work on windows + + // test('files', () => { + // return new Promise(function(resolve) { + // console.log('hello there how are you'); + // resemble('demoassets/People.jpg') + // .compareTo('demoassets/People2.jpg') + // .onComplete(function(data) { + // // console.info('Reached oncomplete for request_success'); + // expect(data.diffBounds).toEqual( + // expect.objectContaining({ + // bottom: expect.any(Number), + // left: expect.any(Number), + // top: expect.any(Number), + // right: expect.any(Number) + // }) + // ); + // + // expect(data.diffBounds.bottom).toEqual(431); + // expect(data.diffBounds.left).toEqual(22); + // expect(data.diffBounds.right).toEqual(450); + // expect(data.diffBounds.top).toEqual(58); + // expect(data.dimensionDifference.height).toEqual(0); + // expect(data.dimensionDifference.width).toEqual(0); + // expect(data.isSameDimensions).toBe(true); + // expect(data.misMatchPercentage).toEqual('8.66'); + // resolve(); + // }); + // }); + // }); + + test("file not found", () => + new Promise(resolve => { + resemble("../demoassets/People.jpg") + .compareTo("../demoassets/404-image.jpg") + .onComplete(data => { + // console.info('Reached oncomplete for request404'); + // console.log(data); + expect(data.error).toEqual( + "Error: error while reading from input stream" + ); + resolve(); + }); + })); + + test("node buffers jpg", () => { + const people = fs.readFileSync("./demoassets/People.jpg"); + const people2 = fs.readFileSync("./demoassets/People2.jpg"); + + return new Promise(resolve => { + resemble(people) + .compareTo(people2) + .onComplete(data => { + // console.info('Reached oncomplete for base64String'); + expect(data.diffBounds.bottom).toEqual(431); + expect(data.diffBounds.left).toEqual(22); + expect(data.diffBounds.right).toEqual(450); + expect(data.diffBounds.top).toEqual(58); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual("8.66"); + resolve(); + }); + }); }); - }); - - test('node buffers png', () => { - const people = fs.readFileSync('./demoassets/ghost1.png'); - const people2 = fs.readFileSync('./demoassets/ghost2.png'); - - return new Promise(function(resolve, reject) { - resemble(people).compareTo(people2).onComplete(function(data) { - // console.info('Reached oncomplete for base64_string'); - expect(data.diffBounds.bottom).toEqual(138); - expect(data.diffBounds.left).toEqual(90); - expect(data.diffBounds.right).toEqual(157); - expect(data.diffBounds.top).toEqual(107); - expect(data.dimensionDifference.height).toEqual(0); - expect(data.dimensionDifference.width).toEqual(0); - expect(data.isSameDimensions).toBe(true); - expect(data.misMatchPercentage).toEqual('0.27'); - resolve(); - }); - }); + test("node buffers png", () => { + const people = fs.readFileSync("./demoassets/ghost1.png"); + const people2 = fs.readFileSync("./demoassets/ghost2.png"); + + return new Promise(resolve => { + resemble(people) + .compareTo(people2) + .onComplete(data => { + // console.info('Reached oncomplete for base64String'); + expect(data.diffBounds.bottom).toEqual(138); + expect(data.diffBounds.left).toEqual(90); + expect(data.diffBounds.right).toEqual(157); + expect(data.diffBounds.top).toEqual(107); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual("0.27"); + resolve(); + }); + }); }); + test("test partial diff with bounding box", () => { + const people = fs.readFileSync("./demoassets/ghost1.png"); + const people2 = fs.readFileSync("./demoassets/ghost2.png"); - test('test partial diff with bounding box', () => { - const people = fs.readFileSync('./demoassets/ghost1.png'); - const people2 = fs.readFileSync('./demoassets/ghost2.png'); - - return new Promise(function(resolve, reject) { - + return new Promise(resolve => { resemble.outputSettings({ boundingBox: { left: 80, @@ -127,13 +135,12 @@ describe('resemble', () => { } }); - resemble(people).compareTo(people2).onComplete(function(data) { - expect(data.misMatchPercentage).toEqual('0.04'); - resolve(); - }); + resemble(people) + .compareTo(people2) + .onComplete(data => { + expect(data.misMatchPercentage).toEqual("0.04"); + resolve(); + }); }); }); - - - }); diff --git a/package-lock.json b/package-lock.json index 790853c..0de02ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2367 +1,5666 @@ { - "name": "resemblejs", - "version": "2.10.0", - "lockfileVersion": 1, - "dependencies": { - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "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 - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true - }, - "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 - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true - }, - "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=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "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-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true - }, - "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-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true - }, - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true - }, - "babel-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-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true - }, - "babel-plugin-istanbul": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", - "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", - "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 - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true - }, - "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": { + "name": "resemblejs", + "version": "2.10.0", + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.42", + "resolved": + "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.42.tgz", + "integrity": + "sha512-L8i94FLSyaLQpRfDo/qqSm8Ndb44zMtXParXo0MebJICG1zoCCL4+GkzUOlB4BNTRSXXQdb3feam/qw7bKPipQ==", + "dev": true + }, + "@babel/highlight": { + "version": "7.0.0-beta.42", + "resolved": + "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.42.tgz", + "integrity": + "sha512-X3Ur/A/lIbbP8W0pmwgqtDXIxhQmxPaiwY9SKP7kF9wvZfjZRwMvbJE92ozUhF3UDK3DCKaV7oGqmI1rP/zqWA==", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + } + } + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": + "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "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": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=" + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": + "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "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=", + "dev": true + }, + "any-observable": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": + "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": + "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true + }, + "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 + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": + "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "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=" + }, + "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=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": + "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "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=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "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=" + }, + "assertion-error": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": + "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": + "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": + "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true + }, + "babel-core": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true + }, + "babel-generator": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": + "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true + }, + "babel-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-messages": { + "version": "6.23.0", + "resolved": + "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": + "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "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 + }, + "babel-register": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true + }, + "babel-template": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true + }, + "babel-types": { + "version": "6.26.0", + "resolved": + "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true + }, + "babylon": { + "version": "6.18.0", + "resolved": + "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": + "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": + "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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.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=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "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 + } + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": + "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": + "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": + "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "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": "1.2.1", + "resolved": + "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "canvas-prebuilt": { + "version": "1.6.5-prerelease.1", + "resolved": + "https://registry.npmjs.org/canvas-prebuilt/-/canvas-prebuilt-1.6.5-prerelease.1.tgz", + "integrity": "sha1-aBSyC5yAg13MJL/WGZFHKIYwUhw=" + }, + "caseless": { + "version": "0.12.0", + "resolved": + "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": + "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true + }, + "chardet": { + "version": "0.4.2", + "resolved": + "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": + "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": + "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": + "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": + "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": + "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": + "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": + "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": + "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "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=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "resolved": + "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": + "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true + }, + "color-name": { + "version": "1.1.3", + "resolved": + "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": + "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + }, + "commander": { + "version": "2.15.1", + "resolved": + "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": + "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": + "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "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.2", + "resolved": + "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": + "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": + "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": + "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": + "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": + "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": + "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": + "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=" + }, + "css-font-size-keywords": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", + "integrity": "sha1-hUh1rOmspqjS7g00WkSq6btttss=" + }, + "css-font-stretch-keywords": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", + "integrity": "sha1-UM7puboDH7XJUtRyMTnx4Qe1SxA=" + }, + "css-font-style-keywords": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", + "integrity": "sha1-XDUygT9jtKHelU0TzqhqtDM0CeQ=" + }, + "css-font-weight-keywords": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", + "integrity": "sha1-m8BGcayFvHJLV07106yWsNYE/Zc=" + }, + "css-global-keywords": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", + "integrity": "sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk=" + }, + "css-list-helpers": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-1.0.1.tgz", + "integrity": "sha1-//VxkiAtuDJAxBaG+RnkSacCT30=" + }, + "css-system-font-keywords": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", + "integrity": "sha1-hcbwhquk6zLFcaMIav/ENLhII+0=" + }, + "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 + }, + "dashdash": { + "version": "1.14.1", + "resolved": + "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": + "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": + "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": + "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + }, + "decamelize": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": + "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "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 + }, + "define-property": { + "version": "2.0.2", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": + "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "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=" + }, + "delegates": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true + }, + "detect-libc": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", + "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=" + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": + "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": + "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": + "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": + "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": + "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": + "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": + "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": + "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": + "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": + "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": + "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true + }, + "globals": { + "version": "11.4.0", + "resolved": + "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": + "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + } + } + }, + "eslint-config-es5": { + "version": "0.5.0", + "resolved": + "https://registry.npmjs.org/eslint-config-es5/-/eslint-config-es5-0.5.0.tgz", + "integrity": "sha1-rDAPX3XEVpk62ry1zLTSjM8A4XU=", + "dev": true + }, + "eslint-config-prettier": { + "version": "2.9.0", + "resolved": + "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz", + "integrity": + "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": + "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": + "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": + "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true + }, + "eslint-plugin-import": { + "version": "2.9.0", + "resolved": + "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", + "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", + "dev": true, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": + "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true + }, + "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=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "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=", + "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 + } + } + }, + "eslint-plugin-prettier": { + "version": "2.6.0", + "resolved": + "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz", + "integrity": + "sha512-floiaI4F7hRkTrFe8V2ItOK97QYrX75DjmdzmVITZoAP6Cn06oEDPQRsO6MlHEP/u2SxI3xQ52Kpjw6j5WGfeQ==", + "dev": true, + "dependencies": { + "jest-docblock": { + "version": "21.2.0", + "resolved": + "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": + "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "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 + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": + "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": + "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": + "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": + "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": + "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "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.1", + "resolved": + "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": + "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": + "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": + "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "exec-sh": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": + "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "dev": true + }, + "execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": + "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "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=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": + "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "resolved": + "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "expect": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", + "integrity": + "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", + "dev": true, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-diff": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": + "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "dev": true + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": + "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "dev": true + }, + "jest-message-util": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "integrity": + "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "dev": true + }, + "jest-regex-util": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": + "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", + "dev": true + }, + "pretty-format": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": + "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": + "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true + } + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": + "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": + "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": + "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-diff": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": + "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": + "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": + "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": + "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": + "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.1.4", + "resolved": + "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": + "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "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=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": + "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": + "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "dev": true + }, + "get-stdin": { + "version": "5.0.1", + "resolved": + "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": + "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": + "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "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=", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": + "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": + "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": + "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "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.11", + "resolved": + "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": + "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": + "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + }, + "har-validator": { + "version": "4.2.1", + "resolved": + "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=" + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=" + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true + }, + "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==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": + "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "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=" + }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": + "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "dev": true, + "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.19", + "resolved": + "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": + "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": + "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": 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.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": + "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": + "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": + "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "dependencies": { + "ansi-escapes": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": + "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "string-width": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": + "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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 + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + } + } + }, + "invariant": { + "version": "2.2.2", + "resolved": + "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": + "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": + "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": + "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "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-data-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": + "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": + "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": + "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": + "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "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-observable": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": + "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": + "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "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.1", + "resolved": + "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": + "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": + "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": + "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-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.1.0", + "resolved": + "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": + "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": + "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "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=", + "dev": true + }, + "isnumeric": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz", + "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=" + }, + "isobject": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": + "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": + "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "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.1.0", + "resolved": + "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": + "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": + "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": + "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": + "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "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.2", + "resolved": + "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": + "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": + "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": + "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": + "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "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-cli": { + "version": "20.0.4", + "resolved": + "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "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-docblock": { + "version": "20.0.3", + "resolved": + "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "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-get-type": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": + "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "20.0.5", + "resolved": + "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", + "integrity": + "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", + "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, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "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 + }, + "js-tokens": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "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=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": + "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": + "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": + "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": + "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": + "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true + }, + "left-pad": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "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": "7.0.0", + "resolved": + "https://registry.npmjs.org/lint-staged/-/lint-staged-7.0.0.tgz", + "integrity": + "sha512-6Z89we28Qy1Ez7ZxO8yYfPKqzdxkSjnURq1d3RS2gKkZrA135xN+ptF3EWHrcHyBMmgA20vA7dGCQGj+OMS22g==", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": + "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": + "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": + "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": + "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": + "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": + "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": + "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "cryptiles": { + "version": "3.1.2", + "resolved": + "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": + "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": + "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": + "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "resolved": + "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": + "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": + "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true + }, + "hoek": { + "version": "4.2.1", + "resolved": + "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": + "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true + }, + "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 + }, + "is-number": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-config": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-config/-/jest-config-22.4.3.tgz", + "integrity": + "sha512-KSg3EOToCgkX+lIvenKY7J8s426h6ahXxaUFJxvGoEk0562Z6inWj1TnKoGycTASwiLD+6kSYFALcjdosq9KIQ==", + "dev": true + }, + "jest-diff": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": + "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", + "integrity": + "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", + "dev": true + }, + "jest-environment-node": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", + "integrity": + "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", + "dev": true + }, + "jest-jasmine2": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz", + "integrity": + "sha512-yZCPCJUcEY6R5KJB/VReo1AYI2b+5Ky+C+JA1v34jndJsRcLpU4IZX4rFJn7yDTtdNbO/nNqg+3SDIPNH2ecnw==", + "dev": true + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": + "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "dev": true + }, + "jest-message-util": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "integrity": + "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "dev": true, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": + "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + } + } + }, + "jest-mock": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", + "integrity": + "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", + "dev": true + }, + "jest-regex-util": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": + "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", + "dev": true + }, + "jest-resolve": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", + "integrity": + "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", + "dev": true + }, + "jest-snapshot": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", + "integrity": + "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "dev": true + }, + "jest-util": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", + "integrity": + "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "dev": true + }, + "jest-validate": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.3.tgz", + "integrity": + "sha512-CfFM18W3GSP/xgmA4UouIx0ljdtfD2mjeBC6c89Gg17E44D4tQhAcTrZmf9djvipwU30kSTnk6CzcxdCCeSXfA==", + "dev": true + }, + "jsdom": { + "version": "11.6.2", + "resolved": + "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "integrity": + "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", + "dev": true + }, + "lodash": { + "version": "4.17.5", + "resolved": + "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": + "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": + "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": + "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": + "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": + "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": + "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": + "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": + "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": + "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": + "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": + "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": + "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": + "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": + "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": + "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": + "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": + "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "parse5": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": + "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pretty-format": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": + "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true + }, + "punycode": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": + "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "request": { + "version": "2.85.0", + "resolved": + "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": + "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": + "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": + "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.4", + "resolved": + "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": + "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + }, + "tr46": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": + "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": + "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": + "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + } + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": + "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "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=", + "dev": true + } + } + }, + "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=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": + "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": + "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "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=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": + "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": + "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": + "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "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=", + "dev": true + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": + "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": + "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": + "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true + } + } + }, + "log-update": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": + "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "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=", + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": + "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true + }, + "lru-cache": { + "version": "4.1.2", + "resolved": + "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": + "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": + "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": + "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true + }, + "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=", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": + "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": + "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": + "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "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=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": + "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": + "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": + "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true + } + } + }, + "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=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": + "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": + "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": + "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": + "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": + "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "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-notifier": { + "version": "5.1.2", + "resolved": + "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "resolved": + "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", + "integrity": + "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==" + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=" + }, + "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==", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true + }, + "npm-path": { + "version": "2.0.4", + "resolved": + "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": + "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "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=", + "dev": true + }, + "npm-which": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": + "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" + }, + "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.3", + "resolved": + "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": + "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "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=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": + "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": + "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "object.pick": { + "version": "1.3.0", + "resolved": + "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "onetime": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true + }, + "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=", + "dev": true, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": + "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "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=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": + "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": + "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "parse-css-font": { + "version": "2.0.2", + "resolved": + "https://registry.npmjs.org/parse-css-font/-/parse-css-font-2.0.2.tgz", + "integrity": "sha1-e2CwYHBaJam5C38O1JPlgjJIplI=" + }, + "parse-glob": { + "version": "3.0.4", + "resolved": + "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": + "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "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=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": + "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.1.tgz", + "integrity": "sha1-CmgfLBiRXlQzpcos2U4Lggangts=", + "dev": true + }, + "pluralize": { + "version": "7.0.0", + "resolved": + "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": + "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": + "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "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 + }, + "preserve": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.11.1", + "resolved": + "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", + "integrity": + "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "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, + "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 + } + } + }, + "private": { + "version": "0.1.8", + "resolved": + "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": + "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": + "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "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", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": + "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": + "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": + "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + } + } + }, + "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==" + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": + "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": + "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": + "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": + "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": + "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true + }, + "regexpp": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/regexpp/-/regexpp-1.0.1.tgz", + "integrity": + "sha512-8Ph721maXiOYSLtaDGKVmDn5wdsNaF6Px85qFNeMPQq0r8K5Y10tgP6YuR65Ws35n4DvzFcCxEnRNBIXQunzLw==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": + "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": + "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=" + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": + "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "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=", + "dev": true + }, + "require-from-string": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz", + "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true + }, "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "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": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "canvas-prebuilt": { - "version": "1.6.5-prerelease.1", - "resolved": "https://registry.npmjs.org/canvas-prebuilt/-/canvas-prebuilt-1.6.5-prerelease.1.tgz", - "integrity": "sha1-aBSyC5yAg13MJL/WGZFHKIYwUhw=", - "dev": true - }, - "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=", - "dev": true, - "optional": true - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true - }, - "ci-info": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", - "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true - }, - "css-font-size-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", - "integrity": "sha1-hUh1rOmspqjS7g00WkSq6btttss=", - "dev": true - }, - "css-font-stretch-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", - "integrity": "sha1-UM7puboDH7XJUtRyMTnx4Qe1SxA=", - "dev": true - }, - "css-font-style-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", - "integrity": "sha1-XDUygT9jtKHelU0TzqhqtDM0CeQ=", - "dev": true - }, - "css-font-weight-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", - "integrity": "sha1-m8BGcayFvHJLV07106yWsNYE/Zc=", - "dev": true - }, - "css-global-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", - "integrity": "sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk=", - "dev": true - }, - "css-list-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-1.0.1.tgz", - "integrity": "sha1-//VxkiAtuDJAxBaG+RnkSacCT30=", - "dev": true - }, - "css-system-font-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", - "integrity": "sha1-hcbwhquk6zLFcaMIav/ENLhII+0=", - "dev": true - }, - "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 - }, - "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 - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true - }, - "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 - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true - }, - "detect-libc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", - "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", - "dev": true - }, - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", - "dev": true, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "exec-sh": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", - "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "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 - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "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=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true - }, - "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.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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=", - "dev": true - }, - "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 - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "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.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "1.5.0", + "resolved": + "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": + "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true + }, + "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-url": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": + "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": + "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": + "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==" + }, + "run-async": { + "version": "2.3.0", + "resolved": + "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": + "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": + "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true + }, + "rxjs": { + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.8.tgz", + "integrity": + "sha512-Bz7qou7VAIoGiglJZbzbXa4vpX5BmTTN2Dj/se6+SwADtw4SihqBIiEa7VmTXJ8pynvq0iFr5Gx9VLyye1rIxQ==", + "dev": true, + "dependencies": { + "symbol-observable": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": + "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": + "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "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": { + "bser": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": + "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": + "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": + "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": + "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": + "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": + "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": + "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": + "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": + "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": + "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=" }, "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 - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true - }, - "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=", - "dev": true - }, - "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==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "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 - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true - }, - "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=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isnumeric": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz", - "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", - "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", - "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.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", - "dev": true - }, - "istanbul-lib-report": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", - "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.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", - "dev": true, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", - "dev": true - }, - "jest": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", - "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", - "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-cli": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", - "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", - "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-docblock": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", - "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", - "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.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", - "integrity": "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", - "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, - "dependencies": { + "version": "0.5.7", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": + "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": + "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": + "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": + "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true + }, + "source-map-url": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": + "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": + "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": + "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true + }, + "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=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "stack-utils": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "staged-git-files": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.0.tgz", + "integrity": "sha1-GpuxMcGIVgECPHqt3T1UwiFCxSY=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": + "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==" + }, + "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-width": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "stringify-object": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", + "integrity": + "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": + "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "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": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "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 - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "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 - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "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=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true - }, - "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=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "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=", - "dev": true - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true - }, - "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=", - "dev": true - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "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-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-notifier": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", - "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", - "dev": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", - "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", - "dev": true - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "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=", - "dev": true - }, - "nwmatcher": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", - "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=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true - }, - "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": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "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", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "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 + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": + "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": + "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": + "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "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 + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": + "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": + "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": + "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "string-width": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": + "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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 + }, + "supports-color": { + "version": "5.3.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": + "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": 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.1", + "resolved": + "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": + "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==" + }, + "tcomb": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-2.7.0.tgz", + "integrity": "sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA=" + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": + "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": + "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": + "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=" + }, + "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=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": + "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": + "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "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 + }, + "type-detect": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": + "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": + "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": + "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": + "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + }, + "union-value": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true + }, + "set-value": { + "version": "0.4.3", + "resolved": + "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true + } + } + }, + "units-css": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", + "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=" + }, + "unquote": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/unquote/-/unquote-1.1.0.tgz", + "integrity": "sha1-mOH8YItrhUx1r7G5WvwJm6adlC8=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": + "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": + "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": + "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": 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.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": + "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "viewport-dimensions": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz", + "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=" + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true + }, + "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 + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": + "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": + "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": + "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": + "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "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.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": + "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": + "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==" + }, + "window-size": { + "version": "0.1.0", + "resolved": + "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "parse-css-font": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-2.0.2.tgz", - "integrity": "sha1-e2CwYHBaJam5C38O1JPlgjJIplI=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true - }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true - }, - "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=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true - }, - "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 - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "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, - "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 - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true - } - } + "version": "0.0.3", + "resolved": + "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true - } - } - }, - "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "worker-farm": { + "version": "1.5.2", + "resolved": + "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": + "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "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": { - "bser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", - "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", - "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=", + "dev": true }, - "fb-watchman": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", - "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", - "dev": true + "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 + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": + "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": + "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "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.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "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 - } - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true - }, - "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-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "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 - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true - }, - "tar-pack": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", - "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", - "dev": true - }, - "tcomb": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-2.7.0.tgz", - "integrity": "sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA=", - "dev": true - }, - "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 - }, - "throat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", - "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", - "dev": true - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "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=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true - }, - "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 - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "dependencies": { "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true - }, - "units-css": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", - "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=", - "dev": true - }, - "unquote": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.0.tgz", - "integrity": "sha1-mOH8YItrhUx1r7G5WvwJm6adlC8=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "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 - } - } - }, - "viewport-dimensions": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz", - "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=", - "dev": true - }, - "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 - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", - "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.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "worker-farm": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", - "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", - "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=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": + "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + } + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "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, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "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, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } } - } } - } } diff --git a/package.json b/package.json index 0bec9d0..a84b1b0 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,46 @@ { - "name": "resemblejs", - "version": "2.10.0", - "description": "Image analysis and comparison with HTML5", - "main": "resemble.js", - "repository": { - "type": "git", - "url": "https://github.com/Huddle/Resemble.js.git" - }, - "keywords": [ - "comparison", - "visual", - "image", - "diff", - "compare", - "html5" - ], - "author": "James Cryer", - "license": "MIT", - "bugs": { - "url": "https://github.com/Huddle/Resemble.js/issues" - }, - "homepage": "https://github.com/Huddle/Resemble.js", - "scripts": { - "test": "jest nodejs-tests", - "test-watch": "jest --watch nodejs-tests" - }, - "dependencies": { - "canvas-prebuilt": "^1.6.5-prerelease.1" - }, - "devDependencies": { - "chai": "^3.4.1", - "jest": "^20.0.4", - "jest-cli": "^20.0.4", - "color-convert": "^1.9.0" - }, - "jest": { - "testEnvironment": "node" - } + "name": "resemblejs", + "version": "2.10.0", + "description": "Image analysis and comparison with HTML5", + "main": "resemble.js", + "repository": { + "type": "git", + "url": "https://github.com/Huddle/Resemble.js.git" + }, + "keywords": ["comparison", "visual", "image", "diff", "compare", "html5"], + "author": "James Cryer", + "license": "MIT", + "bugs": { + "url": "https://github.com/Huddle/Resemble.js/issues" + }, + "homepage": "https://github.com/Huddle/Resemble.js", + "scripts": { + "test": "jest nodejs-tests", + "test-watch": "jest --watch nodejs-tests", + "precommit": "lint-staged", + "lint": "eslint **/*.js --fix" + }, + "lint-staged": { + "*.{js,json,css,md}": ["prettier --write", "git add"] + }, + "dependencies": { + "canvas-prebuilt": "^1.6.5-prerelease.1" + }, + "devDependencies": { + "chai": "^3.4.1", + "color-convert": "^1.9.0", + "eslint": "^4.19.1", + "eslint-config-es5": "^0.5.0", + "eslint-config-prettier": "^2.9.0", + "eslint-plugin-import": "^2.9.0", + "eslint-plugin-prettier": "^2.6.0", + "husky": "^0.14.3", + "jest": "^20.0.4", + "jest-cli": "^20.0.4", + "lint-staged": "^7.0.0", + "prettier": "^1.11.1" + }, + "jest": { + "testEnvironment": "node" + } } diff --git a/resemble.js b/resemble.js index e27e790..80fbf3b 100644 --- a/resemble.js +++ b/resemble.js @@ -3,890 +3,1030 @@ James Cryer / Huddle URL: https://github.com/Huddle/Resemble.js */ -(function (root, factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - define([], factory); - } else if (typeof module === 'object' && module.exports) { - module.exports = factory(); - } else { - root.resemble = factory(); - } -}(this, function () { - 'use strict'; - - var Img; - var Canvas; - - if (typeof Image !== 'undefined') { +(function(root, factory) { + "use strict"; + if (typeof define === "function" && define.amd) { + define([], factory); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else { + root.resemble = factory(); + } +})(this, function() { + "use strict"; + + var Img; + var Canvas; + + if (typeof Image !== "undefined") { Img = Image; } else { - Canvas = require('canvas-prebuilt'); + Canvas = require("canvas-prebuilt"); // eslint-disable-line global-require Img = Canvas.Image; } - var document = typeof window !== "undefined" ? window.document : { - createElement: function() { - // This will work as long as only createElement is used on window.document - return new Canvas(); - } - }; + var document = + typeof window !== "undefined" + ? window.document + : { + createElement: function() { + // This will work as long as only createElement is used on window.document + return new Canvas(); + } + }; var oldGlobalSettings = {}; var globalOutputSettings = oldGlobalSettings; - function setGlobalOutputSettings(settings) { - var msg = 'warning resemble.outputSettings mutates global state, and ' + - 'will be removed in 3.0.0'; - console.warn(msg); - globalOutputSettings = settings; - return this - } - - var resemble = function( fileData ){ - var pixelTransparency = 1; - - var errorPixelColor = { // Color for Error Pixels. Between 0 and 255. - red: 255, - green: 0, - blue: 255, - alpha: 255 - }; - - var targetPix = {r: 0, g: 0, b: 0, a: 0}; // isAntialiased - - function colorsDistance(c1, c2){ - return (Math.abs(c1.r - c2.r) + Math.abs(c1.g - c2.g) + Math.abs(c1.b - c2.b))/3; - } - - function withinBoundingBox(x, y, width, height, box) { - return x > (box.left || 0) && - x < (box.right || width) && - y > (box.top || 0) && - y < (box.bottom || height); - } - - function withinComparedArea(x, y, width, height) { - var isIncluded = true; - - if (boundingBox !== undefined && !withinBoundingBox(x, y, width, height, boundingBox)) { - isIncluded = false; - } - - if (ignoredBox !== undefined && withinBoundingBox(x, y, width, height, ignoredBox)) { - isIncluded = false; - } - - return isIncluded; - } - - var errorPixelTransform = { - flat: function (px, offset) { - px[offset] = errorPixelColor.red; - px[offset + 1] = errorPixelColor.green; - px[offset + 2] = errorPixelColor.blue; - px[offset + 3] = errorPixelColor.alpha; - }, - movement: function (px, offset, d1, d2) { - px[offset] = ((d2.r * (errorPixelColor.red / 255)) + errorPixelColor.red) / 2; - px[offset + 1] = ((d2.g * (errorPixelColor.green / 255)) + errorPixelColor.green) / 2; - px[offset + 2] = ((d2.b * (errorPixelColor.blue / 255)) + errorPixelColor.blue) / 2; - px[offset + 3] = d2.a; - }, - flatDifferenceIntensity: function (px, offset, d1, d2) { - px[offset] = errorPixelColor.red; - px[offset + 1] = errorPixelColor.green; - px[offset + 2] = errorPixelColor.blue; - px[offset + 3] = colorsDistance(d1, d2); - }, - movementDifferenceIntensity: function (px, offset, d1, d2) { - var ratio = colorsDistance(d1, d2) / 255 * 0.8; - - px[offset] = ((1 - ratio) * (d2.r * (errorPixelColor.red / 255)) + ratio * errorPixelColor.red); - px[offset + 1] = ((1 - ratio) * (d2.g * (errorPixelColor.green / 255)) + ratio * errorPixelColor.green); - px[offset + 2] = ((1 - ratio) * (d2.b * (errorPixelColor.blue / 255)) + ratio * errorPixelColor.blue); - px[offset + 3] = d2.a; - }, - diffOnly: function (px, offset, d1, d2) { - px[offset] = d2.r; - px[offset + 1] = d2.g; - px[offset + 2] = d2.b; - px[offset + 3] = d2.a; - } - }; - - var errorPixel = errorPixelTransform.flat; - var errorType; - var boundingBox; - var ignoredBox; - var largeImageThreshold = 1200; - var useCrossOrigin = true; - var data = {}; - var images = []; - var updateCallbackArray = []; - - var tolerance = { // between 0 and 255 - red: 16, - green: 16, - blue: 16, - alpha: 16, - minBrightness: 16, - maxBrightness: 240 - }; - - var ignoreAntialiasing = false; - var ignoreColors = false; - var scaleToSameSize = false; - - function triggerDataUpdate(){ - var len = updateCallbackArray.length; - var i; - for(i=0;i (box.left || 0) && + x < (box.right || width) && + y > (box.top || 0) && + y < (box.bottom || height) + ); + } + + function withinComparedArea(x, y, width, height) { + var isIncluded = true; + + if ( + boundingBox !== undefined && + !withinBoundingBox(x, y, width, height, boundingBox) + ) { + isIncluded = false; + } + + if ( + ignoredBox !== undefined && + withinBoundingBox(x, y, width, height, ignoredBox) + ) { + isIncluded = false; + } + + return isIncluded; + } + + var errorPixelTransform = { + flat: function(px, offset) { + px[offset] = errorPixelColor.red; + px[offset + 1] = errorPixelColor.green; + px[offset + 2] = errorPixelColor.blue; + px[offset + 3] = errorPixelColor.alpha; + }, + movement: function(px, offset, d1, d2) { + px[offset] = + (d2.r * (errorPixelColor.red / 255) + errorPixelColor.red) / + 2; + px[offset + 1] = + (d2.g * (errorPixelColor.green / 255) + + errorPixelColor.green) / + 2; + px[offset + 2] = + (d2.b * (errorPixelColor.blue / 255) + + errorPixelColor.blue) / + 2; + px[offset + 3] = d2.a; + }, + flatDifferenceIntensity: function(px, offset, d1, d2) { + px[offset] = errorPixelColor.red; + px[offset + 1] = errorPixelColor.green; + px[offset + 2] = errorPixelColor.blue; + px[offset + 3] = colorsDistance(d1, d2); + }, + movementDifferenceIntensity: function(px, offset, d1, d2) { + var ratio = colorsDistance(d1, d2) / 255 * 0.8; + + px[offset] = + (1 - ratio) * (d2.r * (errorPixelColor.red / 255)) + + ratio * errorPixelColor.red; + px[offset + 1] = + (1 - ratio) * (d2.g * (errorPixelColor.green / 255)) + + ratio * errorPixelColor.green; + px[offset + 2] = + (1 - ratio) * (d2.b * (errorPixelColor.blue / 255)) + + ratio * errorPixelColor.blue; + px[offset + 3] = d2.a; + }, + diffOnly: function(px, offset, d1, d2) { + px[offset] = d2.r; + px[offset + 1] = d2.g; + px[offset + 2] = d2.b; + px[offset + 3] = d2.a; + } + }; + + var errorPixel = errorPixelTransform.flat; + var errorType; + var boundingBox; + var ignoredBox; + var largeImageThreshold = 1200; + var useCrossOrigin = true; + var data = {}; + var images = []; + var updateCallbackArray = []; + + var tolerance = { + // between 0 and 255 + red: 16, + green: 16, + blue: 16, + alpha: 16, + minBrightness: 16, + maxBrightness: 240 + }; + + var ignoreAntialiasing = false; + var ignoreColors = false; + var scaleToSameSize = false; + + function triggerDataUpdate() { + var len = updateCallbackArray.length; + var i; + for (i = 0; i < len; i++) { + if (typeof updateCallbackArray[i] === "function") { + updateCallbackArray[i](data); + } + } + } + + function loop(w, h, callback) { + var x; + var y; + + for (x = 0; x < w; x++) { + for (y = 0; y < h; y++) { + callback(x, y); + } + } + } + + function parseImage(sourceImageData, width, height) { + var pixelCount = 0; + var redTotal = 0; + var greenTotal = 0; + var blueTotal = 0; + var alphaTotal = 0; + var brightnessTotal = 0; + var whiteTotal = 0; + var blackTotal = 0; + + loop(width, height, function(horizontalPos, verticalPos) { + var offset = (verticalPos * width + horizontalPos) * 4; + var red = sourceImageData[offset]; + var green = sourceImageData[offset + 1]; + var blue = sourceImageData[offset + 2]; + var alpha = sourceImageData[offset + 3]; + var brightness = getBrightness(red, green, blue); + + if (red === green && red === blue && alpha) { + if (red === 0) { + blackTotal++; + } else if (red === 255) { + whiteTotal++; + } + } + + pixelCount++; + + redTotal += red / 255 * 100; + greenTotal += green / 255 * 100; + blueTotal += blue / 255 * 100; + alphaTotal += (255 - alpha) / 255 * 100; + brightnessTotal += brightness / 255 * 100; + }); + + data.red = Math.floor(redTotal / pixelCount); + data.green = Math.floor(greenTotal / pixelCount); + data.blue = Math.floor(blueTotal / pixelCount); + data.alpha = Math.floor(alphaTotal / pixelCount); + data.brightness = Math.floor(brightnessTotal / pixelCount); + data.white = Math.floor(whiteTotal / pixelCount * 100); + data.black = Math.floor(blackTotal / pixelCount * 100); + + triggerDataUpdate(); + } + + function loadImageData(fileDataForImage, callback) { + var fileReader; + var hiddenImage = new Img(); + + if (!hiddenImage.setAttribute) { + hiddenImage.setAttribute = function setAttribute() {}; + } + + if (useCrossOrigin) { + hiddenImage.setAttribute("crossorigin", "anonymous"); + } + + hiddenImage.onerror = function(err) { hiddenImage.onload = null; - hiddenImage.onerror = null; //fixes pollution between calls - images.push({ error : err ? err + "" : "Image load error." }); - callback(); - }; + hiddenImage.onerror = null; // fixes pollution between calls + images.push({ error: err ? err + "" : "Image load error." }); + callback(); + }; - hiddenImage.onload = function() { - hiddenImage.onload = null; //fixes pollution between calls + hiddenImage.onload = function() { + hiddenImage.onload = null; // fixes pollution between calls hiddenImage.onerror = null; - var hiddenCanvas = document.createElement('canvas'); - var imageData; - - // don't assign to hiddenImage, see https://github.com/Huddle/Resemble.js/pull/87/commits/300d43352a2845aad289b254bfbdc7cd6a37e2d7 - var width = hiddenImage.width; - var height = hiddenImage.height; - - if( scaleToSameSize && images.length == 1 ){ - width = images[0].width; - height = images[0].height; - } - - hiddenCanvas.width = width; - hiddenCanvas.height = height; - - hiddenCanvas.getContext('2d').drawImage(hiddenImage, 0, 0, width, height); - imageData = hiddenCanvas.getContext('2d').getImageData(0, 0, width, height); - - images.push(imageData); - - callback(imageData, width, height); - }; - - if (typeof fileData === 'string') { - hiddenImage.src = fileData; - if (hiddenImage.complete && hiddenImage.naturalWidth > 0) { - hiddenImage.onload(); - } - } else if (typeof fileData.data !== 'undefined' - && typeof fileData.width === 'number' - && typeof fileData.height === 'number') { - - images.push(fileData); - - callback(fileData, fileData.width, fileData.height); - } else if (typeof Buffer !== 'undefined' && fileData instanceof Buffer){ - // If we have Buffer, assume we're on Node+Canvas and its supported - hiddenImage.src = fileData; - } else { - fileReader = new FileReader(); - fileReader.onload = function (event) { - hiddenImage.src = event.target.result; - }; - fileReader.readAsDataURL(fileData); - } - } - - function isColorSimilar(a, b, color){ - - var absDiff = Math.abs(a - b); - - if(typeof a === 'undefined'){ - return false; - } - if(typeof b === 'undefined'){ - return false; - } - - if(a === b){ - return true; - } else if ( absDiff < tolerance[color] ) { - return true; - } else { - return false; - } - } - - function isPixelBrightnessSimilar(d1, d2){ - var alpha = isColorSimilar(d1.a, d2.a, 'alpha'); - var brightness = isColorSimilar(d1.brightness, d2.brightness, 'minBrightness'); - return brightness && alpha; - } - - function getBrightness(r,g,b){ - return 0.3*r + 0.59*g + 0.11*b; - } - - function isRGBSame(d1,d2){ - var red = d1.r === d2.r; - var green = d1.g === d2.g; - var blue = d1.b === d2.b; - return red && green && blue; - } - - function isRGBSimilar(d1, d2){ - var red = isColorSimilar(d1.r,d2.r,'red'); - var green = isColorSimilar(d1.g,d2.g,'green'); - var blue = isColorSimilar(d1.b,d2.b,'blue'); - var alpha = isColorSimilar(d1.a, d2.a, 'alpha'); - - return red && green && blue && alpha; - } - - function isContrasting(d1, d2){ - return Math.abs(d1.brightness - d2.brightness) > tolerance.maxBrightness; - } - - function getHue(r,g,b){ - - r = r / 255; - g = g / 255; - b = b / 255; - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var h; - var d; - - if (max == min){ - h = 0; // achromatic - } else{ - d = max - min; - switch(max){ - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - - return h; - } - - function isAntialiased(sourcePix, data, cacheSet, verticalPos, horizontalPos, width){ - var offset; - var distance = 1; - var i; - var j; - var hasHighContrastSibling = 0; - var hasSiblingWithDifferentHue = 0; - var hasEquivalentSibling = 0; - - addHueInfo(sourcePix); - - for (i = distance*-1; i <= distance; i++){ - for (j = distance*-1; j <= distance; j++){ - - if(i===0 && j===0){ - // ignore source pixel - } else { - - offset = ((verticalPos+j)*width + (horizontalPos+i)) * 4; - - if(!getPixelInfo(targetPix , data, offset, cacheSet)){ - continue; - } - - addBrightnessInfo(targetPix); - addHueInfo(targetPix); - - if( isContrasting(sourcePix, targetPix) ){ - hasHighContrastSibling++; - } - - if( isRGBSame(sourcePix,targetPix) ){ - hasEquivalentSibling++; - } - - if( Math.abs(targetPix.h - sourcePix.h) > 0.3 ){ - hasSiblingWithDifferentHue++; - } - - if( hasSiblingWithDifferentHue > 1 || hasHighContrastSibling > 1){ - return true; - } - } - } - } - - if(hasEquivalentSibling < 2){ - return true; - } - - return false; - } - - function copyPixel(px, offset, data){ - if (errorType === 'diffOnly') { - return; - } - - px[offset] = data.r; //r - px[offset + 1] = data.g; //g - px[offset + 2] = data.b; //b - px[offset + 3] = data.a * pixelTransparency; //a - } - - function copyGrayScalePixel(px, offset, data){ - if (errorType === 'diffOnly') { - return; - } - - px[offset] = data.brightness; //r - px[offset + 1] = data.brightness; //g - px[offset + 2] = data.brightness; //b - px[offset + 3] = data.a * pixelTransparency; //a - } - - function getPixelInfo(dst, data, offset) { - if (data.length > offset) { - dst.r = data[offset]; - dst.g = data[offset + 1]; - dst.b = data[offset + 2]; - dst.a = data[offset + 3]; - - return true; - } - - return false; - } - - function addBrightnessInfo(data){ - data.brightness = getBrightness(data.r,data.g,data.b); // 'corrected' lightness - } - - function addHueInfo(data){ - data.h = getHue(data.r,data.g,data.b); - } - - function analyseImages(img1, img2, width, height){ - - var hiddenCanvas = document.createElement('canvas'); - - var data1 = img1.data; - var data2 = img2.data; - - hiddenCanvas.width = width; - hiddenCanvas.height = height; - - var context = hiddenCanvas.getContext('2d'); - var imgd = context.createImageData(width,height); - var targetPix = imgd.data; - - var mismatchCount = 0; - var diffBounds = { - top: height, - left: width, - bottom: 0, - right: 0 - }; - var updateBounds = function(x, y) { - diffBounds.left = Math.min(x, diffBounds.left); - diffBounds.right = Math.max(x, diffBounds.right); - diffBounds.top = Math.min(y, diffBounds.top); - diffBounds.bottom = Math.max(y, diffBounds.bottom); - }; - - var time = Date.now(); - - var skip; - - if(!!largeImageThreshold && ignoreAntialiasing && (width > largeImageThreshold || height > largeImageThreshold)){ - skip = 6; - } - - var pixel1 = {r: 0, g: 0, b: 0, a: 0}; - var pixel2 = { r: 0, g: 0, b: 0, a: 0 }; - - loop(width, height, function(horizontalPos, verticalPos){ - - if(skip){ // only skip if the image isn't small - if(verticalPos % skip === 0 || horizontalPos % skip === 0){ - return; - } - } - - var offset = (verticalPos*width + horizontalPos) * 4; - var isWithinComparedArea = withinComparedArea(horizontalPos, verticalPos, width, height); - - if (!getPixelInfo(pixel1, data1, offset, 1) || !getPixelInfo(pixel2, data2, offset, 2)) { - return; - } - - if (ignoreColors){ - - addBrightnessInfo(pixel1); - addBrightnessInfo(pixel2); - - if( isPixelBrightnessSimilar(pixel1, pixel2) || !isWithinComparedArea ){ - copyGrayScalePixel(targetPix, offset, pixel2); - } else { - errorPixel(targetPix, offset, pixel1, pixel2); - mismatchCount++; - updateBounds(horizontalPos, verticalPos); - } - return; - } - - if( isRGBSimilar(pixel1, pixel2) || !isWithinComparedArea ){ - copyPixel(targetPix, offset, pixel1); - - } else if( ignoreAntialiasing && ( - addBrightnessInfo(pixel1), // jit pixel info augmentation looks a little weird, sorry. - addBrightnessInfo(pixel2), - isAntialiased(pixel1, data1, 1, verticalPos, horizontalPos, width) || - isAntialiased(pixel2, data2, 2, verticalPos, horizontalPos, width) - )){ - - if( isPixelBrightnessSimilar(pixel1, pixel2) || !isWithinComparedArea ){ - copyGrayScalePixel(targetPix, offset, pixel2); - } else { - errorPixel(targetPix, offset, pixel1, pixel2); - mismatchCount++; - updateBounds(horizontalPos, verticalPos); - } - } else { - errorPixel(targetPix, offset, pixel1, pixel2); - mismatchCount++; - updateBounds(horizontalPos, verticalPos); - } - - }); - - data.rawMisMatchPercentage = (mismatchCount / (height*width) * 100); - data.misMatchPercentage = data.rawMisMatchPercentage.toFixed(2); - data.diffBounds = diffBounds; - data.analysisTime = Date.now() - time; - - data.getImageDataUrl = function(text){ - var barHeight = 0; - - if(text){ - barHeight = addLabel(text,context,hiddenCanvas); - } - - context.putImageData(imgd, 0, barHeight); - - return hiddenCanvas.toDataURL("image/png"); - }; - - if (hiddenCanvas.toBuffer) { - data.getBuffer = function(includeOriginal) { - if (includeOriginal) { - var imageWidth = hiddenCanvas.width + 2; - hiddenCanvas.width = imageWidth * 3; - context.putImageData(img1, 0, 0); - context.putImageData(img2, imageWidth, 0); - context.putImageData(imgd, imageWidth * 2, 0); - } else { - context.putImageData(imgd, 0, 0); - } - return hiddenCanvas.toBuffer(); - } - } - } - - function addLabel(text, context, hiddenCanvas){ - var textPadding = 2; - - context.font = '12px sans-serif'; - - var textWidth = context.measureText(text).width + textPadding*2; - var barHeight = 22; - - if(textWidth > hiddenCanvas.width){ - hiddenCanvas.width = textWidth; - } - - hiddenCanvas.height += barHeight; - - context.fillStyle = "#666"; - context.fillRect(0,0,hiddenCanvas.width,barHeight -4); - context.fillStyle = "#fff"; - context.fillRect(0,barHeight -4,hiddenCanvas.width, 4); - - context.fillStyle = "#fff"; - context.textBaseline = "top"; - context.font = '12px sans-serif'; - context.fillText(text, textPadding, 1); - - return barHeight; - } - - function normalise(img, w, h){ - var c; - var context; - - if(img.height < h || img.width < w){ - c = document.createElement('canvas'); - c.width = w; - c.height = h; - context = c.getContext('2d'); - context.putImageData(img, 0, 0); - return context.getImageData(0, 0, w, h); - } - - return img; - } - - function outputSettings(options){ - var key; - var undefined; - - if(options.errorColor){ - for (key in options.errorColor) { - errorPixelColor[key] = options.errorColor[key] === undefined ? errorPixelColor[key] : options.errorColor[key]; - } - } - - if(options.errorType && errorPixelTransform[options.errorType] ){ - errorPixel = errorPixelTransform[options.errorType]; - errorType = options.errorType; - } - - if(options.errorPixel && typeof options.errorPixel === "function") { - errorPixel = options.errorPixel; - } - - pixelTransparency = isNaN(Number(options.transparency)) ? pixelTransparency : options.transparency; - - if (options.largeImageThreshold !== undefined) { - largeImageThreshold = options.largeImageThreshold; - } - - if (options.useCrossOrigin !== undefined) { - useCrossOrigin = options.useCrossOrigin; - } - - if (options.boundingBox !== undefined) { - boundingBox = options.boundingBox; - } - - if (options.ignoredBox !== undefined) { - ignoredBox = options.ignoredBox; - } - - } - - function compare(one, two){ - if (globalOutputSettings !== oldGlobalSettings) { - outputSettings(globalOutputSettings); - } - - function onceWeHaveBoth(){ - var width; - var height; - if(images.length === 2){ - if( images[0].error || images[1].error ){ - data = {}; - data.error = images[0].error ? images[0].error : images[1].error; - triggerDataUpdate(); - return; - } - width = images[0].width > images[1].width ? images[0].width : images[1].width; - height = images[0].height > images[1].height ? images[0].height : images[1].height; - - if( (images[0].width === images[1].width) && (images[0].height === images[1].height) ){ - data.isSameDimensions = true; - } else { - data.isSameDimensions = false; - } - - data.dimensionDifference = { width: images[0].width - images[1].width, height: images[0].height - images[1].height }; - - analyseImages( normalise(images[0],width, height), normalise(images[1],width, height), width, height); - - triggerDataUpdate(); - } - } - - images = []; - loadImageData(one, onceWeHaveBoth); - loadImageData(two, onceWeHaveBoth); - } - - function getCompareApi(param){ - - var secondFileData, - hasMethod = typeof param === 'function'; - - if( !hasMethod ){ - // assume it's file data - secondFileData = param; - } - - var self = { - scaleToSameSize: function(){ - scaleToSameSize = true; - - if(hasMethod) { param(); } - return self; - }, - useOriginalSize: function(){ - scaleToSameSize = false; - - if(hasMethod) { param(); } - return self; - }, - ignoreNothing: function(){ - - tolerance.red = 0; - tolerance.green = 0; - tolerance.blue = 0; - tolerance.alpha = 0; - tolerance.minBrightness = 0; - tolerance.maxBrightness = 255; - - ignoreAntialiasing = false; - ignoreColors = false; - - if(hasMethod) { param(); } - return self; - }, - ignoreLess: function(){ - - tolerance.red = 16; - tolerance.green = 16; - tolerance.blue = 16; - tolerance.alpha = 16; - tolerance.minBrightness = 16; - tolerance.maxBrightness = 240; - - ignoreAntialiasing = false; - ignoreColors = false; - - if(hasMethod) { param(); } - return self; - }, - ignoreAntialiasing: function(){ - - tolerance.red = 32; - tolerance.green = 32; - tolerance.blue = 32; - tolerance.alpha = 32; - tolerance.minBrightness = 64; - tolerance.maxBrightness = 96; - - ignoreAntialiasing = true; - ignoreColors = false; - - if(hasMethod) { param(); } - return self; - }, - ignoreColors: function(){ - - tolerance.alpha = 16; - tolerance.minBrightness = 16; - tolerance.maxBrightness = 240; - - ignoreAntialiasing = false; - ignoreColors = true; - - if(hasMethod) { param(); } - return self; - }, - ignoreAlpha: function() { - - tolerance.red = 16; - tolerance.green = 16; - tolerance.blue = 16; - tolerance.alpha = 255; - tolerance.minBrightness = 16; - tolerance.maxBrightness = 240; - - ignoreAntialiasing = false; - ignoreColors = false; - - if(hasMethod) { param(); } - return self; - }, - repaint: function(){ - if(hasMethod) { param(); } - return self; - }, - outputSettings: function(options) { - outputSettings(options); - return self; - }, - onComplete: function( callback ){ - - updateCallbackArray.push(callback); - - var wrapper = function(){ - compare(fileData, secondFileData); - }; - - wrapper(); - - return getCompareApi(wrapper); - } - }; - - return self; - } - - var rootSelf = { - onComplete: function( callback ){ - updateCallbackArray.push(callback); - loadImageData(fileData, function(imageData, width, height){ - parseImage(imageData.data, width, height); - }); - }, - compareTo: function(secondFileData){ - return getCompareApi(secondFileData); - }, - outputSettings: function(options) { - outputSettings(options); - return rootSelf; - } - }; - return rootSelf; - }; - - function applyIgnore(api, ignore) { - switch (ignore) { - case 'nothing': - api.ignoreNothing(); - break; - case 'less': - api.ignoreLess(); - break; - case 'antialiasing': - api.ignoreAntialiasing(); - break; - case 'colors': - api.ignoreColors(); - break; - case 'alpha': - api.ignoreAlpha(); - break; - default: - throw new Error('Invalid ignore: ' + ignore); - break; - } - } - - resemble.compare = function (image1, image2, options, callback) { - if (typeof options === 'function') { - callback = options; - options = undefined; - } - - var res = resemble(image1), opt = options || {}, compare; - - if (opt.output) { - res.outputSettings(opt.output); - } - - compare = res.compareTo(image2); - - if (opt.scaleToSameSize) { - compare.scaleToSameSize(); - } - - if (typeof opt.ignore === 'string') { - applyIgnore(compare, opt.ignore); - } else if (opt.ignore && opt.ignore.forEach) { - opt.ignore.forEach(function (v) { - applyIgnore(compare, v); - }); - } - - compare.onComplete(function(data) { - if (data.error) { - callback(data.error); - } else { - callback(null, data); - } - }); - }; - - resemble.outputSettings = setGlobalOutputSettings; - return resemble; -})); + var hiddenCanvas = document.createElement("canvas"); + var imageData; + + // don't assign to hiddenImage, see https://github.com/Huddle/Resemble.js/pull/87/commits/300d43352a2845aad289b254bfbdc7cd6a37e2d7 + var width = hiddenImage.width; + var height = hiddenImage.height; + + if (scaleToSameSize && images.length === 1) { + width = images[0].width; + height = images[0].height; + } + + hiddenCanvas.width = width; + hiddenCanvas.height = height; + + hiddenCanvas + .getContext("2d") + .drawImage(hiddenImage, 0, 0, width, height); + imageData = hiddenCanvas + .getContext("2d") + .getImageData(0, 0, width, height); + + images.push(imageData); + + callback(imageData, width, height); + }; + + if (typeof fileDataForImage === "string") { + hiddenImage.src = fileDataForImage; + if (hiddenImage.complete && hiddenImage.naturalWidth > 0) { + hiddenImage.onload(); + } + } else if ( + typeof fileDataForImage.data !== "undefined" && + typeof fileDataForImage.width === "number" && + typeof fileDataForImage.height === "number" + ) { + images.push(fileDataForImage); + + callback( + fileDataForImage, + fileDataForImage.width, + fileDataForImage.height + ); + } else if ( + typeof Buffer !== "undefined" && + fileDataForImage instanceof Buffer + ) { + // If we have Buffer, assume we're on Node+Canvas and its supported + hiddenImage.src = fileDataForImage; + } else { + fileReader = new FileReader(); + fileReader.onload = function(event) { + hiddenImage.src = event.target.result; + }; + fileReader.readAsDataURL(fileDataForImage); + } + } + + function isColorSimilar(a, b, color) { + var absDiff = Math.abs(a - b); + + if (typeof a === "undefined") { + return false; + } + if (typeof b === "undefined") { + return false; + } + + if (a === b) { + return true; + } else if (absDiff < tolerance[color]) { + return true; + } + return false; + } + + function isPixelBrightnessSimilar(d1, d2) { + var alpha = isColorSimilar(d1.a, d2.a, "alpha"); + var brightness = isColorSimilar( + d1.brightness, + d2.brightness, + "minBrightness" + ); + return brightness && alpha; + } + + function getBrightness(r, g, b) { + return 0.3 * r + 0.59 * g + 0.11 * b; + } + + function isRGBSame(d1, d2) { + var red = d1.r === d2.r; + var green = d1.g === d2.g; + var blue = d1.b === d2.b; + return red && green && blue; + } + + function isRGBSimilar(d1, d2) { + var red = isColorSimilar(d1.r, d2.r, "red"); + var green = isColorSimilar(d1.g, d2.g, "green"); + var blue = isColorSimilar(d1.b, d2.b, "blue"); + var alpha = isColorSimilar(d1.a, d2.a, "alpha"); + + return red && green && blue && alpha; + } + + function isContrasting(d1, d2) { + return ( + Math.abs(d1.brightness - d2.brightness) > + tolerance.maxBrightness + ); + } + + function getHue(red, green, blue) { + var r = red / 255; + var g = green / 255; + var b = blue / 255; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var h; + var d; + + if (max === min) { + h = 0; // achromatic + } else { + d = max - min; + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: + h /= 6; + } + } + + return h; + } + + function isAntialiased( + sourcePix, + pix, + cacheSet, + verticalPos, + horizontalPos, + width + ) { + var offset; + var distance = 1; + var i; + var j; + var hasHighContrastSibling = 0; + var hasSiblingWithDifferentHue = 0; + var hasEquivalentSibling = 0; + + addHueInfo(sourcePix); + + for (i = distance * -1; i <= distance; i++) { + for (j = distance * -1; j <= distance; j++) { + if (i === 0 && j === 0) { + // ignore source pixel + } else { + offset = + ((verticalPos + j) * width + (horizontalPos + i)) * + 4; + + if (!getPixelInfo(targetPix, pix, offset, cacheSet)) { + continue; + } + + addBrightnessInfo(targetPix); + addHueInfo(targetPix); + + if (isContrasting(sourcePix, targetPix)) { + hasHighContrastSibling++; + } + + if (isRGBSame(sourcePix, targetPix)) { + hasEquivalentSibling++; + } + + if (Math.abs(targetPix.h - sourcePix.h) > 0.3) { + hasSiblingWithDifferentHue++; + } + + if ( + hasSiblingWithDifferentHue > 1 || + hasHighContrastSibling > 1 + ) { + return true; + } + } + } + } + + if (hasEquivalentSibling < 2) { + return true; + } + + return false; + } + + function copyPixel(px, offset, pix) { + if (errorType === "diffOnly") { + return; + } + + px[offset] = pix.r; // r + px[offset + 1] = pix.g; // g + px[offset + 2] = pix.b; // b + px[offset + 3] = pix.a * pixelTransparency; // a + } + + function copyGrayScalePixel(px, offset, pix) { + if (errorType === "diffOnly") { + return; + } + + px[offset] = pix.brightness; // r + px[offset + 1] = pix.brightness; // g + px[offset + 2] = pix.brightness; // b + px[offset + 3] = pix.a * pixelTransparency; // a + } + + function getPixelInfo(dst, pix, offset) { + if (pix.length > offset) { + dst.r = pix[offset]; + dst.g = pix[offset + 1]; + dst.b = pix[offset + 2]; + dst.a = pix[offset + 3]; + + return true; + } + + return false; + } + + function addBrightnessInfo(pix) { + pix.brightness = getBrightness(pix.r, pix.g, pix.b); // 'corrected' lightness + } + + function addHueInfo(pix) { + pix.h = getHue(pix.r, pix.g, pix.b); + } + + function analyseImages(img1, img2, width, height) { + var hiddenCanvas = document.createElement("canvas"); + + var data1 = img1.data; + var data2 = img2.data; + + hiddenCanvas.width = width; + hiddenCanvas.height = height; + + var context = hiddenCanvas.getContext("2d"); + var imgd = context.createImageData(width, height); + var pix = imgd.data; + + var mismatchCount = 0; + var diffBounds = { + top: height, + left: width, + bottom: 0, + right: 0 + }; + var updateBounds = function(x, y) { + diffBounds.left = Math.min(x, diffBounds.left); + diffBounds.right = Math.max(x, diffBounds.right); + diffBounds.top = Math.min(y, diffBounds.top); + diffBounds.bottom = Math.max(y, diffBounds.bottom); + }; + + var time = Date.now(); + + var skip; + + if ( + !!largeImageThreshold && + ignoreAntialiasing && + (width > largeImageThreshold || height > largeImageThreshold) + ) { + skip = 6; + } + + var pixel1 = { r: 0, g: 0, b: 0, a: 0 }; + var pixel2 = { r: 0, g: 0, b: 0, a: 0 }; + + loop(width, height, function(horizontalPos, verticalPos) { + if (skip) { + // only skip if the image isn't small + if ( + verticalPos % skip === 0 || + horizontalPos % skip === 0 + ) { + return; + } + } + + var offset = (verticalPos * width + horizontalPos) * 4; + var isWithinComparedArea = withinComparedArea( + horizontalPos, + verticalPos, + width, + height + ); + + if ( + !getPixelInfo(pixel1, data1, offset, 1) || + !getPixelInfo(pixel2, data2, offset, 2) + ) { + return; + } + + if (ignoreColors) { + addBrightnessInfo(pixel1); + addBrightnessInfo(pixel2); + + if ( + isPixelBrightnessSimilar(pixel1, pixel2) || + !isWithinComparedArea + ) { + copyGrayScalePixel(pix, offset, pixel2); + } else { + errorPixel(pix, offset, pixel1, pixel2); + mismatchCount++; + updateBounds(horizontalPos, verticalPos); + } + return; + } + + if (isRGBSimilar(pixel1, pixel2) || !isWithinComparedArea) { + copyPixel(pix, offset, pixel1); + } else if ( + ignoreAntialiasing && + (addBrightnessInfo(pixel1), // jit pixel info augmentation looks a little weird, sorry. + addBrightnessInfo(pixel2), + isAntialiased( + pixel1, + data1, + 1, + verticalPos, + horizontalPos, + width + ) || + isAntialiased( + pixel2, + data2, + 2, + verticalPos, + horizontalPos, + width + )) + ) { + if ( + isPixelBrightnessSimilar(pixel1, pixel2) || + !isWithinComparedArea + ) { + copyGrayScalePixel(pix, offset, pixel2); + } else { + errorPixel(pix, offset, pixel1, pixel2); + mismatchCount++; + updateBounds(horizontalPos, verticalPos); + } + } else { + errorPixel(pix, offset, pixel1, pixel2); + mismatchCount++; + updateBounds(horizontalPos, verticalPos); + } + }); + + data.rawMisMatchPercentage = mismatchCount / (height * width) * 100; + data.misMatchPercentage = data.rawMisMatchPercentage.toFixed(2); + data.diffBounds = diffBounds; + data.analysisTime = Date.now() - time; + + data.getImageDataUrl = function(text) { + var barHeight = 0; + + if (text) { + barHeight = addLabel(text, context, hiddenCanvas); + } + + context.putImageData(imgd, 0, barHeight); + + return hiddenCanvas.toDataURL("image/png"); + }; + + if (hiddenCanvas.toBuffer) { + data.getBuffer = function(includeOriginal) { + if (includeOriginal) { + var imageWidth = hiddenCanvas.width + 2; + hiddenCanvas.width = imageWidth * 3; + context.putImageData(img1, 0, 0); + context.putImageData(img2, imageWidth, 0); + context.putImageData(imgd, imageWidth * 2, 0); + } else { + context.putImageData(imgd, 0, 0); + } + return hiddenCanvas.toBuffer(); + }; + } + } + + function addLabel(text, context, hiddenCanvas) { + var textPadding = 2; + + context.font = "12px sans-serif"; + + var textWidth = context.measureText(text).width + textPadding * 2; + var barHeight = 22; + + if (textWidth > hiddenCanvas.width) { + hiddenCanvas.width = textWidth; + } + + hiddenCanvas.height += barHeight; + + context.fillStyle = "#666"; + context.fillRect(0, 0, hiddenCanvas.width, barHeight - 4); + context.fillStyle = "#fff"; + context.fillRect(0, barHeight - 4, hiddenCanvas.width, 4); + + context.fillStyle = "#fff"; + context.textBaseline = "top"; + context.font = "12px sans-serif"; + context.fillText(text, textPadding, 1); + + return barHeight; + } + + function normalise(img, w, h) { + var c; + var context; + + if (img.height < h || img.width < w) { + c = document.createElement("canvas"); + c.width = w; + c.height = h; + context = c.getContext("2d"); + context.putImageData(img, 0, 0); + return context.getImageData(0, 0, w, h); + } + + return img; + } + + function outputSettings(options) { + var key; + + if (options.errorColor) { + for (key in options.errorColor) { + if (options.hasOwnProperty(key)) { + errorPixelColor[key] = + options.errorColor[key] === void 0 + ? errorPixelColor[key] + : options.errorColor[key]; + } + } + } + + if (options.errorType && errorPixelTransform[options.errorType]) { + errorPixel = errorPixelTransform[options.errorType]; + errorType = options.errorType; + } + + if ( + options.errorPixel && + typeof options.errorPixel === "function" + ) { + errorPixel = options.errorPixel; + } + + pixelTransparency = isNaN(Number(options.transparency)) + ? pixelTransparency + : options.transparency; + + if (options.largeImageThreshold !== undefined) { + largeImageThreshold = options.largeImageThreshold; + } + + if (options.useCrossOrigin !== undefined) { + useCrossOrigin = options.useCrossOrigin; + } + + if (options.boundingBox !== undefined) { + boundingBox = options.boundingBox; + } + + if (options.ignoredBox !== undefined) { + ignoredBox = options.ignoredBox; + } + } + + function compare(one, two) { + if (globalOutputSettings !== oldGlobalSettings) { + outputSettings(globalOutputSettings); + } + + function onceWeHaveBoth() { + var width; + var height; + if (images.length === 2) { + if (images[0].error || images[1].error) { + data = {}; + data.error = images[0].error + ? images[0].error + : images[1].error; + triggerDataUpdate(); + return; + } + width = + images[0].width > images[1].width + ? images[0].width + : images[1].width; + height = + images[0].height > images[1].height + ? images[0].height + : images[1].height; + + if ( + images[0].width === images[1].width && + images[0].height === images[1].height + ) { + data.isSameDimensions = true; + } else { + data.isSameDimensions = false; + } + + data.dimensionDifference = { + width: images[0].width - images[1].width, + height: images[0].height - images[1].height + }; + + analyseImages( + normalise(images[0], width, height), + normalise(images[1], width, height), + width, + height + ); + + triggerDataUpdate(); + } + } + + images = []; + loadImageData(one, onceWeHaveBoth); + loadImageData(two, onceWeHaveBoth); + } + + function getCompareApi(param) { + var secondFileData; + var hasMethod = typeof param === "function"; + + if (!hasMethod) { + // assume it's file data + secondFileData = param; + } + + var self = { + scaleToSameSize: function() { + scaleToSameSize = true; + + if (hasMethod) { + param(); + } + return self; + }, + useOriginalSize: function() { + scaleToSameSize = false; + + if (hasMethod) { + param(); + } + return self; + }, + ignoreNothing: function() { + tolerance.red = 0; + tolerance.green = 0; + tolerance.blue = 0; + tolerance.alpha = 0; + tolerance.minBrightness = 0; + tolerance.maxBrightness = 255; + + ignoreAntialiasing = false; + ignoreColors = false; + + if (hasMethod) { + param(); + } + return self; + }, + ignoreLess: function() { + tolerance.red = 16; + tolerance.green = 16; + tolerance.blue = 16; + tolerance.alpha = 16; + tolerance.minBrightness = 16; + tolerance.maxBrightness = 240; + + ignoreAntialiasing = false; + ignoreColors = false; + + if (hasMethod) { + param(); + } + return self; + }, + ignoreAntialiasing: function() { + tolerance.red = 32; + tolerance.green = 32; + tolerance.blue = 32; + tolerance.alpha = 32; + tolerance.minBrightness = 64; + tolerance.maxBrightness = 96; + + ignoreAntialiasing = true; + ignoreColors = false; + + if (hasMethod) { + param(); + } + return self; + }, + ignoreColors: function() { + tolerance.alpha = 16; + tolerance.minBrightness = 16; + tolerance.maxBrightness = 240; + + ignoreAntialiasing = false; + ignoreColors = true; + + if (hasMethod) { + param(); + } + return self; + }, + ignoreAlpha: function() { + tolerance.red = 16; + tolerance.green = 16; + tolerance.blue = 16; + tolerance.alpha = 255; + tolerance.minBrightness = 16; + tolerance.maxBrightness = 240; + + ignoreAntialiasing = false; + ignoreColors = false; + + if (hasMethod) { + param(); + } + return self; + }, + repaint: function() { + if (hasMethod) { + param(); + } + return self; + }, + outputSettings: function(options) { + outputSettings(options); + return self; + }, + onComplete: function(callback) { + updateCallbackArray.push(callback); + + var wrapper = function() { + compare(fileData, secondFileData); + }; + + wrapper(); + + return getCompareApi(wrapper); + } + }; + + return self; + } + + var rootSelf = { + onComplete: function(callback) { + updateCallbackArray.push(callback); + loadImageData(fileData, function(imageData, width, height) { + parseImage(imageData.data, width, height); + }); + }, + compareTo: function(secondFileData) { + return getCompareApi(secondFileData); + }, + outputSettings: function(options) { + outputSettings(options); + return rootSelf; + } + }; + return rootSelf; + }; + + function applyIgnore(api, ignore) { + switch (ignore) { + case "nothing": + api.ignoreNothing(); + break; + case "less": + api.ignoreLess(); + break; + case "antialiasing": + api.ignoreAntialiasing(); + break; + case "colors": + api.ignoreColors(); + break; + case "alpha": + api.ignoreAlpha(); + break; + default: + throw new Error("Invalid ignore: " + ignore); + } + } + + resemble.compare = function(image1, image2, options, cb) { + let callback; + let opt; + + if (typeof options === "function") { + callback = options; + opt = {}; + } else { + callback = cb; + opt = options || {}; + } + + var res = resemble(image1); + var compare; + + if (opt.output) { + res.outputSettings(opt.output); + } + + compare = res.compareTo(image2); + + if (opt.scaleToSameSize) { + compare.scaleToSameSize(); + } + + if (typeof opt.ignore === "string") { + applyIgnore(compare, opt.ignore); + } else if (opt.ignore && opt.ignore.forEach) { + opt.ignore.forEach(function(v) { + applyIgnore(compare, v); + }); + } + + compare.onComplete(function(data) { + if (data.error) { + callback(data.error); + } else { + callback(null, data); + } + }); + }; + + resemble.outputSettings = setGlobalOutputSettings; + return resemble; +}); From efd56960729eb9ee14206fe91317fc3b6bcaffee Mon Sep 17 00:00:00 2001 From: "james.cryer" Date: Wed, 28 Mar 2018 12:18:31 +0100 Subject: [PATCH 2/2] 2.10.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0de02ad..079660d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "resemblejs", - "version": "2.10.0", + "version": "2.10.1", "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { diff --git a/package.json b/package.json index a84b1b0..26cf76e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "resemblejs", - "version": "2.10.0", + "version": "2.10.1", "description": "Image analysis and comparison with HTML5", "main": "resemble.js", "repository": {