diff --git a/.babelrc.js b/.babelrc.js new file mode 100644 index 0000000..5a5ae8c --- /dev/null +++ b/.babelrc.js @@ -0,0 +1,18 @@ +// var env = process.env.BABEL_ENV || process.env.NODE_ENV; // Maybe later : for minify stuff +var presets = [ + "@babel/env", + "@babel/preset-typescript" +]; +var plugins = [ + "@babel/plugin-proposal-class-properties", + "@babel/proposal-object-rest-spread" +]; +var ignore = []; +var comments = false; + +module.exports = { + presets: presets, + plugins: plugins, + ignore: ignore, + comments: comments +}; \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index b438dcd..0a91386 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,11 +16,14 @@ os: - linux before_install: - npm i -g npm@latest + - npm install -g codecov - npm i -g travis-deploy-once before_script: - npm prune + - echo "Check if TypeScript files have valid syntax/types" + - npm run type-check after_success: - - npm run coverage + - codecov - travis-deploy-once && npx -p node@8 npm run semantic-release branches: except: diff --git a/__tests__/__helpers__/preprocessor.js b/__tests__/__helpers__/preprocessor.js deleted file mode 100644 index cedb887..0000000 --- a/__tests__/__helpers__/preprocessor.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2004-present Facebook. All Rights Reserved. - -const tsc = require('typescript'); -const tsConfig = require('../../tsconfig.json'); - -module.exports = { - process(src, path) { - if (path.endsWith('.ts') || path.endsWith('.tsx')) { - return tsc.transpile(src, tsConfig.compilerOptions, path, []); - } - return src; - }, -}; \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index c73f909..b444a82 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,7 +7,7 @@ module.exports = { "js" ], "transform": { - "^.+\\.(ts|tsx)$": "/__tests__/__helpers__/preprocessor.js" + "^.+\\.tsx?$": "ts-jest" }, "testMatch": [ "/__tests__/**/*.(ts|tsx|js)" diff --git a/package-lock.json b/package-lock.json index 7ea88e1..0343592 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,24 +4,785 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/cli": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0-beta.40.tgz", + "integrity": "sha512-7f2pWUlklOYn5USkVPlDw1yX71WsgP8EG7CTn17j4ydtGnYtD+nptTMM4J3EaRgILOgfesVkSOV+lIOnUVOAlg==", + "dev": true, + "requires": { + "chokidar": "1.7.0", + "commander": "2.14.1", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "output-file-sync": "2.0.1", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, "@babel/code-frame": { "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", - "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", + "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.40" + } + }, + "@babel/core": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.40.tgz", + "integrity": "sha512-jJMjn/EMg89xDGv7uq4BoFg+fHEchSeqNc9YUMnGuAi/FWKBkSsDbhh2y5euw4qaGOFD2jw1le0rvCu5gPUc6Q==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/generator": "7.0.0-beta.40", + "@babel/helpers": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "convert-source-map": "1.5.1", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "resolve": "1.5.0", + "source-map": "0.5.7" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babylon": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", + "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "@babel/generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.40.tgz", + "integrity": "sha512-c91BQcXyTq/5aFV4afgOionxZS1dxWt8OghEx5Q52SKssdGRFSiMKnk9tGkev1pYULPJBqjSDZU2Pcuc58ffZw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40", + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.40.tgz", + "integrity": "sha512-bJd92d70QTlcqCO9WiE8C94r7NwVzJx1V6Yz7rYi4IQ53P0jbh9jjKL2zl8YoU2S8M/KX1jpu+yIgXbx+LOruQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.40.tgz", + "integrity": "sha512-rMfjqkQrfHsA3ppMc2MsICoMqXH1b0BD77fTr4Kf+aUzEt5GSx5ZP5aNYlCqaPzhafg3znEEg/LVeq2EyGY8JQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-call-delegate": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.40.tgz", + "integrity": "sha512-kfLlTpTayyCwj3/Rq4zDaK85GVPzRIR433QLhuNb0qjJfMQgLit2UEfBHUPPMRvKlb0FelrlXGTxXfsHLmfgzw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-define-map": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.40.tgz", + "integrity": "sha512-hDg3sFSAxYQ/CSXzIBzGeNRD4yp89MkC3wkwvGBH80LXobL6csEdQpzCPhwpL0K8RNB07awRnck1OtPqjeCpgA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.40.tgz", + "integrity": "sha512-EUbu+uVNtHVp9emICjYO5wYodqWnSTx/s4Hfk++7IdnPTQi7UA9F/tPXf1GS8BLazlWc9tDwQ2aHFQLheHEXHw==", + "dev": true, + "requires": { + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz", + "integrity": "sha512-cK9BVLtOfisSISTTHXKGvBc2OBh65tjEk4PgXhsSnnH0i8RP2v+5RCxoSlh2y/i+l2fxQqKqv++Qo5RMiwmRCA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz", + "integrity": "sha512-MwquaPznI4cUoZEgHC/XGkddOXtqKqD4DvZDOyJK2LR9Qi6TbMbAhc6IaFoRX7CRTFCmtGeu8gdXW2dBotBBTA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.40.tgz", + "integrity": "sha512-ghnJxUUEmqK8mssF7Y7R5jNzF5xDu4hmWQ1aZghZtLNJSymmj3HrXCLl5m1dBYpq9gGk7TlZK8stIvIJsCGmTQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz", + "integrity": "sha512-QFOskAKWbqJSBbGIl/Y1igJI4mW0A+wD5NFqsgDJj85KSvj/dHM4wNGIeqCi85nN9aMa4DgTBBrzUK4zSMsN2Q==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.40.tgz", + "integrity": "sha512-1H7cBk7kUWJpTepPH77TIRGwKILRGpu1yXmz1OjOruR6y2z0qfbp7ZzzZ3/xg6NlLDENLArEyO2+J0mO+VyQsg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.40", + "@babel/helper-simple-access": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.40.tgz", + "integrity": "sha512-2f4ZKEkvdnKiTUA/Nhju+oEoRcyHcpf6lFuQI5cxbo1Toxqa8E9HBO5tiOWwlIwuak7RZPYSnxnrJQy/0d4YUw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-75zi8hZSdWLT7upmEyAemfN0hJ7522svItPGbIj4Pi2T/C5vbgNFXLy8o/iOCX4FzB+yVKhz0zWC3SzN9hyigA==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.40.tgz", + "integrity": "sha512-RISz7EebAqaf4ofdG9LdVNfeqhK+JlFYJxvqCGMcS+Pyz84dA41MxgtjrRQdT85be1lZLI2OArvD7zDrj1psag==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.40", + "@babel/helper-wrap-function": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-replace-supers": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.40.tgz", + "integrity": "sha512-Nu/5wpUV3rG35RzOq/upZlm61cP0lSAtmNkJLFfO5k2zOGCiHRczD1Y/xKqYOMl5f2iZmYw9fANi1jE4odMIIQ==", + "dev": true, + "requires": { + "@babel/helper-optimise-call-expression": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helper-simple-access": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.40.tgz", + "integrity": "sha512-hEKOIXUZFOiyqUPiGydGc+Jr0s8mVCFrD1OtAw2BDkXf1BaR+PxVEVcBAWcJVLOjqrr7oVZL9SENjR4B/Y+yEw==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "lodash": "4.17.5" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.40.tgz", + "integrity": "sha512-VBXE/uGQuZC9IaYufa3eCoT5ZqcCPv21Uhs/vo4ZqNRDX5QemYEkgDj5SmV2p73bhC66jDwUHaQHKQIiW7ExxA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/helpers": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.40.tgz", + "integrity": "sha512-NK/mM/I16inThgXmKPxoqrg+N6OCLt+e9Zsmy8TJ93/zMx4Eddd679I231YwDP2J1Z12UgkfWCLbbvauU5TLlQ==", + "dev": true, + "requires": { + "@babel/template": "7.0.0-beta.40", + "@babel/traverse": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", + "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "dev": true, + "requires": { + "chalk": "2.3.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-DU9JstbqQRAPhbW3Pk0yrEJA8GIiIDdylrnIuPI9x01jAwijxJfRwi6FbUAZUbS+3mzAAM5ALXUJkF1i1R5qbQ==", + "dev": true, + "requires": { + "@babel/helper-remap-async-to-generator": "7.0.0-beta.40", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-Sg9dQw/4TpYKdTO5wx+AxxICXEraBbdhDUFl9tJfJYgz4grJm+UR2xMXbBO6fGRyBlFLMqQQQcY7Olk5iN6qNA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/plugin-syntax-class-properties": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-nsQEWEvBgDcxYPBhmeIHqIXVVkPLQJBTD/bAdCMFhVe0vQdOR/px5E+rMsbP+9CywqV3AJ7PngYadnPgiuu4sg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.40.tgz", + "integrity": "sha512-GKKY7LDS3Z2iAVsM0KP745LAML8jKUdFqD+rGLa6F4Q9pEqDh3pjbL8eqiWLv/g/phpuCdvjaj+4wmUHi/E5eg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-BJlgIZcqodpkgNLOsKtkprA3zeXhg0O9Hru+IIaDVhcrZnkIIMVsdIG6gY5cKCAnpKFVN4kloQRTB61qYdKueA==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.40.tgz", + "integrity": "sha512-UczObsgk1A4DaSMqTj59iETtmtuiXdBMs/1WBpy6LvLtf8AdjO/bZ2IbvrwKR5gEp8xJxBgzNq2sfK8RUsQBsQ==", + "dev": true + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-JQUvaacmUpzXDU6BVE1l7hMES6AOJLAyGuEapTop3hD1BDvKwLOIrzwZxawBmp3GOA02S3m4VdUyIfWS5DATjw==", + "dev": true + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-LY96LEXC+qxuiOcoqrkrsyEUaD95gS7AQE7nZJ/lZBGG14h4cJhc+T0FYdJpVKqhqNuEqVHsJV9xfCYHI4Ksug==", + "dev": true + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.40.tgz", + "integrity": "sha512-YP2Zqhi6r5mnp6LALz19pvF7szhEzBFybw4KqGFj6OwGmfF1nrvCG3h6cOTRhIKSwkfM7IlqGZm+GBhbYRYxGA==", + "dev": true + }, + "@babel/plugin-syntax-typescript": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-beta.40.tgz", + "integrity": "sha512-o4xi4GbvyV5sG6vLMahVMQbx2qQYpuaC4KCZrwTko/Pd/1ZTO3cSezTgWeTQpCksjt3ngkuqbvvREWwles1GEg==", + "dev": true + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-B6wh62BErLWS3XInOUHhLcqBSK1QGdBph8E2K82EEFgJdQvphy30QXb0vwLUr8YU1efYyZXTsRA0JZ12jcm30Q==", + "dev": true + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.40.tgz", + "integrity": "sha512-4yTmjiZQw0S6dpnJqj0os0hom2czOAFKPhAuPplDay2zyqzDjbNt3zHFadIRTU4ekTonMb6ghTbMO1vlKcLMiQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.40", + "@babel/helper-remap-async-to-generator": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.40.tgz", + "integrity": "sha512-GC64FqQfGJ5Wt3i0zSMcwRxmnZwgrx8fVLCeONNNm3BlK7Ui5Usuc7WubygM3bDq47UiHfeKo8ih54pr/POsFw==", + "dev": true + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.40.tgz", + "integrity": "sha512-8QpOK9lXdzrq1QIrP3Hfx/BmGPaCKjBORd2QSjdghPNNRlQFZmO2l3kb0I6yC7w75U1M5q26KvUbAcPrE68E4w==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.40.tgz", + "integrity": "sha512-yjViyoOYJtt2vLDai8jluxl9quOtq/Xq4GTjT9uzy+mOfUTE77dcJySMGkWHE52Mu3n0TSI09ENBFYykpvXXDw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0-beta.40", + "@babel/helper-define-map": "7.0.0-beta.40", + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/helper-optimise-call-expression": "7.0.0-beta.40", + "@babel/helper-replace-supers": "7.0.0-beta.40", + "globals": "11.3.0" + }, + "dependencies": { + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-1VBpE+6YN4bj72MtbQoIwXZxoI5VfPLutQ5uhOx/tIrjf1KbLKsFR0epPPGx4nZ13u++lUR8CjUFUHGJ6RJirA==", + "dev": true + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.40.tgz", + "integrity": "sha512-/FJq+WUAw4R5kg+2XWkmk0rDJqVs76rNNSIPpxeE0SiJvp8tvou7y8u0D1IhoO29ZgC+53jbdL+MkVN7mrH/iQ==", + "dev": true + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-5npi7X6QGNWWfXxVBMQl+fEAn0LceNNFT139yaGRkyWZtUXmueFLgXKsa9dY2DhuEis29KuZrwGcmGSQWnEmtg==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.40.tgz", + "integrity": "sha512-rxEyRbU/iEGR99oBMoer5QeGWLMhT3Kq4a8B03DFLCBpGLv3XirpSGC/Ys1YhUKAmEio4jIcVVI8dRBbcVeyDw==", + "dev": true + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.40.tgz", + "integrity": "sha512-nh9qIA4P1wQczihazVOvTpkl2EBfoSMfkM6/21p8NBY4GxZJcEwT1O1nke/+RLludUekHqXHGH+9ekfEfLwKRQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.40.tgz", + "integrity": "sha512-ArDbLAGMzI++G5Ut8HIbLvnAxZNOC5tFzMXiud51JJTHRaeFB7AwX+duY9x/Hu/KypISXjels3BYVYCV/EH+ow==", + "dev": true + }, + "@babel/plugin-transform-function-name": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.40.tgz", + "integrity": "sha512-wvpswFciLQ2eAnHAs6/NSWymPg88LhHH87BljjXDxNnyGBzckip/iEa051Dz6lDumVUUjXLukw3D2fv5NBitVA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.40.tgz", + "integrity": "sha512-p7VlTod2r7srx0uKVrKqMJR1f6iyvDAnlLdTEDGrLHpP9pXXvIc/bP8xZTxVPn+IziSFh6FvOzHXXLMtnRKnow==", + "dev": true + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.40.tgz", + "integrity": "sha512-o/XTve9C+M9203MVxGRBOXNx4f9DZGiPLbwPPeDobdtw3NKHUCymFNbh9xxMJy0MPMEe8JldxbVwGy2f8DY/3w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.40.tgz", + "integrity": "sha512-1kRhaQP3K9kRiJhhLpP7J5NsMV+SiKWSsli6TUR6uxbuHHNAleRtlsZ76JgCRMaufBgPMLxq5pp7yibUhwTn8w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40", + "@babel/helper-simple-access": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.40.tgz", + "integrity": "sha512-q5IpFXNlzrK2ObpHkH5jzTCqRVzoNzmH8RoE8ZHQvLLiaIT346u8ynNv/BH1ltA49SPUPWyYpA+Z7OqCM4d3NA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.40.tgz", + "integrity": "sha512-LHKqJFwo7x/CeEwjLyUE99SlG/kbTl8LS1DQ26fWctVnW5JuPt3hwYrggnmo1L/g/dal7EP2IL56+UezDMpJUQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.40.tgz", + "integrity": "sha512-t4ivwZVGrVf1bhLgHcgaLhFH4loZhV5WmEKKNPEe7QnGikJBibrLmggOM1w5s6BMsHj03+j0rxUmcKLmGlC/fg==", + "dev": true + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.40.tgz", + "integrity": "sha512-a9kXy4amuvAz7eFuntXiyjg0eKXej1FH++xQg37ugh24zozD0cmfr3pvRbYOGlmbmOeZWJnlq+O6X8BSfLSycw==", + "dev": true, + "requires": { + "@babel/helper-replace-supers": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.40.tgz", + "integrity": "sha512-JShFDeKEzwwTB+pHcUuLdX9zPi98sRekvtdCEOt8UoF5pzW02k1XdsVOckp/PzcEdoGAgZiiI1PFkJZ+xanfPg==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.0.0-beta.40", + "@babel/helper-get-function-arity": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.40.tgz", + "integrity": "sha512-hFj52wAXbEpXwwfKsMol5Y967D3L8tz46Jin9n/gYPgcNWugvsw6d7g+HknBJ8FzaUESrDruFRkGPXgD+FyjvQ==", + "dev": true, + "requires": { + "regenerator-transform": "0.12.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.40.tgz", + "integrity": "sha512-1leHn9ST0PKFHwH7klJqGA76YPoqs3cR5zeJK6YGZETeX89YiAVtR+5JTSGhfI/1RR0Vcg9Tl1LnPpf7LmYlng==", + "dev": true + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.40.tgz", + "integrity": "sha512-RPrIpV+h8OqoqyMic7CNeM8TdSDk7ec+T6jM97vMb9XQQrRInAUWlwWvG6d36v72xobFtHoPA28VN/0aVsbQDg==", + "dev": true + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-dJPUaV2D5SwSXypaDFRJd+LIhabeaWhZ3McmNo0COn+lBINJ9iL7mYuPxnqwhM/KoBNv+vYIoFFZzT/I27K6AQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.40.tgz", + "integrity": "sha512-ScGHntym1y5FweT751OJxGW4rydxdLA9BwkHfJ5o6RcCoq+LRubDeGu2HeuX4SMEvAw0MnZeSk8vw5TwIOzEIQ==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.40" + "@babel/helper-annotate-as-pure": "7.0.0-beta.40" } }, - "@babel/highlight": { + "@babel/plugin-transform-typeof-symbol": { "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", - "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.40.tgz", + "integrity": "sha512-y+mXC0tIlTZj04ZD9326grEIvFjI/IeLSIVVKMIf8nSodLDCgipuM6zXhxqXVvjcTrvvUKuxPrvPeSuht0eeMg==", + "dev": true + }, + "@babel/plugin-transform-typescript": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.0.0-beta.40.tgz", + "integrity": "sha512-7MLJ5DU6j8B76yYrfhQvV4LKXOX5AQz4Z+SlZy7tUEiARilztqE1vBymju5FGBNCsWaE27lkHSaSXhtIBCjn6g==", + "dev": true, + "requires": { + "@babel/plugin-syntax-typescript": "7.0.0-beta.40" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.40.tgz", + "integrity": "sha512-+eProDq93qiYnXOy+LDSMoKF2lEQVQ+r6DF3ZZXJV5QJ3f2+vwpSqGIQy61sSkVMEaoNtYL/Jy+G8HrWFw9p3w==", + "dev": true, + "requires": { + "@babel/helper-regex": "7.0.0-beta.40", + "regexpu-core": "4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.40.tgz", + "integrity": "sha512-IBnkVmaM/K2pHB8RR0tC5oHrPdS4y0RZXrGc+lmfDuj4tgyCAmDBuQ1EWVaLOpWw8fXPwXfX70Vdp65L2df+RQ==", + "dev": true, + "requires": { + "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.40", + "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.40", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0-beta.40", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0-beta.40", + "@babel/plugin-syntax-async-generators": "7.0.0-beta.40", + "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.40", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.40", + "@babel/plugin-transform-arrow-functions": "7.0.0-beta.40", + "@babel/plugin-transform-async-to-generator": "7.0.0-beta.40", + "@babel/plugin-transform-block-scoped-functions": "7.0.0-beta.40", + "@babel/plugin-transform-block-scoping": "7.0.0-beta.40", + "@babel/plugin-transform-classes": "7.0.0-beta.40", + "@babel/plugin-transform-computed-properties": "7.0.0-beta.40", + "@babel/plugin-transform-destructuring": "7.0.0-beta.40", + "@babel/plugin-transform-dotall-regex": "7.0.0-beta.40", + "@babel/plugin-transform-duplicate-keys": "7.0.0-beta.40", + "@babel/plugin-transform-exponentiation-operator": "7.0.0-beta.40", + "@babel/plugin-transform-for-of": "7.0.0-beta.40", + "@babel/plugin-transform-function-name": "7.0.0-beta.40", + "@babel/plugin-transform-literals": "7.0.0-beta.40", + "@babel/plugin-transform-modules-amd": "7.0.0-beta.40", + "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.40", + "@babel/plugin-transform-modules-systemjs": "7.0.0-beta.40", + "@babel/plugin-transform-modules-umd": "7.0.0-beta.40", + "@babel/plugin-transform-new-target": "7.0.0-beta.40", + "@babel/plugin-transform-object-super": "7.0.0-beta.40", + "@babel/plugin-transform-parameters": "7.0.0-beta.40", + "@babel/plugin-transform-regenerator": "7.0.0-beta.40", + "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.40", + "@babel/plugin-transform-spread": "7.0.0-beta.40", + "@babel/plugin-transform-sticky-regex": "7.0.0-beta.40", + "@babel/plugin-transform-template-literals": "7.0.0-beta.40", + "@babel/plugin-transform-typeof-symbol": "7.0.0-beta.40", + "@babel/plugin-transform-unicode-regex": "7.0.0-beta.40", + "browserslist": "3.1.1", + "invariant": "2.2.2", + "semver": "5.5.0" + } + }, + "@babel/preset-typescript": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.0.0-beta.40.tgz", + "integrity": "sha512-G74AcsTo4QPTn6RhZGxG2TapvbeA7SZ7+1dNtn2FZRD5LisJiC33AlBal6MMl3hqBL61xJVcAkNadbtC6PoC1Q==", + "dev": true, + "requires": { + "@babel/plugin-transform-typescript": "7.0.0-beta.40" + } + }, + "@babel/template": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.40.tgz", + "integrity": "sha512-RlQiVB7eL7fxsKN6JvnCCwEwEL28CBYalXSgWWULuFlEHjtMoXBqQanSie3bNyhrANJx67sb+Sd/vuGivoMwLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", + "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.40.tgz", + "integrity": "sha512-h96SQorjvdSuxQ6hHFIuAa3oxnad1TA5bU1Zz88+XqzwmM5QM0/k2D+heXGGy/76gT5ajl7xYLKGiPA/KTyVhQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.40", + "@babel/generator": "7.0.0-beta.40", + "@babel/helper-function-name": "7.0.0-beta.40", + "@babel/types": "7.0.0-beta.40", + "babylon": "7.0.0-beta.40", + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.2", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", + "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==", + "dev": true + }, + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.40.tgz", + "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", "dev": true, "requires": { - "chalk": "2.3.1", "esutils": "2.0.2", - "js-tokens": "3.0.2" + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@mrmlnc/readdir-enhanced": { @@ -439,6 +1200,12 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -451,6 +1218,18 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -508,6 +1287,12 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -691,6 +1476,28 @@ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-preset-jest": { "version": "22.2.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.2.0.tgz", @@ -832,6 +1639,12 @@ "integrity": "sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA==", "dev": true }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", @@ -898,6 +1711,16 @@ } } }, + "browserslist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.1.1.tgz", + "integrity": "sha512-zHGaPnTt70ywm+glR7uMJFZSl+ADGO67SgD2ae20L+Y3KJUeH4fVa89OkTqKCqAnXFE9mO4LTHBKBqKRlr7VNw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000809", + "electron-to-chromium": "1.3.33" + } + }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", @@ -958,6 +1781,12 @@ "map-obj": "1.0.1" } }, + "caniuse-lite": { + "version": "1.0.30000809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000809.tgz", + "integrity": "sha512-tLn4flj2upmMsko3larTkQh21Vp9pylnNPUOhw5+mubL+67U5Fpm4UG5AutzGBc+gBIPSsPFHDynsiMWp5m46g==", + "dev": true + }, "cardinal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", @@ -1005,6 +1834,23 @@ "supports-color": "5.2.0" } }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, "ci-info": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", @@ -1322,6 +2168,25 @@ } } }, + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "duplexer": "0.1.1", + "glob": "7.1.2", + "glob2base": "0.0.12", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "resolve": "1.5.0", + "safe-buffer": "5.1.1", + "shell-quote": "1.6.1", + "subarg": "1.0.0" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -1453,7 +2318,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, "requires": { "foreach": "2.0.5", "object-keys": "1.0.11" @@ -1523,6 +2387,12 @@ "is-obj": "1.0.1" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -1542,6 +2412,12 @@ "jsbn": "0.1.1" } }, + "electron-to-chromium": { + "version": "1.3.33", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.33.tgz", + "integrity": "sha1-vwBwPWKnxlI4E2V4w1LWxcBCpUU=", + "dev": true + }, "env-ci": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-1.4.1.tgz", @@ -1570,7 +2446,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", - "dev": true, "requires": { "es-to-primitive": "1.1.1", "function-bind": "1.1.1", @@ -1583,7 +2458,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, "requires": { "is-callable": "1.1.3", "is-date-object": "1.0.1", @@ -1975,6 +2849,12 @@ "to-regex-range": "2.1.1" } }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -2002,8 +2882,7 @@ "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, "forever-agent": { "version": "0.6.1", @@ -2052,6 +2931,12 @@ "universalify": "0.1.1" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2949,8 +3834,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-caller-file": { "version": "1.0.2", @@ -3068,6 +3952,15 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "0.1.1" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -3143,7 +4036,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, "requires": { "function-bind": "1.1.1" } @@ -3366,6 +4258,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -3384,8 +4285,7 @@ "is-callable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" }, "is-ci": { "version": "1.1.0", @@ -3408,8 +4308,7 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, "is-descriptor": { "version": "1.0.2", @@ -3559,7 +4458,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, "requires": { "has": "1.0.1" } @@ -3588,8 +4486,7 @@ "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" }, "is-text-path": { "version": "1.0.1", @@ -5240,8 +6137,7 @@ "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" }, "object-visit": { "version": "1.0.1", @@ -5252,6 +6148,17 @@ "isobject": "3.0.1" } }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -5362,6 +6269,17 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "output-file-sync": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "is-plain-obj": "1.1.0", + "mkdirp": "0.5.1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -5762,6 +6680,18 @@ "util-deprecate": "1.0.2" } }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.4", + "set-immediate-shim": "1.0.1" + } + }, "realpath-native": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", @@ -5809,12 +6739,36 @@ } } }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", + "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "dev": true, + "requires": { + "regenerate": "1.3.3" + } + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, + "regenerator-transform": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", + "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", + "dev": true, + "requires": { + "private": "0.1.8" + } + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -5833,6 +6787,20 @@ "extend-shallow": "2.0.1" } }, + "regexpu-core": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", + "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regenerate-unicode-properties": "5.1.3", + "regjsgen": "0.3.0", + "regjsparser": "0.2.1", + "unicode-match-property-ecmascript": "1.0.3", + "unicode-match-property-value-ecmascript": "1.0.1" + } + }, "registry-auth-token": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", @@ -5843,6 +6811,29 @@ "safe-buffer": "5.1.1" } }, + "regjsgen": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", + "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=", + "dev": true + }, + "regjsparser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", + "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -5938,6 +6929,15 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, "resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", @@ -6124,6 +7124,12 @@ "to-object-path": "0.3.0" } }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -6151,6 +7157,18 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -6635,6 +7653,23 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "supports-color": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", @@ -6946,6 +7981,37 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "ts-jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-22.0.4.tgz", + "integrity": "sha512-cQlgWYCakArbHW5B5RgZvmBomepOuIBLCR972AdWuaK6VmLxbmCh8OCaGGcBChf7dv/8YNACYvC6jeebQDKgyA==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-plugin-istanbul": "4.1.5", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-preset-jest": "22.2.0", + "cpx": "1.5.0", + "fs-extra": "4.0.3", + "jest-config": "22.3.0", + "pkg-dir": "2.0.0", + "source-map-support": "0.5.3", + "yargs": "11.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -7024,6 +8090,34 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", + "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", + "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.3", + "unicode-property-aliases-ecmascript": "1.0.3" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", + "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", + "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", diff --git a/package.json b/package.json index e881705..31ffa03 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,10 @@ "test": "jest", "semantic-release": "semantic-release -e ./config/release.config.js", "prepare": "npm run compile", - "compile": "tsc", "clean": "jest --clearCache", - "coverage": "cat ./coverage/lcov.info | coveralls" + "coverage": "cat ./coverage/lcov.info | coveralls", + "compile": "babel src --out-dir lib --extensions \".ts\" --source-maps both", + "type-check": "tsc" }, "engines": { "node": ">=6", @@ -44,10 +45,17 @@ "bluebird": "^3.5.1", "filehound": "^1.16.2", "lodash": "^4.17.5", + "object.entries": "^1.0.4", "parse-torrent-title": "^1.1.0", "video-extensions": "^1.1.0" }, "devDependencies": { + "@babel/cli": "^7.0.0-beta.40", + "@babel/core": "^7.0.0-beta.40", + "@babel/plugin-proposal-class-properties": "^7.0.0-beta.40", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0-beta.40", + "@babel/preset-env": "^7.0.0-beta.40", + "@babel/preset-typescript": "^7.0.0-beta.40", "@semantic-release/changelog": "^1.1.1", "@semantic-release/git": "^3.1.1", "@types/jest": "^22.1.3", @@ -55,6 +63,7 @@ "conventional-changelog-eslint": "^1.0.2", "jest": "^22.3.0", "semantic-release": "^14.0.3", + "ts-jest": "^22.0.4", "typescript": "^2.7.2" }, "greenkeeper": { diff --git a/src/MediaScan.ts b/src/MediaScan.ts index 9552271..d4360ec 100644 --- a/src/MediaScan.ts +++ b/src/MediaScan.ts @@ -1,8 +1,8 @@ // Imports -import * as FileHound from 'filehound'; +import FileHound from 'filehound'; import {basename, normalize} from 'path'; import {uniq, difference, partition, cloneDeep} from 'lodash'; -import * as PromiseLib from 'bluebird'; +import PromiseLib from 'bluebird'; const videosExtension = require('video-extensions'); const nameParser = require('parse-torrent-title').parse; @@ -16,7 +16,7 @@ import { import {defaultWhichCategoryFunction, promisifiedAccess} from './utils/utils_functions'; // Typescript types -import * as mediaScan from "./custom_types"; +import mediaScan from "./declaration"; /** * Class representing the MediaScan Library @@ -31,8 +31,9 @@ module.exports = class MediaScan extends EventEmitter { protected categoryForFile: Map; // the mapping between file and Category protected stores: mediaScan.MapSet; // where I keep the result of Category // constants getter for external purposes (example create a custom whichCategory function) - static readonly MOVIES_TYPE = mediaScan.Category.MOVIES_TYPE; - static readonly TV_SERIES_TYPE = mediaScan.Category.TV_SERIES_TYPE; + // workaround : const string enum aren't compiled correctly with Babel + static readonly MOVIES_TYPE = 'MOVIES' as mediaScan.Category.MOVIES_TYPE; + static readonly TV_SERIES_TYPE = 'TV_SERIES' as mediaScan.Category.TV_SERIES_TYPE; constructor({ defaultPath = process.cwd(), @@ -51,8 +52,9 @@ module.exports = class MediaScan extends EventEmitter { this.defaultPath = defaultPath; this.paths = paths; this.stores = new Map(); - this.stores.set(mediaScan.Category.MOVIES_TYPE, movies); - this.stores.set(mediaScan.Category.TV_SERIES_TYPE, series); + // workaround : const string enum aren't compiled correctly with Babel + this.stores.set(MediaScan.MOVIES_TYPE, movies); + this.stores.set(MediaScan.TV_SERIES_TYPE, series); this.categoryForFile = allFilesWithCategory; } @@ -84,7 +86,8 @@ module.exports = class MediaScan extends EventEmitter { // add it in found files this.categoryForFile.set(file, fileCategory); // also in temp var - if (fileCategory !== mediaScan.Category.TV_SERIES_TYPE) { + // workaround : const string enum aren't compiled correctly with Babel + if (fileCategory !== MediaScan.TV_SERIES_TYPE) { moviesSet.add(jsonFile); } else { tvSeriesSet.add(jsonFile); @@ -121,8 +124,9 @@ module.exports = class MediaScan extends EventEmitter { }); // updates the stores var - this.stores.set(mediaScan.Category.MOVIES_TYPE, newMovies); - this.stores.set(mediaScan.Category.TV_SERIES_TYPE, newTvSeries); + // workaround : const string enum aren't compiled correctly with Babel + this.stores.set(MediaScan.MOVIES_TYPE, newMovies); + this.stores.set(MediaScan.TV_SERIES_TYPE, newTvSeries); resolve(); } catch (err) { reject(err); @@ -196,11 +200,13 @@ module.exports = class MediaScan extends EventEmitter { try { // get the data to handle this case // in the first group, we got all the tv series files and in the second, the movies + // workaround : const string enum aren't compiled correctly with Babel const processData = partition(files, file => - this.categoryForFile.get(file) === mediaScan.Category.TV_SERIES_TYPE); + this.categoryForFile.get(file) === MediaScan.TV_SERIES_TYPE); // for movies, just an easy removal + // workaround : const string enum aren't compiled correctly with Babel this.stores.set( - mediaScan.Category.MOVIES_TYPE, + MediaScan.MOVIES_TYPE, new Set([...this.allMovies] .filter(movie => !(processData[1].includes(movie.filePath)))), ); @@ -224,7 +230,8 @@ module.exports = class MediaScan extends EventEmitter { } // save the updated map - this.stores.set(mediaScan.Category.TV_SERIES_TYPE, newTvSeriesMap); + // workaround : const string enum aren't compiled correctly with Babel + this.stores.set(MediaScan.TV_SERIES_TYPE, newTvSeriesMap); // remove the mapping files.forEach((file) => { @@ -246,11 +253,13 @@ module.exports = class MediaScan extends EventEmitter { } get allMovies(): Set { - return cloneDeep(this.stores.get(mediaScan.Category.MOVIES_TYPE)); + // workaround : const string enum aren't compiled correctly with Babel + return cloneDeep(this.stores.get(MediaScan.MOVIES_TYPE)); } get allTvSeries(): Map> { - return cloneDeep(this.stores.get(mediaScan.Category.TV_SERIES_TYPE)); + // workaround : const string enum aren't compiled correctly with Babel + return cloneDeep(this.stores.get(MediaScan.TV_SERIES_TYPE)); } get allFilesWithCategory(): Map { diff --git a/src/custom_types.ts b/src/declaration.d.ts similarity index 99% rename from src/custom_types.ts rename to src/declaration.d.ts index d9085bc..6c38665 100644 --- a/src/custom_types.ts +++ b/src/declaration.d.ts @@ -131,4 +131,4 @@ declare module MediaScan { } } -export = MediaScan; +export default MediaScan; diff --git a/src/filters/filterBooleanProperty.ts b/src/filters/filterBooleanProperty.ts index c97fc9d..096be62 100644 --- a/src/filters/filterBooleanProperty.ts +++ b/src/filters/filterBooleanProperty.ts @@ -1,5 +1,12 @@ /** Provides a map with valid default properties */ -import * as MediaScan from "../custom_types"; +import MediaScan from "../declaration"; + +// Object.entries is not available in Node 6 +const entries = require('object.entries'); + +if (!Object.entries) { + entries.shim(); +} export function filterDefaultBooleanProperties(searchObject: MediaScan.DefaultSearchParameters): Map { const propertiesNames = ['extended', 'unrated', 'proper', 'repack', 'convert', diff --git a/src/filters/filterNumberProperty.ts b/src/filters/filterNumberProperty.ts index b0dfbd7..1fe1886 100644 --- a/src/filters/filterNumberProperty.ts +++ b/src/filters/filterNumberProperty.ts @@ -1,4 +1,10 @@ -import * as MediaScan from "../custom_types"; +import MediaScan from "../declaration"; + +const entries = require('object.entries'); + +if (!Object.entries) { + entries.shim(); +} /** * Convert the param to valid expression object for filter function diff --git a/src/filters/filterProperties.ts b/src/filters/filterProperties.ts index cb7cce1..35b7c1a 100644 --- a/src/filters/filterProperties.ts +++ b/src/filters/filterProperties.ts @@ -26,7 +26,7 @@ import { filterDefaultStringProperties, filterByString, } from './filterStringProperty'; -import * as MediaScan from "../custom_types"; +import MediaScan from "../declaration"; /** * Handle searchParameters provided by user to maps @@ -52,13 +52,13 @@ function mapProperties(searchParameters: MediaScan.SearchParameters): { /* istanbul ignore else */ if (additionalProperties !== undefined) { additionalProperties - .filter(newProperty => newProperty.type === MediaScan.AdditionalPropertiesType.BOOLEAN) + .filter(newProperty => newProperty.type === 'boolean' as MediaScan.AdditionalPropertiesType.BOOLEAN) .forEach((newProperty) => { booleanFieldsSearchMap.set(newProperty.name, newProperty.value as boolean); }); additionalProperties - .filter(newProperty => newProperty.type === MediaScan.AdditionalPropertiesType.NUMBER) + .filter(newProperty => newProperty.type === 'number' as MediaScan.AdditionalPropertiesType.NUMBER) .forEach((newProperty) => { let expression = convertToValidExpression(newProperty.value as string|number); /* istanbul ignore else */ @@ -68,7 +68,7 @@ function mapProperties(searchParameters: MediaScan.SearchParameters): { }); additionalProperties - .filter(newProperty => newProperty.type === MediaScan.AdditionalPropertiesType.STRING) + .filter(newProperty => newProperty.type === 'string' as MediaScan.AdditionalPropertiesType.STRING) .forEach((newProperty) => { stringFieldsSearchMap.set(newProperty.name, [...newProperty.value]); }); diff --git a/src/filters/filterStringProperty.ts b/src/filters/filterStringProperty.ts index f657c01..68564bd 100644 --- a/src/filters/filterStringProperty.ts +++ b/src/filters/filterStringProperty.ts @@ -1,6 +1,11 @@ /** Provides a map with valid default properties */ -import * as MediaScan from "../custom_types"; -import {convertToValidExpression} from "./filterNumberProperty"; +import MediaScan from "../declaration"; + +const entries = require('object.entries'); + +if (!Object.entries) { + entries.shim(); +} export function filterDefaultStringProperties(searchObject: MediaScan.DefaultSearchParameters): Map { const propertiesNames = ['title', 'resolution', 'codec', 'audio', 'group', diff --git a/src/utils/utils_functions.ts b/src/utils/utils_functions.ts index bc7829a..783284a 100644 --- a/src/utils/utils_functions.ts +++ b/src/utils/utils_functions.ts @@ -1,7 +1,10 @@ // Check properties import {access, constants as FsConstants} from "fs"; -import * as PromiseLib from 'bluebird'; -import * as MediaScanLib from "../custom_types"; +import PromiseLib from 'bluebird'; +import MediaScanLib from "../declaration"; + +// workaround : const string enum aren't compiled correctly with Babel +const MediaScan = require('../MediaScan'); export function checkProperties(obj, properties): boolean { return properties.every(x => x in obj && obj[x]); @@ -21,5 +24,7 @@ export function promisifiedAccess(path) : Promise { // Default implementation to know which category is this file export function defaultWhichCategoryFunction(object : MediaScanLib.TPN) : MediaScanLib.Category{ - return (checkProperties(object, ['season', 'episode'])) ? MediaScanLib.Category.TV_SERIES_TYPE : MediaScanLib.Category.MOVIES_TYPE; + // workaround : const string enum aren't compiled correctly with Babel + return (checkProperties(object, ['season', 'episode'])) + ? 'TV_SERIES' as MediaScanLib.Category.TV_SERIES_TYPE : 'MOVIES' as MediaScanLib.Category.MOVIES_TYPE; } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 47a308c..57c8287 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "noEmit": true, + "allowSyntheticDefaultImports": true, "module": "commonjs", "target": "es5", "lib": ["ES6","ES2017","ESNext"],