From 9bf830c0ca94f6c58861408d10d42c18e0d53adc Mon Sep 17 00:00:00 2001 From: Alex Regan Date: Wed, 7 Feb 2018 23:27:39 -0700 Subject: [PATCH] fix: removing vue-class-component for smaller bundles --- .babelrc | 14 - .editorconfig | 2 +- .prettierrc | 12 +- jsconfig.json | 12 - package-lock.json | 1427 +++++++++++-------------- package.json | 34 +- src/classes/VTransmitFile.d.ts | 44 - src/classes/VTransmitFile.ts | 276 ++--- src/components/VueTransmit.vue | 1823 +++++++++++++++++--------------- src/core/utils.d.ts | 42 - src/core/utils.ts | 237 ++--- src/global.d.ts | 4 +- src/index.d.ts | 2 - src/upload-adapters/xhr.ts | 497 ++++----- tsconfig.json | 47 +- 15 files changed, 2101 insertions(+), 2372 deletions(-) delete mode 100644 .babelrc delete mode 100644 jsconfig.json delete mode 100644 src/classes/VTransmitFile.d.ts delete mode 100644 src/core/utils.d.ts delete mode 100644 src/index.d.ts diff --git a/.babelrc b/.babelrc deleted file mode 100644 index f54b981..0000000 --- a/.babelrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "presets": ["es2015"], - "plugins": [ - "transform-es2015-for-of", - "transform-es2015-spread", - "transform-es2015-arrow-functions", - "transform-es2015-classes", - "transform-es2015-destructuring", - "transform-es2015-parameters", - "transform-es2015-shorthand-properties", - "transform-es2015-template-literals", - "transform-es5-property-mutators" - ] -} diff --git a/.editorconfig b/.editorconfig index 9ab20d4..1a707cc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,6 +9,6 @@ charset = utf-8 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true -indent_style = tab +indent_style = space indent_size = 2 max_line_length = 80 diff --git a/.prettierrc b/.prettierrc index ae1c280..40a4e27 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,8 +1,8 @@ { - "bracketSpacing": true, - "semi": false, - "printWidth": 80, - "useTabs": true, - "singleQuote": false, - "trailingComma": "es5" + "bracketSpacing": true, + "semi": true, + "printWidth": 80, + "useTabs": false, + "singleQuote": false, + "trailingComma": "es5" } diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 87bd6bb..0000000 --- a/jsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "./src/", - "paths": { - "@/*": ["*"], - "@core/*": ["core/*"], - "@classes/*": ["classes/*"], - "@components/*": ["components/*"] - } - }, - "include": ["src/**/*"] -} diff --git a/package-lock.json b/package-lock.json index 72ed05d..2e10132 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz", - "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==", + "version": "7.0.0-beta.39", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.39.tgz", + "integrity": "sha512-PConL+YIK9BgNUWWC2q4fbltj1g475TofpNVNivSypcAAKElfpSS1cv7MrpLYRG8TzZvwcVu9M30hLA/WAp1HQ==", "dev": true, "requires": { "chalk": "2.3.0", @@ -21,25 +21,19 @@ "integrity": "sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==", "dev": true, "requires": { - "@most/prelude": "1.6.4" + "@most/prelude": "1.7.0" } }, "@most/prelude": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.6.4.tgz", - "integrity": "sha512-RsT1xRIEc+rCCTZPL3v/tAC+dX1qt1q00ZofEtCJEMEsVg7zT+WLXiVQdhcRqqh4baQTYmDPArXrQWyd7GkqAA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.7.0.tgz", + "integrity": "sha512-OlDCH0+u2/ro/AHeAg63zvbvCsQC930hSKC9Kc1qSev1JkWK8Yk0HDHJ4o62HSjPwWGXEUZG1WhQKQh4ypreGA==", "dev": true }, "@types/jest": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.0.1.tgz", - "integrity": "sha512-EnHbIkYnKdvsWbR6uMlcpWS/fljyzbZvN2tHZwT80StJG1790XSkAHJiJ2IJMZyYtIDycNAwXg2O3lO4S7rHog==", - "dev": true - }, - "@types/node": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.3.0.tgz", - "integrity": "sha512-wNBfvNjzsJl4tswIZKXCFQY0lss9nKUyJnG6T94X/eqjRgI2jHZ4evdjhQYBSan/vGtF6XVXPApOmNH2rf0KKw==", + "version": "22.1.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.1.1.tgz", + "integrity": "sha512-JSh6yk+GkeSkucPa3DllFtpDXe0BMxDTFqCxoryzGKvZiusdb97Sb7X5gnMiKdFGkHbTMjSH+HbE9wrBIzrUTA==", "dev": true }, "JSONStream": { @@ -130,9 +124,9 @@ "dev": true }, "ajv": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.0.1.tgz", - "integrity": "sha1-KJhYCp8971+chd/q16IiPvE889o=", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.1.1.tgz", + "integrity": "sha1-l41Zf7wrfQ5aXD3esUmmgvKr+g4=", "dev": true, "requires": { "fast-deep-equal": "1.0.0", @@ -141,9 +135,9 @@ } }, "ajv-keywords": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.0.0.tgz", - "integrity": "sha512-uMRktPTgqPL+jx4aRg29iv9+jNPDH3NGw4tn/dKONgwd53XPdmZe433n4eyjsj92v0Koe0qqHwAodZCzIriwrQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", "dev": true }, "align-text": { @@ -390,7 +384,7 @@ "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "async-each": { @@ -433,7 +427,7 @@ "caniuse-lite": "1.0.30000791", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.16", + "postcss": "6.0.17", "postcss-value-parser": "3.3.0" }, "dependencies": { @@ -479,7 +473,7 @@ "colors": "1.1.2", "enhanced-resolve": "3.3.0", "loader-utils": "1.1.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "micromatch": "3.1.4", "mkdirp": "0.5.1", "object-assign": "4.1.1", @@ -672,7 +666,7 @@ "convert-source-map": "1.5.0", "fs-readdir-recursive": "1.0.0", "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "output-file-sync": "1.1.2", "path-is-absolute": "1.0.1", "slash": "1.0.0", @@ -761,7 +755,7 @@ "convert-source-map": "1.5.0", "debug": "2.6.8", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.7", @@ -806,7 +800,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -823,7 +817,7 @@ "debug": "2.6.8", "globals": "9.18.0", "invariant": "2.2.2", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-types": { @@ -834,7 +828,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -882,7 +876,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.6", "trim-right": "1.0.1" }, @@ -905,7 +899,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -974,7 +968,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -1007,7 +1001,7 @@ "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" }, "dependencies": { "babel-runtime": { @@ -1028,7 +1022,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -1041,9 +1035,9 @@ } }, "babel-helper-evaluate-path": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz", - "integrity": "sha512-0EK9TUKMxHL549hWDPkQoS7R0Ozg1CDLheVBHYds2B2qoAvmr9ejY3zOXFsrICK73TN7bPhU14PBeKc8jcBTwg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.3.0.tgz", + "integrity": "sha512-dRFlMTqUJRGzx5a2smKxmptDdNCXKSkPcXWzKLwAV72hvIZumrd/0z9RcewHkr7PmAEq+ETtpD1GK6wZ6ZUXzw==", "dev": true }, "babel-helper-explode-assignable-expression": { @@ -1070,9 +1064,9 @@ } }, "babel-helper-flip-expressions": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz", - "integrity": "sha512-rAsPA1pWBc7e2E6HepkP2e1sXugT+Oq/VCqhyuHJ8aJ2d/ifwnJfd4Qxjm21qlW43AN8tqaeByagKK6wECFMSw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.3.0.tgz", + "integrity": "sha512-kNGohWmtAG3b7tN1xocRQ5rsKkH/hpvZsMiGOJ1VwGJKhnwzR5KlB3rvKBaBPl5/IGHcopB2JN+r1SUEX1iMAw==", "dev": true }, "babel-helper-function-name": { @@ -1115,15 +1109,15 @@ "dev": true }, "babel-helper-is-void-0": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz", - "integrity": "sha512-Axj1AYuD0E3Dl7nT3KxROP7VekEofz3XtEljzURf3fABalLpr8PamtgLFt+zuxtaCxRf9iuZmbAMMYWri5Bazw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.3.0.tgz", + "integrity": "sha512-JVqdX8y7Rf/x4NwbqtUI7mdQjL9HWoDnoAEQ8Gv8oxzjvbJv+n75f7l36m9Y8C7sCUltX3V5edndrp7Hp1oSXQ==", "dev": true }, "babel-helper-mark-eval-scopes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz", - "integrity": "sha512-KJuwrOUcHbvbh6he4xRXZFLaivK9DF9o3CrvpWnK1Wp0B+1ANYABXBMgwrnNFIDK/AvicxQ9CNr8wsgivlp4Aw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.3.0.tgz", + "integrity": "sha512-nrho5Dg4vl0VUgURVpGpEGiwbst5JX7efIyDHFxmkCx/ocQFnrPt8ze9Kxl6TKjR29bJ7D/XKY1NMlSxOQJRbQ==", "dev": true }, "babel-helper-optimise-call-expression": { @@ -1144,7 +1138,7 @@ "requires": { "babel-runtime": "6.23.0", "babel-types": "6.25.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -1161,9 +1155,9 @@ } }, "babel-helper-remove-or-void": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz", - "integrity": "sha512-1Z41upf/XR+PwY7Nd+F15Jo5BiQi5205ZXUuKed3yoyQgDkMyoM7vAdjEJS/T+M6jy32sXjskMUgms4zeiVtRA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.3.0.tgz", + "integrity": "sha512-D68W1M3ibCcbg0ysh3ww4/O0g10X1CXK720oOuR8kpfY7w0yP4tVcpK7zDmI1JecynycTQYAZ1rhLJo9aVtIKQ==", "dev": true }, "babel-helper-replace-supers": { @@ -1181,9 +1175,9 @@ } }, "babel-helper-to-multiple-sequence-expressions": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz", - "integrity": "sha512-ij9lpfdP3+Zc/7kNwa+NXbTrUlsYEWPwt/ugmQO0qflzLrveTIkbfOqQztvitk81aG5NblYDQXDlRohzu3oa8Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.3.0.tgz", + "integrity": "sha512-1uCrBD+EAaMnAYh7hc944n8Ga19y3daEnoXWPYDvFVsxMCc1l8aDjksApaCEaNSSuewq8BEcff47Cy1PbLg2Gw==", "dev": true }, "babel-helpers": { @@ -1197,13 +1191,13 @@ } }, "babel-jest": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.1.0.tgz", - "integrity": "sha512-5pKRFTlDr+x1JESNRd5leqvxEJk3dRwVvIXikB6Lr4BWZbBppk1Wp+BLUzxWL8tM+EYGLCWgfqkD35Sft8r8Lw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.2.0.tgz", + "integrity": "sha512-Uh26WMQOxa7Xa2zu1Wrds+q5NcYPVYIUmaSDKF2vfAkTkpsa7wt8BE13YnTXVhlhaO6dD/blJYnLKy7sqKf/0w==", "dev": true, "requires": { "babel-plugin-istanbul": "4.1.5", - "babel-preset-jest": "22.1.0" + "babel-preset-jest": "22.2.0" } }, "babel-loader": { @@ -1240,13 +1234,13 @@ } }, "babel-minify-webpack-plugin": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.2.0.tgz", - "integrity": "sha512-+5G5Qqm+DIVl7gY4rkHqlFRkaf1FZtz0imzu/Dy9+88AfOIuy7D5MQjkNgQr5gU6/YSZ+rImgxDqFcWkvvrjkQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.3.0.tgz", + "integrity": "sha512-avrx0Fa615QfivVV8PakEwOtthts/3qVFV+FYJffJn8WanaX4geKMGTYaPKITUXhqqEfuBJokdRQC5arNTZNIA==", "dev": true, "requires": { "babel-core": "6.26.0", - "babel-preset-minify": "0.2.0", + "babel-preset-minify": "0.3.0", "webpack-sources": "1.0.1" } }, @@ -1288,104 +1282,104 @@ } }, "babel-plugin-jest-hoist": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.1.0.tgz", - "integrity": "sha512-Og5sjbOZc4XUI3njqwYhS6WLTlHQUJ/y5+dOqmst8eHrozYZgT4OMzAaYaxhk75c2fBVYwn7+mNEN97XDO7cOw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.2.0.tgz", + "integrity": "sha512-NwicD5n1YQaj6sM3PVULdPBDk1XdlWvh8xBeUJg3nqZwp79Vofb8Q7GOVeWoZZ/RMlMuJMMrEAgSQl/p392nLA==", "dev": true }, "babel-plugin-minify-builtins": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz", - "integrity": "sha512-4i+8ntaS8gwVUcOz5y+zE+55OVOl2nTbmHV51D4wAIiKcRI8U5K//ip1GHfhsgk/NJrrHK7h97Oy5jpqt0Iixg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.3.0.tgz", + "integrity": "sha512-MqhSHlxkmgURqj3144qPksbZ/qof1JWdumcbucc4tysFcf3P3V3z3munTevQgKEFNMd8F5/ECGnwb63xogLjAg==", "dev": true, "requires": { - "babel-helper-evaluate-path": "0.2.0" + "babel-helper-evaluate-path": "0.3.0" } }, "babel-plugin-minify-constant-folding": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz", - "integrity": "sha512-B3ffQBEUQ8ydlIkYv2MkZtTCbV7FAkWAV7NkyhcXlGpD10PaCxNGQ/B9oguXGowR1m16Q5nGhvNn8Pkn1MO6Hw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.3.0.tgz", + "integrity": "sha512-1XeRpx+aY1BuNY6QU/cm6P+FtEi3ar3XceYbmC+4q4W+2Ewq5pL7V68oHg1hKXkBIE0Z4/FjSoHz6vosZLOe/A==", "dev": true, "requires": { - "babel-helper-evaluate-path": "0.2.0" + "babel-helper-evaluate-path": "0.3.0" } }, "babel-plugin-minify-dead-code-elimination": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz", - "integrity": "sha512-zE7y3pRyzA4zK5nBou0kTcwUTSQ/AiFrynt1cIEYN7vcO2gS9ZFZoI0aO9JYLUdct5fsC1vfB35408yrzTyVfg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.3.0.tgz", + "integrity": "sha512-SjM2Fzg85YZz+q/PNJ/HU4O3W98FKFOiP9K5z3sfonlamGOzvZw3Eup2OTiEBsbbqTeY8yzNCAv3qpJRYCgGmw==", "dev": true, "requires": { - "babel-helper-evaluate-path": "0.2.0", - "babel-helper-mark-eval-scopes": "0.2.0", - "babel-helper-remove-or-void": "0.2.0", + "babel-helper-evaluate-path": "0.3.0", + "babel-helper-mark-eval-scopes": "0.3.0", + "babel-helper-remove-or-void": "0.3.0", "lodash.some": "4.6.0" } }, "babel-plugin-minify-flip-comparisons": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz", - "integrity": "sha512-QOqXSEmD/LhT3LpM1WCyzAGcQZYYKJF7oOHvS6QbpomHenydrV53DMdPX2mK01icBExKZcJAHF209wvDBa+CSg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.3.0.tgz", + "integrity": "sha512-B8lK+ekcpSNVH7PZpWDe5nC5zxjRiiT4nTsa6h3QkF3Kk6y9qooIFLemdGlqBq6j0zALEnebvCpw8v7gAdpgnw==", "dev": true, "requires": { - "babel-helper-is-void-0": "0.2.0" + "babel-helper-is-void-0": "0.3.0" } }, "babel-plugin-minify-guarded-expressions": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz", - "integrity": "sha512-5+NSPdRQ9mnrHaA+zFj+D5OzmSiv90EX5zGH6cWQgR/OUqmCHSDqgTRPFvOctgpo8MJyO7Rt7ajs2UfLnlAwYg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.3.0.tgz", + "integrity": "sha512-O+6CvF5/Ttsth3LMg4/BhyvVZ82GImeKMXGdVRQGK/8jFiP15EjRpdgFlxv3cnqRjqdYxLCS6r28VfLpb9C/kA==", "dev": true, "requires": { - "babel-helper-flip-expressions": "0.2.0" + "babel-helper-flip-expressions": "0.3.0" } }, "babel-plugin-minify-infinity": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz", - "integrity": "sha512-U694vrla1lN6vDHWGrR832t3a/A2eh+kyl019LxEE2+sS4VTydyOPRsAOIYAdJegWRA4cMX1lm9azAN0cLIr8g==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.3.0.tgz", + "integrity": "sha512-Sj8ia3/w9158DWieUxU6/VvnYVy59geeFEkVgLZYBE8EBP+sN48tHtBM/jSgz0ejEdBlcfqJ6TnvPmVXTzR2BQ==", "dev": true }, "babel-plugin-minify-mangle-names": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz", - "integrity": "sha512-Gixuak1/CO7VCdjn15/8Bxe/QsAtDG4zPbnsNoe1mIJGCIH/kcmSjFhMlGJtXDQZd6EKzeMfA5WmX9+jvGRefw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.3.0.tgz", + "integrity": "sha512-PYTonhFWURsfAN8achDwvR5Xgy6EeTClLz+fSgGRqjAIXb0OyFm3/xfccbQviVi1qDXmlSnt6oJhBg8KE4Fn7Q==", "dev": true, "requires": { - "babel-helper-mark-eval-scopes": "0.2.0" + "babel-helper-mark-eval-scopes": "0.3.0" } }, "babel-plugin-minify-numeric-literals": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz", - "integrity": "sha512-VcLpb+r1YS7+RIOXdRsFVLLqoh22177USpHf+JM/g1nZbzdqENmfd5v534MLAbRErhbz6SyK+NQViVzVtBxu8g==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.3.0.tgz", + "integrity": "sha512-TgZj6ay8zDw74AS3yiIfoQ8vRSNJisYO/Du60S8nPV7EW7JM6fDMx5Sar6yVHlVuuwNgvDUBh191K33bVrAhpg==", "dev": true }, "babel-plugin-minify-replace": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz", - "integrity": "sha512-SEW6zoSVxh3OH6E1LCgyhhTWMnCv+JIRu5h5IlJDA11tU4ZeSF7uPQcO4vN/o52+FssRB26dmzJ/8D+z0QPg5Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.3.0.tgz", + "integrity": "sha512-VR6tTg2Lt0TicHIOw04fsUtpPw7RaRP8PC8YzSFwEixnzvguZjZJoL7TgG7ZyEWQD1cJ96UezswECmFNa815bg==", "dev": true }, "babel-plugin-minify-simplify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz", - "integrity": "sha512-Mj3Mwy2zVosMfXDWXZrQH5/uMAyfJdmDQ1NVqit+ArbHC3LlXVzptuyC1JxTyai/wgFvjLaichm/7vSUshkWqw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.3.0.tgz", + "integrity": "sha512-2M16ytQOCqBi7bYMu4DCWn8e6KyFCA108F6+tVrBJxOmm5u2sOmTFEa8s94tR9RHRRNYmcUf+rgidfnzL3ik9Q==", "dev": true, "requires": { - "babel-helper-flip-expressions": "0.2.0", + "babel-helper-flip-expressions": "0.3.0", "babel-helper-is-nodes-equiv": "0.0.1", - "babel-helper-to-multiple-sequence-expressions": "0.2.0" + "babel-helper-to-multiple-sequence-expressions": "0.3.0" } }, "babel-plugin-minify-type-constructors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz", - "integrity": "sha512-NiOvvA9Pq6bki6nP4BayXwT5GZadw7DJFDDzHmkpnOQpENWe8RtHtKZM44MG1R6EQ5XxgbLdsdhswIzTkFlO5g==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.3.0.tgz", + "integrity": "sha512-XRXpvsUCPeVw9YEUw+9vSiugcSZfow81oIJT0yR9s8H4W7yJ6FHbImi5DJHoL8KcDUjYnL9wYASXk/fOkbyR6Q==", "dev": true, "requires": { - "babel-helper-is-void-0": "0.2.0" + "babel-helper-is-void-0": "0.3.0" } }, "babel-plugin-react-transform": { @@ -1394,7 +1388,7 @@ "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-plugin-syntax-async-functions": { @@ -1577,7 +1571,7 @@ "babel-template": "6.25.0", "babel-traverse": "6.25.0", "babel-types": "6.25.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-plugin-transform-es2015-classes": { @@ -1874,27 +1868,27 @@ } }, "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz", - "integrity": "sha512-GlhOuLOQ28ua9prg0hT33HslCrEmz9xWXy9ZNZSACppCyRxxRW+haYtRgm7uYXCcd0q8ggCWD2pfWEJp5iiZfQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz", + "integrity": "sha512-iZsYAIjYLLfLK0yN5WVT7Xf7Y3wQ9Z75j9A8q/0IglQSpUt2ppTdHlwl/GeaXnxdaSmsxBu861klbTBbv2n+RA==", "dev": true }, "babel-plugin-transform-member-expression-literals": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz", - "integrity": "sha512-Ux3ligf+ukzWaCbBYOstDuFBhRgMiJHlpJBKV4P47qtzVkd0lg1ddPj9fqIJqAM0n+CvxipyrZrnNnw3CdtQCg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.0.tgz", + "integrity": "sha512-bxtac+8w755ctVeDs4vU98RhWY49eW1wO02HAN+eirZYSKk/dVrKONIznXbHmxWKxT4UX1rpTKOCyezuzLpbTw==", "dev": true }, "babel-plugin-transform-merge-sibling-variables": { - "version": "6.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz", - "integrity": "sha512-o5Jioq553HtEAUN5uty7ELJMenXIxHI3PIs1yLqYWYQwP6mg6IPVAJ+U7i4zr9XGF/kb2RGsdehglGTV+vngqA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.0.tgz", + "integrity": "sha512-9G1URVEEKoQLDqe0GwqYudECN7kE/q0OCNo5TiD1iwWnnaKi97xY915l5r2KKUvNflXEm9c3faNWknSXYQ7h6Q==", "dev": true }, "babel-plugin-transform-minify-booleans": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz", - "integrity": "sha512-bPbUhkeN2Nc0KH0/A19GwQGj8w+CvdJzyu8t59VoEDgsNMQ9Bopzi5DrVkrSsVjbYUaZpzq/DYLrH+wD5K2Tig==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.0.tgz", + "integrity": "sha512-JtpyTRyF+wF/r7GSxpRbNCrVve5M/aCC8xoGcnFItaPUDqjxKmFYvBzMc9u+g0lgo8NWjuZLc16MYaIwkHKD/A==", "dev": true }, "babel-plugin-transform-object-assign": { @@ -1935,9 +1929,9 @@ } }, "babel-plugin-transform-property-literals": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz", - "integrity": "sha512-MmiQsQ5AcIaRZMJD0zY5C4H3xuHm06/nWgtOsz7AXV44VEIXIlPiJ39IFYJ4Qx67/fEm8zJAedzR8t+B7d10Bg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.0.tgz", + "integrity": "sha512-B8s+71+4DPye9+pmZiPGgLPy3YqcmIuvE/9UcZLczPlwL5ALwF6qRUdLC3Fk17NhL6jxp4u33ZVZ8R4kvASPzw==", "dev": true, "requires": { "esutils": "2.0.2" @@ -1983,30 +1977,30 @@ } }, "babel-plugin-transform-regexp-constructors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz", - "integrity": "sha512-7IsQ6aQx6LAaOqy97/PthTf+5Nx9grZww3r6E62IdWe76Yr8KsuwVjxzqSPQvESJqTE3EMADQ9S0RtwWDGNG9Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.3.0.tgz", + "integrity": "sha512-h92YHzyl042rb0naKO8frTHntpRFwRgKkfWD8602kFHoQingjJNtbvZzvxqHncJ6XmKVyYvfrBpDOSkCTDIIxw==", "dev": true }, "babel-plugin-transform-remove-console": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz", - "integrity": "sha512-uuCKvtweCyIvvC8fi92EcWRtO2Kt5KMNMRK6BhpDXdeb3sxvGM7453RSmgeu4DlKns3OlvY9Ep5Q9m5a7RQAgg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.0.tgz", + "integrity": "sha512-mck9//yGTwObqqqDzY/sISO88/5/XfIB3ILb4uJLXk2xq124NT4yQVjFSRgVSbLcNq8OyBAn2acxKUqg4W/okQ==", "dev": true }, "babel-plugin-transform-remove-debugger": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz", - "integrity": "sha512-InDQDdHPOLJKM+G6oXrEesf+P29QFBmcTXID+TAvZziVz+38xe2VO/Bn3FcRcRtnOOycbgsJkUNp9jIK+ist6g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.0.tgz", + "integrity": "sha512-i/HWGjsmL2d1N2dl+eIzf44XpSP5v7hi1/GXB0xzom9kjrU8js3T8Kadizn95ZxfHK592Vg8P4JJWP/fvimEWw==", "dev": true }, "babel-plugin-transform-remove-undefined": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz", - "integrity": "sha512-O8v57tPMHkp89kA4ZfQEYds/pzgvz/QYerBJjIuL5/Jc7RnvMVRA5gJY9zFKP7WayW8WOSBV4vh8Y8FJRio+ow==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.3.0.tgz", + "integrity": "sha512-TYGQucc8iP3LJwN3kDZLEz5aa/2KuFrqpT+s8f8NnHsBU1sAgR3y8Opns0xhC+smyDYWscqFCKM1gbkWQOhhnw==", "dev": true, "requires": { - "babel-helper-evaluate-path": "0.2.0" + "babel-helper-evaluate-path": "0.3.0" } }, "babel-plugin-transform-runtime": { @@ -2019,9 +2013,9 @@ } }, "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz", - "integrity": "sha512-B3HlBZb+Uq86nRj5yNPO6pJ3noEdqHvzYkEYoUWtrsWTv48ZIRatYlumoOiif/v8llF13YjYjx9zhyznDx+N9g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.0.tgz", + "integrity": "sha512-EJyfYeph0CSekwQuwWVwJqy2go/bETkR95iaWQ/HTUis7tkCGNYmXngaFzuIXdmoPXfvmXYCvAXR4/93hqHVjw==", "dev": true }, "babel-plugin-transform-strict-mode": { @@ -2035,9 +2029,9 @@ } }, "babel-plugin-transform-undefined-to-void": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz", - "integrity": "sha512-goYwp8dMrzHD6x9GjZ2M85Mk2vxf1h85CnUgAjfftUnlJvzF4uj5MrbReHBTbjQ96C8CuRzvhYZ3tv8H3Sc1ZA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.0.tgz", + "integrity": "sha512-AVDVEmp0S9mbF1O8zekWbsOOmqnR08PZah5NRZJqSvJnFgiL0ep4Lwo4EymH8OieJR2QgQdR3q71TNW+wiVn4g==", "dev": true }, "babel-polyfill": { @@ -2148,12 +2142,12 @@ } }, "babel-preset-jest": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.1.0.tgz", - "integrity": "sha512-ps2UYz7IQpP2IgZ41tJjUuUDTxJioprHXD8fi9DoycKDGNqB3nAX/ggy1S3plaQd43ktBvMS1FkkyGNoBujFpg==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.2.0.tgz", + "integrity": "sha512-p61cPMGYlSgfNScn1yQuVnLguWE4bjhB/br4KQDMbYZG+v6ryE5Ch7TKukjA6mRuIQj1zhyou7Sbpqrh4/N6Pg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "22.1.0", + "babel-plugin-jest-hoist": "22.2.0", "babel-plugin-syntax-object-rest-spread": "6.13.0" } }, @@ -2175,33 +2169,33 @@ } }, "babel-preset-minify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz", - "integrity": "sha512-mR8Q44RmMzm18bM2Lqd9uiPopzk5GDCtVuquNbLFmX6lOKnqWoenaNBxnWW0UhBFC75lEHTIgNGCbnsRI0pJVw==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "0.2.0", - "babel-plugin-minify-constant-folding": "0.2.0", - "babel-plugin-minify-dead-code-elimination": "0.2.0", - "babel-plugin-minify-flip-comparisons": "0.2.0", - "babel-plugin-minify-guarded-expressions": "0.2.0", - "babel-plugin-minify-infinity": "0.2.0", - "babel-plugin-minify-mangle-names": "0.2.0", - "babel-plugin-minify-numeric-literals": "0.2.0", - "babel-plugin-minify-replace": "0.2.0", - "babel-plugin-minify-simplify": "0.2.0", - "babel-plugin-minify-type-constructors": "0.2.0", - "babel-plugin-transform-inline-consecutive-adds": "0.2.0", - "babel-plugin-transform-member-expression-literals": "6.8.5", - "babel-plugin-transform-merge-sibling-variables": "6.8.6", - "babel-plugin-transform-minify-booleans": "6.8.3", - "babel-plugin-transform-property-literals": "6.8.5", - "babel-plugin-transform-regexp-constructors": "0.2.0", - "babel-plugin-transform-remove-console": "6.8.5", - "babel-plugin-transform-remove-debugger": "6.8.5", - "babel-plugin-transform-remove-undefined": "0.2.0", - "babel-plugin-transform-simplify-comparison-operators": "6.8.5", - "babel-plugin-transform-undefined-to-void": "6.8.3", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.3.0.tgz", + "integrity": "sha512-+VV2GWEyak3eDOmzT1DDMuqHrw3VbE9nBNkx2LLVs4pH/Me32ND8DRpVDd8IRvk1xX5p75nygyRPtkMh6GIAbQ==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "0.3.0", + "babel-plugin-minify-constant-folding": "0.3.0", + "babel-plugin-minify-dead-code-elimination": "0.3.0", + "babel-plugin-minify-flip-comparisons": "0.3.0", + "babel-plugin-minify-guarded-expressions": "0.3.0", + "babel-plugin-minify-infinity": "0.3.0", + "babel-plugin-minify-mangle-names": "0.3.0", + "babel-plugin-minify-numeric-literals": "0.3.0", + "babel-plugin-minify-replace": "0.3.0", + "babel-plugin-minify-simplify": "0.3.0", + "babel-plugin-minify-type-constructors": "0.3.0", + "babel-plugin-transform-inline-consecutive-adds": "0.3.0", + "babel-plugin-transform-member-expression-literals": "6.9.0", + "babel-plugin-transform-merge-sibling-variables": "6.9.0", + "babel-plugin-transform-minify-booleans": "6.9.0", + "babel-plugin-transform-property-literals": "6.9.0", + "babel-plugin-transform-regexp-constructors": "0.3.0", + "babel-plugin-transform-remove-console": "6.9.0", + "babel-plugin-transform-remove-debugger": "6.9.0", + "babel-plugin-transform-remove-undefined": "0.3.0", + "babel-plugin-transform-simplify-comparison-operators": "6.9.0", + "babel-plugin-transform-undefined-to-void": "6.9.0", "lodash.isplainobject": "4.0.6" } }, @@ -2301,7 +2295,7 @@ "babel-runtime": "6.26.0", "core-js": "2.5.0", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.16" }, @@ -2350,7 +2344,7 @@ "babel-traverse": "6.25.0", "babel-types": "6.25.0", "babylon": "6.17.4", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -2367,7 +2361,7 @@ "debug": "2.6.8", "globals": "9.18.0", "invariant": "2.2.2", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-types": { @@ -2378,7 +2372,7 @@ "requires": { "babel-runtime": "6.23.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -2473,16 +2467,26 @@ } }, "better-sqlite3": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-4.0.3.tgz", - "integrity": "sha1-4ZaCJ+kYH1fP3kAIfzmaKwGci/A=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-4.1.0.tgz", + "integrity": "sha512-IYcH1F14DfdIzDzSg7TF+0b+GpYmf6UFgV0ZWsaaczy548/S5LFMkYeKHl8EAOQQb1mSHt0lkJA0BGHMRwGOcg==", "dev": true, "optional": true, "requires": { "bindings": "1.3.0", - "integer": "1.0.1", - "lzz-gyp": "0.4.2", - "to-descriptor": "1.0.1" + "integer": "1.0.3", + "lzz-gyp": "0.4.2" + } + }, + "bfj-node4": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.2.0.tgz", + "integrity": "sha512-shYA6rXr1mlAzJT8R96TscvicMyV9GJTMDFRii9HlgxLXT7HD3aDfsEHkQzIHYghh4jLI3+oouXDHqI+pnR3zA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "check-types": "7.3.0", + "tryer": "1.0.0" } }, "big.js": { @@ -2636,14 +2640,6 @@ "dev": true, "requires": { "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } } }, "browserify-aes": { @@ -2921,6 +2917,12 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -3404,7 +3406,7 @@ "git-raw-commits": "1.3.0", "git-remote-origin-url": "2.0.0", "git-semver-tags": "1.2.3", - "lodash": "4.17.4", + "lodash": "4.17.5", "normalize-package-data": "2.4.0", "q": "1.5.0", "read-pkg": "1.1.0", @@ -3478,7 +3480,7 @@ "dateformat": "1.0.12", "handlebars": "4.0.10", "json-stringify-safe": "5.0.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "meow": "3.7.0", "semver": "5.3.0", "split": "1.0.1", @@ -3503,7 +3505,7 @@ "requires": { "JSONStream": "1.3.2", "is-text-path": "1.0.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "meow": "3.7.0", "split2": "2.2.0", "through2": "2.0.3", @@ -3589,7 +3591,7 @@ "glob2base": "0.0.12", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "resolve": "1.5.0", + "resolve": "1.1.7", "safe-buffer": "5.1.1", "shell-quote": "1.6.1", "subarg": "1.0.0" @@ -4204,10 +4206,13 @@ "dev": true }, "domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", - "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "4.0.2" + } }, "dot-prop": { "version": "3.0.0", @@ -4307,9 +4312,9 @@ "dev": true }, "engine.io": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz", - "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", + "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", "dev": true, "requires": { "accepts": "1.3.3", @@ -4317,7 +4322,7 @@ "cookie": "0.3.1", "debug": "2.3.3", "engine.io-parser": "1.3.2", - "ws": "1.1.4" + "ws": "1.1.5" }, "dependencies": { "accepts": { @@ -4352,9 +4357,9 @@ "dev": true }, "ws": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", - "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", "dev": true, "requires": { "options": "0.0.6", @@ -4364,9 +4369,9 @@ } }, "engine.io-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", - "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.5.tgz", + "integrity": "sha512-AYTgHyeVUPitsseqjoedjhYJapNVoSPShbZ+tEUX9/73jgZ/Z3sUlJf9oYgdEBBdVhupUpUqSxH0kBCXlQnmZg==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -4378,7 +4383,7 @@ "parsejson": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "1.1.2", + "ws": "1.1.5", "xmlhttprequest-ssl": "1.5.3", "yeast": "0.1.2" }, @@ -4411,9 +4416,9 @@ "dev": true }, "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", "dev": true, "requires": { "options": "0.0.6", @@ -4606,9 +4611,9 @@ } }, "eslint": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", - "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.17.0.tgz", + "integrity": "sha512-AyxBUCANU/o/xC0ijGMKavo5Ls3oK6xykiOITlMdjFjrKOsqLrA7Nf5cnrDgcKrHzBirclAZt63XO7YZlVUPwA==", "dev": true, "requires": { "ajv": "5.5.2", @@ -4620,13 +4625,13 @@ "doctrine": "2.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", - "espree": "3.5.2", + "espree": "3.5.3", "esquery": "1.0.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.1.0", + "globals": "11.3.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", @@ -4634,7 +4639,7 @@ "js-yaml": "3.10.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -4684,9 +4689,9 @@ "dev": true }, "globals": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", - "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", "dev": true }, "js-yaml": { @@ -4727,19 +4732,19 @@ "dev": true }, "espree": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", - "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", + "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", "dev": true, "requires": { - "acorn": "5.3.0", + "acorn": "5.4.1", "acorn-jsx": "3.0.1" }, "dependencies": { "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", "dev": true } } @@ -4890,16 +4895,16 @@ } }, "expect": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-22.1.0.tgz", - "integrity": "sha512-8K+8TjNnZq73KYtqNWKWTbYbN8z4loeL+Pn2bqpmtTdBtLNXJtpz9vkUcQlFsgKMDRA3VM8GXRA6qbV/oBF7Bw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.2.0.tgz", + "integrity": "sha512-eqFxBnAeedkNLMGjNoYW4ZPbPQf2JJtVg6Yf6Fm3yVwHbMSNAMQJggxqI/PUrR+Bzb3QHF4O9tUdPyTTKicDUw==", "dev": true, "requires": { "ansi-styles": "3.2.0", "jest-diff": "22.1.0", "jest-get-type": "22.1.0", - "jest-matcher-utils": "22.1.0", - "jest-message-util": "22.1.0", + "jest-matcher-utils": "22.2.0", + "jest-message-util": "22.2.0", "jest-regex-util": "22.1.0" } }, @@ -5104,9 +5109,9 @@ } }, "filesize": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", - "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.0.tgz", + "integrity": "sha512-g5OWtoZWcPI56js1DFhIEqyG9tnu/7sG3foHwgS9KGYFMfsYguI3E+PRVCmtmE96VajQIEMRU2OhN+ME589Gdw==", "dev": true }, "fill-range": { @@ -6422,7 +6427,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4" } }, @@ -6439,12 +6444,21 @@ "dev": true }, "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "0.1.1", + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "handle-thing": { @@ -6799,7 +6813,7 @@ "requires": { "http-proxy": "1.16.2", "is-glob": "3.1.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "micromatch": "2.3.11" }, "dependencies": { @@ -6855,7 +6869,7 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.16" + "postcss": "6.0.17" } }, "ieee754": { @@ -6947,7 +6961,7 @@ "cli-width": "2.2.0", "external-editor": "2.1.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -7007,10 +7021,10 @@ "requires": { "babel-types": "6.25.0", "babylon": "6.17.4", - "better-sqlite3": "4.0.3", + "better-sqlite3": "4.1.0", "farmhash": "1.2.1", - "lodash": "4.17.4", - "uglify-es": "3.1.9", + "lodash": "4.17.5", + "uglify-es": "3.3.9", "workerpool": "2.3.0", "yargs": "4.8.1" }, @@ -7021,6 +7035,12 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7028,12 +7048,12 @@ "dev": true }, "uglify-es": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.9.tgz", - "integrity": "sha512-wVSiJKHDgDDFmxTVVvnbAH6IpamAFHYDI+5JvwPdaqIMnk8kRTX2JKwq1Fx7gb2+Jj5Dus8kzvIpKkWOMNU51w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.11.0", + "commander": "2.13.0", "source-map": "0.6.1" } }, @@ -7078,9 +7098,9 @@ } }, "integer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/integer/-/integer-1.0.1.tgz", - "integrity": "sha1-Qey125kxwaBpco9HZPjX7u4Cskk=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/integer/-/integer-1.0.3.tgz", + "integrity": "sha512-yXyGHha2cDP6qyc9EMR9SsRVYhD7gvmXgVdLhKbyE8seHx0WVo11RRRU1p+sQearQMe1Ezfc8prWx5BnmSaVVA==", "dev": true, "optional": true, "requires": { @@ -7629,12 +7649,13 @@ } }, "jest": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-22.1.4.tgz", - "integrity": "sha512-cIPkn+OFGabazPesbhnYkadPftoO2Fo3w84QjeIP+A8eZ5qj7Zs4PuTemAW8StNMxySJr0KPk/LhYG2GUHLexQ==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.2.1.tgz", + "integrity": "sha512-RXFH79Wdi1MiIC9jchU9iGvflSGI/FEKrccp279UirxjK/DJ3X62/iPXPahknPya+QU49ccUt7LKg+Lsmu/bFw==", "dev": true, "requires": { - "jest-cli": "22.1.4" + "import-local": "1.0.0", + "jest-cli": "22.2.1" }, "dependencies": { "ansi-regex": { @@ -7643,12 +7664,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "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": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -7682,9 +7697,9 @@ "dev": true }, "jest-cli": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.1.4.tgz", - "integrity": "sha512-p7yOu0Q5uuXb3Q93qEg3LE6eNGgAGueakifxXNEqQx4b0lOl2YlC9t6BLQWNOJ+z42VWK/BIdFjf6lxKcTkjFA==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.2.1.tgz", + "integrity": "sha512-4ZvaStLTNFgiIIiNrTRmPrfpZVKWYlHOZuyfkiTDdVWiciFtAbtJhCpYsK+1mMx5NOdPCr72vxeodP6U0WlzfA==", "dev": true, "requires": { "ansi-escapes": "3.0.0", @@ -7698,19 +7713,19 @@ "istanbul-lib-coverage": "1.1.1", "istanbul-lib-instrument": "1.9.1", "istanbul-lib-source-maps": "1.2.2", - "jest-changed-files": "22.1.4", - "jest-config": "22.1.4", - "jest-environment-jsdom": "22.1.4", + "jest-changed-files": "22.2.0", + "jest-config": "22.2.1", + "jest-environment-jsdom": "22.2.0", "jest-get-type": "22.1.0", - "jest-haste-map": "22.1.0", - "jest-message-util": "22.1.0", + "jest-haste-map": "22.2.0", + "jest-message-util": "22.2.0", "jest-regex-util": "22.1.0", "jest-resolve-dependencies": "22.1.0", - "jest-runner": "22.1.4", - "jest-runtime": "22.1.4", - "jest-snapshot": "22.1.2", - "jest-util": "22.1.4", - "jest-worker": "22.1.0", + "jest-runner": "22.2.1", + "jest-runtime": "22.2.1", + "jest-snapshot": "22.2.0", + "jest-util": "22.2.0", + "jest-worker": "22.2.0", "micromatch": "2.3.11", "node-notifier": "5.2.1", "realpath-native": "1.0.0", @@ -7719,91 +7734,7 @@ "string-length": "2.0.0", "strip-ansi": "4.0.0", "which": "1.2.14", - "yargs": "10.1.1" - } - }, - "jest-config": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.1.4.tgz", - "integrity": "sha512-ZImFp7STrUDOgQLW5I5UloCiCRMh6HmMIYIoWqaQkxnR5ws7MuZFG/Ns9sZFyfrnyWCvcW91e+XcEfNeoa4Jew==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "glob": "7.1.2", - "jest-environment-jsdom": "22.1.4", - "jest-environment-node": "22.1.4", - "jest-get-type": "22.1.0", - "jest-jasmine2": "22.1.4", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.1.4", - "jest-util": "22.1.4", - "jest-validate": "22.1.2", - "pretty-format": "22.1.0" - } - }, - "jest-environment-jsdom": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz", - "integrity": "sha512-YGqFJzei/kq5BgQ8su7igLoCl34ytUffr5ZoqwLrDzCmXUKyIiuwBFbWe3xFMG/crlDb1emhBXdzWM1yDEDw5Q==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4", - "jsdom": "11.5.1" - } - }, - "jest-environment-node": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.4.tgz", - "integrity": "sha512-rQmtzgZVdyCzeXsE8i7Alw2483KSd2PYjssZWZYeNzonN/lBeUjjaOCgLWp6FspBzSTnYF7x6cN4umGZxYAhow==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4" - } - }, - "jest-jasmine2": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz", - "integrity": "sha512-+KoRiG4PUwURB7UXei2jzxvbCebhXgTYS+xWl3FsSYUn3flcxdcOgAsFolx31Dkk/B1bVf1HIKt/B6Ubucp9aQ==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "co": "4.6.0", - "expect": "22.1.0", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.1.0", - "jest-matcher-utils": "22.1.0", - "jest-message-util": "22.1.0", - "jest-snapshot": "22.1.2", - "source-map-support": "0.5.2" - } - }, - "jest-resolve": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.1.4.tgz", - "integrity": "sha512-/HuCMeiTD6YJ+NF15bU1mal1r7Gov0GJozA7232XiYve7cOOnU2JwXBx3EQmcIuG38uNrRPjtgpiXkBqfnk4Og==", - "dev": true, - "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.3.0" - } - }, - "jest-util": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.1.4.tgz", - "integrity": "sha512-zM29idoVBPvmpsGubS7YmywVyPe4/m1wE2YhmKp0vVmrQmuby7ObuMqabp82EYlM0Rdp4GNEtaDamW9jg8lgTg==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.1.0", - "jest-validate": "22.1.2", - "mkdirp": "0.5.1" + "yargs": "10.1.2" } }, "os-locale": { @@ -7817,21 +7748,6 @@ "mem": "1.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz", - "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==", - "dev": true, - "requires": { - "source-map": "0.6.1" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -7858,9 +7774,9 @@ "dev": true }, "yargs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.1.tgz", - "integrity": "sha512-7uRL1HZdCbc1QTP+X8mehOPuCYKC/XTaqAPj7gABLfTt6pgLyVRn3QVte4qhtilZouWCvqd1kipgMKl5tKsFiw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { "cliui": "4.0.0", @@ -7889,30 +7805,30 @@ } }, "jest-changed-files": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.1.4.tgz", - "integrity": "sha512-EpqJhwt+N/wEHRT+5KrjagVrunduOfMgAb7fjjHkXHFCPRZoVZwl896S7krx7txf5hrMNUkpECnOnO2wBgzJCw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.2.0.tgz", + "integrity": "sha512-SzqOvoPMrXB0NPvDrSPeKETpoUNCtNDOsFbCzAGWxqWVvNyrIMLpUjVExT3u3LfdVrENlrNGCfh5YoFd8+ZeXg==", "dev": true, "requires": { "throat": "4.1.0" } }, "jest-config": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.1.3.tgz", - "integrity": "sha512-FkJ4mXYY/LcZXYSUvcwIVPt+MATM5j85xvGY11cxIdHUtsERd/thBuSuzLRyBUcaSkrfGbiI/qc1WNRGgltJdQ==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.2.1.tgz", + "integrity": "sha512-1vqJDHuF35ScbIsnGU3psDS7L89dhGRmgS1ybiMGFoyuxoNeJ+Hhu25o7vbCWdwI/Gplh0ePibGS4srCfwhtiw==", "dev": true, "requires": { "chalk": "2.3.0", "glob": "7.1.2", - "jest-environment-jsdom": "22.1.2", - "jest-environment-node": "22.1.2", + "jest-environment-jsdom": "22.2.0", + "jest-environment-node": "22.2.0", "jest-get-type": "22.1.0", - "jest-jasmine2": "22.1.3", + "jest-jasmine2": "22.2.1", "jest-regex-util": "22.1.0", - "jest-resolve": "22.1.0", - "jest-util": "22.1.2", - "jest-validate": "22.1.2", + "jest-resolve": "22.2.0", + "jest-util": "22.2.0", + "jest-validate": "22.2.0", "pretty-format": "22.1.0" } }, @@ -7929,33 +7845,33 @@ } }, "jest-docblock": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.1.0.tgz", - "integrity": "sha512-/+OGgBVRJb5wCbXrB1LQvibQBz2SdrvDdKRNzY1gL+OISQJZCR9MOewbygdT5rVzbbkfhC4AR2x+qWmNUdJfjw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.2.0.tgz", + "integrity": "sha512-Hh/JRuhIcKL+o4aOTE/kXsz3e6LCdaZoYmkSvuElp+WCt9hdhhRTErX8v6j8O4sNndhhMhYCOjNZgzHI4n51Hg==", "dev": true, "requires": { "detect-newline": "2.1.0" } }, "jest-environment-jsdom": { - "version": "22.1.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.1.2.tgz", - "integrity": "sha512-mGcuJPJ4+F+GJaWw+YZVMcTWFXxB+FR2E1CztnC85kTbVbLv2wWKCn91KgxstYf2E3/OQ26WICngnOBISZiEXQ==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.2.0.tgz", + "integrity": "sha512-OV9EGbS3uJxFJdvI98s031Ie0ejLasuNelKFRWY/G4nAvFQB4QnHjNWxoNv911mj5Qd1KrUdiUPHc1qzCXR+CQ==", "dev": true, "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.2", - "jsdom": "11.5.1" + "jest-mock": "22.2.0", + "jest-util": "22.2.0", + "jsdom": "11.6.2" } }, "jest-environment-node": { - "version": "22.1.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.2.tgz", - "integrity": "sha512-khr801nOSK380J97T2T0kMABJbSMOl8Mn3xwP0PiaCoaAaYlQ4XB+x+aXsVNPUH4FOOZq9ojytu84EdWChR+Hg==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.2.0.tgz", + "integrity": "sha512-bP4p75KOHsRoTHn8UCxkLRfd4EsbO9e1zwiRCMv+lzECtXs6jEUXgVzm1Wx0xzRbpXOrB90z7O0eu7VXeYMKng==", "dev": true, "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.2" + "jest-mock": "22.2.0", + "jest-util": "22.2.0" } }, "jest-get-type": { @@ -7965,36 +7881,36 @@ "dev": true }, "jest-haste-map": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.1.0.tgz", - "integrity": "sha512-vETdC6GboGlZX6+9SMZkXtYRQSKBbQ47sFF7NGglbMN4eyIZBODply8rlcO01KwBiAeiNCKdjUyfonZzJ93JEg==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.2.0.tgz", + "integrity": "sha512-JjAVy+faan8qmB6sERUx+6aI2eDmKpdCA2RQ7VprjvxqP+y+uHWIbRFzzoiOKB1o6bfJrv3YmdHnVJ3a6sPVaA==", "dev": true, "requires": { "fb-watchman": "2.0.0", "graceful-fs": "4.1.11", - "jest-docblock": "22.1.0", - "jest-worker": "22.1.0", + "jest-docblock": "22.2.0", + "jest-worker": "22.2.0", "micromatch": "2.3.11", "sane": "2.3.0" } }, "jest-jasmine2": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.1.3.tgz", - "integrity": "sha512-iEzQcUp0f0ZkGjLYMnQkOsjpEXxUqH1I46j3BsEIKluiYtMtfszGUIWtkJZ7/MxJSfBwptG27T2e3S7CDfk2Ow==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.2.1.tgz", + "integrity": "sha512-+XpH9wxS4fz3uAUUDKjo9HKCnaaPXgrqMjdPoQX55e7WvLDy0CcpgBNmU69cy3ZqJkLPYqtjSQLOnqlAMjtzNA==", "dev": true, "requires": { "callsites": "2.0.0", "chalk": "2.3.0", "co": "4.6.0", - "expect": "22.1.0", + "expect": "22.2.0", "graceful-fs": "4.1.11", "is-generator-fn": "1.0.0", "jest-diff": "22.1.0", - "jest-matcher-utils": "22.1.0", - "jest-message-util": "22.1.0", - "jest-snapshot": "22.1.2", - "source-map-support": "0.5.2" + "jest-matcher-utils": "22.2.0", + "jest-message-util": "22.2.0", + "jest-snapshot": "22.2.0", + "source-map-support": "0.5.3" }, "dependencies": { "callsites": { @@ -8010,9 +7926,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz", - "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { "source-map": "0.6.1" @@ -8030,9 +7946,9 @@ } }, "jest-matcher-utils": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.1.0.tgz", - "integrity": "sha512-Zn1OD9wVjILOdvRxgAnqiCN36OX6KJx+P2FHN+3lzQ0omG2N2OAguxE1QXuJJneG2yndlkXjekXFP254c0cSpw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.2.0.tgz", + "integrity": "sha512-jO0cnQ93mR4on+nbmEeK4bChCvLeMFN1bP2qjRjwFv5KzQt34y5SmUq9FgzKjZQZG8zUmaQN+/pHJMUQ0xAcgQ==", "dev": true, "requires": { "chalk": "2.3.0", @@ -8041,12 +7957,12 @@ } }, "jest-message-util": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.1.0.tgz", - "integrity": "sha512-kftcoawOeOVUGuGWmMupJt7FGLK1pqOrh02FlJwtImmPGZ2yTWCTx2D+N/g95qD2jCbQ/ntH1goBixhAIIxL+g==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.2.0.tgz", + "integrity": "sha512-LHPYu5kyA07FZK2CpvJ0xBE+gqy+dW30sFU3oep78lmscyc27mVOWDVwzmROhUeY8LlYpW3mcpRB/w5ibD6ZkA==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.38", + "@babel/code-frame": "7.0.0-beta.39", "chalk": "2.3.0", "micromatch": "2.3.11", "slash": "1.0.0", @@ -8054,9 +7970,9 @@ } }, "jest-mock": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.1.0.tgz", - "integrity": "sha512-gL3/C8ds6e1PWiOTsV7sIejPP/ECYQgDbwMzbNCc+ZFPuPH3EpwsVLGmQqPK6okgnDagimbbQnss3kPJ8HCMtA==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.2.0.tgz", + "integrity": "sha512-eOfoUYLOB/JlxChOFkh/bzpWGqUXb9I+oOpkprHHs9L7nUNfL8Rk28h1ycWrqzWCEQ/jZBg/xIv7VdQkfAkOhw==", "dev": true }, "jest-regex-util": { @@ -8066,9 +7982,9 @@ "dev": true }, "jest-resolve": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.1.0.tgz", - "integrity": "sha512-hp4Od9YNEv3A/xNN5pPlNjMuisdZyg3u+XAZOqnGxWPVqnbjvEZ25U2HmYM0eLhOzVTHAAsNnAA8HWDzY1Cwjw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.2.0.tgz", + "integrity": "sha512-Ta9c+uZdF9KaEiTdB0drql1cUlYStF0All1uhgYgbjw4AGP2jatkGsDHOSY4gs9zhkXe9u2wHw0N9if3KgCtIA==", "dev": true, "requires": { "browser-resolve": "1.11.2", @@ -8085,156 +8001,49 @@ } }, "jest-runner": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.1.4.tgz", - "integrity": "sha512-HAyZ0Q2Fyk7mlbtbSKP75hNs9IP0Md7kzPUN1uNKbvQfZkXA/e7P0ttzAIGQtEbRx656tYwkfWNW+hXvs1i4/g==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.2.1.tgz", + "integrity": "sha512-oTbyozpPKBBTdJxqPBOyUr3S0eVi/Rvx2CvwGCTCvmVkwrkoMCqG4w3WJmMbKARVv892Zy/l7rxYzEdzo24yNA==", "dev": true, "requires": { "exit": "0.1.2", - "jest-config": "22.1.4", - "jest-docblock": "22.1.0", - "jest-haste-map": "22.1.0", - "jest-jasmine2": "22.1.4", + "jest-config": "22.2.1", + "jest-docblock": "22.2.0", + "jest-haste-map": "22.2.0", + "jest-jasmine2": "22.2.1", "jest-leak-detector": "22.1.0", - "jest-message-util": "22.1.0", - "jest-runtime": "22.1.4", - "jest-util": "22.1.4", - "jest-worker": "22.1.0", + "jest-message-util": "22.2.0", + "jest-runtime": "22.2.1", + "jest-util": "22.2.0", + "jest-worker": "22.2.0", "throat": "4.1.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "jest-config": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.1.4.tgz", - "integrity": "sha512-ZImFp7STrUDOgQLW5I5UloCiCRMh6HmMIYIoWqaQkxnR5ws7MuZFG/Ns9sZFyfrnyWCvcW91e+XcEfNeoa4Jew==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "glob": "7.1.2", - "jest-environment-jsdom": "22.1.4", - "jest-environment-node": "22.1.4", - "jest-get-type": "22.1.0", - "jest-jasmine2": "22.1.4", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.1.4", - "jest-util": "22.1.4", - "jest-validate": "22.1.2", - "pretty-format": "22.1.0" - } - }, - "jest-environment-jsdom": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz", - "integrity": "sha512-YGqFJzei/kq5BgQ8su7igLoCl34ytUffr5ZoqwLrDzCmXUKyIiuwBFbWe3xFMG/crlDb1emhBXdzWM1yDEDw5Q==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4", - "jsdom": "11.5.1" - } - }, - "jest-environment-node": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.4.tgz", - "integrity": "sha512-rQmtzgZVdyCzeXsE8i7Alw2483KSd2PYjssZWZYeNzonN/lBeUjjaOCgLWp6FspBzSTnYF7x6cN4umGZxYAhow==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4" - } - }, - "jest-jasmine2": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz", - "integrity": "sha512-+KoRiG4PUwURB7UXei2jzxvbCebhXgTYS+xWl3FsSYUn3flcxdcOgAsFolx31Dkk/B1bVf1HIKt/B6Ubucp9aQ==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "co": "4.6.0", - "expect": "22.1.0", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.1.0", - "jest-matcher-utils": "22.1.0", - "jest-message-util": "22.1.0", - "jest-snapshot": "22.1.2", - "source-map-support": "0.5.2" - } - }, - "jest-resolve": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.1.4.tgz", - "integrity": "sha512-/HuCMeiTD6YJ+NF15bU1mal1r7Gov0GJozA7232XiYve7cOOnU2JwXBx3EQmcIuG38uNrRPjtgpiXkBqfnk4Og==", - "dev": true, - "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.3.0" - } - }, - "jest-util": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.1.4.tgz", - "integrity": "sha512-zM29idoVBPvmpsGubS7YmywVyPe4/m1wE2YhmKp0vVmrQmuby7ObuMqabp82EYlM0Rdp4GNEtaDamW9jg8lgTg==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.1.0", - "jest-validate": "22.1.2", - "mkdirp": "0.5.1" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz", - "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==", - "dev": true, - "requires": { - "source-map": "0.6.1" - } - } } }, "jest-runtime": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.1.4.tgz", - "integrity": "sha512-r/UjVuQppDRwbUprDlLYdd8MTYY+H8H6BCqRujGjo5/QyIt3b0hppNoOQHF+0bHNtuz/sR9chJ9HJ3A1fiv9Pw==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.2.1.tgz", + "integrity": "sha512-5GQ0U6gFQyr3O6BaisL6C00+/Bxs/3WCmv51c6BQ53cKKn0J/jdWsfnVk6uzETEJv9vaLdxIukvOQuv7O+23hA==", "dev": true, "requires": { "babel-core": "6.26.0", - "babel-jest": "22.1.0", + "babel-jest": "22.2.0", "babel-plugin-istanbul": "4.1.5", "chalk": "2.3.0", "convert-source-map": "1.5.0", "exit": "0.1.2", "graceful-fs": "4.1.11", - "jest-config": "22.1.4", - "jest-haste-map": "22.1.0", + "jest-config": "22.2.1", + "jest-haste-map": "22.2.0", "jest-regex-util": "22.1.0", - "jest-resolve": "22.1.4", - "jest-util": "22.1.4", + "jest-resolve": "22.2.0", + "jest-util": "22.2.0", "json-stable-stringify": "1.0.1", "micromatch": "2.3.11", "realpath-native": "1.0.0", "slash": "1.0.0", "strip-bom": "3.0.0", "write-file-atomic": "2.3.0", - "yargs": "10.1.1" + "yargs": "10.1.2" }, "dependencies": { "ansi-regex": { @@ -8243,12 +8052,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "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": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -8281,90 +8084,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "jest-config": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.1.4.tgz", - "integrity": "sha512-ZImFp7STrUDOgQLW5I5UloCiCRMh6HmMIYIoWqaQkxnR5ws7MuZFG/Ns9sZFyfrnyWCvcW91e+XcEfNeoa4Jew==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "glob": "7.1.2", - "jest-environment-jsdom": "22.1.4", - "jest-environment-node": "22.1.4", - "jest-get-type": "22.1.0", - "jest-jasmine2": "22.1.4", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.1.4", - "jest-util": "22.1.4", - "jest-validate": "22.1.2", - "pretty-format": "22.1.0" - } - }, - "jest-environment-jsdom": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz", - "integrity": "sha512-YGqFJzei/kq5BgQ8su7igLoCl34ytUffr5ZoqwLrDzCmXUKyIiuwBFbWe3xFMG/crlDb1emhBXdzWM1yDEDw5Q==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4", - "jsdom": "11.5.1" - } - }, - "jest-environment-node": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.4.tgz", - "integrity": "sha512-rQmtzgZVdyCzeXsE8i7Alw2483KSd2PYjssZWZYeNzonN/lBeUjjaOCgLWp6FspBzSTnYF7x6cN4umGZxYAhow==", - "dev": true, - "requires": { - "jest-mock": "22.1.0", - "jest-util": "22.1.4" - } - }, - "jest-jasmine2": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz", - "integrity": "sha512-+KoRiG4PUwURB7UXei2jzxvbCebhXgTYS+xWl3FsSYUn3flcxdcOgAsFolx31Dkk/B1bVf1HIKt/B6Ubucp9aQ==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "co": "4.6.0", - "expect": "22.1.0", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.1.0", - "jest-matcher-utils": "22.1.0", - "jest-message-util": "22.1.0", - "jest-snapshot": "22.1.2", - "source-map-support": "0.5.2" - } - }, - "jest-resolve": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.1.4.tgz", - "integrity": "sha512-/HuCMeiTD6YJ+NF15bU1mal1r7Gov0GJozA7232XiYve7cOOnU2JwXBx3EQmcIuG38uNrRPjtgpiXkBqfnk4Og==", - "dev": true, - "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.3.0" - } - }, - "jest-util": { - "version": "22.1.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.1.4.tgz", - "integrity": "sha512-zM29idoVBPvmpsGubS7YmywVyPe4/m1wE2YhmKp0vVmrQmuby7ObuMqabp82EYlM0Rdp4GNEtaDamW9jg8lgTg==", - "dev": true, - "requires": { - "callsites": "2.0.0", - "chalk": "2.3.0", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.1.0", - "jest-validate": "22.1.2", - "mkdirp": "0.5.1" - } - }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -8376,21 +8095,6 @@ "mem": "1.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz", - "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==", - "dev": true, - "requires": { - "source-map": "0.6.1" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -8423,9 +8127,9 @@ "dev": true }, "yargs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.1.tgz", - "integrity": "sha512-7uRL1HZdCbc1QTP+X8mehOPuCYKC/XTaqAPj7gABLfTt6pgLyVRn3QVte4qhtilZouWCvqd1kipgMKl5tKsFiw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { "cliui": "4.0.0", @@ -8454,31 +8158,31 @@ } }, "jest-snapshot": { - "version": "22.1.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.1.2.tgz", - "integrity": "sha512-45co/M0gTe6Y6yHaJLydEZKHOFpFHESLah40jW35DWd3pd7q188bsi0oUY4Kls7PDXUamvTWuTKTZXCtzwSvCw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.2.0.tgz", + "integrity": "sha512-nc4hOfENTO/09NWJDz6ojf5zdAGPutQ4ZKmidWuEirTyBwhndxBlckO8ZaiQk9NDfDUeoVNptd6zJW84GWPRKw==", "dev": true, "requires": { "chalk": "2.3.0", "jest-diff": "22.1.0", - "jest-matcher-utils": "22.1.0", + "jest-matcher-utils": "22.2.0", "mkdirp": "0.5.1", "natural-compare": "1.4.0", "pretty-format": "22.1.0" } }, "jest-util": { - "version": "22.1.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.1.2.tgz", - "integrity": "sha512-z/7pZG4b+uXWRLWJnJ8iZKfiMBONB3KBWJQlximgRBBsFM7bX3sLd09Dzy6lgwyUUTa286XSJP59d8ux5V3D1g==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.2.0.tgz", + "integrity": "sha512-k8oLZA6EMStGriZdg75CBcg8eGls7/WwVhzPi7W3ghu7j5TiAOu8Jy9Gm4Zn+M9a5QhCI0Rh5QxSs8PVhw3tnw==", "dev": true, "requires": { "callsites": "2.0.0", "chalk": "2.3.0", "graceful-fs": "4.1.11", "is-ci": "1.1.0", - "jest-message-util": "22.1.0", - "jest-validate": "22.1.2", + "jest-message-util": "22.2.0", + "jest-validate": "22.2.0", "mkdirp": "0.5.1" }, "dependencies": { @@ -8491,9 +8195,9 @@ } }, "jest-validate": { - "version": "22.1.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.1.2.tgz", - "integrity": "sha512-IjvMsV7GW5ghg5PTQvU23zJqTBmnq10eY+4n47awUeXYEGH27N+JajFPOg6tsN+OYvEPsohPquKoqQ5XBVs/ow==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.2.0.tgz", + "integrity": "sha512-wQVZaNUMdY/OJMd9cMe1UEU1lgvrPwvQW2z3WrGtBPfXqDSZ+Ze5dOsKnC6y6c19NQ3FEQKR0c04ZtyNPRpDBg==", "dev": true, "requires": { "chalk": "2.3.0", @@ -8503,9 +8207,9 @@ } }, "jest-worker": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.1.0.tgz", - "integrity": "sha512-ezLueYAQowk5N6g2J7bNZfq4NWZvMNB5Qd24EmOZLcM5SXTdiFvxykZIoNiMj9C98cCbPaojX8tfR7b1LJwNig==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.2.0.tgz", + "integrity": "sha512-RKXSCsSSn5cPpJASHs1bOAnunpgcTo+DnLEcaCvVcf5yx/4ks5TEuTTCJMQasjJwwYpHW2MJX20i2tYHfrInEw==", "dev": true, "requires": { "merge-stream": "1.0.1" @@ -8541,41 +8245,43 @@ "optional": true }, "jsdom": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", - "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "version": "11.6.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", "dev": true, "requires": { "abab": "1.0.4", - "acorn": "5.3.0", + "acorn": "5.4.1", "acorn-globals": "4.1.0", "array-equal": "1.0.0", "browser-process-hrtime": "0.1.2", "content-type-parser": "1.0.2", "cssom": "0.3.2", "cssstyle": "0.2.37", - "domexception": "1.0.0", + "domexception": "1.0.1", "escodegen": "1.9.0", "html-encoding-sniffer": "1.0.2", "left-pad": "1.2.0", "nwmatcher": "1.4.3", - "parse5": "3.0.3", + "parse5": "4.0.0", "pn": "1.1.0", "request": "2.83.0", "request-promise-native": "1.0.5", "sax": "1.2.4", "symbol-tree": "3.2.2", "tough-cookie": "2.3.3", + "w3c-hr-time": "1.0.1", "webidl-conversions": "4.0.2", "whatwg-encoding": "1.0.3", "whatwg-url": "6.4.0", - "xml-name-validator": "2.0.1" + "ws": "4.0.0", + "xml-name-validator": "3.0.0" }, "dependencies": { "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", "dev": true }, "ajv": { @@ -8862,7 +8568,7 @@ "integrity": "sha512-CZc+m2xZm51J8qSwdODeiiNeqh8CYkKEq6Rw8IkE4i/4yqf2cJhjQPsA6BtAV970ePRNhwEOXhy2U5xc5Jwh9Q==", "dev": true, "requires": { - "lodash": "4.17.4", + "lodash": "4.17.5", "webpack-sources": "1.0.1" } }, @@ -8952,15 +8658,15 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-Ez3ONp3TK9gX1HYKp6IhetcVybD+2F+Yp6GS9dfH8ue6EOCEzQtQEh4K0FYWBP9qLv+lzeQAYXw+3ySfxyZqkw==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -9410,14 +9116,14 @@ "dev": true }, "most": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/most/-/most-1.7.2.tgz", - "integrity": "sha512-jDSzUa7HPT79RqLEdrBnYpGZ5DXx8SSDYkS7W6ErBUgU0ewaNDLIdqLJ6GlzXK90eCaDzXm0B1C0KmfTT0XdZQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/most/-/most-1.7.3.tgz", + "integrity": "sha512-mk68SM/ptK8WSo3l03raXcWy02Hl7jbzxVozMuvyYxohn4yteh2THhl3+XABF5cunWE8eXHAsLbv+RCJI5y+jg==", "dev": true, "requires": { "@most/multicast": "1.3.0", - "@most/prelude": "1.6.4", - "symbol-observable": "1.0.4" + "@most/prelude": "1.7.0", + "symbol-observable": "1.2.0" } }, "ms": { @@ -10135,13 +9841,10 @@ } }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "9.3.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, "parsejson": { "version": "0.0.3", @@ -10342,9 +10045,9 @@ "dev": true }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.17.tgz", + "integrity": "sha512-Bl1nybsSzWYbP8O4gAVD8JIjZIul9hLNOPTGBIlVmZNUnNAGL+W0cpYWzVwfImZOwumct4c1SDvSbncVWKtXUw==", "dev": true, "requires": { "chalk": "2.3.0", @@ -10994,15 +10697,45 @@ } }, "postcss-loader": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.10.tgz", - "integrity": "sha512-xQaDcEgJ/2JqFY18zpFkik8vyYs7oS5ZRbrjvDqkP97k2wYWfPT4+qA0m4o3pTSCsz0u26PNqs8ZO9FRUWAqrA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.0.tgz", + "integrity": "sha512-S/dKzpDwGFmP9g8eyCu9sUIV+/+3UooeTpYlsKf23qKDdrhHuA4pTSfytVu0rEJ0iDqUavXrgtOPq5KhNyNMOw==", "dev": true, "requires": { "loader-utils": "1.1.0", - "postcss": "6.0.16", + "postcss": "6.0.17", "postcss-load-config": "1.2.0", - "schema-utils": "0.3.0" + "schema-utils": "0.4.3" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "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 + }, + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1" + } + } } }, "postcss-merge-idents": { @@ -11497,7 +11230,7 @@ "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { - "postcss": "6.0.16" + "postcss": "6.0.17" } }, "postcss-modules-local-by-default": { @@ -11507,7 +11240,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.17" } }, "postcss-modules-scope": { @@ -11517,7 +11250,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.17" } }, "postcss-modules-values": { @@ -11527,7 +11260,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.16" + "postcss": "6.0.17" } }, "postcss-normalize-charset": { @@ -12165,9 +11898,9 @@ "dev": true }, "prettier": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.1.tgz", - "integrity": "sha512-lPTx4BsvN5v9w/JXBRNlvTXCJBKrr7VW4NOl1rdX00x+YuOLqNYAOGk2x7v+4PI4hx/SyW1Z3AEg9MeB87yYcQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz", + "integrity": "sha512-TcdNoQIWFoHblurqqU6d1ysopjq7UX0oRcT/hJ8qvBAELiYWn+Ugf0AXdnzISEJ7vuhNnQ98N8jR8Sh53x4IZg==", "dev": true }, "pretty-format": { @@ -12383,7 +12116,7 @@ "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "dev": true, "requires": { - "lodash": "4.17.4", + "lodash": "4.17.5", "react-deep-force-update": "1.1.1" } }, @@ -12643,7 +12376,7 @@ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "request-promise-native": { @@ -12692,13 +12425,10 @@ "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, - "requires": { - "path-parse": "1.0.5" - } + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true }, "resolve-cwd": { "version": "2.0.0", @@ -12820,7 +12550,7 @@ "dev": true, "requires": { "glob": "7.1.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "scss-tokenizer": "0.2.3", "yargs": "7.1.0" } @@ -13232,7 +12962,7 @@ "dev": true, "requires": { "debug": "2.3.3", - "engine.io": "1.8.4", + "engine.io": "1.8.5", "has-binary": "0.1.7", "object-assign": "4.1.0", "socket.io-adapter": "0.5.0", @@ -13300,7 +13030,7 @@ "component-bind": "1.0.0", "component-emitter": "1.2.1", "debug": "2.3.3", - "engine.io-client": "1.8.4", + "engine.io-client": "1.8.5", "has-binary": "0.1.7", "indexof": "0.0.1", "object-component": "0.0.3", @@ -13966,13 +13696,43 @@ "dev": true }, "style-loader": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz", - "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.20.1.tgz", + "integrity": "sha512-NtlwQOHQvUgEKuPs4JoUMQUkML8UNMxLbXM2JAZerIQVVVMgO5VVRjYQA8zzkpBu/X2OnTt+5ZKe8IbGk5TjRA==", "dev": true, "requires": { "loader-utils": "1.1.0", - "schema-utils": "0.3.0" + "schema-utils": "0.4.3" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "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 + }, + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1" + } + } } }, "subarg": { @@ -14009,9 +13769,9 @@ } }, "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "symbol-tree": { @@ -14029,7 +13789,7 @@ "ajv": "5.5.2", "ajv-keywords": "2.1.1", "chalk": "2.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -14197,13 +13957,6 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, - "to-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-descriptor/-/to-descriptor-1.0.1.tgz", - "integrity": "sha1-oOZ4w068fS2uRk2DcrwhR52cK80=", - "dev": true, - "optional": true - }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -14347,22 +14100,28 @@ } } }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", + "dev": true + }, "ts-jest": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-22.0.1.tgz", - "integrity": "sha512-bc781gViU95lRZF0kzkHiincwmVu96jbC8MFk2SXUCrSj3Zx8sMC6c6gJnIluVQkm8yYaBl5ucqLnwHNRl5l0Q==", + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-22.0.3.tgz", + "integrity": "sha512-6XSJpBUQwXOBgPnpKIZylx2Q4MOvSpngOj+iTevr0N4RpUT1iWBhdpMJkyjciQexlVkuMJNNOL1iZYBpLBkL4g==", "dev": true, "requires": { "babel-core": "6.26.0", "babel-plugin-istanbul": "4.1.5", "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-preset-jest": "22.1.0", + "babel-preset-jest": "22.2.0", "cpx": "1.5.0", "fs-extra": "4.0.3", - "jest-config": "22.1.3", + "jest-config": "22.2.1", "pkg-dir": "2.0.0", - "source-map-support": "0.5.2", - "yargs": "10.1.1" + "source-map-support": "0.5.3", + "yargs": "11.0.0" }, "dependencies": { "ansi-regex": { @@ -14421,9 +14180,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.2.tgz", - "integrity": "sha512-9zHceZbQwERaMK1MiFguvx1dL9GQPLXInr2D/wUxAsuV6ZKc9F0DHYWeloMcalkYRbtanwqUakoDjvj55cL/4A==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { "source-map": "0.6.1" @@ -14455,9 +14214,9 @@ "dev": true }, "yargs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.1.tgz", - "integrity": "sha512-7uRL1HZdCbc1QTP+X8mehOPuCYKC/XTaqAPj7gABLfTt6pgLyVRn3QVte4qhtilZouWCvqd1kipgMKl5tKsFiw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { "cliui": "4.0.0", @@ -14471,13 +14230,13 @@ "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "yargs-parser": "9.0.2" } }, "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -14486,9 +14245,9 @@ } }, "ts-loader": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-3.3.0.tgz", - "integrity": "sha512-2QcXFLrGFDgCe8t5oZj08CQ0IHG2jI2T8fwanxCuJ3lM7DRvoAQguleBCfj10PJpKJz7fUSIGxJhPybabAlh6g==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-3.5.0.tgz", + "integrity": "sha512-JTia3kObhTk36wPFgy0RnkZReiusYx7Le9IhcUWRrCTcFcr6Dy1zGsFd3x8DG4gevlbN65knI8W50FfoykXcng==", "dev": true, "requires": { "chalk": "2.3.0", @@ -14702,9 +14461,9 @@ "dev": true }, "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.1.tgz", + "integrity": "sha512-bqB1yS6o9TNA9ZC/MJxM0FZzPnZdtHj0xWK/IZ5khzVqdpGul/R/EIiHRgFXlwTD7PSIaYVnGKq1QgMCu2mnqw==", "dev": true }, "uglify-js": { @@ -15122,26 +14881,35 @@ "dev": true }, "vue-loader": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.0.tgz", - "integrity": "sha512-kDXRgglOOltghngrDFS/YfFew7e0d8fkvPHLYAfLgur7GW0cBt+J0fpBReWY2pixA09dL13abfE4fECyRH4HGg==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.1.tgz", + "integrity": "sha512-v6PbKMGl/hWHGPxB2uGHsA66vusrXF66J/h1QiFXtU6z5zVSK8jq5xl95M1p3QNXmuEJKNP3nxoXfbgQNs7hJg==", "dev": true, "requires": { "consolidate": "0.14.5", "hash-sum": "1.0.2", "loader-utils": "1.1.0", "lru-cache": "4.1.1", - "postcss": "6.0.16", + "postcss": "6.0.17", "postcss-load-config": "1.2.0", "postcss-selector-parser": "2.2.3", - "prettier": "1.10.1", + "prettier": "1.10.2", "resolve": "1.5.0", "source-map": "0.6.1", "vue-hot-reload-api": "2.2.4", - "vue-style-loader": "3.0.3", + "vue-style-loader": "3.1.2", "vue-template-es2015-compiler": "1.6.0" }, "dependencies": { + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -15161,9 +14929,9 @@ } }, "vue-style-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.3.tgz", - "integrity": "sha512-P/ihpaZKU23T1kq3E0y4c+F8sbm1HQO69EFYoLoGMSGVAHroHsGir/WQ9qUavP8dyFYHmXenzHaJ/nqd8vfaxw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", "dev": true, "requires": { "hash-sum": "1.0.2", @@ -15250,6 +15018,15 @@ } } }, + "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, + "requires": { + "browser-process-hrtime": "0.1.2" + } + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -15499,55 +15276,43 @@ } }, "webpack-bundle-analyzer": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.2.tgz", - "integrity": "sha1-Y+2G63HMTNqG9o5oWoRTC6ASZEk=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.10.0.tgz", + "integrity": "sha512-eA/9F/ZLFlVXfCLYqefHFbelJ3JcvyeFdmpAG6Vu3iJNcisj3KWNPqu00lCqK9caeaesipVrGb9alUSi2lEvAg==", "dev": true, "requires": { - "acorn": "5.1.1", - "chalk": "1.1.3", - "commander": "2.11.0", + "acorn": "5.4.1", + "bfj-node4": "5.2.0", + "chalk": "2.3.0", + "commander": "2.14.1", "ejs": "2.5.7", "express": "4.16.2", - "filesize": "3.5.11", - "gzip-size": "3.0.0", - "lodash": "4.17.4", + "filesize": "3.6.0", + "gzip-size": "4.1.0", + "lodash": "4.17.5", "mkdirp": "0.5.1", "opener": "1.4.3", "ws": "4.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "acorn": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", "dev": true } } }, "webpack-dashboard": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/webpack-dashboard/-/webpack-dashboard-1.0.2.tgz", - "integrity": "sha512-kcCKqELac+6Mv4M5wHRfUOnKRyTTu6Ucwy1lkoMGCQAEc5Zf0iCE1vh/Fi4WYM37yk2x+lJmsgKH99bhMIFFlA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webpack-dashboard/-/webpack-dashboard-1.1.1.tgz", + "integrity": "sha512-vcPhjHto2S3+GpOdbOajKdxS82PQov2V8+d06lHq3vmvjD4HwaqSnE9KQwIEZfUcwVEjM1N7C8ktRJrDOD6yiw==", "dev": true, "requires": { "babel-core": "6.26.0", @@ -15559,11 +15324,11 @@ "chalk": "1.1.3", "commander": "2.11.0", "cross-spawn": "4.0.2", - "filesize": "3.5.11", + "filesize": "3.6.0", "handlebars": "4.0.10", "inspectpack": "2.2.2", - "lodash": "4.17.4", - "most": "1.7.2", + "lodash": "4.17.5", + "most": "1.7.3", "socket.io": "1.7.4", "socket.io-client": "1.7.4" }, @@ -16148,9 +15913,9 @@ "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=", + "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 }, "xmlhttprequest-ssl": { diff --git a/package.json b/package.json index 83b85e2..c24a917 100644 --- a/package.json +++ b/package.json @@ -44,19 +44,19 @@ "mapCoverage": true }, "dependencies": { - "lodash-es": "^4.17.4" + "lodash-es": "^4.17.5" }, "devDependencies": { - "@types/jest": "^22.0.1", - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", + "@types/jest": "^22.1.1", + "ajv": "^6.1.1", + "ajv-keywords": "^3.1.0", "autoprefixer": "^7.2.5", "av-ts": "^0.9.2", "awesome-typescript-loader": "^3.4.1", "babel-cli": "^6.26.0", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", - "babel-minify-webpack-plugin": "^0.2.0", + "babel-minify-webpack-plugin": "^0.3.0", "babel-plugin-app-require": "^1.1.0", "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", "babel-plugin-transform-es2015-classes": "^6.24.1", @@ -78,32 +78,32 @@ "babel-preset-stage-3": "^6.24.1", "cross-env": "^5.1.3", "css-loader": "^0.28.9", - "eslint": "^4.16.0", + "eslint": "^4.17.0", "extract-text-webpack-plugin": "^3.0.2", "file-loader": "^1.1.6", - "jest": "^22.1.4", - "lodash": "^4.17.4", + "jest": "^22.2.1", + "lodash": "^4.17.5", "node-sass": "^4.7.2", "optimize-css-assets-webpack-plugin": "^3.2.0", - "postcss": "^6.0.16", - "postcss-loader": "^2.0.10", + "postcss": "^6.0.17", + "postcss-loader": "^2.1.0", "rimraf": "^2.6.2", "sass-loader": "^6.0.6", "standard-version": "^4.3.0", - "style-loader": "^0.19.1", - "ts-jest": "^22.0.1", - "ts-loader": "^3.3.0", - "typescript": "^2.6.2", + "style-loader": "^0.20.1", + "ts-jest": "^22.0.3", + "ts-loader": "^3.5.0", + "typescript": "^2.7.1", "url-loader": "^0.6.2", "vue": "^2.5.13", "vue-class-component": "^6.1.2", - "vue-loader": "^13.7.0", + "vue-loader": "^13.7.1", "vue-property-decorator": "^6.0.0", "vue-template-compiler": "^2.5.13", "vue-ts-loader": "0.0.3", "webpack": "^3.10.0", - "webpack-bundle-analyzer": "^2.9.2", - "webpack-dashboard": "^1.0.2", + "webpack-bundle-analyzer": "^2.10.0", + "webpack-dashboard": "^1.1.1", "webpack-dev-server": "^2.11.1" }, "repository": { diff --git a/src/classes/VTransmitFile.d.ts b/src/classes/VTransmitFile.d.ts deleted file mode 100644 index 215d275..0000000 --- a/src/classes/VTransmitFile.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -export interface IUploadStats { - bytesSent: number; - progress: number; - total: number; - speed: ISpeedStats; - start: number; - end: number; - time: number; -} -export interface ISpeedStats { - kbps: number; - mbps: number; -} -declare class VTransmitFile { - private _nativeFile; - id: string; - accepted: boolean; - lastModified: number; - lastModifiedDate: Date; - name: string; - processing: boolean; - size: number; - status: string; - type: string; - upload: IUploadStats; - webkitRelativePath: USVString; - width: number; - height: number; - xhr: XMLHttpRequest; - private _dataUrl; - errorMessage: string; - constructor(...data: object[]); - set(...data: object[]): VTransmitFile; - copyNativeFile(file: File): VTransmitFile; - copyOwnAndInheritedProps(...data: object[]): VTransmitFile; - handleProgress(e: ProgressEvent): void; - startProgress(): VTransmitFile; - endProgress(): VTransmitFile; - nativeFile: File; - dataUrl: string; - static fromNativeFile(file: File, ...data: any[]): VTransmitFile; - static idFactory(): string; -} -export default VTransmitFile; diff --git a/src/classes/VTransmitFile.ts b/src/classes/VTransmitFile.ts index e0b85d5..45d2bfa 100644 --- a/src/classes/VTransmitFile.ts +++ b/src/classes/VTransmitFile.ts @@ -1,148 +1,148 @@ import { - copyOwnAndInheritedProps, - uniqueId, - round, - toKbps, - toMbps, -} from "../core/utils" -import { UploadStatuses } from "../core/utils" + copyOwnAndInheritedProps, + uniqueId, + round, + toKbps, + toMbps, +} from "../core/utils"; +import { UploadStatuses } from "../core/utils"; export interface UploadStats { - bytesSent: number - progress: number - total: number - speed: SpeedStats - start: number - end: number - time: number + bytesSent: number; + progress: number; + total: number; + speed: SpeedStats; + start: number; + end: number; + time: number; } export interface SpeedStats { - kbps: number - mbps: number + kbps: number; + mbps: number; } export class VTransmitFile { - private _nativeFile: File = null - private _dataUrl: string - public id: string = VTransmitFile.idFactory() - public accepted: boolean = undefined // Passed all validation. - public lastModified: number = undefined - public lastModifiedDate: Date = undefined - public name: string = undefined - public processing: boolean = undefined - public size: number = undefined - public status: UploadStatuses = undefined - public type: string = undefined - public upload: UploadStats = { - bytesSent: 0, - progress: 0, - total: 0, - speed: { - kbps: undefined, - mbps: undefined, - }, - start: undefined, - end: undefined, - time: undefined, - } - public webkitRelativePath: USVString = undefined - public width: number = undefined - public height: number = undefined - public errorMessage: string = undefined - public adapterData: { [key: string]: any } = {} - - constructor(...data: object[]) { - Object.assign(this, ...data) - } - - set(...data: object[]): VTransmitFile { - return Object.assign(this, ...data) - } - - copyNativeFile(file: File): VTransmitFile { - // save reference for upload - this.nativeFile = file - // Copy props to normal object for Vue reactivity. - // Vue cannot define reactive properties on native file's readonly props. - return this.set(copyOwnAndInheritedProps(file)) - } - - copyOwnAndInheritedProps(...data: object[]): VTransmitFile { - return this.set(...data.map(copyOwnAndInheritedProps)) - } - - handleProgress(e: ProgressEvent): void { - this.startProgress() - const total = e.total || this.upload.total - this.upload.progress = Math.min(100, 100 * e.loaded / total) - this.upload.bytesSent = e.loaded - this.upload.total = total - this.upload.time = (Date.now() - this.upload.start) / 1000 - // Recalc the upload speed in bytes/sec - this.upload.speed.kbps = round( - toKbps(this.upload.bytesSent, this.upload.time) - ) - this.upload.speed.mbps = round( - toMbps(this.upload.bytesSent, this.upload.time) - ) - if (this.upload.progress === 100) { - this.endProgress() - } - } - - startProgress(): VTransmitFile { - // Avoid starting twice - if (typeof this.upload.start !== "number") { - this.upload.start = Date.now() - } - return this - } - - endProgress(): VTransmitFile { - // Avoid ending twice - if (typeof this.upload.end !== "number") { - this.upload.end = Date.now() - this.upload.time = (Date.now() - this.upload.start) / 1000 - } - return this - } - - get nativeFile() { - return this._nativeFile - } - - set nativeFile(file: File) { - if (!(file instanceof File)) { - throw new TypeError( - `[${VTransmitFile.name}] Expected an instance of File (native).` - ) - } - this._nativeFile = file - this.upload.total = file.size - } - - get dataUrl() { - return this._dataUrl || "" - } - - set dataUrl(value) { - // Use non-enumerable data url to avoid copying around large datasets - Object.defineProperty(this, "_dataUrl", { - value, - enumerable: false, - configurable: true, - writable: true, - }) - } - - static fromNativeFile(file: File, ...data) { - const instance = new VTransmitFile(...data) - instance.copyNativeFile(file) - return instance - } - - static idFactory() { - return uniqueId("v-transmit-file-") - } + private _nativeFile: File | null = null; + private _dataUrl?: string; + public id: string = VTransmitFile.idFactory(); + public accepted?: boolean = undefined; // Passed all validation. + public lastModified?: number = undefined; + public lastModifiedDate?: Date = undefined; + public name?: string = undefined; + public processing?: boolean = undefined; + public size?: number = undefined; + public status?: UploadStatuses = undefined; + public type?: string = undefined; + public upload: UploadStats = { + bytesSent: 0, + progress: 0, + total: 0, + speed: { + kbps: 0, + mbps: 0, + }, + start: 0, + end: 0, + time: 0, + }; + public webkitRelativePath?: USVString = undefined; + public width?: number = undefined; + public height?: number = undefined; + public errorMessage?: string = undefined; + public adapterData: { [key: string]: any } = {}; + + constructor(...data: object[]) { + Object.assign(this, ...data); + } + + set(...data: object[]): VTransmitFile { + return Object.assign(this, ...data); + } + + copyNativeFile(file: File): VTransmitFile { + // save reference for upload + this.nativeFile = file; + // Copy props to normal object for Vue reactivity. + // Vue cannot define reactive properties on native file's readonly props. + return this.set(copyOwnAndInheritedProps(file)); + } + + copyOwnAndInheritedProps(...data: object[]): VTransmitFile { + return this.set(...data.map(copyOwnAndInheritedProps)); + } + + handleProgress(e: ProgressEvent): void { + this.startProgress(); + const total = e.total || this.upload.total; + this.upload.progress = Math.min(100, 100 * e.loaded / total); + this.upload.bytesSent = e.loaded; + this.upload.total = total; + this.upload.time = (Date.now() - this.upload.start) / 1000; + // Recalc the upload speed in bytes/sec + this.upload.speed.kbps = round( + toKbps(this.upload.bytesSent, this.upload.time) + ); + this.upload.speed.mbps = round( + toMbps(this.upload.bytesSent, this.upload.time) + ); + if (this.upload.progress === 100) { + this.endProgress(); + } + } + + startProgress(): VTransmitFile { + // Avoid starting twice + if (typeof this.upload.start !== "number") { + this.upload.start = Date.now(); + } + return this; + } + + endProgress(): VTransmitFile { + // Avoid ending twice + if (typeof this.upload.end !== "number") { + this.upload.end = Date.now(); + this.upload.time = (Date.now() - this.upload.start) / 1000; + } + return this; + } + + get nativeFile(): File | null { + return this._nativeFile; + } + + set nativeFile(file: File | null) { + if (!(file instanceof File)) { + throw new TypeError( + `[${VTransmitFile.name}] Expected an instance of File (native).` + ); + } + this._nativeFile = file; + this.upload.total = file.size; + } + + get dataUrl() { + return this._dataUrl || ""; + } + + set dataUrl(value) { + // Use non-enumerable data url to avoid copying around large datasets + Object.defineProperty(this, "_dataUrl", { + value, + enumerable: false, + configurable: true, + writable: true, + }); + } + + static fromNativeFile(file: File, ...data) { + const instance = new VTransmitFile(...data); + instance.copyNativeFile(file); + return instance; + } + + static idFactory() { + return uniqueId("v-transmit-file-"); + } } diff --git a/src/components/VueTransmit.vue b/src/components/VueTransmit.vue index 1cdfcb6..c2b16b5 100644 --- a/src/components/VueTransmit.vue +++ b/src/components/VueTransmit.vue @@ -1,883 +1,958 @@ diff --git a/src/core/utils.d.ts b/src/core/utils.d.ts deleted file mode 100644 index f45b481..0000000 --- a/src/core/utils.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import VTransmitFile from "../classes/VTransmitFile"; -export declare const assign: { - (target: T, source: U): T & U; - (target: T, source1: U, source2: V): T & U & V; - (target: T, source1: U, source2: V, source3: W): T & U & V & W; - (target: object, ...sources: any[]): any; -}; -export declare const defineProperty: { - (o: any, p: string, attributes: PropertyDescriptor & ThisType): any; - (o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -}; -export declare function uniqueId(prefix: string): string; -export declare function copyOwnAndInheritedProps(obj: object): object; -export declare type Rounding = "round" | "ceil" | "floor" | "trunc"; -export declare function round(number: number, decimals?: number, roundStyle?: Rounding): number; -export declare function fromBytesToKbit(bytes: number): number; -export declare function fromBytesToMbit(bytes: number): number; -export declare function toKbps(bytes: number, seconds: number): number; -export declare function toMbps(bytes: number, seconds: number): number; -export declare const hbsRegex: RegExp; -export declare function hbsReplacer(context?: object): (match: string, capture: string) => any; -export declare function objFactory(): {}; -export declare function scaleH(ratio: number, width: number): number; -export declare function scaleW(ratio: number, height: number): number; -export declare function scaleDims(ratio: number, width?: number, height?: number): number[]; -export interface IDrawImageArgs { - sx: number; - sy: number; - sWidth: number; - sHeight: number; - dx: number; - dy: number; - dWidth: number; - dHeight: number; -} -export interface IDimensions { - width: number; - height: number; -} -export declare function resizeImg(file: VTransmitFile, dims: IDimensions): IDrawImageArgs; -export declare function webkitIsFile(entry: WebKitFileEntry | WebKitDirectoryEntry): entry is WebKitFileEntry; -export declare function webkitIsDir(entry: WebKitFileEntry | WebKitDirectoryEntry): entry is WebKitDirectoryEntry; diff --git a/src/core/utils.ts b/src/core/utils.ts index 767d199..1a29532 100644 --- a/src/core/utils.ts +++ b/src/core/utils.ts @@ -1,178 +1,171 @@ -import { VTransmitFile } from "../classes/VTransmitFile" +import { VTransmitFile } from "../classes/VTransmitFile"; -let idCounter = 0 +let idCounter = 0; export function uniqueId(prefix: string): string { - return prefix + ++idCounter + return prefix + ++idCounter; } export function copyOwnAndInheritedProps(obj: object): object { - let newData = {} - for (let prop in obj) { - if (typeof obj[prop] !== "function") { - newData[prop] = obj[prop] - } - } - return newData + let newData = {}; + for (let prop in obj) { + if (typeof obj[prop] !== "function") { + newData[prop] = obj[prop]; + } + } + return newData; } -export type Rounding = "round" | "ceil" | "floor" | "trunc" +export type Rounding = "round" | "ceil" | "floor" | "trunc"; export function round( - number: number, - decimals: number = 2, - roundStyle: Rounding = "round" + number: number, + decimals: number = 2, + roundStyle: Rounding = "round" ) { - const roundingFactor = Math.pow(10, decimals) - return Math[roundStyle](number * roundingFactor) / roundingFactor + const roundingFactor = Math.pow(10, decimals); + return Math[roundStyle](number * roundingFactor) / roundingFactor; } export function fromBytesToKbit(bytes: number): number { - return bytes / 125 + return bytes / 125; } export function fromBytesToMbit(bytes: number): number { - return bytes / 125000 + return bytes / 125000; } export function toKbps(bytes: number, seconds: number): number { - return fromBytesToKbit(bytes) / seconds + return fromBytesToKbit(bytes) / seconds; } export function toMbps(bytes: number, seconds: number): number { - return fromBytesToMbit(bytes) / seconds + return fromBytesToMbit(bytes) / seconds; } export function objFactory() { - return {} + return {}; } export function scaleH(ratio: number, width: number): number { - return width / ratio + return width / ratio; } export function scaleW(ratio: number, height: number): number { - return height * ratio -} - -export function scaleDims( - ratio: number, - width?: number, - height?: number -): number[] { - return typeof width === "number" - ? [width, scaleH(ratio, width)] - : [scaleW(ratio, height), height] + return height * ratio; } export enum UploadStatuses { - Added = "added", - Queued = "queued", - Accepted = "queued", - Uploading = "uploading", - Canceled = "canceled", - Error = "error", - Timeout = "timeout", - Success = "success", + Added = "added", + Queued = "queued", + Accepted = "queued", + Uploading = "uploading", + Canceled = "canceled", + Error = "error", + Timeout = "timeout", + Success = "success", } export enum VTransmitEvents { - Initialize = "initialize", - AddedFile = "added-file", - AddedFiles = "added-files", - RemovedFile = "removed-file", - AcceptedFile = "accepted-file", - RejectedFile = "rejected-file", - AcceptComplete = "accept-complete", - Thumbnail = "thumbnail", - Processing = "processing", - ProcessingMultiple = "processing-multiple", - Canceled = "canceled", - CanceledMultiple = "canceled-multiple", - Sending = "sending", - SendingMultiple = "sending-multiple", - Timeout = "timeout", - TimeoutMultiple = "timeout-multiple", - UploadProgress = "upload-progress", - TotalUploadProgress = "total-upload-progress", - Success = "success", - SuccessMultiple = "success-multiple", - QueueComplete = "queue-complete", - Complete = "complete", - CompleteMultiple = "complete-multiple", - Error = "error", - ErrorMultiple = "error-multiple", - MaxFilesReached = "max-files-reached", - MaxFilesExceeded = "max-files-exceeded", - Reset = "reset", - DragOver = "drag-over", - DragEnter = "drag-enter", - DragLeave = "drag-leave", - DragEnd = "drag-end", - Drop = "drop", - Paste = "paste", + Initialize = "initialize", + AddedFile = "added-file", + AddedFiles = "added-files", + RemovedFile = "removed-file", + AcceptedFile = "accepted-file", + RejectedFile = "rejected-file", + AcceptComplete = "accept-complete", + Thumbnail = "thumbnail", + Processing = "processing", + ProcessingMultiple = "processing-multiple", + Canceled = "canceled", + CanceledMultiple = "canceled-multiple", + Sending = "sending", + SendingMultiple = "sending-multiple", + Timeout = "timeout", + TimeoutMultiple = "timeout-multiple", + UploadProgress = "upload-progress", + TotalUploadProgress = "total-upload-progress", + Success = "success", + SuccessMultiple = "success-multiple", + QueueComplete = "queue-complete", + Complete = "complete", + CompleteMultiple = "complete-multiple", + Error = "error", + ErrorMultiple = "error-multiple", + MaxFilesReached = "max-files-reached", + MaxFilesExceeded = "max-files-exceeded", + Reset = "reset", + DragOver = "drag-over", + DragEnter = "drag-enter", + DragLeave = "drag-leave", + DragEnd = "drag-end", + Drop = "drop", + Paste = "paste", } export interface DrawImageArgs { - sx: number - sy: number - sWidth: number - sHeight: number - dx: number - dy: number - dWidth: number - dHeight: number + sx: number; + sy: number; + sWidth: number; + sHeight: number; + dx: number; + dy: number; + dWidth: number; + dHeight: number; } export interface Dimensions { - width: number - height: number + width: number; + height: number; } export function resizeImg( - file: VTransmitFile, - dims: Dimensions + file: VTransmitFile, + dims: Dimensions ): DrawImageArgs { - // Extract the object's primitive values so we don't mutate the input - const sRatio = file.width / file.height - const dRatio = dims.width / dims.height - const coords: DrawImageArgs = { - sx: 0, - sy: 0, - sWidth: file.width, - sHeight: file.height, - dx: 0, - dy: 0, - dWidth: dims.width, - dHeight: dims.height, - } - - let w, h - if (dRatio > sRatio) { - ;[w, h] = scaleDims(dRatio, file.width) - } else { - ;[w, h] = scaleDims(dRatio, undefined, file.height) - } - - if (w < file.width) { - coords.sx = (file.width - w) / 2 - coords.sWidth = w - } - if (h < file.height) { - coords.sy = (file.height - h) / 2 - coords.sHeight = h - } - - return coords + if (!file.width || !file.height) { + throw Error("File width/height is missing."); + } + // Extract the object's primitive values so we don't mutate the input + const sRatio = file.width / file.height; + const dRatio = dims.width / dims.height; + const coords: DrawImageArgs = { + sx: 0, + sy: 0, + sWidth: file.width, + sHeight: file.height, + dx: 0, + dy: 0, + dWidth: dims.width, + dHeight: dims.height, + }; + + let w, h; + if (dRatio > sRatio) { + [w, h] = [file.width, scaleH(dRatio, file.width)]; + } else { + [w, h] = [scaleW(dRatio, file.height), file.height]; + } + + if (w < file.width) { + coords.sx = (file.width - w) / 2; + coords.sWidth = w; + } + if (h < file.height) { + coords.sy = (file.height - h) / 2; + coords.sHeight = h; + } + + return coords; } export function webkitIsFile( - entry: WebKitFileEntry | WebKitDirectoryEntry + entry: WebKitFileEntry | WebKitDirectoryEntry ): entry is WebKitFileEntry { - return entry.isFile + return entry.isFile; } export function webkitIsDir( - entry: WebKitFileEntry | WebKitDirectoryEntry + entry: WebKitFileEntry | WebKitDirectoryEntry ): entry is WebKitDirectoryEntry { - return entry.isDirectory + return entry.isDirectory; } diff --git a/src/global.d.ts b/src/global.d.ts index febfb15..00032e8 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -3,6 +3,6 @@ // Definitions by: [Alex Regan] <[https://github.com/alexsasharegan/]> declare module "*.vue" { - import Vue from "vue" - export default Vue + import Vue from "vue"; + export default Vue; } diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index c2abdc8..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import VueTransmit from "./components/VueTransmit.vue"; -export { VueTransmit }; diff --git a/src/upload-adapters/xhr.ts b/src/upload-adapters/xhr.ts index 5445f48..c6e9422 100644 --- a/src/upload-adapters/xhr.ts +++ b/src/upload-adapters/xhr.ts @@ -1,14 +1,14 @@ -import { VTransmitFile } from "../classes/VTransmitFile" -import { VTransmitUploadContext } from "../classes/VTransmitUploadContext" +import { VTransmitFile } from "../classes/VTransmitFile"; +import { VTransmitUploadContext } from "../classes/VTransmitUploadContext"; import { - UploaderInterface, - UploadResolve, - UploadReject, -} from "../core/interfaces" + UploaderInterface, + UploadResolve, + UploadReject, +} from "../core/interfaces"; import { - VTransmitEvents as Events, - UploadStatuses as Statuses, -} from "../core/utils" + VTransmitEvents as Events, + UploadStatuses as Statuses, +} from "../core/utils"; /** * Responsibilities: @@ -22,270 +22,275 @@ import { */ export type XHRUploadOptions = { - /** - * A string representing the URL to send the request to. - */ - url: string - /** - * The HTTP method to use, such as "GET", "POST", "PUT", "DELETE", etc. Ignored for non-HTTP(S) URLs. - */ - method?: string - /** - * The XMLHttpRequest.withCredentials property is a Boolean that indicates whether or not - * cross-site Access-Control requests should be made using credentials such as - * cookies, authorization headers or TLS client certificates. - * Setting withCredentials has no effect on same-site requests. - */ - withCredentials?: boolean - /** - * The XMLHttpRequest.timeout property is an unsigned long representing - * the number of milliseconds a request can take before automatically being terminated. - * The default value is 0, which means there is no timeout. - * Timeout shouldn't be used for synchronous XMLHttpRequests requests used in a document environment - * or it will throw an InvalidAccessError exception. When a timeout happens, a timeout event is fired. - */ - timeout?: number - /** - * The name of the file param that gets transferred. - */ - paramName?: string - /** - * An object of additional parameters to transfer to the server. - * This is the same as adding hidden input fields in the form element. - */ - params?: { [key: string]: any } - headers?: { [key: string]: any } - /** - * The XMLHttpRequest.responseType property is an enumerated value that returns the type of response. - * It also lets the author change the response type. - * If an empty string is set as the value of responseType, the default value text will be used. - * - * Setting the value of responseType to "document" is ignored if done in a Worker environment. - * When setting responseType to a particular value, - * the author should make sure that the server is actually sending a response compatible to that format. - * If the server returns data that is not compatible to the responseType that was set, - * the value of response will be null. - * Also, setting responseType for synchronous requests will throw an InvalidAccessError exception. - */ - responseType?: XMLHttpRequestResponseType - /** - * responseParseFunc is a function that given an XMLHttpRequest - * returns a response object. Allows for custom response parsing. - */ - responseParseFunc?: (xhr: XMLHttpRequest) => UploadResolve - errUploadError?: (xhr: XMLHttpRequest) => string - errUploadTimeout?: (xhr: XMLHttpRequest) => string - renameFile?: (name: string) => string -} + /** + * A string representing the URL to send the request to. + */ + url: string; + /** + * The HTTP method to use, such as "GET", "POST", "PUT", "DELETE", etc. Ignored for non-HTTP(S) URLs. + */ + method?: string; + /** + * The XMLHttpRequest.withCredentials property is a Boolean that indicates whether or not + * cross-site Access-Control requests should be made using credentials such as + * cookies, authorization headers or TLS client certificates. + * Setting withCredentials has no effect on same-site requests. + */ + withCredentials?: boolean; + /** + * The XMLHttpRequest.timeout property is an unsigned long representing + * the number of milliseconds a request can take before automatically being terminated. + * The default value is 0, which means there is no timeout. + * Timeout shouldn't be used for synchronous XMLHttpRequests requests used in a document environment + * or it will throw an InvalidAccessError exception. When a timeout happens, a timeout event is fired. + */ + timeout?: number; + /** + * The name of the file param that gets transferred. + */ + paramName?: string; + /** + * An object of additional parameters to transfer to the server. + * This is the same as adding hidden input fields in the form element. + */ + params?: { [key: string]: any }; + headers?: { [key: string]: any }; + /** + * The XMLHttpRequest.responseType property is an enumerated value that returns the type of response. + * It also lets the author change the response type. + * If an empty string is set as the value of responseType, the default value text will be used. + * + * Setting the value of responseType to "document" is ignored if done in a Worker environment. + * When setting responseType to a particular value, + * the author should make sure that the server is actually sending a response compatible to that format. + * If the server returns data that is not compatible to the responseType that was set, + * the value of response will be null. + * Also, setting responseType for synchronous requests will throw an InvalidAccessError exception. + */ + responseType?: XMLHttpRequestResponseType; + /** + * responseParseFunc is a function that given an XMLHttpRequest + * returns a response object. Allows for custom response parsing. + */ + responseParseFunc?: (xhr: XMLHttpRequest) => UploadResolve; + errUploadError?: (xhr: XMLHttpRequest) => string; + errUploadTimeout?: (xhr: XMLHttpRequest) => string; + renameFile?: (name: string) => string; +}; export type UploadGroup = { - id: number - files: VTransmitFile[] - xhr: XMLHttpRequest -} + id: number; + files: VTransmitFile[]; + xhr: XMLHttpRequest; +}; -let GroupID = 0 +let GroupID = 0; export class XHRUploadAdapter implements UploaderInterface { - public url: string - public method: string = "post" - public withCredentials: boolean = false - public timeout: number = 0 - public paramName: string = "file" - public params: { [key: string]: any } = Object.create(null) - public headers: { [key: string]: any } = { - Accept: "application/json", - "Cache-Control": "no-cache", - "X-Requested-With": "XMLHttpRequest", - } - public responseType: XMLHttpRequestResponseType = "" - public errUploadError: (xhr: XMLHttpRequest) => string = xhr => - `Error during upload: ${xhr.statusText} [${xhr.status}]` - public errUploadTimeout: (xhr: XMLHttpRequest) => string = _xhr => - `Error during upload: the server timed out.` - public renameFile: (name: string) => string = name => name - public responseParseFunc?: (xhr: XMLHttpRequest) => UploadResolve - private uploadGroups: { [key: number]: UploadGroup } = Object.create(null) + public url: string = ""; + public method: string = "post"; + public withCredentials: boolean = false; + public timeout: number = 0; + public paramName: string = "file"; + public params: { [key: string]: any } = Object.create(null); + public headers: { [key: string]: any } = { + Accept: "application/json", + "Cache-Control": "no-cache", + "X-Requested-With": "XMLHttpRequest", + }; + public responseType: XMLHttpRequestResponseType = ""; + public errUploadError: (xhr: XMLHttpRequest) => string = xhr => + `Error during upload: ${xhr.statusText} [${xhr.status}]`; + public errUploadTimeout: (xhr: XMLHttpRequest) => string = _xhr => + `Error during upload: the server timed out.`; + public renameFile: (name: string) => string = name => name; + public responseParseFunc?: (xhr: XMLHttpRequest) => UploadResolve; + private uploadGroups: { [key: number]: UploadGroup } = Object.create(null); - constructor( - public context: VTransmitUploadContext, - options: XHRUploadOptions - ) { - Object.assign(this, options) - } + constructor( + public context: VTransmitUploadContext, + options: XHRUploadOptions + ) { + Object.assign(this, options); + } - uploadFiles(files: VTransmitFile[]): Promise { - return new Promise((resolve, reject: (reason: UploadReject) => void) => { - if (!this.url) { - throw new Error(`[Vue-Transmit] Missing upload URL.`) - } + uploadFiles(files: VTransmitFile[]): Promise { + return new Promise((resolve, reject: (reason: UploadReject) => void) => { + if (!this.url) { + throw new Error(`[Vue-Transmit] Missing upload URL.`); + } - const xhr = new XMLHttpRequest() - const updateProgress = this.handleUploadProgress(files) - const id = GroupID++ + const xhr = new XMLHttpRequest(); + const updateProgress = this.handleUploadProgress(files); + const id = GroupID++; - this.uploadGroups[id] = { id, xhr, files } + this.uploadGroups[id] = { id, xhr, files }; - for (const file of files) { - file.adapterData.groupID = id - file.startProgress() - } + for (const file of files) { + file.adapterData.groupID = id; + file.startProgress(); + } - xhr.open(this.method, this.url, true) - // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8 - xhr.timeout = this.timeout - xhr.withCredentials = Boolean(this.withCredentials) - xhr.responseType = this.responseType + xhr.open(this.method, this.url, true); + // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8 + xhr.timeout = this.timeout; + xhr.withCredentials = Boolean(this.withCredentials); + xhr.responseType = this.responseType; - xhr.addEventListener("error", () => { - this.rmGroup(id) - reject({ - event: Events.Error, - message: this.errUploadError(xhr), - xhr, - }) - }) - xhr.upload.addEventListener("progress", updateProgress) - xhr.addEventListener("timeout", () => { - this.rmGroup(id) - reject({ - event: Events.Timeout, - message: this.errUploadTimeout(xhr), - xhr, - }) - }) - xhr.addEventListener("load", _ => { - if ( - files[0].status === Statuses.Canceled || - xhr.readyState !== XMLHttpRequest.DONE - ) { - return - } + xhr.addEventListener("error", () => { + this.rmGroup(id); + reject({ + event: Events.Error, + message: this.errUploadError(xhr), + xhr, + }); + }); + xhr.upload.addEventListener("progress", updateProgress); + xhr.addEventListener("timeout", () => { + this.rmGroup(id); + reject({ + event: Events.Timeout, + message: this.errUploadTimeout(xhr), + xhr, + }); + }); + xhr.addEventListener("load", _ => { + if ( + files[0].status === Statuses.Canceled || + xhr.readyState !== XMLHttpRequest.DONE + ) { + return; + } - // The XHR is complete, so remove the group - this.rmGroup(id) + // The XHR is complete, so remove the group + this.rmGroup(id); - let response = {} - if (this.responseParseFunc) { - response = this.responseParseFunc(xhr) - } else { - Object.assign(response, xhr.response) + let response = {}; + if (this.responseParseFunc) { + response = this.responseParseFunc(xhr); + } else { + Object.assign(response, xhr.response); - if (!xhr.responseType) { - let contentType = xhr.getResponseHeader("content-type") - if (contentType && contentType.indexOf("application/json") > -1) { - try { - response = JSON.parse(xhr.responseText) - } catch (err) { - return reject({ - message: "Invalid JSON response from server.", - event: Events.Error, - error: err, - }) - } - } - } - } + if (!xhr.responseType) { + let contentType = xhr.getResponseHeader("content-type"); + if (contentType && contentType.indexOf("application/json") > -1) { + try { + response = JSON.parse(xhr.responseText); + } catch (err) { + return reject({ + message: "Invalid JSON response from server.", + event: Events.Error, + error: err, + }); + } + } + } + } - // Called at load (when complete) will enable all the progress done logic. - updateProgress() - if (xhr.status < 200 || xhr.status >= 300) { - return reject({ - event: Events.Error, - message: `The server responded with code ${xhr.status} (${ - xhr.statusText - }).`, - xhr, - }) - } + // Called at load (when complete) will enable all the progress done logic. + updateProgress(); + if (xhr.status < 200 || xhr.status >= 300) { + return reject({ + event: Events.Error, + message: `The server responded with code ${xhr.status} (${ + xhr.statusText + }).`, + xhr, + }); + } - return resolve(response) - }) + return resolve(response); + }); - // Use null proto obj for the following 'for in' loop without hasOwnProperty check - const headers = Object.assign(Object.create(null), this.headers) - for (const headerName in headers) { - if (headers[headerName]) { - xhr.setRequestHeader(headerName, headers[headerName]) - } - } + // Use null proto obj for the following 'for in' loop without hasOwnProperty check + const headers = Object.assign(Object.create(null), this.headers); + for (const headerName in headers) { + if (headers[headerName]) { + xhr.setRequestHeader(headerName, headers[headerName]); + } + } - const formData = new FormData() - for (const key in this.params) { - formData.append(key, this.params[key]) - } + const formData = new FormData(); + for (const key in this.params) { + formData.append(key, this.params[key]); + } - for (const file of files) { - this.context.emit(Events.Sending, file, xhr, formData) - } - if (this.context.props.uploadMultiple) { - this.context.emit(Events.SendingMultiple, files, xhr, formData) - } + for (const file of files) { + this.context.emit(Events.Sending, file, xhr, formData); + } + if (this.context.props.uploadMultiple) { + this.context.emit(Events.SendingMultiple, files, xhr, formData); + } - for (let i = 0; i < files.length; i++) { - formData.append( - this.getParamName(i), - files[i].nativeFile, - this.renameFile(files[i].name) - ) - } + let file: File | null; + for (let i = 0; i < files.length; i++) { + file = files[i].nativeFile; + if (!file) { + continue; + } + formData.append( + this.getParamName(i), + file, + this.renameFile(files[i].name || "") + ); + } - xhr.send(formData) - }) - } + xhr.send(formData); + }); + } - handleUploadProgress(files): (e?: ProgressEvent) => void { - const vm = this.context.vtransmit - return function onProgressFn(e?: ProgressEvent): void { - if (!(e instanceof ProgressEvent)) { - let allFilesFinished = true - for (const file of files) { - if ( - file.upload.progress !== 100 || - file.upload.bytesSent !== file.upload.total - ) { - allFilesFinished = false - } - file.upload.progress = 100 - file.upload.bytesSent = file.upload.total - file.endProgress() - } - if (allFilesFinished) { - return - } - } + handleUploadProgress(files): (e?: ProgressEvent) => void { + const vm = this.context.vtransmit; + return function onProgressFn(e?: ProgressEvent): void { + if (!(e instanceof ProgressEvent)) { + let allFilesFinished = true; + for (const file of files) { + if ( + file.upload.progress !== 100 || + file.upload.bytesSent !== file.upload.total + ) { + allFilesFinished = false; + } + file.upload.progress = 100; + file.upload.bytesSent = file.upload.total; + file.endProgress(); + } + if (allFilesFinished) { + return; + } + } - for (const file of files) { - file.handleProgress(e) - vm.$emit( - Events.UploadProgress, - file, - file.upload.progress, - file.upload.bytesSent - ) - } - } - } + for (const file of files) { + file.handleProgress(e); + vm.$emit( + Events.UploadProgress, + file, + file.upload.progress, + file.upload.bytesSent + ); + } + }; + } - getParamName(index): string { - return ( - this.paramName + (this.context.props.uploadMultiple ? `[${index}]` : "") - ) - } + getParamName(index): string { + return ( + this.paramName + (this.context.props.uploadMultiple ? `[${index}]` : "") + ); + } - cancelUpload(file: VTransmitFile): VTransmitFile[] { - let group = this.uploadGroups[file.adapterData.groupID] - if (!group) { - return [] - } + cancelUpload(file: VTransmitFile): VTransmitFile[] { + let group = this.uploadGroups[file.adapterData.groupID]; + if (!group) { + return []; + } - group.xhr.abort() - this.rmGroup(file.adapterData.groupID) + group.xhr.abort(); + this.rmGroup(file.adapterData.groupID); - return [...group.files] - } + return [...group.files]; + } - rmGroup(id: number) { - this.uploadGroups[id] = undefined - } + rmGroup(id: number) { + delete this.uploadGroups[id]; + } } diff --git a/tsconfig.json b/tsconfig.json index 31dcabe..c3853d1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,28 @@ { - "compileOnSave": false, - "compilerOptions": { - "allowSyntheticDefaultImports": true, - "lib": ["dom", "es2015", "es2016", "es2017"], - "jsx": "preserve", - "target": "esnext", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "allowJs": false, - "experimentalDecorators": true, - "noImplicitAny": false, - "noUnusedLocals": true, - "noUnusedParameters": true, - "removeComments": false, - "preserveConstEnums": true, - "sourceMap": true, - "skipLibCheck": true - }, - "include": ["./src/**/*", "./index.ts"], - "exclude": ["node_modules", "vendor"] + "compileOnSave": false, + "compilerOptions": { + "outDir": "lib", + "declarationDir": "lib", + "allowSyntheticDefaultImports": true, + "lib": ["dom", "esnext"], + "jsx": "preserve", + "target": "esnext", + "module": "es2015", + "moduleResolution": "node", + "declaration": true, + "allowJs": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "noImplicitAny": false, + "strictNullChecks": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "removeComments": false, + "preserveConstEnums": false, + "sourceMap": true, + "skipLibCheck": true, + "strict": true + }, + "include": ["./src/**/*", "./index.ts"], + "exclude": ["node_modules", "vendor"] }